Skip to content

Commit c5c0607

Browse files
committed
feat(DBInstance): add support for read only properties of DBInstance for AutomaticRestartTime, PercentProgress, ResumeFullAutomationModeTime, SecondaryAvailabilityZone, StatusInfos
1 parent 2366901 commit c5c0607

File tree

4 files changed

+122
-3
lines changed

4 files changed

+122
-3
lines changed

aws-rds-dbinstance/aws-rds-dbinstance.json

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,28 @@
5454
"RoleArn"
5555
]
5656
},
57+
"DBInstanceStatusInfo": {
58+
"type": "object",
59+
"additionalProperties": false,
60+
"properties": {
61+
"Message": {
62+
"type": "string",
63+
"description": "Details of the error if there is an error for the instance. If the instance isn't in an error state, this value is blank."
64+
},
65+
"Normal": {
66+
"type": "boolean",
67+
"description": "Indicates whether the instance is operating normally (TRUE) or is in an error state (FALSE)."
68+
},
69+
"Status": {
70+
"type": "string",
71+
"description": "The status of the DB instance. For a StatusType of read replica, the values can be replicating, replication stop point set, replication stop point reached, error, stopped, or terminated."
72+
},
73+
"StatusType": {
74+
"type": "string",
75+
"description": "This value is currently \"read replication.\""
76+
}
77+
}
78+
},
5779
"ProcessorFeature": {
5880
"type": "object",
5981
"additionalProperties": false,
@@ -143,6 +165,10 @@
143165
"minimum": 1,
144166
"description": "The number of days for which automated cross-region replicated backups are retained. If this value is unset, default to BackupRetentionPeriod."
145167
},
168+
"AutomaticRestartTime": {
169+
"type": "string",
170+
"description": "The time when a stopped DB instance is restarted automatically."
171+
},
146172
"AvailabilityZone": {
147173
"type": "string",
148174
"description": "The Availability Zone (AZ) where the database will be created. For information on AWS Regions and Availability Zones."
@@ -389,6 +415,10 @@
389415
"type": "string",
390416
"description": "Indicates that the DB instance should be associated with the specified option group."
391417
},
418+
"PercentProgress": {
419+
"type": "string",
420+
"description": "The progress of the storage optimization operation as a percentage."
421+
},
392422
"PerformanceInsightsKMSKeyId": {
393423
"type": "string",
394424
"description": "The AWS KMS key identifier for encryption of Performance Insights data. The KMS key ID is the Amazon Resource Name (ARN), KMS key identifier, or the KMS key alias for the KMS encryption key."
@@ -449,6 +479,14 @@
449479
"type": "string",
450480
"format": "date-time"
451481
},
482+
"ResumeFullAutomationModeTime": {
483+
"type": "string",
484+
"description": "The duration in minutes to pause automation. Valid values: 60 (default) to 1,440."
485+
},
486+
"SecondaryAvailabilityZone": {
487+
"type": "string",
488+
"description": "If present, specifies the name of the secondary Availability Zone for a DB instance with multi-AZ support."
489+
},
452490
"SourceDBClusterIdentifier": {
453491
"description": "The identifier of the Multi-AZ DB cluster that will act as the source for the read replica. Each DB cluster can have up to 15 read replicas.",
454492
"type": "string"
@@ -469,6 +507,13 @@
469507
"type": "string",
470508
"description": "The ID of the region that contains the source DB instance for the Read Replica."
471509
},
510+
"StatusInfos": {
511+
"type": "array",
512+
"items": {
513+
"$ref": "#/definitions/DBInstanceStatusInfo"
514+
},
515+
"description": "The status of a read replica. If the DB instance isn't a read replica, the value is blank."
516+
},
472517
"StorageEncrypted": {
473518
"type": "boolean",
474519
"description": "A value that indicates whether the DB instance is encrypted. By default, it isn't encrypted."
@@ -602,6 +647,7 @@
602647
"/properties/ApplyImmediately"
603648
],
604649
"readOnlyProperties": [
650+
"/properties/AutomaticRestartTime",
605651
"/properties/CertificateDetails",
606652
"/properties/CertificateDetails/CAIdentifier",
607653
"/properties/CertificateDetails/ValidTill",
@@ -620,8 +666,12 @@
620666
"/properties/ListenerEndpoint/Port",
621667
"/properties/ListenerEndpoint/HostedZoneId",
622668
"/properties/MasterUserSecret/SecretArn",
669+
"/properties/PercentProgress",
623670
"/properties/ReadReplicaDBClusterIdentifiers",
624-
"/properties/ReadReplicaDBInstanceIdentifiers"
671+
"/properties/ReadReplicaDBInstanceIdentifiers",
672+
"/properties/ResumeFullAutomationModeTime",
673+
"/properties/SecondaryAvailabilityZone",
674+
"/properties/StatusInfo"
625675
],
626676
"primaryIdentifier": [
627677
"/properties/DBInstanceIdentifier"

aws-rds-dbinstance/src/main/java/software/amazon/rds/dbinstance/Translator.java

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -877,6 +877,7 @@ public static ResourceModel.ResourceModelBuilder translateDbInstanceFromSdkBuild
877877
.allocatedStorage(allocatedStorage)
878878
.associatedRoles(translateAssociatedRolesFromSdk(dbInstance.associatedRoles()))
879879
.automaticBackupReplicationRegion(automatedReplicationRegion)
880+
.automaticRestartTime(translateInstantToString(dbInstance.automaticRestartTime()))
880881
.autoMinorVersionUpgrade(dbInstance.autoMinorVersionUpgrade())
881882
.availabilityZone(dbInstance.availabilityZone())
882883
.backupRetentionPeriod(dbInstance.backupRetentionPeriod())
@@ -914,10 +915,10 @@ public static ResourceModel.ResourceModelBuilder translateDbInstanceFromSdkBuild
914915
.engineLifecycleSupport(dbInstance.engineLifecycleSupport())
915916
.engineVersion(dbInstance.engineVersion())
916917
.iops(dbInstance.iops())
917-
.instanceCreateTime(dbInstance.instanceCreateTime() == null ? null : dbInstance.instanceCreateTime().toString())
918+
.instanceCreateTime(translateInstantToString(dbInstance.instanceCreateTime()))
918919
.isStorageConfigUpgradeAvailable(dbInstance.isStorageConfigUpgradeAvailable())
919920
.kmsKeyId(dbInstance.kmsKeyId())
920-
.latestRestorableTime(dbInstance.latestRestorableTime() == null ? null : dbInstance.latestRestorableTime().toString())
921+
.latestRestorableTime(translateInstantToString(dbInstance.latestRestorableTime()))
921922
.licenseModel(dbInstance.licenseModel())
922923
.listenerEndpoint(listenerEndpoint)
923924
.manageMasterUserPassword(dbInstance.masterUserSecret() != null)
@@ -930,6 +931,7 @@ public static ResourceModel.ResourceModelBuilder translateDbInstanceFromSdkBuild
930931
.ncharCharacterSetName(dbInstance.ncharCharacterSetName())
931932
.networkType(dbInstance.networkType())
932933
.optionGroupName(optionGroupName)
934+
.percentProgress(dbInstance.percentProgress())
933935
.performanceInsightsKMSKeyId(dbInstance.performanceInsightsKMSKeyId())
934936
.performanceInsightsRetentionPeriod(dbInstance.performanceInsightsRetentionPeriod())
935937
.port(port == null ? null : port.toString())
@@ -941,8 +943,11 @@ public static ResourceModel.ResourceModelBuilder translateDbInstanceFromSdkBuild
941943
.sourceDBClusterIdentifier(dbInstance.readReplicaSourceDBClusterIdentifier())
942944
.readReplicaDBClusterIdentifiers(translateReadReplicaDBClusterIdentifiers(dbInstance.readReplicaDBClusterIdentifiers()))
943945
.readReplicaDBInstanceIdentifiers(translateReadReplicaDBInstanceIdentifiers(dbInstance.readReplicaDBInstanceIdentifiers()))
946+
.resumeFullAutomationModeTime(translateInstantToString(dbInstance.resumeFullAutomationModeTime()))
944947
.replicaMode(dbInstance.replicaModeAsString())
948+
.secondaryAvailabilityZone(dbInstance.secondaryAvailabilityZone())
945949
.sourceDBInstanceIdentifier(dbInstance.readReplicaSourceDBInstanceIdentifier())
950+
.statusInfos(translateStatusInfosFromSdk(dbInstance.statusInfos()))
946951
.storageEncrypted(dbInstance.storageEncrypted())
947952
.storageThroughput(dbInstance.storageThroughput())
948953
.storageType(dbInstance.storageType())
@@ -974,6 +979,10 @@ public static List<String> translateEnableCloudwatchLogsExport(final Collection<
974979
return enabledCloudwatchLogsExports == null ? null : new ArrayList<>(enabledCloudwatchLogsExports);
975980
}
976981

982+
private static String translateInstantToString(final Instant instant) {
983+
return instant == null ? null : instant.toString();
984+
}
985+
977986
public static List<String> translateReadReplicaDBClusterIdentifiers(final Collection<String> readReplicaDBClusterIdentifiers) {
978987
return readReplicaDBClusterIdentifiers == null ? null : new ArrayList<>(readReplicaDBClusterIdentifiers);
979988
}
@@ -982,6 +991,20 @@ public static List<String> translateReadReplicaDBInstanceIdentifiers(final Colle
982991
return readReplicaDBInstanceIdentifiers == null ? null : new ArrayList<>(readReplicaDBInstanceIdentifiers);
983992
}
984993

994+
public static List<DBInstanceStatusInfo> translateStatusInfosFromSdk(
995+
final Collection<software.amazon.awssdk.services.rds.model.DBInstanceStatusInfo> statusInfos
996+
) {
997+
return streamOfOrEmpty(statusInfos)
998+
.map(statusInfo -> DBInstanceStatusInfo
999+
.builder()
1000+
.message(statusInfo.message())
1001+
.normal(statusInfo.normal())
1002+
.status(statusInfo.status())
1003+
.statusType(statusInfo.statusType())
1004+
.build())
1005+
.collect(Collectors.toList());
1006+
}
1007+
9851008
public static List<String> translateVpcSecurityGroupsFromSdk(
9861009
final Collection<software.amazon.awssdk.services.rds.model.VpcSecurityGroupMembership> vpcSecurityGroups
9871010
) {

aws-rds-dbinstance/src/test/java/software/amazon/rds/dbinstance/ListHandlerTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ public void handleRequest_Success() {
104104
.vPCSecurityGroups(Collections.emptyList())
105105
.readReplicaDBClusterIdentifiers(Collections.emptyList())
106106
.readReplicaDBInstanceIdentifiers(Collections.emptyList())
107+
.statusInfos(Collections.emptyList())
107108
.dBInstanceIdentifier(DB_INSTANCE_IDENTIFIER)
108109
.build();
109110

aws-rds-dbinstance/src/test/java/software/amazon/rds/dbinstance/TranslatorTest.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1017,6 +1017,30 @@ public void translateDbInstanceFromSdk_setLatestRestorableTime() {
10171017
assertThat(model.getLatestRestorableTime()).isEqualTo(latestRestorableTime.toString());
10181018
}
10191019

1020+
@Test
1021+
public void translateDbInstanceFromSdk_setAutomaticRestartTime() {
1022+
final Instant automaticRestartTime = Instant.parse("2023-01-09T15:55:37.123Z");
1023+
1024+
final DBInstance dbInstance = DBInstance.builder()
1025+
.automaticRestartTime(automaticRestartTime)
1026+
.build();
1027+
1028+
final ResourceModel model = Translator.translateDbInstanceFromSdk(dbInstance);
1029+
assertThat(model.getAutomaticRestartTime()).isEqualTo(automaticRestartTime.toString());
1030+
}
1031+
1032+
@Test
1033+
public void translateDbInstanceFromSdk_setResumeFullAutomationModeTime() {
1034+
final Instant resumeFullAutomationModeTime = Instant.parse("2023-01-09T15:55:37.123Z");
1035+
1036+
final DBInstance dbInstance = DBInstance.builder()
1037+
.resumeFullAutomationModeTime(resumeFullAutomationModeTime)
1038+
.build();
1039+
1040+
final ResourceModel model = Translator.translateDbInstanceFromSdk(dbInstance);
1041+
assertThat(model.getResumeFullAutomationModeTime()).isEqualTo(resumeFullAutomationModeTime.toString());
1042+
}
1043+
10201044
@Test
10211045
public void translateDbInstanceFromSdk_setListenerEndpoint() {
10221046
final Endpoint listenerEndpoint = Endpoint.builder()
@@ -1056,6 +1080,27 @@ public void translateDbInstanceFromSdk_readReplicaDBInstanceIdentifiers() {
10561080
assertThat(model.getReadReplicaDBInstanceIdentifiers()).containsExactly("instance-replica-1", "instance-replica-2");
10571081
}
10581082

1083+
@Test
1084+
public void translateDbInstanceFromSdk_statusInfos() {
1085+
final software.amazon.awssdk.services.rds.model.DBInstanceStatusInfo statusInfo =
1086+
software.amazon.awssdk.services.rds.model.DBInstanceStatusInfo.builder()
1087+
.message("test message")
1088+
.normal(true)
1089+
.status("replicating")
1090+
.statusType("read replication")
1091+
.build();
1092+
1093+
final DBInstance dbInstance = DBInstance.builder()
1094+
.statusInfos(statusInfo)
1095+
.build();
1096+
1097+
final ResourceModel model = Translator.translateDbInstanceFromSdk(dbInstance);
1098+
assertThat(model.getStatusInfos().get(0).getMessage()).isEqualTo("test message");
1099+
assertThat(model.getStatusInfos().get(0).getNormal()).isTrue();
1100+
assertThat(model.getStatusInfos().get(0).getStatus()).isEqualTo("replicating");
1101+
assertThat(model.getStatusInfos().get(0).getStatusType()).isEqualTo("read replication");
1102+
}
1103+
10591104
@Test
10601105
public void translateDbInstanceFromSdk_port_getFromEndpoint() {
10611106
final DBInstance dbInstance = DBInstance.builder()

0 commit comments

Comments
 (0)