Explorar o código

设置 model 的数据约束

reghao %!s(int64=4) %!d(string=hai) anos
pai
achega
4cea726525
Modificáronse 19 ficheiros con 116 adicións e 56 borrados
  1. 3 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/AppBuilding.java
  2. 3 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/AppDeploying.java
  3. 2 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/AppRunning.java
  4. 11 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/AppConfig.java
  5. 4 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/AppDeployConfig.java
  6. 20 4
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/build/BuildDir.java
  7. 3 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/build/CompilerConfig.java
  8. 3 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/build/PackerConfig.java
  9. 3 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/build/RepoAuthConfig.java
  10. 8 10
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/config/impl/BuildDirServiceImpl.java
  11. 8 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/model/po/DiskInfo.java
  12. 0 10
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/model/po/DiskUsage.java
  13. 11 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/model/po/MachineHost.java
  14. 19 5
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/model/po/MachineInfo.java
  15. 0 10
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/model/po/MemUsage.java
  16. 5 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/model/po/NetworkInfo.java
  17. 2 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/model/po/SshAuth.java
  18. 8 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/notification/model/po/NotifyAccount.java
  19. 3 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/notification/model/po/NotifyGroup.java

+ 3 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/AppBuilding.java

@@ -13,6 +13,7 @@ import lombok.*;
 import javax.persistence.Entity;
 import javax.persistence.JoinColumn;
 import javax.persistence.OneToOne;
+import javax.validation.constraints.NotNull;
 import java.time.LocalDateTime;
 
 /**
@@ -26,12 +27,14 @@ import java.time.LocalDateTime;
 @Setter
 @Entity
 public class AppBuilding extends BaseEntity<Integer> {
+    @NotNull
     @JoinColumn(nullable = false, unique = true)
     @OneToOne
     private AppConfig appConfig;
     private String buildLogId;
     private String commitId;
     private LocalDateTime commitTime;
+    @NotNull
     private String buildResult;
     private LocalDateTime buildTime;
     private String packagePath;

+ 3 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/AppDeploying.java

@@ -12,6 +12,7 @@ import lombok.*;
 import javax.persistence.Entity;
 import javax.persistence.JoinColumn;
 import javax.persistence.OneToOne;
+import javax.validation.constraints.NotNull;
 import java.time.LocalDateTime;
 
 /**
@@ -25,6 +26,7 @@ import java.time.LocalDateTime;
 @Setter
 @Entity
 public class AppDeploying extends BaseEntity<Integer> {
+    @NotNull
     @JoinColumn(nullable = false, unique = true)
     @OneToOne
     private AppDeployConfig appDeployConfig;
@@ -33,6 +35,7 @@ public class AppDeploying extends BaseEntity<Integer> {
     private String packagePath;
     private String deployBy;
     private LocalDateTime deployTime;
+    @NotNull
     private String deployResult;
 
     public AppDeploying(AppDeployConfig appDeployConfig) {

+ 2 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/AppRunning.java

@@ -8,6 +8,7 @@ import lombok.*;
 import javax.persistence.Entity;
 import javax.persistence.JoinColumn;
 import javax.persistence.OneToOne;
+import javax.validation.constraints.NotNull;
 import java.time.LocalDateTime;
 
 /**
@@ -21,6 +22,7 @@ import java.time.LocalDateTime;
 @Setter
 @Entity
 public class AppRunning extends BaseEntity<Integer> {
+    @NotNull
     @JoinColumn(nullable = false, unique = true)
     @OneToOne
     private AppDeploying appDeploying;

+ 11 - 4
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/AppConfig.java

@@ -24,27 +24,34 @@ import javax.validation.constraints.NotNull;
 @Entity
 public class AppConfig extends BaseEntity<Integer> implements Cloneable {
     @Column(nullable = false, unique = true)
-    @NotNull(message = "应用 ID 不能为 NULL")
+    @NotBlank(message = "应用 ID 不能为空字符串")
     @Length(min = 4, max = 64, message = "应用 ID 仅可包含数字,大小写字母和 '-' 等字符, 长度为 4 ~ 64 个字符")
     private String appId;
+    @NotNull
     @NotBlank(message = "应用名字不能为空白字符串")
     private String appName;
     private String description;
+    @NotNull
     @ValidEnum(value = AppType.class, message = "请选择正确的应用类型")
     private String appType;
+    @NotNull
     @ValidEnum(value = EnvList.class, message = "请选择正确的环境类型")
     private String env;
+    @NotNull
     @NotBlank(message = "应用仓库不能为空白字符串")
     private String appRepo;
+    @NotNull
     @NotBlank(message = "仓库分支不能为空白字符串")
     private String repoBranch;
     // TODO 添加定时构建部署选项
 
     // TODO 操作系统类型和版本,CPU 架构
     /* 构建配置 */
+    @NotNull
     @NotBlank(message = "项目目录名不能为空白字符串")
     private String projDirname;
     @NotNull
+    @NotBlank(message = "应用根目录不能为空白字符串")
     private String appRootPath;
     private String execBinName;
     private Integer httpPort;
@@ -53,15 +60,15 @@ public class AppConfig extends BaseEntity<Integer> implements Cloneable {
     // buildConfig
     @ManyToOne(cascade = CascadeType.REFRESH)
     @JoinColumn(name = "repo_auth_config_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))
-    //@Valid
+    @NotNull
     private RepoAuthConfig repoAuthConfig;
     @ManyToOne(cascade = CascadeType.REFRESH)
     @JoinColumn(name = "compiler_config_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))
-    //@Valid
+    @NotNull
     private CompilerConfig compilerConfig;
     @ManyToOne(cascade = CascadeType.REFRESH)
     @JoinColumn(name = "packer_config_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))
-    //@Valid
+    @NotNull
     private PackerConfig packerConfig;
     // TODO packType 是 docker 时使用
     @Lob

+ 4 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/AppDeployConfig.java

@@ -23,16 +23,20 @@ import javax.validation.constraints.NotNull;
 @Setter
 @Entity
 public class AppDeployConfig extends BaseEntity<Integer> {
+    @NotNull
     @OneToOne
     private AppConfig appConfig;
+    @NotNull
     @OneToOne
     private MachineHost machineHost;
+    @NotNull
     @ValidEnum(value = PackType.class, message = "请选择正确的打包类型")
     private String packType;
     // packType 是 docker 时 startScript 的内容是 cn.reghao.autodop.common.dockerc.pojo.Config 序列化为 JSON 后的字符串
     // 具体参照 https://docs.docker.com/engine/api/v1.40/#operation/ContainerCreate 的 reqeust body
     @Lob
     @Column(columnDefinition="text")
+    @NotNull
     @NotBlank(message = "startScript 不能为空白字符串")
     private String startScript;
     @Lob

+ 20 - 4
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/build/BuildDir.java

@@ -1,14 +1,12 @@
 package cn.reghao.autodop.dmaster.app.model.po.config.build;
 
 import cn.reghao.autodop.dmaster.util.db.BaseEntity;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.Getter;
-import lombok.Setter;
+import lombok.*;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 
 /**
  * 应用构建需要使用的本地目录
@@ -16,6 +14,7 @@ import javax.validation.constraints.NotBlank;
  * @author reghao
  * @date 2019-08-27 00:17:55
  */
+@NoArgsConstructor
 @Getter
 @Setter
 @Entity
@@ -23,13 +22,30 @@ public class BuildDir extends BaseEntity<Integer> {
     @Column(nullable = false, unique = true)
     @NotBlank(message = "机器 ID 不能为空白字符串")
     private String machineId;
+    @NotNull
     private String machineIpv4;
     // 本地目录,包含 local-repo, compile-dir 和 pack-dir 三个子目录
     @Column(nullable = false)
     @NotBlank(message = "新目录路径不能为空白字符串")
     private String dirPath;
+    @NotNull
     private String mountedOn;
+    // TODO 磁盘容量类型修改为 Long
+    @NotNull
     private String total;
+    @NotNull
     private String used;
+    @NotNull
     private String avail;
+
+    public BuildDir(String machineId, String machineIpv4, String dirPath, String mountedOn,
+                    String total, String used, String avail) {
+        this.machineId = machineId;
+        this.machineIpv4 = machineIpv4;
+        this.dirPath = dirPath;
+        this.mountedOn = mountedOn;
+        this.total = total;
+        this.used = used;
+        this.avail = avail;
+    }
 }

+ 3 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/build/CompilerConfig.java

@@ -8,6 +8,7 @@ import lombok.*;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 
 /**
  * 编译方式配置
@@ -21,9 +22,10 @@ import javax.validation.constraints.NotBlank;
 @Entity
 public class CompilerConfig extends BaseEntity<Integer> {
     @NotBlank(message = "机器 ID 不能为空白字符串")
+    @NotNull
     private String machineId;
     private String machineIpv4;
-    @Column(nullable = false)
+    @NotNull
     @ValidEnum(value = CompileType.class, message = "请选择正确的编译类型")
     private String type;
     @Column(nullable = false, unique = true)

+ 3 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/build/PackerConfig.java

@@ -21,10 +21,11 @@ import javax.validation.constraints.NotNull;
 @Setter
 @Entity
 public class PackerConfig extends BaseEntity<Integer> {
+    @NotNull
     @NotBlank(message = "机器 ID 不能为空白字符串")
     private String machineId;
     private String machineIpv4;
-    @Column(nullable = false)
+    @NotNull
     @ValidEnum(value = PackType.class, message = "请选择正确的打包类型")
     private String type;
     @Column(nullable = false, unique = true)
@@ -35,7 +36,7 @@ public class PackerConfig extends BaseEntity<Integer> {
     private String binfilesDirname;
     // 打包后的应用存放的位置,可以是一个本地目录,也可以是一个网络位置
     // 根据打包类型来确定
-    @Column(nullable = false)
+    @NotNull
     @NotBlank(message = "可执行包的存放位置不能为空白字符串")
     private String targetPath;
 }

+ 3 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/model/po/config/build/RepoAuthConfig.java

@@ -13,6 +13,7 @@ import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Lob;
 import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 
 /**
  * 仓库认证配置
@@ -24,13 +25,13 @@ import javax.validation.constraints.NotBlank;
 @Setter
 @Entity
 public class RepoAuthConfig extends BaseEntity<Integer> {
-    @Column(nullable = false)
+    @NotNull
     @ValidEnum(value = RepoType.class, message = "请选择正确的仓库类型")
     private String type;
     @Column(nullable = false, unique = true)
     @NotBlank(message = "仓库认证名字不能为空白字符串")
     private String name;
-    @Column(nullable = false)
+    @NotNull
     @ValidEnum(value = RepoAuthType.class, message = "请选择的仓库认证类型")
     private String authType;
     // TODO 根据 authType 选择 username, password 或 rsaPrikey

+ 8 - 10
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/config/impl/BuildDirServiceImpl.java

@@ -61,16 +61,14 @@ public class BuildDirServiceImpl implements BuildDirService {
 
     private BuildDir createLocalBuildDir(String localBuildDir) throws Exception {
         DiskDetail diskDetail = disk.diskDetail(localBuildDir);
-        BuildDir buildDir = new BuildDir();
-        buildDir.setMachineId(Machine.ID);
-        buildDir.setMachineIpv4(Machine.IPV4);
-        buildDir.setDirPath(localBuildDir);
-        buildDir.setMountedOn(diskDetail.getMountedOn());
-        buildDir.setTotal(converter.convert(ByteType.Bytes, diskDetail.getTotal()));
-        buildDir.setUsed(converter.convertStr(ByteType.Bytes, ByteType.MiB, diskDetail.getUsed()));
-        buildDir.setAvail(converter.convertStr(ByteType.Bytes, ByteType.MiB, diskDetail.getAvail()));
-        buildDir.setIsDelete(false);
-
+        String machineId = Machine.ID;
+        String machineIpv4 = Machine.IPV4;
+        String mountedOn = diskDetail.getMountedOn();
+        String total = converter.convert(ByteType.Bytes, diskDetail.getTotal());
+        String used = converter.convertStr(ByteType.Bytes, ByteType.MiB, diskDetail.getUsed());
+        String avail = converter.convertStr(ByteType.Bytes, ByteType.MiB, diskDetail.getAvail());
+
+        BuildDir buildDir = new BuildDir(machineId, machineIpv4, localBuildDir, mountedOn, total, used, avail);
         createLocalBuildDir(buildDir);
         return buildDir;
     }

+ 8 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/model/po/DiskInfo.java

@@ -5,6 +5,7 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import javax.persistence.Embeddable;
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 
 /**
@@ -17,11 +18,16 @@ import java.io.Serializable;
 public class DiskInfo implements Serializable {
     private static final long serialVersionUID = 1L;
 
+    @NotNull
     private String diskPath;
+    @NotNull
     private String mountedOn;
+    @NotNull
     private String fsType;
-    private long total;
-    private long inodeTotal;
+    @NotNull
+    private Long total;
+    @NotNull
+    private Long inodeTotal;
 
     public DiskInfo(DiskDetail diskDetail) {
         this.diskPath = diskDetail.getDiskPath();

+ 0 - 10
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/model/po/DiskUsage.java

@@ -1,10 +0,0 @@
-package cn.reghao.autodop.dmaster.machine.model.po;
-
-/**
- * 磁盘使用情况
- *
- * @author reghao
- * @date 2021-10-16 14:39:32
- */
-public class DiskUsage {
-}

+ 11 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/model/po/MachineHost.java

@@ -6,6 +6,7 @@ import cn.reghao.autodop.dmaster.util.db.BaseEntity;
 import lombok.*;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 import java.util.List;
 
 /**
@@ -19,14 +20,22 @@ import java.util.List;
 public class MachineHost extends BaseEntity<Integer> {
     @Column(unique = true, nullable = false)
     private String machineId;
+    @NotNull
     private String machineIpv4;
-    private long bootTime;
+    @NotNull
+    private Long bootTime;
+    @NotNull
     private String osArch;
+    @NotNull
     private String osName;
+    @NotNull
     private String osVersion;
+    @NotNull
     private String env;
+    @NotNull
     private String status;
-    private long lastCheck;
+    @NotNull
+    private Long lastCheck;
     @Embedded
     private SshAuth sshAuth;
 

+ 19 - 5
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/model/po/MachineInfo.java

@@ -11,6 +11,7 @@ import org.hibernate.annotations.LazyCollectionOption;
 import javax.persistence.Column;
 import javax.persistence.ElementCollection;
 import javax.persistence.Entity;
+import javax.validation.constraints.NotNull;
 import java.time.LocalDateTime;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -26,25 +27,38 @@ import java.util.stream.Collectors;
 public class MachineInfo extends BaseEntity<Integer> {
     @Column(unique = true, nullable = false)
     private String machineId;
+    @NotNull
     private String machineIpv4;
 
+    @NotNull
     private String arch;
+    @NotNull
     private String name;
     // 系统版本或内核版本
+    @NotNull
     private String version;
+    @NotNull
     private String byteOrder;
-    private long bootTime;
+    @NotNull
+    private Long bootTime;
 
+    @NotNull
     private String vendor;
+    @NotNull
     private String modelName;
-    private int physicalCore;
-    private int logicalCore;
+    @NotNull
+    private Integer physicalCore;
+    @NotNull
+    private Integer logicalCore;
 
-    private long memTotal;
-    private long swapTotal;
+    @NotNull
+    private Long memTotal;
+    private Long swapTotal;
+    @NotNull
     @ElementCollection(targetClass = DiskInfo.class)
     @LazyCollection(LazyCollectionOption.FALSE)
     private List<DiskInfo> diskInfos;
+    @NotNull
     @ElementCollection(targetClass = NetworkInfo.class)
     @LazyCollection(LazyCollectionOption.FALSE)
     private List<NetworkInfo> networkInfos;

+ 0 - 10
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/model/po/MemUsage.java

@@ -1,10 +0,0 @@
-package cn.reghao.autodop.dmaster.machine.model.po;
-
-/**
- * 内存使用情况
- *
- * @author reghao
- * @date 2021-10-16 14:39:41
- */
-public class MemUsage {
-}

+ 5 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/model/po/NetworkInfo.java

@@ -5,6 +5,7 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import javax.persistence.Embeddable;
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 
 /**
@@ -17,9 +18,13 @@ import java.io.Serializable;
 public class NetworkInfo implements Serializable {
     private static final long serialVersionUID = 1L;
 
+    @NotNull
     private String iface;
+    @NotNull
     private String mac;
+    @NotNull
     private String ipv4;
+    @NotNull
     private String publicIpv4;
     private String ipv6;
 

+ 2 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/machine/model/po/SshAuth.java

@@ -6,6 +6,7 @@ import javax.persistence.Column;
 import javax.persistence.Embeddable;
 import javax.persistence.Lob;
 import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Positive;
 
 /**
@@ -17,9 +18,9 @@ import javax.validation.constraints.Positive;
 public class SshAuth {
     @NotBlank(message = "IPv4 地址为空白字符串")
     private String ipv4;
+    @NotNull
     @Positive(message = "SSH 端口必须有效")
     private Integer port;
-    @NotBlank(message = "用户名为空白字符串")
     private String username;
     private String password;
     @Lob

+ 8 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/notification/model/po/NotifyAccount.java

@@ -3,22 +3,28 @@ package cn.reghao.autodop.dmaster.notification.model.po;
 import cn.reghao.autodop.dmaster.util.db.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
 
 import javax.persistence.MappedSuperclass;
 import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 
 /**
  * @author reghao
  * @date 2021-06-23 10:31:11
  */
 @MappedSuperclass
-@EqualsAndHashCode(callSuper = false)
-@Data
+@Setter
+@Getter
 public class NotifyAccount extends BaseEntity<Integer> {
+    @NotNull
     @NotBlank(message = "通知账户标识不能为空白字符串")
     private String notifyAccountId;
+    @NotNull
     @NotBlank(message = "用户名不能为空白字符串")
     private String username;
+    @NotNull
     @NotBlank(message = "用户密码不能为空白字符串")
     private String password;
 }

+ 3 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/notification/model/po/NotifyGroup.java

@@ -17,14 +17,16 @@ import javax.validation.constraints.NotBlank;
 @Setter
 @Entity
 public class NotifyGroup extends BaseEntity<Integer> {
-    @Column(nullable = false)
+    @NotBlank
     @ValidEnum(value = NotifyType.class, message = "请选择正确的通知类型")
     private String notifyType;
     @Column(nullable = false, unique = true)
     private String notifyAccountId;
     // TODO 同时会作为 email 的 subject
+    @NotBlank
     @NotBlank(message = "通知名字不能为空白字符串")
     private String notifyName;
+    @NotBlank
     @NotBlank(message = "接收地址不能为空白字符串")
     private String receiver;