use of com.ctrip.framework.apollo.common.dto.ClusterDTO in project apollo by ctripcorp.
the class AppController method loadEnvClusterInfo.
@RequestMapping(value = "/apps/{appId}/envclusters", method = RequestMethod.GET)
public List<OpenEnvClusterDTO> loadEnvClusterInfo(@PathVariable String appId) {
List<OpenEnvClusterDTO> envClusters = new LinkedList<>();
List<Env> envs = portalSettings.getActiveEnvs();
for (Env env : envs) {
OpenEnvClusterDTO envCluster = new OpenEnvClusterDTO();
envCluster.setEnv(env.name());
List<ClusterDTO> clusterDTOs = clusterService.findClusters(env, appId);
envCluster.setClusters(BeanUtils.toPropertySet("name", clusterDTOs));
envClusters.add(envCluster);
}
return envClusters;
}
use of com.ctrip.framework.apollo.common.dto.ClusterDTO in project apollo by ctripcorp.
the class ReleaseControllerTest method testReleaseBuild.
@Test
@Sql(scripts = "/controller/test-release.sql", executionPhase = ExecutionPhase.BEFORE_TEST_METHOD)
@Sql(scripts = "/controller/cleanup.sql", executionPhase = ExecutionPhase.AFTER_TEST_METHOD)
public void testReleaseBuild() {
String appId = "someAppId";
AppDTO app = restTemplate.getForObject("http://localhost:" + port + "/apps/" + appId, AppDTO.class);
ClusterDTO cluster = restTemplate.getForObject("http://localhost:" + port + "/apps/" + app.getAppId() + "/clusters/default", ClusterDTO.class);
NamespaceDTO namespace = restTemplate.getForObject("http://localhost:" + port + "/apps/" + app.getAppId() + "/clusters/" + cluster.getName() + "/namespaces/application", NamespaceDTO.class);
Assert.assertEquals("someAppId", app.getAppId());
Assert.assertEquals("default", cluster.getName());
Assert.assertEquals("application", namespace.getNamespaceName());
ItemDTO[] items = restTemplate.getForObject("http://localhost:" + port + "/apps/" + app.getAppId() + "/clusters/" + cluster.getName() + "/namespaces/" + namespace.getNamespaceName() + "/items", ItemDTO[].class);
Assert.assertEquals(3, items.length);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> parameters = new LinkedMultiValueMap<>();
parameters.add("name", "someReleaseName");
parameters.add("comment", "someComment");
parameters.add("operator", "test");
HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<>(parameters, headers);
ResponseEntity<ReleaseDTO> response = restTemplate.postForEntity("http://localhost:" + port + "/apps/" + app.getAppId() + "/clusters/" + cluster.getName() + "/namespaces/" + namespace.getNamespaceName() + "/releases", entity, ReleaseDTO.class);
Assert.assertEquals(HttpStatus.OK, response.getStatusCode());
ReleaseDTO release = response.getBody();
Assert.assertEquals("someReleaseName", release.getName());
Assert.assertEquals("someComment", release.getComment());
Assert.assertEquals("someAppId", release.getAppId());
Assert.assertEquals("default", release.getClusterName());
Assert.assertEquals("application", release.getNamespaceName());
Map<String, String> configurations = new HashMap<>();
configurations.put("k1", "v1");
configurations.put("k2", "v2");
configurations.put("k3", "v3");
Assert.assertEquals(GSON.toJson(configurations), release.getConfigurations());
}
use of com.ctrip.framework.apollo.common.dto.ClusterDTO in project apollo by ctripcorp.
the class ConfigsImportService method importCluster.
private void importCluster(String clusterInfo, List<Env> importEnvs, String operator) {
ClusterDTO toImportCluster = gson.fromJson(clusterInfo, ClusterDTO.class);
toImportCluster.setDataChangeCreatedBy(operator);
toImportCluster.setDataChangeLastModifiedBy(operator);
toImportCluster.setDataChangeCreatedTime(new Date());
toImportCluster.setDataChangeLastModifiedTime(new Date());
String appId = toImportCluster.getAppId();
String clusterName = toImportCluster.getName();
importEnvs.parallelStream().forEach(env -> {
try {
clusterService.loadCluster(appId, env, clusterName);
} catch (Exception e) {
// not existed
clusterService.createCluster(env, toImportCluster);
}
});
}
use of com.ctrip.framework.apollo.common.dto.ClusterDTO in project apollo by ctripcorp.
the class ConfigsExportServiceTest method testNamespaceExportImport.
@Test
public void testNamespaceExportImport() throws FileNotFoundException {
String filePath = "/tmp/apollo.zip";
File file = new File(filePath);
if (file.exists()) {
file.delete();
}
// export config
UserInfo userInfo = genUser();
when(userInfoHolder.getUser()).thenReturn(userInfo);
Env env = Env.DEV;
String appId1 = "app1";
String appId2 = "app2";
App app1 = genApp(appId1, appId1, "org1", "org2");
App app2 = genApp(appId2, appId2, "org1", "org2");
List<App> exportApps = Lists.newArrayList(app1, app2);
String appNamespaceName1 = "ns1";
String appNamespaceName2 = "ns2";
AppNamespace app1Namespace1 = genAppNamespace(appId1, appNamespaceName1, false);
AppNamespace app1Namespace2 = genAppNamespace(appId1, appNamespaceName2, true);
AppNamespace app2Namespace1 = genAppNamespace(appId2, appNamespaceName1, false);
List<AppNamespace> appNamespaces = Lists.newArrayList(app1Namespace1, app1Namespace2, app2Namespace1);
String clusterName1 = "c1";
String clusterName2 = "c2";
ClusterDTO app1Cluster1 = genCluster(clusterName1, appId1);
ClusterDTO app1Cluster2 = genCluster(clusterName2, appId1);
ClusterDTO app2Cluster1 = genCluster(clusterName1, appId2);
ClusterDTO app2Cluster2 = genCluster(clusterName2, appId2);
List<ClusterDTO> app1Clusters = Lists.newArrayList(app1Cluster1, app1Cluster2);
List<ClusterDTO> app2Clusters = Lists.newArrayList(app2Cluster1, app2Cluster2);
ItemBO item1 = genItem("k1", "v1");
ItemBO item2 = genItem("k2", "v2");
List<ItemBO> items = Lists.newArrayList(item1, item2);
String namespaceName1 = "namespace1";
String namespaceName2 = "namespace2";
NamespaceBO app1Cluster1Namespace1 = genNamespace(app1, app1Cluster1, items, namespaceName1);
NamespaceBO app1Cluster1Namespace2 = genNamespace(app1, app1Cluster1, items, namespaceName2);
List<NamespaceBO> app1Cluster1Namespace = Lists.newArrayList(app1Cluster1Namespace1, app1Cluster1Namespace2);
NamespaceBO app1Cluster2Namespace1 = genNamespace(app1, app1Cluster2, items, namespaceName1);
List<NamespaceBO> app1Cluster2Namespace = Lists.newArrayList(app1Cluster2Namespace1);
NamespaceBO app2Cluster1Namespace1 = genNamespace(app2, app1Cluster1, items, namespaceName1);
List<NamespaceBO> app2Cluster1Namespace = Lists.newArrayList(app2Cluster1Namespace1);
NamespaceBO app2Cluster2Namespace1 = genNamespace(app2, app1Cluster2, items, namespaceName1);
NamespaceBO app2Cluster2Namespace2 = genNamespace(app2, app1Cluster2, items, namespaceName2);
List<NamespaceBO> app2Cluster2Namespace = Lists.newArrayList(app2Cluster2Namespace1, app2Cluster2Namespace2);
when(appService.findAll()).thenReturn(exportApps);
when(appNamespaceService.findAll()).thenReturn(appNamespaces);
when(permissionValidator.isAppAdmin(any())).thenReturn(true);
when(clusterService.findClusters(env, appId1)).thenReturn(app1Clusters);
when(clusterService.findClusters(env, appId2)).thenReturn(app2Clusters);
when(namespaceService.findNamespaceBOs(appId1, Env.DEV, clusterName1)).thenReturn(app1Cluster1Namespace);
when(namespaceService.findNamespaceBOs(appId1, Env.DEV, clusterName2)).thenReturn(app1Cluster2Namespace);
when(namespaceService.findNamespaceBOs(appId2, Env.DEV, clusterName1)).thenReturn(app2Cluster1Namespace);
when(namespaceService.findNamespaceBOs(appId2, Env.DEV, clusterName2)).thenReturn(app2Cluster2Namespace);
FileOutputStream fileOutputStream = new FileOutputStream("/tmp/apollo.zip");
configsExportService.exportData(fileOutputStream, Lists.newArrayList(Env.DEV));
// import config
when(appNamespaceService.findByAppIdAndName(any(), any())).thenReturn(null);
when(appNamespaceService.importAppNamespaceInLocal(any())).thenReturn(app1Namespace1);
when(appService.load(any())).thenReturn(null);
when(appService.load(any(), any())).thenThrow(new RuntimeException());
when(clusterService.loadCluster(any(), any(), any())).thenThrow(new RuntimeException());
when(namespaceService.loadNamespaceBaseInfo(any(), any(), any(), any())).thenThrow(new RuntimeException());
when(namespaceService.createNamespace(any(), any())).thenReturn(genNamespaceDTO(1));
when(itemService.findItems(any(), any(), any(), any())).thenReturn(Lists.newArrayList());
HttpStatusCodeException itemNotFoundException = new HttpClientErrorException(HttpStatus.NOT_FOUND);
when(itemService.loadItem(any(), any(), any(), any(), anyString())).thenThrow(itemNotFoundException);
FileInputStream fileInputStream = new FileInputStream("/tmp/apollo.zip");
ZipInputStream zipInputStream = new ZipInputStream(fileInputStream);
try {
configsImportService.importDataFromZipFile(Lists.newArrayList(Env.DEV), zipInputStream, false);
} catch (Exception e) {
e.printStackTrace();
}
verify(appNamespaceService, times(3)).importAppNamespaceInLocal(any());
verify(applicationEventPublisher, times(3)).publishEvent(any());
verify(appService, times(2)).createAppInRemote(any(), any());
verify(clusterService, times(4)).createCluster(any(), any());
verify(namespaceService, times(6)).createNamespace(any(), any());
verify(roleInitializationService, times(6)).initNamespaceRoles(any(), any(), anyString());
verify(roleInitializationService, times(6)).initNamespaceEnvRoles(any(), any(), anyString());
verify(itemService, times(12)).createItem(any(), any(), any(), any(), any());
}
use of com.ctrip.framework.apollo.common.dto.ClusterDTO in project apollo by ctripcorp.
the class ServerClusterOpenApiService method createCluster.
@Override
public OpenClusterDTO createCluster(String env, OpenClusterDTO openClusterDTO) {
ClusterDTO toCreate = OpenApiBeanUtils.transformToClusterDTO(openClusterDTO);
ClusterDTO createdClusterDTO = clusterService.createCluster(Env.valueOf(env), toCreate);
return OpenApiBeanUtils.transformFromClusterDTO(createdClusterDTO);
}
Aggregations