From 00c9bc3577ab6c59f03be9aca09ad0b9ddce3124 Mon Sep 17 00:00:00 2001 From: twwy Date: Thu, 27 Oct 2022 18:49:21 +0800 Subject: [PATCH] feat: app add endpoint manager and component manager --- chart/sreworks-chart/templates/init-run.yaml | 36 -------------- paas/sreworks-base/pom.xml | 2 +- paas/sreworks-base/sreworks-common/pom.xml | 2 +- paas/sreworks-base/sreworks-domain/pom.xml | 2 +- .../sreworks/domain/DO/AppMarketEndpoint.java | 49 +++++++++++++++++++ .../AppMarketEndpointRepository.java | 18 +++++++ .../sreworks-flyadmin-server/pom.xml | 4 +- .../sreworks-plugin-server/pom.xml | 4 +- paas/sreworks-base/sreworks-server/pom.xml | 4 +- paas/sreworks-base/sreworks-start/pom.xml | 12 ++--- saas/app/api/app/app-start/pom.xml | 8 +-- saas/app/api/app/appcenter-server/pom.xml | 6 +-- saas/app/api/app/appdev-server/pom.xml | 6 +-- .../controllers/AppComponentController.java | 11 +++-- .../server/controllers/AppController.java | 1 + .../services/AppmanagerComponentService.java | 43 ++++++++++++++++ saas/app/api/app/appmarket-server/pom.xml | 4 +- .../controllers/AppMarketController.java | 47 ++++++++++++++++++ .../params/AppMarketEndpointUpsertParam.java | 13 +++++ 19 files changed, 205 insertions(+), 67 deletions(-) create mode 100644 paas/sreworks-base/sreworks-domain/src/main/java/com/alibaba/sreworks/domain/DO/AppMarketEndpoint.java create mode 100644 paas/sreworks-base/sreworks-domain/src/main/java/com/alibaba/sreworks/domain/repository/AppMarketEndpointRepository.java create mode 100644 saas/app/api/app/appdev-server/src/main/java/io/sreworks/appdev/server/services/AppmanagerComponentService.java create mode 100644 saas/app/api/app/appmarket-server/src/main/java/io/sreworks/appmarket/server/params/AppMarketEndpointUpsertParam.java diff --git a/chart/sreworks-chart/templates/init-run.yaml b/chart/sreworks-chart/templates/init-run.yaml index 71fe8c5d5..4be90c0ae 100644 --- a/chart/sreworks-chart/templates/init-run.yaml +++ b/chart/sreworks-chart/templates/init-run.yaml @@ -685,42 +685,6 @@ data: fi - - saas-dataops-grafana-import.sh: | - - set -e - set -x - - cd /root - - until $(curl --silent --fail --show-error --output /dev/null http://admin:${GRAFANA_ADMIN_PASSWORD}@${SAAS_STAGE_ID}-dataops-grafana.${NAMESPACE_DATAOPS}/api/datasources); do - printf '.' ; sleep 1 ; - done ; - - - for file in /root/saas/dataops/ui/grafana/datasource/*.json ; do - if [ -e "$file" ] ; then - echo "importing $file" && - curl --silent --fail --show-error \ - --request POST http://admin:${GRAFANA_ADMIN_PASSWORD}@${SAAS_STAGE_ID}-dataops-grafana.${NAMESPACE_DATAOPS}/api/datasources \ - --header "Content-Type: application/json" \ - --data-binary "@$file" ; - echo "" ; - fi - done ; - - for file in /root/saas/dataops/ui/grafana/dashboard/*.json ; do - if [ -e "$file" ] ; then - echo "importing $file" && - curl --silent --fail --show-error \ - --request POST http://admin:${GRAFANA_ADMIN_PASSWORD}@${SAAS_STAGE_ID}-dataops-grafana.${NAMESPACE_DATAOPS}/api/dashboards/import \ - --header "Content-Type: application/json" \ - --data-binary "@$file" ; - echo "" ; - fi - done - - saas-demoapp.sh: | set -e diff --git a/paas/sreworks-base/pom.xml b/paas/sreworks-base/pom.xml index 5331e5dfe..5370d2fd6 100644 --- a/paas/sreworks-base/pom.xml +++ b/paas/sreworks-base/pom.xml @@ -5,7 +5,7 @@ io.sreworks sreworks-base pom - 1.1.3 + 1.1.5 sreworks-base springboot project diff --git a/paas/sreworks-base/sreworks-common/pom.xml b/paas/sreworks-base/sreworks-common/pom.xml index 11d180ac2..591a19a7b 100644 --- a/paas/sreworks-base/sreworks-common/pom.xml +++ b/paas/sreworks-base/sreworks-common/pom.xml @@ -4,7 +4,7 @@ sreworks-base io.sreworks - 1.1.3 + 1.1.5 ../pom.xml diff --git a/paas/sreworks-base/sreworks-domain/pom.xml b/paas/sreworks-base/sreworks-domain/pom.xml index c06760f90..a60a6904b 100644 --- a/paas/sreworks-base/sreworks-domain/pom.xml +++ b/paas/sreworks-base/sreworks-domain/pom.xml @@ -6,7 +6,7 @@ sreworks-base io.sreworks - 1.1.3 + 1.1.5 ../pom.xml diff --git a/paas/sreworks-base/sreworks-domain/src/main/java/com/alibaba/sreworks/domain/DO/AppMarketEndpoint.java b/paas/sreworks-base/sreworks-domain/src/main/java/com/alibaba/sreworks/domain/DO/AppMarketEndpoint.java new file mode 100644 index 000000000..46030c867 --- /dev/null +++ b/paas/sreworks-base/sreworks-domain/src/main/java/com/alibaba/sreworks/domain/DO/AppMarketEndpoint.java @@ -0,0 +1,49 @@ +package com.alibaba.sreworks.domain.DO; + +import com.alibaba.fastjson.JSONObject; +import com.alibaba.sreworks.domain.DTO.AppDetail; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import javax.persistence.*; + +/** + * @author jinghua.yjh + */ +@Slf4j +@Entity +@EntityListeners(AuditingEntityListener.class) +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class AppMarketEndpoint { + + @Id + @GeneratedValue + private Long id; + + @Column + private Long gmtCreate; + + @Column + private Long gmtModified; + + @Column + private String creator; + + @Column + private String lastModifier; + + @Column(unique = true) + private String name; + + @Column(columnDefinition = "text") + private String config; + + +} diff --git a/paas/sreworks-base/sreworks-domain/src/main/java/com/alibaba/sreworks/domain/repository/AppMarketEndpointRepository.java b/paas/sreworks-base/sreworks-domain/src/main/java/com/alibaba/sreworks/domain/repository/AppMarketEndpointRepository.java new file mode 100644 index 000000000..1fa3f121f --- /dev/null +++ b/paas/sreworks-base/sreworks-domain/src/main/java/com/alibaba/sreworks/domain/repository/AppMarketEndpointRepository.java @@ -0,0 +1,18 @@ +package com.alibaba.sreworks.domain.repository; + +import com.alibaba.fastjson.JSONObject; +import com.alibaba.sreworks.domain.DO.AppMarketEndpoint; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + + +public interface AppMarketEndpointRepository extends JpaRepository, JpaSpecificationExecutor { + + AppMarketEndpoint findFirstById(Long id); + + AppMarketEndpoint findFirstByName(String name); + +} diff --git a/paas/sreworks-base/sreworks-flyadmin-server/pom.xml b/paas/sreworks-base/sreworks-flyadmin-server/pom.xml index f936713df..71c50fc26 100644 --- a/paas/sreworks-base/sreworks-flyadmin-server/pom.xml +++ b/paas/sreworks-base/sreworks-flyadmin-server/pom.xml @@ -6,7 +6,7 @@ sreworks-base io.sreworks - 1.1.3 + 1.1.5 ../pom.xml @@ -19,7 +19,7 @@ sreworks-domain io.sreworks - 1.1.3 + 1.1.5 diff --git a/paas/sreworks-base/sreworks-plugin-server/pom.xml b/paas/sreworks-base/sreworks-plugin-server/pom.xml index 992d9f402..86dedb185 100644 --- a/paas/sreworks-base/sreworks-plugin-server/pom.xml +++ b/paas/sreworks-base/sreworks-plugin-server/pom.xml @@ -6,7 +6,7 @@ sreworks-base io.sreworks - 1.1.3 + 1.1.5 ../pom.xml @@ -19,7 +19,7 @@ sreworks-domain io.sreworks - 1.1.3 + 1.1.5 diff --git a/paas/sreworks-base/sreworks-server/pom.xml b/paas/sreworks-base/sreworks-server/pom.xml index b5204fd5d..aa95abf9d 100644 --- a/paas/sreworks-base/sreworks-server/pom.xml +++ b/paas/sreworks-base/sreworks-server/pom.xml @@ -6,7 +6,7 @@ sreworks-base io.sreworks - 1.1.3 + 1.1.5 ../pom.xml @@ -19,7 +19,7 @@ sreworks-domain io.sreworks - 1.1.3 + 1.1.5 diff --git a/paas/sreworks-base/sreworks-start/pom.xml b/paas/sreworks-base/sreworks-start/pom.xml index 46a3e1c4e..fa7a1dae2 100644 --- a/paas/sreworks-base/sreworks-start/pom.xml +++ b/paas/sreworks-base/sreworks-start/pom.xml @@ -6,7 +6,7 @@ sreworks-base io.sreworks - 1.1.3 + 1.1.5 ../pom.xml @@ -19,27 +19,27 @@ sreworks-flyadmin-server io.sreworks - 1.1.3 + 1.1.5 sreworks-plugin-server io.sreworks - 1.1.3 + 1.1.5 sreworks-server io.sreworks - 1.1.3 + 1.1.5 sreworks-common io.sreworks - 1.1.3 + 1.1.5 sreworks-domain io.sreworks - 1.1.3 + 1.1.5 diff --git a/saas/app/api/app/app-start/pom.xml b/saas/app/api/app/app-start/pom.xml index 77ac1b069..adcd6bb52 100644 --- a/saas/app/api/app/app-start/pom.xml +++ b/saas/app/api/app/app-start/pom.xml @@ -32,22 +32,22 @@ sreworks-flyadmin-server io.sreworks - 1.0.8 + 1.1.5 sreworks-server io.sreworks - 1.0.8 + 1.1.5 sreworks-domain io.sreworks - 1.0.8 + 1.1.5 sreworks-plugin-server io.sreworks - 1.0.8 + 1.1.5 appdev-server diff --git a/saas/app/api/app/appcenter-server/pom.xml b/saas/app/api/app/appcenter-server/pom.xml index 068107bf2..c081342b1 100644 --- a/saas/app/api/app/appcenter-server/pom.xml +++ b/saas/app/api/app/appcenter-server/pom.xml @@ -19,17 +19,17 @@ sreworks-flyadmin-server io.sreworks - 1.0.8 + 1.1.5 sreworks-plugin-server io.sreworks - 1.0.8 + 1.1.5 sreworks-domain io.sreworks - 1.0.8 + 1.1.5 diff --git a/saas/app/api/app/appdev-server/pom.xml b/saas/app/api/app/appdev-server/pom.xml index 72a911b1c..eee789fdf 100644 --- a/saas/app/api/app/appdev-server/pom.xml +++ b/saas/app/api/app/appdev-server/pom.xml @@ -19,17 +19,17 @@ sreworks-domain io.sreworks - 1.0.8 + 1.1.5 sreworks-flyadmin-server io.sreworks - 1.0.8 + 1.1.5 sreworks-common io.sreworks - 1.0.8 + 1.1.5 diff --git a/saas/app/api/app/appdev-server/src/main/java/io/sreworks/appdev/server/controllers/AppComponentController.java b/saas/app/api/app/appdev-server/src/main/java/io/sreworks/appdev/server/controllers/AppComponentController.java index c7e4abfd1..39b70488a 100644 --- a/saas/app/api/app/appdev-server/src/main/java/io/sreworks/appdev/server/controllers/AppComponentController.java +++ b/saas/app/api/app/appdev-server/src/main/java/io/sreworks/appdev/server/controllers/AppComponentController.java @@ -4,11 +4,13 @@ import java.util.List; import java.util.stream.Collectors; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import io.sreworks.appdev.server.params.AppComponentCreateByAppPackageParam; import io.sreworks.appdev.server.params.AppComponentCreateByHelmParam; import io.sreworks.appdev.server.params.AppComponentCreateParam; import io.sreworks.appdev.server.params.AppComponentModifyParam; +import io.sreworks.appdev.server.services.AppmanagerComponentService; import com.alibaba.sreworks.common.util.RegularUtil; import com.alibaba.sreworks.domain.DO.AppComponent; import com.alibaba.sreworks.domain.repository.AppComponentRepository; @@ -46,6 +48,9 @@ public class AppComponentController extends BaseController { @Autowired SaveActionService saveActionService; + @Autowired + AppmanagerComponentService appmanagerComponentService; + @ApiOperation(value = "创建") @RequestMapping(value = "create", method = RequestMethod.POST) public TeslaBaseResult create(Long appId, @RequestBody AppComponentCreateParam param) @@ -115,10 +120,8 @@ public TeslaBaseResult get(Long id) { @ApiOperation(value = "列表") @RequestMapping(value = "list", method = RequestMethod.GET) - public TeslaBaseResult list(Long appId) { - List ret = appComponentRepository.findAllByAppId(appId).stream() - .map(AppComponent::toJsonObject).collect(Collectors.toList()); - RegularUtil.gmt2Date(ret); + public TeslaBaseResult list(String appId) throws Exception { + JSONArray ret = appmanagerComponentService.list(appId, getUserEmployeeId()); return buildSucceedResult(ret); } diff --git a/saas/app/api/app/appdev-server/src/main/java/io/sreworks/appdev/server/controllers/AppController.java b/saas/app/api/app/appdev-server/src/main/java/io/sreworks/appdev/server/controllers/AppController.java index b513ba63f..eb4f64635 100644 --- a/saas/app/api/app/appdev-server/src/main/java/io/sreworks/appdev/server/controllers/AppController.java +++ b/saas/app/api/app/appdev-server/src/main/java/io/sreworks/appdev/server/controllers/AppController.java @@ -148,6 +148,7 @@ public TeslaBaseResult upgrade(Long id) throws JsonProcessingException { App app = appRepository.findFirstById(id); app.setName("sreworks" + app.getId().toString()); app.setDisplay(Long.valueOf(2)); + appRepository.saveAndFlush(app); JSONObject result = new JSONObject(); result.put("appDefId", app.getId()); diff --git a/saas/app/api/app/appdev-server/src/main/java/io/sreworks/appdev/server/services/AppmanagerComponentService.java b/saas/app/api/app/appdev-server/src/main/java/io/sreworks/appdev/server/services/AppmanagerComponentService.java new file mode 100644 index 000000000..a80f31d62 --- /dev/null +++ b/saas/app/api/app/appdev-server/src/main/java/io/sreworks/appdev/server/services/AppmanagerComponentService.java @@ -0,0 +1,43 @@ +package io.sreworks.appdev.server.services; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.sreworks.common.util.AppmanagerServiceUtil; +import com.alibaba.sreworks.common.util.JsonUtil; +import com.alibaba.sreworks.domain.DO.App; +import com.alibaba.tesla.web.constant.HttpHeaderNames; +import io.sreworks.common.util.Requests; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Slf4j +@Service +public class AppmanagerComponentService { + + public JSONArray list(String appId, String user) throws Exception { + + JSONObject componentsConfigs = new JSONObject(); + List deployConfigs = new Requests(AppmanagerServiceUtil.getEndpoint() + "/application-configurations/types/components?appId=" + appId + "&typeIdPrefix=Type:components") + .get() + .headers(HttpHeaderNames.X_EMPL_ID, user) + .isSuccessful().getJSONObject().getJSONObject("data").getJSONArray("items").toJavaList(JSONObject.class); + + for(JSONObject deployConfig: deployConfigs){ + componentsConfigs.put(deployConfig.getString("typeId"), deployConfig); + } + + log.info("GET " + AppmanagerServiceUtil.getEndpoint() + "/apps/" + appId + "/components"); + List components = new Requests(AppmanagerServiceUtil.getEndpoint() + "/apps/" + appId + "/components?withBlobs=true") + .get() + .headers(HttpHeaderNames.X_EMPL_ID, user) + .isSuccessful().getJSONObject().getJSONArray("data").toJavaList(JSONObject.class); + for(JSONObject component: components){ + component.put("deployConfig", componentsConfigs.getJSONObject(component.getString("typeId"))); + } + return JSONArray.parseArray(JSON.toJSONString(components)); + } + +} diff --git a/saas/app/api/app/appmarket-server/pom.xml b/saas/app/api/app/appmarket-server/pom.xml index eef3e6c04..0548f4e09 100644 --- a/saas/app/api/app/appmarket-server/pom.xml +++ b/saas/app/api/app/appmarket-server/pom.xml @@ -19,12 +19,12 @@ sreworks-domain io.sreworks - 1.0.8 + 1.1.5 sreworks-flyadmin-server io.sreworks - 1.0.8 + 1.1.5 diff --git a/saas/app/api/app/appmarket-server/src/main/java/io/sreworks/appmarket/server/controllers/AppMarketController.java b/saas/app/api/app/appmarket-server/src/main/java/io/sreworks/appmarket/server/controllers/AppMarketController.java index be2d16740..a22365584 100644 --- a/saas/app/api/app/appmarket-server/src/main/java/io/sreworks/appmarket/server/controllers/AppMarketController.java +++ b/saas/app/api/app/appmarket-server/src/main/java/io/sreworks/appmarket/server/controllers/AppMarketController.java @@ -9,14 +9,20 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.alibaba.sreworks.domain.DO.App; +import com.alibaba.sreworks.domain.DO.AppMarketEndpoint; import io.sreworks.appmarket.server.params.AppMarketSyncRemote2LocalParam; +import io.sreworks.appmarket.server.params.AppMarketEndpointUpsertParam; import io.sreworks.appmarket.server.services.AppMarketService; import com.alibaba.sreworks.common.util.RegularUtil; import com.alibaba.sreworks.domain.DO.AppPackage; import com.alibaba.sreworks.domain.DO.Team; import com.alibaba.sreworks.domain.repository.AppPackageRepository; import com.alibaba.sreworks.domain.repository.TeamRepository; +import com.alibaba.sreworks.domain.repository.AppMarketEndpointRepository; import com.alibaba.sreworks.flyadmin.server.services.FlyadminAppmanagerMarketService; import com.alibaba.tesla.common.base.TeslaBaseResult; import com.alibaba.tesla.web.controller.BaseController; @@ -31,6 +37,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; +import springfox.documentation.spring.web.json.Json; /** * @author jinghua.yjh @@ -53,6 +60,46 @@ public class AppMarketController extends BaseController { @Autowired TeamRepository teamRepository; + @Autowired + AppMarketEndpointRepository appMarketEndpointRepository; + + @ApiOperation(value = "listRemoteEndpoints") + @RequestMapping(value = "listRemoteEndpoints", method = RequestMethod.GET) + public TeslaBaseResult listRemoteEndpoints() { + List appMarketEndpoints = appMarketEndpointRepository.findAll(); + List endpoints = JSONArray.parseArray(JSON.toJSONString(appMarketEndpoints)).toJavaList(JSONObject.class); + for (JSONObject endpoint : endpoints){ + endpoint.put("config", JSONObject.parseObject(endpoint.getString("config"))); + } + return buildSucceedResult(endpoints); + } + + @ApiOperation(value = "upsertRemoteEndpoint") + @RequestMapping(value = "upsertRemoteEndpoint", method = RequestMethod.POST) + public TeslaBaseResult upsertRemoteEndpoint(@RequestBody AppMarketEndpointUpsertParam param) { + AppMarketEndpoint appMarketEndpoint = appMarketEndpointRepository.findFirstByName(param.getName()); + if(appMarketEndpoint == null) { + appMarketEndpoint = AppMarketEndpoint.builder() + .gmtCreate(System.currentTimeMillis() / 1000) + .gmtModified(System.currentTimeMillis() / 1000) + .creator(getUserEmployeeId()) + .lastModifier(getUserEmployeeId()) + .name(param.getName()) + .config(param.getConfig().toJSONString()).build(); + appMarketEndpointRepository.saveAndFlush(appMarketEndpoint); + }else{ + appMarketEndpoint.setConfig(param.getConfig().toJSONString()); + } + return buildSucceedResult(appMarketEndpoint); + } + + @ApiOperation(value = "deleteRemoteEndpoint") + @RequestMapping(value = "deleteRemoteEndpoint", method = RequestMethod.DELETE) + public TeslaBaseResult upsertRemoteEndpoint(Long id) { + appMarketEndpointRepository.deleteById(id); + return buildSucceedResult("OK"); + } + @ApiOperation(value = "list") @RequestMapping(value = "list", method = RequestMethod.GET) public TeslaBaseResult list() { diff --git a/saas/app/api/app/appmarket-server/src/main/java/io/sreworks/appmarket/server/params/AppMarketEndpointUpsertParam.java b/saas/app/api/app/appmarket-server/src/main/java/io/sreworks/appmarket/server/params/AppMarketEndpointUpsertParam.java new file mode 100644 index 000000000..a47fefae2 --- /dev/null +++ b/saas/app/api/app/appmarket-server/src/main/java/io/sreworks/appmarket/server/params/AppMarketEndpointUpsertParam.java @@ -0,0 +1,13 @@ +package io.sreworks.appmarket.server.params; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +@Data +public class AppMarketEndpointUpsertParam { + + private String name; + + private JSONObject config; + +}