Coverage Report - com.ctrip.framework.apollo.portal.api.AdminServiceAPI
 
Classes in this File Line Coverage Branch Coverage Complexity
AdminServiceAPI
100%
2/2
N/A
1
AdminServiceAPI$AppAPI
14%
1/7
N/A
1
AdminServiceAPI$ClusterAPI
25%
1/4
N/A
1
AdminServiceAPI$HealthAPI
100%
2/2
N/A
1
AdminServiceAPI$ItemAPI
7%
1/13
N/A
1
AdminServiceAPI$NamespaceAPI
8%
1/12
N/A
1
AdminServiceAPI$ReleaseAPI
6%
1/16
N/A
1
 
 1  
 package com.ctrip.framework.apollo.portal.api;
 2  
 
 3  
 
 4  
 import com.ctrip.framework.apollo.core.dto.AppNamespaceDTO;
 5  
 import com.ctrip.framework.apollo.core.enums.Env;
 6  
 import com.ctrip.framework.apollo.core.dto.AppDTO;
 7  
 import com.ctrip.framework.apollo.core.dto.ClusterDTO;
 8  
 import com.ctrip.framework.apollo.core.dto.ItemChangeSets;
 9  
 import com.ctrip.framework.apollo.core.dto.ItemDTO;
 10  
 import com.ctrip.framework.apollo.core.dto.NamespaceDTO;
 11  
 import com.ctrip.framework.apollo.core.dto.ReleaseDTO;
 12  
 
 13  
 import org.springframework.boot.actuate.health.Health;
 14  
 import org.springframework.http.HttpEntity;
 15  
 import org.springframework.http.HttpHeaders;
 16  
 import org.springframework.http.MediaType;
 17  
 import org.springframework.http.ResponseEntity;
 18  
 import org.springframework.stereotype.Service;
 19  
 import org.springframework.util.LinkedMultiValueMap;
 20  
 import org.springframework.util.MultiValueMap;
 21  
 
 22  
 import java.util.Arrays;
 23  
 import java.util.List;
 24  
 
 25  
 
 26  
 @Service
 27  1
 public class AdminServiceAPI {
 28  
 
 29  
   @Service
 30  1
   public static class HealthAPI extends API {
 31  
 
 32  
     public Health health(Env env) {
 33  12
       return restTemplate.getForObject(getAdminServiceHost(env) + "/health", Health.class);
 34  
     }
 35  
   }
 36  
 
 37  
   @Service
 38  1
   public static class AppAPI extends API {
 39  
 
 40  
     public List<AppDTO> findApps(Env env) {
 41  0
       AppDTO[] appDTOs =
 42  0
           restTemplate.getForObject("{host}/apps", AppDTO[].class, getAdminServiceHost(env));
 43  0
       return Arrays.asList(appDTOs);
 44  
     }
 45  
 
 46  
     public AppDTO loadApp(Env env, String appId) {
 47  0
       return restTemplate.getForObject("{host}/apps/{appId}", AppDTO.class, getAdminServiceHost(env), appId);
 48  
     }
 49  
 
 50  
     public AppDTO createApp(Env env, AppDTO app) {
 51  0
       return restTemplate.postForEntity("{host}/apps", app, AppDTO.class, getAdminServiceHost(env))
 52  0
           .getBody();
 53  
     }
 54  
   }
 55  
 
 56  
 
 57  
   @Service
 58  1
   public static class NamespaceAPI extends API {
 59  
 
 60  
     public List<NamespaceDTO> findNamespaceByCluster(String appId, Env env, String clusterName) {
 61  0
       NamespaceDTO[] namespaceDTOs = restTemplate.getForObject("{host}/apps/{appId}/clusters/{clusterName}/namespaces",
 62  0
                                                                NamespaceDTO[].class, getAdminServiceHost(env), appId,
 63  
                                                                clusterName);
 64  0
       return Arrays.asList(namespaceDTOs);
 65  
     }
 66  
 
 67  
     public NamespaceDTO loadNamespace(String appId, Env env, String clusterName,
 68  
                                       String namespaceName) {
 69  0
       NamespaceDTO dto = restTemplate.getForObject("{host}/apps/{appId}/clusters/{clusterName}/namespaces/" + namespaceName,
 70  0
                                        NamespaceDTO.class, getAdminServiceHost(env), appId, clusterName);
 71  0
       return dto;
 72  
     }
 73  
 
 74  
 
 75  
     public NamespaceDTO createNamespace(Env env, NamespaceDTO namespace) {
 76  0
       return restTemplate
 77  0
           .postForEntity("{host}/apps/{appId}/clusters/{clusterName}/namespaces", namespace, NamespaceDTO.class,
 78  0
                          getAdminServiceHost(env), namespace.getAppId(), namespace.getClusterName()).getBody();
 79  
     }
 80  
 
 81  
     public AppNamespaceDTO createOrUpdateAppNamespace(Env env, AppNamespaceDTO appNamespace) {
 82  0
       return restTemplate.postForEntity("{host}/apps/{appId}/appnamespaces", appNamespace, AppNamespaceDTO.class,
 83  0
                                         getAdminServiceHost(env), appNamespace.getAppId()).getBody();
 84  
     }
 85  
 
 86  
   }
 87  
 
 88  
   @Service
 89  1
   public static class ItemAPI extends API {
 90  
 
 91  
     public List<ItemDTO> findItems(String appId, Env env, String clusterName, String namespaceName) {
 92  0
       ItemDTO[] itemDTOs =
 93  
           restTemplate
 94  0
               .getForObject("{host}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items",
 95  
                             ItemDTO[].class,
 96  0
                             getAdminServiceHost(env), appId, clusterName, namespaceName);
 97  0
       return Arrays.asList(itemDTOs);
 98  
     }
 99  
 
 100  
     public void updateItems(String appId, Env env, String clusterName, String namespace,
 101  
                             ItemChangeSets changeSets) {
 102  0
       restTemplate.postForEntity("{host}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/itemset",
 103  0
                                  changeSets, Void.class, getAdminServiceHost(env), appId, clusterName, namespace);
 104  0
     }
 105  
 
 106  
     public ItemDTO createOrUpdateItem(String appId, Env env, String clusterName, String namespace, ItemDTO item) {
 107  0
       return restTemplate.postForEntity("{host}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/items",
 108  0
                                         item, ItemDTO.class, getAdminServiceHost(env), appId, clusterName, namespace)
 109  0
           .getBody();
 110  
     }
 111  
 
 112  
     public void deleteItem(Env env, long itemId, String operator) {
 113  
 
 114  0
       restTemplate.delete("{host}/items/{itemId}?operator={operator}", getAdminServiceHost(env), itemId, operator);
 115  0
     }
 116  
   }
 117  
 
 118  
   @Service
 119  1
   public static class ClusterAPI extends API {
 120  
 
 121  
     public List<ClusterDTO> findClustersByApp(String appId, Env env) {
 122  0
       ClusterDTO[] clusterDTOs = restTemplate.getForObject("{host}/apps/{appId}/clusters", ClusterDTO[].class,
 123  0
                                                            getAdminServiceHost(env), appId);
 124  0
       return Arrays.asList(clusterDTOs);
 125  
     }
 126  
   }
 127  
 
 128  1
   @Service
 129  1
   public static class ReleaseAPI extends API {
 130  
 
 131  
     public ReleaseDTO loadLatestRelease(String appId, Env env, String clusterName,
 132  
                                         String namespace) {
 133  
       ReleaseDTO
 134  0
           releaseDTO =
 135  
           restTemplate
 136  0
               .getForObject("{host}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/releases/latest",
 137  0
                             ReleaseDTO.class, getAdminServiceHost(env), appId, clusterName, namespace);
 138  0
       return releaseDTO;
 139  
     }
 140  
 
 141  
     public ReleaseDTO release(String appId, Env env, String clusterName, String namespace,
 142  
                               String releaseBy, String comment, String operator) {
 143  0
       HttpHeaders headers = new HttpHeaders();
 144  0
       headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
 145  0
       MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>();
 146  0
       parameters.add("name", releaseBy);
 147  0
       parameters.add("comment", comment);
 148  0
       parameters.add("operator", operator);
 149  0
       HttpEntity<MultiValueMap<String, String>> entity =
 150  
           new HttpEntity<MultiValueMap<String, String>>(parameters, headers);
 151  0
       ResponseEntity<ReleaseDTO> response =
 152  
           restTemplate
 153  0
               .postForEntity("{host}/apps/{appId}/clusters/{clusterName}/namespaces/{namespaceName}/releases", entity,
 154  
                              ReleaseDTO.class,
 155  0
                              getAdminServiceHost(env), appId, clusterName, namespace);
 156  0
       return response.getBody();
 157  
     }
 158  
   }
 159  
 
 160  
 }