in aws-nimblestudio-studiocomponent/src/main/java/software/amazon/nimblestudio/studiocomponent/CreateHandler.java [104:214]
private CreateStudioComponentRequest fromResourceModel(final ResourceModel model, final String requestClientToken) {
// Only studioId, configuration, Name and Type are required
final CreateStudioComponentRequest.Builder createStudioComponentRequestBuilder = CreateStudioComponentRequest.builder()
.clientToken(requestClientToken)
.studioId(model.getStudioId())
.name(model.getName())
.type(model.getType())
.tags(model.getTags());
final StudioComponentConfiguration.Builder studioComponentConfigurationBuilder = StudioComponentConfiguration.builder();
boolean hasConfiguration = false;
if (model.getConfiguration() != null && model.getConfiguration().getActiveDirectoryConfiguration() != null) {
final ActiveDirectoryConfiguration.Builder adConfig = ActiveDirectoryConfiguration.builder();
if (model.getConfiguration().getActiveDirectoryConfiguration().getComputerAttributes() != null) {
final List<ActiveDirectoryComputerAttribute> modelComputerAttribute =
model.getConfiguration().getActiveDirectoryConfiguration().getComputerAttributes();
adConfig.computerAttributes(
modelComputerAttribute.stream()
.map(ca -> software.amazon.awssdk.services.nimble.model.ActiveDirectoryComputerAttribute.builder()
.name(ca.getName())
.value(ca.getValue())
.build())
.collect(toList()));
}
studioComponentConfigurationBuilder.activeDirectoryConfiguration(
adConfig
.directoryId(model.getConfiguration().getActiveDirectoryConfiguration().getDirectoryId())
.organizationalUnitDistinguishedName(model.getConfiguration().getActiveDirectoryConfiguration().getOrganizationalUnitDistinguishedName())
.build()
);
hasConfiguration = true;
}
if (model.getConfiguration() != null && model.getConfiguration().getComputeFarmConfiguration() != null) {
studioComponentConfigurationBuilder.computeFarmConfiguration(
ComputeFarmConfiguration.builder()
.activeDirectoryUser(model.getConfiguration().getComputeFarmConfiguration().getActiveDirectoryUser())
.endpoint(model.getConfiguration().getComputeFarmConfiguration().getEndpoint())
.build()
);
hasConfiguration = true;
}
if (model.getConfiguration() != null && model.getConfiguration().getLicenseServiceConfiguration() != null) {
studioComponentConfigurationBuilder.licenseServiceConfiguration(
LicenseServiceConfiguration.builder()
.endpoint(model.getConfiguration().getLicenseServiceConfiguration().getEndpoint())
.build()
);
hasConfiguration = true;
}
if (model.getConfiguration() != null && model.getConfiguration().getSharedFileSystemConfiguration() != null) {
studioComponentConfigurationBuilder.sharedFileSystemConfiguration(
SharedFileSystemConfiguration.builder()
.endpoint(model.getConfiguration().getSharedFileSystemConfiguration().getEndpoint())
.fileSystemId(model.getConfiguration().getSharedFileSystemConfiguration().getFileSystemId())
.linuxMountPoint(model.getConfiguration().getSharedFileSystemConfiguration().getLinuxMountPoint())
.shareName(model.getConfiguration().getSharedFileSystemConfiguration().getShareName())
.windowsMountDrive(model.getConfiguration().getSharedFileSystemConfiguration().getWindowsMountDrive())
.build()
);
hasConfiguration = true;
}
if (!StringUtils.isEmpty(model.getDescription())) {
createStudioComponentRequestBuilder.description(model.getDescription());
}
if (model.getInitializationScripts() != null) {
createStudioComponentRequestBuilder.initializationScripts(
model.getInitializationScripts().stream()
.map(is -> StudioComponentInitializationScript.builder()
.launchProfileProtocolVersion(is.getLaunchProfileProtocolVersion())
.platform(is.getPlatform())
.runContext(is.getRunContext())
.script(is.getScript())
.build())
.collect(toList())
);
}
if (model.getScriptParameters() != null) {
createStudioComponentRequestBuilder.scriptParameters(
model.getScriptParameters().stream()
.map(sp -> software.amazon.awssdk.services.nimble.model.ScriptParameterKeyValue.builder()
.key(sp.getKey())
.value(sp.getValue())
.build())
.collect(toList())
);
}
if (model.getEc2SecurityGroupIds() != null) {
createStudioComponentRequestBuilder.ec2SecurityGroupIds(model.getEc2SecurityGroupIds());
}
if (!StringUtils.isEmpty(model.getSubtype())) {
createStudioComponentRequestBuilder.subtype(model.getSubtype());
}
if (hasConfiguration) {
createStudioComponentRequestBuilder.configuration(studioComponentConfigurationBuilder.build());
}
return createStudioComponentRequestBuilder.build();
}