Jelajahi Sumber

修改limitRange创建失败的bug

raledong 7 tahun lalu
induk
melakukan
debb695616

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

@@ -152,7 +152,7 @@ public class DeploymentApiImpl implements DeploymentApi{
             return v1Deployment == null ? null : new Deployment(v1Deployment);
         } catch (ApiException e) {
             if (e.getCode() != K8sApiException.NOT_FOUND) {
-                LoggerUtil.error(logger, e, "查询Deployment异常,namespace={}, name={}", namespace, name);
+                LoggerUtil.error(logger, e, "查询Deployment异常,--spring.profiles.active=prod --spring.config.additional-location=config.yml dnamespace={}, name={}", namespace, name);
                 throw K8sApiException.K8s_SYSTEM_ERROR_EXCEPTION;
             }
         } catch (Exception e) {

+ 5 - 2
src/main/java/nju/seec/SEECdemo/logic/api/k8s/impl/LimitRangeApiImpl.java

@@ -9,14 +9,13 @@ import io.kubernetes.client.models.V1Status;
 import nju.seec.SEECdemo.logic.api.k8s.LimitRangeApi;
 import nju.seec.SEECdemo.logic.api.k8s.exception.K8sApiException;
 import nju.seec.SEECdemo.logic.api.k8s.model.LimitRange;
-import nju.seec.SEECdemo.logic.api.k8s.vo.LimitRangeVO;
 import nju.seec.SEECdemo.util.LoggerUtil;
+import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 
 import static nju.seec.SEECdemo.util.Constants.PRETTY_FORMAT;
 
@@ -24,6 +23,8 @@ import static nju.seec.SEECdemo.util.Constants.PRETTY_FORMAT;
 @Service
 public class LimitRangeApiImpl implements LimitRangeApi {
 
+    private static final Logger logger = LoggerUtil.getLogger(LimitRangeApiImpl.class);
+
     @Autowired
     private CoreV1Api coreV1Api;
 
@@ -95,6 +96,8 @@ public class LimitRangeApiImpl implements LimitRangeApi {
             //namespace NotFound 404
             //Already Exist 409
             //422 if default value greater than max value, or min value greater than defaultRequest value
+            LoggerUtil.error(logger, e, "创建LimitRange失败, namespace={}, limitRange={}, response={}",
+                    namespace, body, e.getResponseBody());
             switch (e.getCode()) {
                 case K8sApiException.NOT_FOUND:
                     throw new K8sApiException(K8sApiException.NOT_FOUND);

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

@@ -1,5 +1,6 @@
 package nju.seec.SEECdemo.logic.api.k8s.impl;
 
+import com.google.gson.JsonSyntaxException;
 import io.kubernetes.client.ApiException;
 import io.kubernetes.client.apis.CoreV1Api;
 import io.kubernetes.client.models.V1DeleteOptions;
@@ -67,14 +68,15 @@ public class NamespaceApiImpl implements NamespaceApi{
         try {
             deleteNamespace(name);
         } catch (ApiException e) {
-            LoggerUtil.error(logger, e, "Namespace删除失败,name={}, response={}", name , e.getResponseBody());
+            LoggerUtil.error(logger, e, "Namespace删除失败,name={}, response={}", name, e.getResponseBody());
             if (e.getCode() == NOT_FOUND) {
                 throw K8s_NAMESPACE_NOT_EXIST;
-            }else {
+            } else {
                 throw K8s_SYSTEM_ERROR_EXCEPTION;
             }
+        } catch (JsonSyntaxException e) {
+            //do nothing
         } catch (Exception e) {
-            //k8s 由swagger导致的bug
             LoggerUtil.error(logger, e, "Namespace删除异常, name={}", name);
         }
     }

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

@@ -1,5 +1,6 @@
 package nju.seec.SEECdemo.logic.api.k8s.impl;
 
+import com.google.gson.JsonSyntaxException;
 import io.kubernetes.client.ApiException;
 import io.kubernetes.client.apis.CoreV1Api;
 import io.kubernetes.client.models.V1DeleteOptions;
@@ -60,9 +61,11 @@ public class ServiceApiImpl implements ServiceApi{
 
             if (e.getCode() == NOT_FOUND) {
                 throw new K8sApiException(K8sApiException.NOT_FOUND, "Service不存在");
-            }else {
+            } else {
                 throw K8s_SYSTEM_ERROR_EXCEPTION;
             }
+        }catch (JsonSyntaxException e) {
+            //do nothing
         }catch (Exception e) {
             LoggerUtil.error(logger, e, "Service删除异常,namespace={}, name={}, response={}", namespace, name);
         }

+ 20 - 8
src/main/java/nju/seec/SEECdemo/logic/api/k8s/model/LimitRange.java

@@ -105,14 +105,26 @@ public class LimitRange {
         Map<String, Quantity> default_request = v1LimitRangeItem.getDefaultRequest();
         Map<String, Quantity> max = v1LimitRangeItem.getMax();
         Map<String, Quantity> min = v1LimitRangeItem.getMin();
-        setDefaultCPU(CpuQuantity.getCpuQuantity(_default.getOrDefault(CPU_KEY, null)));
-        setDefaultMemory(StorageQuantity.getStorageQuantity(_default.getOrDefault(MEMORY_KEY, null)));
-        setDefaultRequestCPU(CpuQuantity.getCpuQuantity(default_request.getOrDefault(CPU_KEY, null)));
-        setDefaultRequestMemory(StorageQuantity.getStorageQuantity(default_request.getOrDefault(MEMORY_KEY, null)));
-        setMaxCpu(CpuQuantity.getCpuQuantity(max.getOrDefault(CPU_KEY, null)));
-        setMaxMemory(StorageQuantity.getStorageQuantity(max.getOrDefault(MEMORY_KEY, null)));
-        setMinCpu(CpuQuantity.getCpuQuantity(min.getOrDefault(CPU_KEY, null)));
-        setMinMemory(StorageQuantity.getStorageQuantity(min.getOrDefault(MEMORY_KEY, null)));
+        if (_default != null) {
+            setDefaultCPU(CpuQuantity.getCpuQuantity(_default.getOrDefault(CPU_KEY, null)));
+            setDefaultMemory(StorageQuantity.getStorageQuantity(_default.getOrDefault(MEMORY_KEY, null)));
+        }
+
+        if (default_request != null) {
+            setDefaultRequestCPU(CpuQuantity.getCpuQuantity(default_request.getOrDefault(CPU_KEY, null)));
+            setDefaultRequestMemory(StorageQuantity.getStorageQuantity(default_request.getOrDefault(MEMORY_KEY, null)));
+        }
+
+        if (max != null) {
+            setMaxCpu(CpuQuantity.getCpuQuantity(max.getOrDefault(CPU_KEY, null)));
+            setMaxMemory(StorageQuantity.getStorageQuantity(max.getOrDefault(MEMORY_KEY, null)));
+        }
+
+        if (min != null) {
+            setMinCpu(CpuQuantity.getCpuQuantity(min.getOrDefault(CPU_KEY, null)));
+            setMinMemory(StorageQuantity.getStorageQuantity(min.getOrDefault(MEMORY_KEY, null)));
+        }
+
     }
 
 }

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

@@ -2,7 +2,6 @@ package nju.seec.SEECdemo.logic.service.impl;
 
 import nju.seec.SEECdemo.logic.api.k8s.*;
 import nju.seec.SEECdemo.logic.api.k8s.model.Deployment;
-import nju.seec.SEECdemo.logic.api.k8s.model.DeploymentStatus;
 import nju.seec.SEECdemo.logic.api.k8s.model.Ingress;
 import nju.seec.SEECdemo.logic.api.k8s.model.Service;
 import nju.seec.SEECdemo.logic.api.k8s.exception.K8sApiException;

+ 4 - 2
src/main/java/nju/seec/SEECdemo/logic/service/impl/ProjectServiceImpl.java

@@ -110,6 +110,7 @@ public class ProjectServiceImpl implements ProjectService{
     @Override
     public void deleteProject(String projectName) {
         namespaceApi.delete(projectName);
+        //@todo 删除额外的资源
     }
 
     @Override
@@ -149,9 +150,10 @@ public class ProjectServiceImpl implements ProjectService{
 
     private LimitRange buildLimitRange(String projectName, ResourceConfig resourceConfig) {
         LimitRange limitRange = new LimitRange();
-        limitRange.setDefaultCPU(resourceConfig.getDefaultCPU());
-        limitRange.setDefaultMemory(resourceConfig.getDefaultMemory());
+//        limitRange.setDefaultCPU(resourceConfig.getDefaultCPU());
+//        limitRange.setDefaultMemory(resourceConfig.getDefaultMemory());
         limitRange.setDefaultRequestCPU(resourceConfig.getDefaultCPU());
+        limitRange.setDefaultRequestMemory(resourceConfig.getDefaultMemory());
         limitRange.setMaxCpu(resourceConfig.getMaxCPU());
         limitRange.setMaxMemory(resourceConfig.getMaxMemory());
         return limitRange;

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

@@ -19,7 +19,7 @@ public class BeanUtil {
         ProjectTemplate projectTemplate = new ProjectTemplate();
         ResourceConfig resourceConfig = new ResourceConfig();
         resourceConfig.setDefaultCPU(new CpuQuantity(150));
-        resourceConfig.setMaxCPU(new CpuQuantity(100));
+        resourceConfig.setMaxCPU(new CpuQuantity(200));
         resourceConfig.setDefaultMemory(new StorageQuantity(700));
         resourceConfig.setMaxMemory(new StorageQuantity(1000));
         resourceConfig.setDefaultStorage(StorageQuantity.EMPTY);

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

@@ -20,12 +20,12 @@ public class ProjectServiceImplTest {
 
     @Test
     public void testCreate(){
-        ProjectVO projectVO = projectService.createSeecIIProject("demo2", "demo", LocalDate.of(2018,10,12), LocalDate.of(2019,10,15));
+        ProjectVO projectVO = projectService.createSeecIIProject("demo3", "demo", LocalDate.of(2018,10,12), LocalDate.of(2019,10,15));
         System.out.println(projectVO);
     }
 
     @Test
     public void testDelete(){
-        projectService.deleteProject("demo2");
+        projectService.deleteProject("demo3");
     }
 }