浏览代码

开发项目编排接口

reghao 5 年之前
父节点
当前提交
b49267aee8

+ 3 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/crud/OrchestrateCrudController.java

@@ -8,6 +8,7 @@ import cn.reghao.autodop.dmaster.app.entity.config.orchestration.ProjOrchestrati
 import cn.reghao.autodop.dmaster.app.service.crud.orchestarte.AppCrudService;
 import cn.reghao.autodop.dmaster.app.service.crud.orchestarte.ProjCrudService;
 import cn.reghao.autodop.dmaster.app.vo.orchestration.AppVO;
+import cn.reghao.autodop.dmaster.app.vo.orchestration.ProjVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -85,7 +86,8 @@ public class OrchestrateCrudController {
     @ApiOperation(value = "添加项目编排")
     @PostMapping(value = "/proj", consumes = "application/json")
     public ResponseEntity<String> addProjOrchestration(@RequestBody String json) throws Exception {
-        ProjOrchestration proj = (ProjOrchestration) JsonConverter.jsonToObject(json, ProjOrchestration.class);
+        ProjVO projVO = (ProjVO) JsonConverter.jsonToObject(json, ProjVO.class);
+        ProjOrchestration proj = ProjVO.to(projVO);
         projCrudService.addOrUpdate(proj);
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }

+ 0 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/BuildConfig.java

@@ -23,7 +23,4 @@ public class BuildConfig {
     @ManyToOne(cascade = CascadeType.PERSIST)
     @JoinColumn(name = "packer_config_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))
     private PackerConfig packerConfig;
-    @Lob
-    @Column(columnDefinition="text")
-    private String dockerfile;
 }

+ 3 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/orchestration/AppOrchestration.java

@@ -57,6 +57,9 @@ public class AppOrchestration extends BaseEntity implements Cloneable {
     @ManyToOne(cascade = CascadeType.PERSIST)
     @JoinColumn(name = "proj_orchestration_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))
     private ProjOrchestration proj;
+    @Lob
+    @Column(columnDefinition="text")
+    private String dockerfile;
 
     /* 部署配置 */
     @ElementCollection(targetClass = DeployConfig.class)

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/AppIntegrate.java

@@ -127,7 +127,7 @@ public class AppIntegrate {
         PackerConfig packerConfig = buildConfig.getPackerConfig();
         switch (PackerType.valueOf(packerConfig.getType())) {
             case docker:
-                codePacker = new DockerPack(packerConfig, buildConfig.getDockerfile());
+                codePacker = new DockerPack(packerConfig, app.getDockerfile());
                 break;
             case zip:
                 codePacker = new ZipPack(packerConfig);

+ 28 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/SharedEntityChecker.java

@@ -76,6 +76,34 @@ public class SharedEntityChecker {
         }
     }
 
+    public void checkAndSetBuildConfig(BuildConfig buildConfig) throws Exception {
+        if (buildConfig != null) {
+            RepoConfig repo = buildConfig.getRepoConfig();
+            RepoConfig repoEntity = repoConfigRepository.findByIsDeleteFalseAndName(repo.getName());
+            if (repoEntity != null) {
+                buildConfig.setRepoConfig(repoEntity);
+            } else {
+                throw new Exception("仓库配置 " + repo.getName() + " 不存在...");
+            }
+
+            CompilerConfig compiler = buildConfig.getCompilerConfig();
+            CompilerConfig compilerEntity = compilerConfigRepository.findByIsDeleteFalseAndName(compiler.getName());
+            if (compilerEntity != null) {
+                buildConfig.setCompilerConfig(compilerEntity);
+            } else {
+                throw new Exception("编译器配置 " + compiler.getName() + " 不存在...");
+            }
+
+            PackerConfig packer = buildConfig.getPackerConfig();
+            PackerConfig packerEntity = packerConfigRepository.findByIsDeleteFalseAndName(packer.getName());
+            if (packerEntity != null) {
+                buildConfig.setPackerConfig(packerEntity);
+            } else {
+                throw new Exception("打包配置 " + packer.getName() + " 不存在...");
+            }
+        }
+    }
+
     /**
      * 检查通知共享配置
      *

+ 1 - 5
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/orchestarte/ProjCrudService.java

@@ -7,7 +7,6 @@ import cn.reghao.autodop.dmaster.app.entity.config.orchestration.ProjOrchestrati
 import cn.reghao.autodop.dmaster.app.repository.orchestration.AppOrchestrationRepository;
 import cn.reghao.autodop.dmaster.app.repository.orchestration.ProjOrchestrationRepository;
 import cn.reghao.autodop.dmaster.app.service.crud.SharedEntityChecker;
-import cn.reghao.autodop.dmaster.app.vo.orchestration.ProjVO;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Sort;
@@ -35,10 +34,7 @@ public class ProjCrudService implements CrudOps<ProjOrchestration> {
 
     @Override
     public void addOrUpdate(ProjOrchestration proj) throws Exception {
-        ProjVO projVO = ProjVO.from(proj);
-        /*BuildConfig buildConfig = sharedEntityChecker.checkBuildConfig(projVO.getAppBuild());
-        proj.setBuildConfig(buildConfig);*/
-
+        sharedEntityChecker.checkAndSetBuildConfig(proj.getBuildConfig());
         ProjOrchestration projEntity = projRepository.findByIsDeleteFalseAndProjId(proj.getProjId());
         if (projEntity != null) {
             proj.setId(projEntity.getId());

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/BuildConfigVO.java

@@ -22,7 +22,7 @@ public class BuildConfigVO {
         vo.repo = buildConfig.getRepoConfig().getName();
         vo.compiler = buildConfig.getCompilerConfig().getName();
         vo.packer = buildConfig.getPackerConfig().getName();
-        vo.dockerfile = buildConfig.getDockerfile();
+        //vo.dockerfile = buildConfig.getDockerfile();
         return vo;
     }
 
@@ -43,7 +43,7 @@ public class BuildConfigVO {
             buildConfig.setPackerConfig(new PackerConfig(packer));
         }
 
-        buildConfig.setDockerfile(vo.getDockerfile());
+        //buildConfig.setDockerfile(vo.getDockerfile());
         return buildConfig;
     }
 }

+ 6 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/orchestration/AppVO.java

@@ -101,7 +101,12 @@ public class AppVO {
         app.setDirname(vo.dirname);
         app.setCompileHome(vo.compileHome);
 
-        app.setBuildConfig(BuildConfigVO.to(vo.getBuildConfigVO()));
+        if (vo.getBuildConfigVO() != null) {
+            app.setBuildConfig(BuildConfigVO.to(vo.getBuildConfigVO()));
+        } else {
+            //app.set(vo.projId);
+        }
+
         app.setDeployConfigs(vo.getDeployConfigs());
         app.setRunningConfig(vo.getRunningConfig());
 

+ 6 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/vo/orchestration/ProjVO.java

@@ -14,7 +14,8 @@ public class ProjVO {
     private String description;
     private String projRepo;
     private String branch;
-    private BuildConfigVO appBuild;
+    private String dirname;
+    private BuildConfigVO buildConfigVO;
 
     public static ProjVO from(ProjOrchestration proj) {
         ProjVO vo = new ProjVO();
@@ -22,7 +23,8 @@ public class ProjVO {
         vo.description = proj.getDescription();
         vo.projRepo = proj.getProjRepo();
         vo.branch = proj.getBranch();
-        vo.appBuild = BuildConfigVO.from(proj.getBuildConfig());;
+        vo.dirname = proj.getDirname();
+        vo.buildConfigVO = BuildConfigVO.from(proj.getBuildConfig());
         return vo;
     }
     
@@ -32,6 +34,8 @@ public class ProjVO {
         proj.setDescription(vo.description);
         proj.setProjRepo(vo.projRepo);
         proj.setBranch(vo.branch);
+        proj.setDirname(vo.dirname);
+        proj.setBuildConfig(BuildConfigVO.to(vo.getBuildConfigVO()));
         return proj;
     }
 }