浏览代码

修改创建Private Registry Secret的实现,auth加上base64编码

raledong 7 年之前
父节点
当前提交
f1aab04043

+ 4 - 5
src/main/java/nju/seec/SEECdemo/logic/api/k8s/impl/SecretApiImpl.java

@@ -14,10 +14,7 @@ import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import static nju.seec.SEECdemo.util.Constants.PRETTY_FORMAT;
@@ -78,10 +75,12 @@ public class SecretApiImpl implements SecretApi {
     public SecretVO createPrivateRegistrySecret(String namespace, String name, String server, String user, String password) throws K8sApiException {
         Map<String, byte[]> data = new HashMap<>();
 
+        String authInfo = user + ":" + password;
+        String auth = Base64.getEncoder().encodeToString(authInfo.getBytes());
         String dockerConfigJson =
                 "{\"auths\":{\"" + server + "\":{\"username\":\"" + user +
                         "\",\"password\":\"" + password +
-                        "\",\"auth\":\"" + user + ":" + password + "\"}}}";
+                        "\",\"auth\":\"" + auth + "\"}}}";
         data.put(".dockerconfigjson", dockerConfigJson.getBytes());
 
         return createGenericSecret(namespace, name, data, SecretTypeEnum.REGISTRY);

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

@@ -6,6 +6,9 @@ import lombok.NoArgsConstructor;
 
 import java.math.BigDecimal;
 
+/**
+ * CPU配额数量,默认单位为m,即CPU时间
+ */
 @Data
 @NoArgsConstructor
 public class CpuQuantity {
@@ -49,8 +52,10 @@ public class CpuQuantity {
     }
 
     public Quantity toQuantity(){
-        return Quantity.fromString(quantity + unit.code);
+        return quantity;
     }
 
-
+    public String getQuantity() {
+        return quantity.toSuffixedString();
+    }
 }

+ 4 - 0
src/main/java/nju/seec/SEECdemo/logic/api/k8s/util/StorageQuantity.java

@@ -7,6 +7,10 @@ import lombok.NoArgsConstructor;
 
 import java.math.BigDecimal;
 
+/**
+ * 存储配额的单位,默认为MB
+ * 可选的为KB,MB,GB
+ */
 @Data
 @NoArgsConstructor
 public class StorageQuantity {

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

@@ -66,9 +66,11 @@ public class ProjectServiceImpl implements ProjectService{
             String type = seecIITemplate.getName();
             NamespaceDTO namespace = buildNamespace(projectName, type, description, startsAt, endsAt);
             namespaceApi.create(namespace);
-        } catch (K8sApiException e) {
+        } catch (Exception e) {
             LoggerUtil.error(logger, e, "创建项目失败,projectName={}, projectType={}", projectName, seecIITemplate.getName());
+            return null;
         }
+
         try {
             //为部署空间配置私有仓库密钥
             ApplicationProperties.Registry registry = applicationProperties.getRegistry();
@@ -99,7 +101,7 @@ public class ProjectServiceImpl implements ProjectService{
             projectVO.setEndsAt(DateUtil.fromDateToString(endsAt));
             projectVO.getExtra().put(ProjectVO.DB, dbDetailVO);
             return projectVO;
-        } catch (K8sApiException e) {
+        } catch (Exception e) {
             LoggerUtil.error(logger, e, "配置项目失败,projectName={}, projectType={}", projectName, seecIITemplate.getName());
             namespaceApi.deleteByName(projectName);
         }

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

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

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

@@ -25,13 +25,13 @@ public class SecretApiTest {
     private SecretApi secretApi;
 
     @Test
-    public void getSecret() {
+    public void testGetSecret() {
         SecretVO v1Secret = secretApi.getSecretByName("group24", "regcred");
         System.out.println(v1Secret);
     }
 
     @Test
-    public void getSecretByType() {
+    public void testGetSecretByType() {
         List<SecretVO> v1Secret = secretApi.getSecretListByType("demo", SecretTypeEnum.REGISTRY);
         v1Secret.stream().forEach((v1Secret1 -> {
             v1Secret1.getData().values().forEach((stringEntry -> {
@@ -40,4 +40,9 @@ public class SecretApiTest {
         }));
         System.out.println(v1Secret);
     }
+
+    @Test
+    public void testCreate() {
+        secretApi.createPrivateRegistrySecret("demo2", "10.1.1.243:18082", "admin", "admin123");
+    }
 }