use of com.sequenceiq.redbeams.domain.stack.DatabaseServer in project cloudbreak by hortonworks.
the class DBStackToDatabaseStackConverterTest method testConversionAwsWithAwsEncryptionResourcesPresent.
@Test
public void testConversionAwsWithAwsEncryptionResourcesPresent() {
Network network = new Network();
network.setAttributes(new Json(NETWORK_ATTRIBUTES));
dbStack.setNetwork(network);
dbStack.setCloudPlatform("AWS");
dbStack.setParameters(new HashMap<>());
DatabaseServer server = new DatabaseServer();
server.setDatabaseVendor(DatabaseVendor.POSTGRES);
server.setAttributes(new Json(DATABASE_SERVER_ATTRIBUTES));
dbStack.setDatabaseServer(server);
dbStack.setTags(new Json(STACK_TAGS));
dbStack.setTemplate("template");
DetailedEnvironmentResponse environmentResponse = new DetailedEnvironmentResponse();
environmentResponse.setCloudPlatform("AWS");
environmentResponse.setAws(AwsEnvironmentParameters.builder().withAwsDiskEncryptionParameters(AwsDiskEncryptionParameters.builder().withEncryptionKeyArn("value").build()).build());
when(environmentService.getByCrn(anyString())).thenReturn(environmentResponse);
DatabaseStack convertedStack = underTest.convert(dbStack);
Map<String, Object> parameters = convertedStack.getDatabaseServer().getParameters();
assertThat(parameters.get("key").toString()).isEqualTo("value");
assertThat(parameters.size()).isEqualTo(3);
}
use of com.sequenceiq.redbeams.domain.stack.DatabaseServer in project cloudbreak by hortonworks.
the class DBStackToDatabaseStackConverterTest method testConversionWithSslCertificateCloudProviderOwned.
@Test
void testConversionWithSslCertificateCloudProviderOwned() {
DatabaseServer server = new DatabaseServer();
server.setDatabaseVendor(DatabaseVendor.POSTGRES);
dbStack.setDatabaseServer(server);
SslConfig sslConfig = new SslConfig();
sslConfig.setSslCertificateType(SslCertificateType.CLOUD_PROVIDER_OWNED);
dbStack.setSslConfig(sslConfig);
DatabaseStack convertedStack = underTest.convert(dbStack);
assertThat(convertedStack.getDatabaseServer().isUseSslEnforcement()).isTrue();
}
use of com.sequenceiq.redbeams.domain.stack.DatabaseServer in project cloudbreak by hortonworks.
the class RedbeamsCreationService method saveDbStack.
private DBStack saveDbStack(DBStack dbStack) {
// possible future change is to use a flow here (GetPlatformTemplateRequest, modified for database server)
// for now, just get it synchronously / within this thread, it ought to be quick
CloudPlatformVariant platformVariant = new CloudPlatformVariant(dbStack.getCloudPlatform(), dbStack.getPlatformVariant());
try {
CloudConnector<Object> connector = cloudPlatformConnectors.get(platformVariant);
if (connector == null) {
throw new RedbeamsException("Failed to find cloud connector for platform variant " + platformVariant);
}
String template = connector.resources().getDBStackTemplate();
if (template == null) {
throw new RedbeamsException("No database stack template is available for platform variant " + platformVariant);
}
dbStack.setTemplate(template);
} catch (TemplatingNotSupportedException e) {
throw new RedbeamsException("Failed to retrieve database stack template for cloud platform", e);
}
DatabaseServer databaseServer = dbStack.getDatabaseServer();
if (databaseServer.getConnectionDriver() == null) {
String connectionDriver = databaseServer.getDatabaseVendor().connectionDriver();
databaseServer.setConnectionDriver(connectionDriver);
LOGGER.info("Database server allocation request lacked a connection driver; defaulting to {}", connectionDriver);
}
return dbStackService.save(dbStack);
}
use of com.sequenceiq.redbeams.domain.stack.DatabaseServer in project cloudbreak by hortonworks.
the class DBStackToDatabaseStackConverterTest method testConversionAzureWithSingleResourceGroups.
@Test
public void testConversionAzureWithSingleResourceGroups() {
Network network = new Network();
network.setAttributes(new Json(NETWORK_ATTRIBUTES));
dbStack.setNetwork(network);
dbStack.setCloudPlatform(CLOUD_PLATFORM);
dbStack.setParameters(new HashMap<>());
DatabaseServer server = new DatabaseServer();
server.setDatabaseVendor(DatabaseVendor.POSTGRES);
server.setAttributes(new Json(DATABASE_SERVER_ATTRIBUTES));
dbStack.setDatabaseServer(server);
dbStack.setTags(new Json(STACK_TAGS));
dbStack.setTemplate("template");
DetailedEnvironmentResponse environmentResponse = new DetailedEnvironmentResponse();
environmentResponse.setCloudPlatform(CLOUD_PLATFORM);
environmentResponse.setAzure(AzureEnvironmentParameters.builder().withAzureResourceGroup(AzureResourceGroup.builder().withResourceGroupUsage(ResourceGroupUsage.SINGLE).withName(RESOURCE_GROUP).build()).build());
when(environmentService.getByCrn(anyString())).thenReturn(environmentResponse);
DatabaseStack convertedStack = underTest.convert(dbStack);
Map<String, Object> parameters = convertedStack.getDatabaseServer().getParameters();
assertThat(parameters.get(RESOURCE_GROUP_NAME_PARAMETER).toString()).isEqualTo(RESOURCE_GROUP);
assertThat(parameters.get(RESOURCE_GROUP_USAGE_PARAMETER).toString()).isEqualTo(ResourceGroupUsage.SINGLE.name());
assertThat(parameters.size()).isEqualTo(4);
}
use of com.sequenceiq.redbeams.domain.stack.DatabaseServer in project cloudbreak by hortonworks.
the class DBStackToDatabaseStackConverterTest method testConversionNormal.
@Test
public void testConversionNormal() {
Network network = new Network();
network.setAttributes(new Json(NETWORK_ATTRIBUTES));
dbStack.setNetwork(network);
DatabaseServer server = new DatabaseServer();
server.setName("myserver");
server.setInstanceType("db.m3.medium");
server.setDatabaseVendor(DatabaseVendor.POSTGRES);
server.setConnectionDriver("org.postgresql.Driver");
server.setRootUserName("root");
server.setRootPassword("cloudera");
server.setStorageSize(50L);
SecurityGroup securityGroup = new SecurityGroup();
Set<String> securityGroupIds = new HashSet<>();
securityGroupIds.add("sg-1234");
securityGroup.setSecurityGroupIds(securityGroupIds);
server.setSecurityGroup(securityGroup);
server.setAttributes(new Json(DATABASE_SERVER_ATTRIBUTES));
dbStack.setDatabaseServer(server);
dbStack.setTags(new Json(STACK_TAGS));
dbStack.setTemplate("template");
DatabaseStack convertedStack = underTest.convert(dbStack);
assertThat(convertedStack.getNetwork().getParameters().size()).isEqualTo(1);
assertThat(convertedStack.getNetwork().getParameters().get("foo")).isEqualTo("bar");
assertThat(convertedStack.getDatabaseServer().getServerId()).isEqualTo("myserver");
assertThat(convertedStack.getDatabaseServer().getFlavor()).isEqualTo("db.m3.medium");
assertThat(convertedStack.getDatabaseServer().getEngine()).isEqualTo(DatabaseEngine.POSTGRESQL);
assertThat(convertedStack.getDatabaseServer().getConnectionDriver()).isEqualTo("org.postgresql.Driver");
assertThat(convertedStack.getDatabaseServer().getRootUserName()).isEqualTo("root");
assertThat(convertedStack.getDatabaseServer().getRootPassword()).isEqualTo("cloudera");
assertThat(convertedStack.getDatabaseServer().getStorageSize()).isEqualTo(50L);
assertThat(convertedStack.getDatabaseServer().getSecurity().getCloudSecurityIds()).isEqualTo(List.of("sg-1234"));
assertThat(convertedStack.getDatabaseServer().getStatus()).isEqualTo(CREATE_REQUESTED);
assertThat(convertedStack.getDatabaseServer().getParameters().size()).isEqualTo(2);
assertThat(convertedStack.getDatabaseServer().getParameters().get("this")).isEqualTo("that");
assertThat(convertedStack.getTemplate()).isEqualTo("template");
Map<String, String> tags = convertedStack.getTags();
assertThat(tags.size()).isEqualTo(3);
assertThat(tags.get("ukey1")).isEqualTo("uvalue1");
assertThat(tags.get("dkey1")).isEqualTo("dvalue1");
assertThat(tags.get("key1")).isEqualTo("value1");
}
Aggregations