in aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/Translator.java [183:256]
public static ModifyDbInstanceRequest modifyDbInstanceRequest(
final ResourceModel previousModel,
final ResourceModel desiredModel,
final Boolean isRollback
) {
ModifyDbInstanceRequest.Builder builder = ModifyDbInstanceRequest.builder()
.allowMajorVersionUpgrade(desiredModel.getAllowMajorVersionUpgrade())
.applyImmediately(Boolean.TRUE)
.autoMinorVersionUpgrade(desiredModel.getAutoMinorVersionUpgrade())
.backupRetentionPeriod(desiredModel.getBackupRetentionPeriod())
.caCertificateIdentifier(desiredModel.getCACertificateIdentifier())
.copyTagsToSnapshot(desiredModel.getCopyTagsToSnapshot())
.dbInstanceClass(desiredModel.getDBInstanceClass())
.dbInstanceIdentifier(desiredModel.getDBInstanceIdentifier())
.dbParameterGroupName(desiredModel.getDBParameterGroupName())
.dbPortNumber(desiredModel.getPort())
.deletionProtection(desiredModel.getDeletionProtection())
.domain(desiredModel.getDomain())
.domainIAMRoleName(desiredModel.getDomainIAMRoleName())
.enableIAMDatabaseAuthentication(desiredModel.getEnableIAMDatabaseAuthentication())
.enablePerformanceInsights(desiredModel.getEnablePerformanceInsights())
.engineVersion(desiredModel.getEngineVersion())
.licenseModel(desiredModel.getLicenseModel())
.masterUserPassword(desiredModel.getMasterUserPassword())
.maxAllocatedStorage(desiredModel.getMaxAllocatedStorage())
.monitoringInterval(desiredModel.getMonitoringInterval())
.monitoringRoleArn(desiredModel.getMonitoringRoleArn())
.multiAZ(desiredModel.getMultiAZ())
.newDBInstanceIdentifier(desiredModel.getDBInstanceIdentifier())
.optionGroupName(desiredModel.getOptionGroupName())
.performanceInsightsKMSKeyId(desiredModel.getPerformanceInsightsKMSKeyId())
.performanceInsightsRetentionPeriod(desiredModel.getPerformanceInsightsRetentionPeriod())
.preferredBackupWindow(desiredModel.getPreferredBackupWindow())
.preferredMaintenanceWindow(desiredModel.getPreferredMaintenanceWindow())
.promotionTier(desiredModel.getPromotionTier())
.storageType(desiredModel.getStorageType())
.tdeCredentialArn(desiredModel.getTdeCredentialArn())
.tdeCredentialPassword(desiredModel.getTdeCredentialPassword())
.vpcSecurityGroupIds(desiredModel.getVPCSecurityGroups());
// An attempt to "move" an instance to the same db subnet will cause a
// 400: "The specified DB instance is already in the target DB subnet group."
if (!StringUtils.equals(
Optional.ofNullable(previousModel).map(ResourceModel::getDBSubnetGroupName).orElse(""),
desiredModel.getDBSubnetGroupName())
) {
builder.dbSubnetGroupName(desiredModel.getDBSubnetGroupName());
}
final CloudwatchLogsExportConfiguration cloudwatchLogsExportConfiguration = buildTranslateCloudwatchLogsExportConfiguration(
Optional.ofNullable(previousModel).map(ResourceModel::getEnableCloudwatchLogsExports).orElse(Collections.emptyList()),
desiredModel.getEnableCloudwatchLogsExports()
);
builder.cloudwatchLogsExportConfiguration(cloudwatchLogsExportConfiguration);
if (previousModel != null && BooleanUtils.isTrue(isRollback)) {
builder.allocatedStorage(
canUpdateAllocatedStorage(previousModel.getAllocatedStorage(), desiredModel.getAllocatedStorage()) ? getAllocatedStorage(desiredModel) : getAllocatedStorage(previousModel)
);
builder.iops(
canUpdateIops(previousModel.getIops(), desiredModel.getIops()) ? desiredModel.getIops() : previousModel.getIops()
);
} else {
builder.allocatedStorage(getAllocatedStorage(desiredModel));
builder.iops(desiredModel.getIops());
}
if (shouldSetProcessorFeatures(previousModel, desiredModel)) {
builder.processorFeatures(translateProcessorFeaturesToSdk(desiredModel.getProcessorFeatures()));
builder.useDefaultProcessorFeatures(desiredModel.getUseDefaultProcessorFeatures());
}
return builder.build();
}