use of com.sequenceiq.cloudbreak.cloud.model.DatabaseServer in project cloudbreak by hortonworks.
the class AzureTemplateBuilderDbTest method buildTestWhenDataEncryptionParametersPresent.
@Test
void buildTestWhenDataEncryptionParametersPresent() {
Template template = Optional.ofNullable(factoryBean.getObject()).map(config -> {
try {
return config.getTemplate("templates/arm-dbstack.ftl", "UTF-8");
} catch (IOException e) {
throw new IllegalStateException(e);
}
}).orElseThrow();
Subnet subnet = new Subnet(SUBNET_CIDR);
Network network = new Network(subnet, List.of(NETWORK_CIDR), OutboundInternetTraffic.ENABLED);
network.putParameter("subnets", FULL_SUBNET_ID);
Map<String, Object> params = new HashMap<String, Object>();
params.put("dbVersion", "10");
params.put(KEY_URL, "https://dummyVault.vault.azure.net/keys/dummyKey/dummyVersion");
params.put(KEY_VAULT_RESOURCE_GROUP_NAME, "dummyResourceGroup");
DatabaseServer databaseServer = DatabaseServer.builder().serverId(SERVER_ID).rootUserName(ROOT_USER_NAME).rootPassword(ROOT_PASSWORD).location(REGION).params(params).build();
DatabaseStack databaseStack = new DatabaseStack(network, databaseServer, Collections.emptyMap(), template.toString());
Mockito.when(azureDatabaseTemplateProvider.getTemplate(databaseStack)).thenReturn(template);
Mockito.when(azureUtils.encodeString(SUBNET_ID)).thenReturn("hash");
String result = underTest.build(cloudContext, databaseStack);
assertThat(JsonUtil.isValid(result)).overridingErrorMessage("Invalid JSON: " + result).isTrue();
assertThat(result).contains("\"keyVaultName\": {\n" + " \"type\": \"string\",\n" + " \"defaultValue\" : \"dummyVault\",\n" + " \"metadata\": {\n" + " \"description\": \"Key vault name where the key to use is stored\"\n" + " }\n" + " },\n" + " \"keyVaultResourceGroupName\": {\n" + " \"type\": \"string\",\n" + " \"defaultValue\" : \"dummyResourceGroup\",\n" + " \"metadata\": {\n" + " \"description\": \"Key vault resource group name where it is stored\"\n" + " }\n" + " },\n" + " \"keyName\": {\n" + " \"type\": \"string\",\n" + " \"defaultValue\" : \"dummyKey\",\n" + " \"metadata\": {\n" + " \"description\": \"Key name in the key vault to use as encryption protector\"\n" + " }\n" + " },\n" + " \"keyVersion\": {\n" + " \"type\": \"string\",\n" + " \"defaultValue\" : \"dummyVersion\",\n" + " \"metadata\": {\n" + " \"description\": \"Version of the key in the key vault to use as encryption protector\"\n" + " }\n" + " }");
}
use of com.sequenceiq.cloudbreak.cloud.model.DatabaseServer in project cloudbreak by hortonworks.
the class GcpDatabaseServerCheckServiceTest method testCheckWhenDbInstanceIsRunnableNOTAlwaysShouldReturnStarted.
@Test
public void testCheckWhenDbInstanceIsRunnableNOTAlwaysShouldReturnStarted() throws IOException {
AuthenticatedContext authenticatedContext = mock(AuthenticatedContext.class);
CloudCredential cloudCredential = mock(CloudCredential.class);
DatabaseStack databaseStack = mock(DatabaseStack.class);
DatabaseServer databaseServer = mock(DatabaseServer.class);
SQLAdmin sqlAdmin = mock(SQLAdmin.class);
SQLAdmin.Instances sqlAdminInstances = mock(SQLAdmin.Instances.class);
SQLAdmin.Instances.List sqlAdminInstancesList = mock(SQLAdmin.Instances.List.class);
InstancesListResponse instancesListResponse = mock(InstancesListResponse.class);
when(authenticatedContext.getCloudCredential()).thenReturn(cloudCredential);
when(cloudCredential.getName()).thenReturn("credential");
when(databaseStack.getDatabaseServer()).thenReturn(databaseServer);
when(databaseServer.getServerId()).thenReturn("test");
when(gcpSQLAdminFactory.buildSQLAdmin(any(CloudCredential.class), anyString())).thenReturn(sqlAdmin);
when(gcpStackUtil.getProjectId(any(CloudCredential.class))).thenReturn("project-id");
when(sqlAdmin.instances()).thenReturn(sqlAdminInstances);
when(sqlAdminInstances.list(anyString())).thenReturn(sqlAdminInstancesList);
when(sqlAdminInstancesList.execute()).thenReturn(instancesListResponse);
when(instancesListResponse.isEmpty()).thenReturn(false);
DatabaseInstance databaseInstance = new DatabaseInstance();
databaseInstance.setName("test");
databaseInstance.setState("RUNNABLE");
Settings settings = new Settings();
settings.setActivationPolicy("NOT_ALWAYS");
databaseInstance.setSettings(settings);
when(instancesListResponse.getItems()).thenReturn(List.of(databaseInstance));
ExternalDatabaseStatus check = underTest.check(authenticatedContext, databaseStack);
Assert.assertEquals(ExternalDatabaseStatus.STOPPED, check);
}
use of com.sequenceiq.cloudbreak.cloud.model.DatabaseServer in project cloudbreak by hortonworks.
the class GcpDatabaseServerCheckServiceTest method testCheckWhenDbInstanceNotAvailableShouldReturnDeleted.
@Test
public void testCheckWhenDbInstanceNotAvailableShouldReturnDeleted() throws IOException {
AuthenticatedContext authenticatedContext = mock(AuthenticatedContext.class);
CloudCredential cloudCredential = mock(CloudCredential.class);
DatabaseStack databaseStack = mock(DatabaseStack.class);
DatabaseServer databaseServer = mock(DatabaseServer.class);
SQLAdmin sqlAdmin = mock(SQLAdmin.class);
SQLAdmin.Instances sqlAdminInstances = mock(SQLAdmin.Instances.class);
SQLAdmin.Instances.List sqlAdminInstancesList = mock(SQLAdmin.Instances.List.class);
InstancesListResponse instancesListResponse = mock(InstancesListResponse.class);
when(authenticatedContext.getCloudCredential()).thenReturn(cloudCredential);
when(cloudCredential.getName()).thenReturn("credential");
when(databaseStack.getDatabaseServer()).thenReturn(databaseServer);
when(databaseServer.getServerId()).thenReturn("test");
when(gcpSQLAdminFactory.buildSQLAdmin(any(CloudCredential.class), anyString())).thenReturn(sqlAdmin);
when(gcpStackUtil.getProjectId(any(CloudCredential.class))).thenReturn("project-id");
when(sqlAdmin.instances()).thenReturn(sqlAdminInstances);
when(sqlAdminInstances.list(anyString())).thenReturn(sqlAdminInstancesList);
when(sqlAdminInstancesList.execute()).thenReturn(instancesListResponse);
when(instancesListResponse.isEmpty()).thenReturn(true);
ExternalDatabaseStatus check = underTest.check(authenticatedContext, databaseStack);
Assert.assertEquals(ExternalDatabaseStatus.DELETED, check);
}
use of com.sequenceiq.cloudbreak.cloud.model.DatabaseServer in project cloudbreak by hortonworks.
the class GcpDatabaseServerCheckServiceTest method testCheckWhenDbInstanceDropGcpResourceExceptionShouldReturnGcpResourceException.
@Test
public void testCheckWhenDbInstanceDropGcpResourceExceptionShouldReturnGcpResourceException() throws IOException {
AuthenticatedContext authenticatedContext = mock(AuthenticatedContext.class);
CloudCredential cloudCredential = mock(CloudCredential.class);
DatabaseStack databaseStack = mock(DatabaseStack.class);
DatabaseServer databaseServer = mock(DatabaseServer.class);
SQLAdmin sqlAdmin = mock(SQLAdmin.class);
SQLAdmin.Instances sqlAdminInstances = mock(SQLAdmin.Instances.class);
SQLAdmin.Instances.List sqlAdminInstancesList = mock(SQLAdmin.Instances.List.class);
TokenResponseException tokenResponseException = mock(TokenResponseException.class);
when(authenticatedContext.getCloudCredential()).thenReturn(cloudCredential);
when(cloudCredential.getName()).thenReturn("credential");
when(databaseStack.getDatabaseServer()).thenReturn(databaseServer);
when(databaseServer.getServerId()).thenReturn("test");
when(gcpSQLAdminFactory.buildSQLAdmin(any(CloudCredential.class), anyString())).thenReturn(sqlAdmin);
when(gcpStackUtil.getProjectId(any(CloudCredential.class))).thenReturn("project-id");
when(sqlAdmin.instances()).thenReturn(sqlAdminInstances);
when(sqlAdminInstances.list(anyString())).thenReturn(sqlAdminInstancesList);
when(sqlAdminInstancesList.execute()).thenThrow(tokenResponseException);
when(gcpStackUtil.getMissingServiceAccountKeyError(any(TokenResponseException.class), anyString())).thenReturn(new GcpResourceException("error"));
GcpResourceException gcpResourceException = assertThrows(GcpResourceException.class, () -> underTest.check(authenticatedContext, databaseStack));
Assert.assertEquals("error", gcpResourceException.getMessage());
}
use of com.sequenceiq.cloudbreak.cloud.model.DatabaseServer in project cloudbreak by hortonworks.
the class GcpDatabaseServerLaunchServiceTest method testLaunchWhenDatabaseNOTAlreadyExistAndNOTSharedProjectIdShouldCreate.
@Test
public void testLaunchWhenDatabaseNOTAlreadyExistAndNOTSharedProjectIdShouldCreate() throws Exception {
Network network = new Network(new Subnet("10.0.0.0/16"), Map.of("subnetId", "s-1", "availabilityZone", "a"));
Map<String, Object> map = new HashMap<>();
map.put("engineVersion", "1");
map.put("key", "value");
DatabaseServer databaseServer = DatabaseServer.builder().connectionDriver("driver").serverId("driver").connectorJarUrl("driver").engine(DatabaseEngine.POSTGRESQL).location("location").port(99).storageSize(50L).rootUserName("rootUserName").rootPassword("rootPassword").flavor("flavor").useSslEnforcement(true).params(map).build();
AuthenticatedContext authenticatedContext = mock(AuthenticatedContext.class);
DatabaseStack databaseStack = mock(DatabaseStack.class);
PersistenceNotifier persistenceNotifier = mock(PersistenceNotifier.class);
CloudCredential cloudCredential = mock(CloudCredential.class);
SQLAdmin sqlAdmin = mock(SQLAdmin.class);
Compute compute = mock(Compute.class);
DatabaseInstance databaseInstance = mock(DatabaseInstance.class);
Compute.Subnetworks subnetworks = mock(Compute.Subnetworks.class);
Compute.Subnetworks.Get subnetworksGet = mock(Compute.Subnetworks.Get.class);
SQLAdmin.Users users = mock(SQLAdmin.Users.class);
SQLAdmin.Users.Insert usersInsert = mock(SQLAdmin.Users.Insert.class);
SQLAdmin.Instances.Get instancesGet = mock(SQLAdmin.Instances.Get.class);
SQLAdmin.Instances sqlAdminInstances = mock(SQLAdmin.Instances.class);
SQLAdmin.Instances.List sqlAdminInstancesList = mock(SQLAdmin.Instances.List.class);
InstancesListResponse instancesListResponse = mock(InstancesListResponse.class);
Operation operation = mock(Operation.class);
SQLAdmin.Instances.Insert sqlAdminInstancesInsert = mock(SQLAdmin.Instances.Insert.class);
IpMapping ipMapping = new IpMapping();
ipMapping.setIpAddress("10.0.0.0");
ipMapping.setType("PRIVATE");
when(authenticatedContext.getCloudCredential()).thenReturn(cloudCredential);
when(cloudCredential.getName()).thenReturn("credential");
when(databaseStack.getDatabaseServer()).thenReturn(databaseServer);
when(databaseStack.getNetwork()).thenReturn(network);
when(gcpLabelUtil.createLabelsFromTagsMap(anyMap())).thenReturn(new HashMap<>());
when(gcpSQLAdminFactory.buildSQLAdmin(any(CloudCredential.class), anyString())).thenReturn(sqlAdmin);
when(gcpComputeFactory.buildCompute(any(CloudCredential.class))).thenReturn(compute);
when(compute.subnetworks()).thenReturn(subnetworks);
when(subnetworks.get(anyString(), anyString(), anyString())).thenReturn(subnetworksGet);
when(subnetworksGet.execute()).thenReturn(new Subnetwork());
when(gcpStackUtil.getProjectId(any(CloudCredential.class))).thenReturn("project-id");
when(sqlAdmin.instances()).thenReturn(sqlAdminInstances);
when(sqlAdminInstances.list(anyString())).thenReturn(sqlAdminInstancesList);
when(sqlAdminInstancesList.execute()).thenReturn(instancesListResponse);
when(instancesListResponse.getItems()).thenReturn(List.of());
when(databaseInstance.getName()).thenReturn("name");
when(sqlAdminInstances.get(anyString(), anyString())).thenReturn(instancesGet);
when(instancesGet.execute()).thenReturn(databaseInstance);
when(sqlAdminInstances.insert(anyString(), databaseInstanceArgumentCaptor.capture())).thenReturn(sqlAdminInstancesInsert);
when(sqlAdminInstancesInsert.setPrettyPrint(anyBoolean())).thenReturn(sqlAdminInstancesInsert);
when(sqlAdminInstancesInsert.execute()).thenReturn(operation);
when(databaseInstance.getIpAddresses()).thenReturn(List.of(ipMapping));
doNothing().when(databasePollerService).launchDatabasePoller(any(AuthenticatedContext.class), anyList());
when(sqlAdmin.users()).thenReturn(users);
when(users.insert(anyString(), anyString(), any(User.class))).thenReturn(usersInsert);
when(usersInsert.execute()).thenReturn(operation);
when(authenticatedContext.getCloudContext()).thenReturn(cloudContext);
when(cloudContext.getLocation()).thenReturn(location(region("region"), availabilityZone("az1")));
List<CloudResource> launch = underTest.launch(authenticatedContext, databaseStack, persistenceNotifier);
Assert.assertEquals("value", databaseInstanceArgumentCaptor.getValue().getDiskEncryptionConfiguration().getKmsKeyName());
Assert.assertEquals(1, launch.size());
}
Aggregations