瀏覽代碼

实验代码部署项目 存在的问题:secret无法成功创建

raledong 7 年之前
父節點
當前提交
fc3cbc96d0
共有 23 個文件被更改,包括 164 次插入91 次删除
  1. 1 1
      config.yml
  2. 2 8
      src/main/java/nju/seec/SEECdemo/logic/api/k8s/NamespaceApi.java
  3. 2 0
      src/main/java/nju/seec/SEECdemo/logic/api/k8s/dto/ContainerDTO.java
  4. 6 9
      src/main/java/nju/seec/SEECdemo/logic/api/k8s/dto/DeploymentDTO.java
  5. 72 0
      src/main/java/nju/seec/SEECdemo/logic/api/k8s/dto/NamespaceDTO.java
  6. 1 1
      src/main/java/nju/seec/SEECdemo/logic/api/k8s/impl/DeploymentApiImpl.java
  7. 3 6
      src/main/java/nju/seec/SEECdemo/logic/api/k8s/impl/NamespaceApiImpl.java
  8. 3 1
      src/main/java/nju/seec/SEECdemo/logic/api/k8s/impl/ResourceQuotaImpl.java
  9. 19 7
      src/main/java/nju/seec/SEECdemo/logic/api/k8s/util/CpuQuantity.java
  10. 8 10
      src/main/java/nju/seec/SEECdemo/logic/api/k8s/util/StorageQuantity.java
  11. 1 1
      src/main/java/nju/seec/SEECdemo/logic/api/k8s/vo/ResourceQuota.java
  12. 0 9
      src/main/java/nju/seec/SEECdemo/logic/service/impl/ApplicationServiceImpl.java
  13. 16 7
      src/main/java/nju/seec/SEECdemo/logic/service/impl/ProjectServiceImpl.java
  14. 2 2
      src/main/java/nju/seec/SEECdemo/util/BeanUtil.java
  15. 1 1
      src/main/java/nju/seec/SEECdemo/util/Constants.java
  16. 0 2
      src/main/java/nju/seec/SEECdemo/web/dto/ApplicationDTO.java
  17. 1 1
      src/main/resources/application-dev.yml
  18. 5 1
      src/test/java/nju/seec/SEECdemo/service/ProjectServiceImplTest.java
  19. 9 8
      src/test/java/nju/seec/SEECdemo/service/api/DeploymentApiImplTest.java
  20. 9 0
      src/test/java/nju/seec/SEECdemo/service/api/LimitRangeTest.java
  21. 2 2
      src/test/java/nju/seec/SEECdemo/service/api/NamespaceApiImplTest.java
  22. 0 13
      src/test/java/nju/seec/SEECdemo/service/api/SecretApiImpl.java
  23. 1 1
      src/test/java/nju/seec/SEECdemo/service/api/SecretApiTest.java

+ 1 - 1
config.yml

@@ -41,6 +41,6 @@ moocoder:
     public-mysql-username: root
     public-mysql-password: password
   registry:
-    host: http://10.1.1.243:18082
+    host: 10.1.1.243:18082
     username: admin
     password: admin123

+ 2 - 8
src/main/java/nju/seec/SEECdemo/logic/api/k8s/NamespaceApi.java

@@ -1,5 +1,6 @@
 package nju.seec.SEECdemo.logic.api.k8s;
 
+import nju.seec.SEECdemo.logic.api.k8s.dto.NamespaceDTO;
 import nju.seec.SEECdemo.logic.api.k8s.exception.K8sApiException;
 import nju.seec.SEECdemo.logic.api.k8s.vo.Namespace;
 
@@ -13,14 +14,7 @@ public interface NamespaceApi {
      * @param namespace 命名空间名称需要唯一
      * @return
      */
-    void create(Namespace namespace) throws K8sApiException;
-
-    /**
-     * 异步新建一个命名空间
-     * @param namespace
-     * @return
-     */
-    void createAsync(Namespace namespace) throws K8sApiException;
+    void create(NamespaceDTO namespace) throws K8sApiException;
 
 
     /**

+ 2 - 0
src/main/java/nju/seec/SEECdemo/logic/api/k8s/dto/ContainerDTO.java

@@ -23,6 +23,8 @@ import static nju.seec.SEECdemo.util.Constants.NAME_PATTERN;
 public class ContainerDTO {
 
     private static final String IMAGE_PULL_POLICY = "Always";
+//    private static final String IMAGE_PULL_POLICY = "IfNotPresent";
+
     @NotNull
     @Pattern(regexp = NAME_PATTERN)
     private String name;

+ 6 - 9
src/main/java/nju/seec/SEECdemo/logic/api/k8s/dto/DeploymentDTO.java

@@ -5,14 +5,10 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 import org.hibernate.validator.constraints.Range;
 
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import javax.validation.constraints.NotEmpty;
+import java.util.*;
 import java.util.stream.Collectors;
 
-import static nju.seec.SEECdemo.util.Constants.APPLICATION_LABEL;
-
 /**
  * author: rale
  * createdAt: 1/3/19
@@ -25,13 +21,14 @@ public class DeploymentDTO {
 
     private static final String DEPLOYMENT_KIND = "Deployment";
 
+    @NotEmpty
     private String name;
 
     private String namespace;
 
-    private List<ContainerDTO> containers;
+    private List<ContainerDTO> containers = new ArrayList<>();
 
-    private List<String> imagePullSecrets;
+    private List<String> imagePullSecrets = new ArrayList<>();
 
     @Range(min = 1, max = 3)
     private int replicas;
@@ -56,7 +53,7 @@ public class DeploymentDTO {
 
     private V1LabelSelector toDeploymentV1LabelSelector() {
         return new V1LabelSelectorBuilder()
-                .withMatchLabels(Collections.singletonMap(APPLICATION_LABEL, name))
+                .withMatchLabels(labels)
                 .build();
     }
 

+ 72 - 0
src/main/java/nju/seec/SEECdemo/logic/api/k8s/dto/NamespaceDTO.java

@@ -0,0 +1,72 @@
+package nju.seec.SEECdemo.logic.api.k8s.dto;
+
+import io.kubernetes.client.models.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import nju.seec.SEECdemo.util.DateUtil;
+
+import javax.validation.constraints.NotNull;
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * author: rale
+ * createdAt: 1/4/19
+ */
+@Data
+@NoArgsConstructor
+public class NamespaceDTO {
+
+    private static final String KIND = "Namespace";
+
+    private static final String VERSION = "v1";
+
+    //@todo 添加一个label标记该Namespace为seec创建的
+    //获取时只获取seec创建的label
+
+    @NotNull
+    private String name;
+
+    private Map<String, String> labels = new HashMap<>();
+
+    private Map<String, String> annotations = new HashMap<>();
+
+    @ApiModelProperty(readOnly = true)
+    private LocalDateTime createdAt;
+
+
+    public NamespaceDTO(V1Namespace v1Namespace) {
+        this.name = v1Namespace.getMetadata().getName();
+        this.labels = v1Namespace.getMetadata().getLabels();
+        this.annotations = v1Namespace.getMetadata().getAnnotations();
+        this.createdAt = DateUtil.fromJodaDateTime(v1Namespace.getMetadata().getCreationTimestamp());
+    }
+
+    public V1Namespace toV1Namespace(){
+        V1ObjectMeta v1ObjectMeta = new V1ObjectMetaBuilder()
+                .withName(name)
+                .withLabels(labels)
+                .withAnnotations(annotations)
+                .build();
+        V1NamespaceSpec v1NamespaceSpec = new V1NamespaceSpecBuilder()
+                .build();
+        V1Namespace v1Namespace = new V1NamespaceBuilder()
+                .withApiVersion(VERSION)
+                .withKind(KIND)
+                .withMetadata(v1ObjectMeta)
+                .withSpec(v1NamespaceSpec)
+                .build();
+        return v1Namespace;
+
+    }
+
+    public void addToLabel(String key, String value) {
+        labels.put(key, value);
+    }
+
+    public void addToAnnotation(String key, String value){
+        annotations.put(key, value);
+    }
+}

+ 1 - 1
src/main/java/nju/seec/SEECdemo/logic/api/k8s/impl/DeploymentApiImpl.java

@@ -37,7 +37,7 @@ public class DeploymentApiImpl implements DeploymentApi{
         }
         try {
             V1Deployment v1Deployment = deployment.toV1Deployment();
-            appsV1Api.createNamespacedDeployment(deployment.getNamespace(),v1Deployment, "true");
+            appsV1Api.createNamespacedDeployment(deployment.getNamespace(),v1Deployment, PRETTY_FORMAT);
         } catch (ApiException e) {
             LoggerUtil.error(logger, e, "deployment创建失败, deployment={}, response={}", deployment, e.getResponseBody());
             throw K8sApiException.K8s_SYSTEM_ERROR_EXCEPTION;

+ 3 - 6
src/main/java/nju/seec/SEECdemo/logic/api/k8s/impl/NamespaceApiImpl.java

@@ -7,6 +7,7 @@ import io.kubernetes.client.models.V1DeleteOptionsBuilder;
 import io.kubernetes.client.models.V1Namespace;
 import io.kubernetes.client.models.V1NamespaceList;
 import nju.seec.SEECdemo.logic.api.k8s.NamespaceApi;
+import nju.seec.SEECdemo.logic.api.k8s.dto.NamespaceDTO;
 import nju.seec.SEECdemo.logic.api.k8s.exception.K8sApiException;
 import nju.seec.SEECdemo.logic.api.k8s.vo.Namespace;
 import nju.seec.SEECdemo.util.LoggerUtil;
@@ -34,10 +35,10 @@ public class NamespaceApiImpl implements NamespaceApi{
     /**
      * @param namespace
      * @return
-     * @see NamespaceApi#create(Namespace)
+     * @see NamespaceApi#create(nju.seec.SEECdemo.logic.api.k8s.dto.NamespaceDTO)
      */
     @Override
-    public void create(Namespace namespace) throws K8sApiException{
+    public void create(NamespaceDTO namespace) throws K8sApiException{
         if (exists(namespace.getName())) {
             throw new K8sApiException(K8sApiException.NAMESPACE_ALREADY_EXIST);
         }
@@ -50,10 +51,6 @@ public class NamespaceApiImpl implements NamespaceApi{
         }
     }
 
-    @Override
-    public void createAsync(Namespace namespace) throws K8sApiException{
-    }
-
     @Override
     public void deleteByName(String name) throws K8sApiException{
         if (!exists(name)) {

+ 3 - 1
src/main/java/nju/seec/SEECdemo/logic/api/k8s/impl/ResourceQuotaImpl.java

@@ -1,5 +1,6 @@
 package nju.seec.SEECdemo.logic.api.k8s.impl;
 
+import io.kubernetes.client.models.V1ResourceQuota;
 import nju.seec.SEECdemo.logic.api.k8s.ResourceQuotaApi;
 
 
@@ -47,9 +48,10 @@ public class ResourceQuotaImpl implements ResourceQuotaApi {
         }
 
         try {
+            V1ResourceQuota v1ResourceQuota = resourceQuota.toV1ResourceQuota();
             coreV1Api.createNamespacedResourceQuota(
                     resourceQuota.getNamespace(),
-                    resourceQuota.toV1ResourceQuota(),
+                    v1ResourceQuota,
                     PRETTY_FORMAT);
         } catch (ApiException e) {
             LoggerUtil.error(logger, e, "创建resource quota失败, resourceQuota={}, response={}",

+ 19 - 7
src/main/java/nju/seec/SEECdemo/logic/api/k8s/util/CpuQuantity.java

@@ -10,23 +10,35 @@ import java.math.BigDecimal;
 @NoArgsConstructor
 public class CpuQuantity {
 
-    private BigDecimal quantity;
+    private String quantity;
 
+    private Unit unit = Unit.Mi;
+    //Cpu单位
+    public enum Unit{
+        Mi("m");
+
+        private String code;
+
+        Unit(String code) {
+            this.code = code;
+        }
+    }
     public CpuQuantity(int quantity){
         //转化成百分比
-        this.quantity = BigDecimal.valueOf(quantity * 1.0 / 100);
+        this.quantity = String.valueOf(quantity);
     }
 
-    public CpuQuantity(Quantity quantity) {
-        this.quantity = quantity.getNumber();
+    public CpuQuantity(long quantity) {
+        this.quantity = String.valueOf(quantity);
     }
 
+
     public Quantity toQuantity(){
-        return new Quantity(quantity, Quantity.Format.DECIMAL_SI);
+        return Quantity.fromString(quantity + unit.code);
     }
 
-    public int getQuantity(){
-        return quantity.intValue();
+    public int getQuantityIntValue(){
+        return Integer.parseInt(quantity);
     }
 
 }

+ 8 - 10
src/main/java/nju/seec/SEECdemo/logic/api/k8s/util/StorageQuantity.java

@@ -1,6 +1,7 @@
 package nju.seec.SEECdemo.logic.api.k8s.util;
 
 import io.kubernetes.client.custom.Quantity;
+import io.kubernetes.client.custom.QuantityFormatter;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
@@ -10,7 +11,7 @@ import java.math.BigDecimal;
 @NoArgsConstructor
 public class StorageQuantity {
 
-    private BigDecimal quantity;
+    private String quantity;
 
     //存储的默认单位为MB
     private Unit unit = Unit.MB;
@@ -31,22 +32,19 @@ public class StorageQuantity {
     public static final StorageQuantity EMPTY = new StorageQuantity(0);
 
     public StorageQuantity(int quantity){
-        this.quantity = BigDecimal.valueOf(quantity);
+        this.quantity = String.valueOf(quantity);
     }
 
     public StorageQuantity(int quantity, Unit unit) {
-        this.quantity = BigDecimal.valueOf(quantity);
+        this(quantity);
         this.unit = unit;
     }
 
-    public StorageQuantity(Quantity quantity) {
-        this.quantity = quantity.getNumber();
-        //@todo 检验到底是啥单位
-    }
-
     public Quantity toQuantity(){
-        return new Quantity(quantity, Quantity.Format.DECIMAL_SI);
+        return Quantity.fromString(this.quantity + unit.code);
     }
 
-
+    public int getQuantityIntValue() {
+        return Integer.parseInt(quantity);
+    }
 }

+ 1 - 1
src/main/java/nju/seec/SEECdemo/logic/api/k8s/vo/ResourceQuota.java

@@ -54,7 +54,7 @@ public class ResourceQuota {
         Map<String, Quantity> map = new HashMap<>();
         map.put(HARD_REQUEST_CPU, maxCpuTotalRequest.toQuantity());
         map.put(HARD_LIMITS_CPU, maxCpuTotalLimit.toQuantity());
-        map.put(HARD_REQUEST_MEMORY, maxCpuTotalRequest.toQuantity());
+        map.put(HARD_REQUEST_MEMORY, maxMemoryTotalLimit.toQuantity());
         map.put(HARD_LIMITS_MEMORY, maxMemoryTotalLimit.toQuantity());
 
         V1ResourceQuotaSpec v1ResourceQuotaSpec = new V1ResourceQuotaSpecBuilder()

+ 0 - 9
src/main/java/nju/seec/SEECdemo/logic/service/impl/ApplicationServiceImpl.java

@@ -1,26 +1,17 @@
 package nju.seec.SEECdemo.logic.service.impl;
 
-import io.kubernetes.client.apis.CoreV1Api;
-import io.kubernetes.client.models.*;
 import nju.seec.SEECdemo.logic.api.k8s.DeploymentApi;
 import nju.seec.SEECdemo.logic.api.k8s.NamespaceApi;
 import nju.seec.SEECdemo.logic.api.k8s.SecretApi;
 import nju.seec.SEECdemo.logic.api.k8s.ServiceApi;
-import nju.seec.SEECdemo.logic.api.k8s.dto.ContainerDTO;
 import nju.seec.SEECdemo.logic.api.k8s.dto.DeploymentDTO;
 import nju.seec.SEECdemo.logic.api.k8s.dto.ServiceDTO;
-import nju.seec.SEECdemo.logic.api.k8s.exception.K8sApiException;
 import nju.seec.SEECdemo.logic.api.k8s.util.SecretTypeEnum;
-import nju.seec.SEECdemo.logic.api.k8s.vo.ContainerPort;
-import nju.seec.SEECdemo.logic.api.k8s.vo.Deployment;
-import nju.seec.SEECdemo.logic.api.k8s.vo.Namespace;
 import nju.seec.SEECdemo.logic.api.k8s.vo.SecretVO;
 import nju.seec.SEECdemo.logic.service.ApplicationService;
 import nju.seec.SEECdemo.logic.vo.ApplicationVO;
-import nju.seec.SEECdemo.logic.vo.ContainerVO;
 import nju.seec.SEECdemo.util.LoggerUtil;
 import nju.seec.SEECdemo.web.dto.ApplicationDTO;
-import nju.seec.SEECdemo.web.dto.PortDTO;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;

+ 16 - 7
src/main/java/nju/seec/SEECdemo/logic/service/impl/ProjectServiceImpl.java

@@ -6,6 +6,7 @@ import nju.seec.SEECdemo.logic.api.k8s.LimitRangeApi;
 import nju.seec.SEECdemo.logic.api.k8s.NamespaceApi;
 import nju.seec.SEECdemo.logic.api.k8s.ResourceQuotaApi;
 import nju.seec.SEECdemo.logic.api.k8s.SecretApi;
+import nju.seec.SEECdemo.logic.api.k8s.dto.NamespaceDTO;
 import nju.seec.SEECdemo.logic.api.k8s.exception.K8sApiException;
 import nju.seec.SEECdemo.logic.api.k8s.vo.*;
 import nju.seec.SEECdemo.logic.service.DBService;
@@ -62,7 +63,7 @@ public class ProjectServiceImpl implements ProjectService{
         try {
             //创建部署空间
             String type = seecIITemplate.getName();
-            Namespace namespace = buildNamespace(projectName, type, description, startsAt, endsAt);
+            NamespaceDTO namespace = buildNamespace(projectName, type, description, startsAt, endsAt);
             namespaceApi.create(namespace);
         } catch (K8sApiException e) {
             LoggerUtil.error(logger, e, "创建项目失败,projectName={}, projectType={}", projectName, seecIITemplate.getName());
@@ -85,8 +86,8 @@ public class ProjectServiceImpl implements ProjectService{
 
             //配置应用的默认配额
             Map<String, Integer> defaultValue = new HashMap<>();
-            defaultValue.put("cpu", resourceConfig.getDefaultCPU().getQuantity());
-            defaultValue.put("memory", resourceConfig.getDefaultMemory().getQuantity().intValue());
+            defaultValue.put("cpu", resourceConfig.getDefaultCPU().getQuantityIntValue());
+            defaultValue.put("memory", resourceConfig.getDefaultMemory().getQuantityIntValue());
             V1LimitRange v1LimitRange = limitRangeApi.toLimitRange(projectName, projectName, defaultValue, defaultValue, null, null);
             limitRangeApi.createLimitRange(projectName, v1LimitRange);
 
@@ -99,8 +100,6 @@ public class ProjectServiceImpl implements ProjectService{
             data.put("DB_PASSWORD", dbDetailVO.getPassword().getBytes());
             secretApi.createGenericSecret(projectName, projectName + "-" + DB_SECRET_NAME, data);
 
-            //@todo密码存在哪里?
-
             //封装返回数据
             ProjectVO projectVO = new ProjectVO();
             projectVO.setName(projectName);
@@ -126,8 +125,17 @@ public class ProjectServiceImpl implements ProjectService{
         return false;
     }
 
-    private Namespace buildNamespace(String projectName, String type, String description, LocalDate startsAt, LocalDate endsAt){
-        Namespace namespace = new Namespace();
+    /**
+     * 根据项目信息构建Namespace
+     * @param projectName Namespace的名称
+     * @param type 项目的类型,存在Namespace的标签中
+     * @param description 项目的描述,可以存在Namespace的标签或者注释中
+     * @param startsAt 项目开始时间,存在Namespace的标签中
+     * @param endsAt 项目的结束时间,存在Namespace的标签中
+     * @return
+     */
+    private NamespaceDTO buildNamespace(String projectName, String type, String description, LocalDate startsAt, LocalDate endsAt){
+        NamespaceDTO namespace = new NamespaceDTO();
         namespace.setName(projectName);
         namespace.addToLabel(TYPE_LABEL, type);
         namespace.addToLabel(DESCRIPTION_LABEL, description);
@@ -135,4 +143,5 @@ public class ProjectServiceImpl implements ProjectService{
         namespace.addToLabel(ENDS_AT_LABEL, DateUtil.fromDateToString(endsAt, DateUtil.BASE_DATE_FORMAT));
         return namespace;
     }
+
 }

+ 2 - 2
src/main/java/nju/seec/SEECdemo/util/BeanUtil.java

@@ -18,10 +18,10 @@ public class BeanUtil {
     public ProjectTemplate seecIITemplate() {
         ProjectTemplate projectTemplate = new ProjectTemplate();
         ResourceConfig resourceConfig = new ResourceConfig();
-        resourceConfig.setDefaultCPU(new CpuQuantity(5));
+        resourceConfig.setDefaultCPU(new CpuQuantity(40));
         resourceConfig.setMaxCPU(new CpuQuantity(50));
         resourceConfig.setDefaultMemory(new StorageQuantity(500));
-        resourceConfig.setMaxMemory(new StorageQuantity(5000));
+        resourceConfig.setMaxMemory(new StorageQuantity(600));
         resourceConfig.setDefaultStorage(StorageQuantity.EMPTY);
         resourceConfig.setMaxStorage(StorageQuantity.EMPTY);
         projectTemplate.setDefaultResourceConfig(resourceConfig);

+ 1 - 1
src/main/java/nju/seec/SEECdemo/util/Constants.java

@@ -31,7 +31,7 @@ public abstract class Constants {
 
     public static final String ENDS_AT_LABEL = LABEL_PREFIX + "/end";
 
-    public static final String PRETTY_FORMAT = "false";
+    public static final String PRETTY_FORMAT = "true";
 
     //前台清除策略
     public static final String FOREGROUND_PROPAGATION_POLICY = "Foreground";

+ 0 - 2
src/main/java/nju/seec/SEECdemo/web/dto/ApplicationDTO.java

@@ -3,8 +3,6 @@ package nju.seec.SEECdemo.web.dto;
 import lombok.Data;
 import nju.seec.SEECdemo.logic.api.k8s.dto.DeploymentDTO;
 import nju.seec.SEECdemo.logic.api.k8s.dto.ServiceDTO;
-import nju.seec.SEECdemo.logic.api.k8s.dto.ServicePortDTO;
-import nju.seec.SEECdemo.logic.api.k8s.vo.Deployment;
 import org.hibernate.validator.constraints.Range;
 
 import javax.validation.constraints.NotEmpty;

+ 1 - 1
src/main/resources/application-dev.yml

@@ -78,6 +78,6 @@ moocoder:
     public-mysql-username: root
     public-mysql-password: password
   registry:
-    host: http://10.1.1.243:18082
+    host: 10.1.1.243:18082
     username: admin
     password: admin123

+ 5 - 1
src/test/java/nju/seec/SEECdemo/service/ProjectServiceImplTest.java

@@ -16,11 +16,15 @@ import java.time.LocalDate;
 public class ProjectServiceImplTest {
 
     @Autowired
-    ProjectService projectService;
+    private ProjectService projectService;
 
     @Test
     public void testCreate(){
         ProjectVO projectVO = projectService.createSeecIIProject("demo", "demo", LocalDate.of(2018,10,12), LocalDate.of(2019,10,15));
         System.out.println(projectVO);
     }
+
+    @Test
+    public void testDelete(){
+    }
 }

+ 9 - 8
src/test/java/nju/seec/SEECdemo/service/api/DeploymentApiImplTest.java

@@ -1,14 +1,9 @@
 package nju.seec.SEECdemo.service.api;
 
-import io.kubernetes.client.custom.IntOrString;
 import nju.seec.SEECdemo.logic.api.k8s.DeploymentApi;
 import nju.seec.SEECdemo.logic.api.k8s.dto.ContainerDTO;
 import nju.seec.SEECdemo.logic.api.k8s.dto.ContainerPortDTO;
 import nju.seec.SEECdemo.logic.api.k8s.dto.DeploymentDTO;
-import nju.seec.SEECdemo.logic.api.k8s.vo.Container;
-import nju.seec.SEECdemo.logic.api.k8s.vo.ContainerPort;
-import nju.seec.SEECdemo.logic.api.k8s.vo.Deployment;
-import nju.seec.SEECdemo.logic.api.k8s.vo.ServicePort;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -19,6 +14,8 @@ import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
 
+import static nju.seec.SEECdemo.util.Constants.APPLICATION_LABEL;
+
 @RunWith(SpringRunner.class)
 @SpringBootTest
 public class DeploymentApiImplTest {
@@ -30,18 +27,22 @@ public class DeploymentApiImplTest {
     public void testCreate() {
         DeploymentDTO deployment = new DeploymentDTO();
         deployment.setName("test");
-        deployment.setNamespace("group21");
+        deployment.setNamespace("demo");
         deployment.setReplicas(1);
 
         ContainerDTO container = new ContainerDTO();
-        container.setName("test-container");
-        container.setImage("10.1.1.243:18082/container_demo:1.0");
+        container.setName("container");
+        container.setImage("10.1.1.243:18082/container_demo:2.0");
         ContainerPortDTO containerPort = new ContainerPortDTO();
         containerPort.setPort(8081);
         containerPort.setProtocol("TCP");
         Set<ContainerPortDTO> ports = new HashSet<>();
         ports.add(containerPort);
         container.setPorts(ports);
+
+        deployment.setLabels(Collections.singletonMap(APPLICATION_LABEL, "test"));
+        deployment.setImagePullSecrets(Collections.singletonList("regcred"));
+
         deployment.setContainers(Collections.singletonList(container));
 
         deploymentApi.createSync(deployment);

+ 9 - 0
src/test/java/nju/seec/SEECdemo/service/api/LimitRangeTest.java

@@ -140,4 +140,13 @@ public class LimitRangeTest {
             e.printStackTrace();
         }
     }
+
+    @Test
+    public void testCreateLimitRange() {
+        Map<String, Integer> _default = new HashMap<>();
+        _default.put("cpu", 100);
+        _default.put("memory", 1024);
+        V1LimitRange v1LimitRange = limitRangeApi.toLimitRange("demo", "demo", _default, _default, null, null);
+        limitRangeApi.createLimitRange("demo", v1LimitRange);
+    }
 }

+ 2 - 2
src/test/java/nju/seec/SEECdemo/service/api/NamespaceApiImplTest.java

@@ -1,8 +1,8 @@
 package nju.seec.SEECdemo.service.api;
 
 import nju.seec.SEECdemo.logic.api.k8s.NamespaceApi;
+import nju.seec.SEECdemo.logic.api.k8s.dto.NamespaceDTO;
 import nju.seec.SEECdemo.logic.api.k8s.exception.K8sApiException;
-import nju.seec.SEECdemo.logic.api.k8s.vo.Namespace;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,7 +26,7 @@ public class NamespaceApiImplTest {
 
     @Test
     public void testCreate() throws K8sApiException {
-        Namespace namespace = new Namespace();
+        NamespaceDTO namespace = new NamespaceDTO();
         namespace.setName("group21");
         Map<String, String> labels = new HashMap<>();
         labels.put("test1", "test1");

+ 0 - 13
src/test/java/nju/seec/SEECdemo/service/api/SecretApiImpl.java

@@ -1,28 +1,15 @@
 package nju.seec.SEECdemo.service.api;
 
 
-import com.google.protobuf.MapEntry;
-import io.kubernetes.client.ApiException;
 import io.kubernetes.client.apis.AppsV1Api;
 import io.kubernetes.client.apis.CoreV1Api;
-import io.kubernetes.client.models.V1DeleteOptions;
-import io.kubernetes.client.models.V1ObjectMeta;
-import io.kubernetes.client.models.V1Secret;
-import io.kubernetes.client.models.V1SecretList;
 import nju.seec.SEECdemo.logic.api.k8s.SecretApi;
-import nju.seec.SEECdemo.logic.api.k8s.exception.K8sApiException;
-import nju.seec.SEECdemo.logic.api.k8s.vo.ApiResult;
-import nju.seec.SEECdemo.logic.api.k8s.vo.Namespace;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 @RunWith(SpringRunner.class)
 @SpringBootTest
 public class SecretApiImpl {

+ 1 - 1
src/test/java/nju/seec/SEECdemo/service/api/SecretApiTest.java

@@ -32,7 +32,7 @@ public class SecretApiTest {
 
     @Test
     public void getSecretByType() {
-        List<SecretVO> v1Secret = secretApi.getSecretListByType("demo", SecretTypeEnum.Generic);
+        List<SecretVO> v1Secret = secretApi.getSecretListByType("demo", SecretTypeEnum.REGISTRY);
         v1Secret.stream().forEach((v1Secret1 -> {
             v1Secret1.getData().values().forEach((stringEntry -> {
                 System.out.println(stringEntry);