Skip to content

Commit 8dbcab5

Browse files
Terraform Team Automationsrinioci
authored andcommitted
Added - Support for KMS Automatic Key Rotation
1 parent 98aebf5 commit 8dbcab5

15 files changed

+276
-10
lines changed

internal/integrationtest/kms_key_test.go

Lines changed: 47 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,13 @@ var (
6969
deletionTime = time.Now().UTC().AddDate(0, 0, 8).Truncate(time.Millisecond)
7070

7171
KmsKeyRepresentation = map[string]interface{}{
72-
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
73-
"display_name": acctest.Representation{RepType: acctest.Required, Create: `Key C`, Update: `displayName2`},
74-
"key_shape": acctest.RepresentationGroup{RepType: acctest.Required, Group: KmsKeyKeyShapeRepresentation},
75-
"management_endpoint": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_kms_vault.test_vault.management_endpoint}`},
76-
"desired_state": acctest.Representation{RepType: acctest.Optional, Create: `ENABLED`, Update: `DISABLED`},
72+
"auto_key_rotation_details": acctest.RepresentationGroup{RepType: acctest.Optional, Group: KmsKeyAutoKeyRotationDetailsRepresentation},
73+
"is_auto_rotation_enabled": acctest.Representation{RepType: acctest.Optional, Create: `false`, Update: `true`},
74+
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id}`},
75+
"display_name": acctest.Representation{RepType: acctest.Required, Create: `Key C`, Update: `displayName2`},
76+
"key_shape": acctest.RepresentationGroup{RepType: acctest.Required, Group: KmsKeyKeyShapeRepresentation},
77+
"management_endpoint": acctest.Representation{RepType: acctest.Required, Create: `${data.oci_kms_vault.test_vault.management_endpoint}`},
78+
"desired_state": acctest.Representation{RepType: acctest.Optional, Create: `ENABLED`, Update: `DISABLED`},
7779
//"external_key_reference": acctest.RepresentationGroup{RepType: acctest.Optional, Group: KmsKeyExternalKeyReferenceRepresentation},
7880
"freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"Department": "Finance"}, Update: map[string]string{"Department": "Accounting"}},
7981
"protection_mode": acctest.Representation{RepType: acctest.Optional, Create: `SOFTWARE`},
@@ -101,6 +103,15 @@ var (
101103
"algorithm": acctest.Representation{RepType: acctest.Required, Create: `AES`},
102104
"length": acctest.Representation{RepType: acctest.Required, Create: `16`},
103105
}
106+
scheduleStartTime = time.Now().UTC().AddDate(0, 0, 8).Truncate(time.Millisecond)
107+
KmsKeyAutoKeyRotationDetailsRepresentation = map[string]interface{}{
108+
"last_rotation_message": acctest.Representation{RepType: acctest.Optional, Create: `lastRotationMessage`, Update: `lastRotationMessage2`},
109+
"last_rotation_status": acctest.Representation{RepType: acctest.Optional, Create: `SUCCESS`, Update: `FAILED`},
110+
"rotation_interval_in_days": acctest.Representation{RepType: acctest.Optional, Create: `60`, Update: `120`},
111+
"time_of_last_rotation": acctest.Representation{RepType: acctest.Optional, Create: `timeOfLastRotation`, Update: `timeOfLastRotation2`},
112+
"time_of_next_rotation": acctest.Representation{RepType: acctest.Optional, Create: `timeOfNextRotation`, Update: `timeOfNextRotation2`},
113+
"time_of_schedule_start": acctest.Representation{RepType: acctest.Optional, Create: scheduleStartTime.Format(time.RFC3339Nano), Update: scheduleStartTime.Format(time.RFC3339Nano)},
114+
}
104115
KmsKeyExternalKeyReferenceRepresentation = map[string]interface{}{
105116
"external_key_id": acctest.Representation{RepType: acctest.Required, Create: `f3cf68ae-659c-4e9e-8be7-ee39fa9ffa3c`},
106117
}
@@ -383,11 +394,18 @@ func TestKmsKeyResource_basic(t *testing.T) {
383394
Config: config + compartmentIdVariableStr + KmsKeyResourceDependencies + DefinedTagsDependencies +
384395
acctest.GenerateResourceFromRepresentationMap("oci_kms_key", "test_key", acctest.Optional, acctest.Create, KmsKeyRepresentation),
385396
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
397+
resource.TestCheckResourceAttr(resourceName, "auto_key_rotation_details.#", "1"),
398+
resource.TestCheckResourceAttr(resourceName, "auto_key_rotation_details.0.last_rotation_message", "lastRotationMessage"),
399+
resource.TestCheckResourceAttr(resourceName, "auto_key_rotation_details.0.last_rotation_status", "SUCCESS"),
400+
resource.TestCheckResourceAttr(resourceName, "auto_key_rotation_details.0.time_of_last_rotation", "timeOfLastRotation"),
401+
resource.TestCheckResourceAttr(resourceName, "auto_key_rotation_details.0.time_of_next_rotation", "timeOfNextRotation"),
402+
resource.TestCheckResourceAttr(resourceName, "auto_key_rotation_details.0.time_of_schedule_start", scheduleStartTime.Format(time.RFC3339Nano)),
386403
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
387404
resource.TestCheckResourceAttrSet(resourceName, "current_key_version"),
388405
resource.TestCheckResourceAttr(resourceName, "display_name", "Key C"),
389406
resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"),
390407
resource.TestCheckResourceAttrSet(resourceName, "id"),
408+
resource.TestCheckResourceAttr(resourceName, "is_auto_rotation_enabled", "false"),
391409
resource.TestCheckResourceAttr(resourceName, "key_shape.#", "1"),
392410
resource.TestCheckResourceAttr(resourceName, "key_shape.0.algorithm", "AES"),
393411
resource.TestCheckResourceAttr(resourceName, "key_shape.0.length", "16"),
@@ -412,11 +430,19 @@ func TestKmsKeyResource_basic(t *testing.T) {
412430
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: `${var.compartment_id_for_update}`},
413431
})),
414432
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
433+
resource.TestCheckResourceAttr(resourceName, "auto_key_rotation_details.#", "1"),
434+
resource.TestCheckResourceAttr(resourceName, "auto_key_rotation_details.0.last_rotation_message", "lastRotationMessage"),
435+
resource.TestCheckResourceAttr(resourceName, "auto_key_rotation_details.0.last_rotation_status", "SUCCESS"),
436+
resource.TestCheckResourceAttr(resourceName, "auto_key_rotation_details.0.rotation_interval_in_days", "60"),
437+
resource.TestCheckResourceAttr(resourceName, "auto_key_rotation_details.0.time_of_last_rotation", "timeOfLastRotation"),
438+
resource.TestCheckResourceAttr(resourceName, "auto_key_rotation_details.0.time_of_next_rotation", "timeOfNextRotation"),
439+
resource.TestCheckResourceAttr(resourceName, "auto_key_rotation_details.0.time_of_schedule_start", scheduleStartTime.Format(time.RFC3339Nano)),
415440
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentIdU),
416441
resource.TestCheckResourceAttrSet(resourceName, "current_key_version"),
417442
resource.TestCheckResourceAttr(resourceName, "display_name", "Key C"),
418443
resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"),
419444
resource.TestCheckResourceAttrSet(resourceName, "id"),
445+
resource.TestCheckResourceAttr(resourceName, "is_auto_rotation_enabled", "false"),
420446
resource.TestCheckResourceAttr(resourceName, "key_shape.#", "1"),
421447
resource.TestCheckResourceAttr(resourceName, "key_shape.0.algorithm", "AES"),
422448
resource.TestCheckResourceAttr(resourceName, "key_shape.0.length", "16"),
@@ -440,11 +466,19 @@ func TestKmsKeyResource_basic(t *testing.T) {
440466
Config: config + compartmentIdVariableStr + KmsKeyResourceDependencies + DefinedTagsDependencies +
441467
acctest.GenerateResourceFromRepresentationMap("oci_kms_key", "test_key", acctest.Optional, acctest.Update, KmsKeyRepresentation),
442468
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
469+
resource.TestCheckResourceAttr(resourceName, "auto_key_rotation_details.#", "1"),
470+
resource.TestCheckResourceAttr(resourceName, "auto_key_rotation_details.0.last_rotation_message", "lastRotationMessage2"),
471+
resource.TestCheckResourceAttr(resourceName, "auto_key_rotation_details.0.last_rotation_status", "FAILED"),
472+
resource.TestCheckResourceAttr(resourceName, "auto_key_rotation_details.0.rotation_interval_in_days", "120"),
473+
resource.TestCheckResourceAttr(resourceName, "auto_key_rotation_details.0.time_of_last_rotation", "timeOfLastRotation2"),
474+
resource.TestCheckResourceAttr(resourceName, "auto_key_rotation_details.0.time_of_next_rotation", "timeOfNextRotation2"),
475+
resource.TestCheckResourceAttr(resourceName, "auto_key_rotation_details.0.time_of_schedule_start", scheduleStartTime.Format(time.RFC3339Nano)),
443476
resource.TestCheckResourceAttr(resourceName, "compartment_id", compartmentId),
444477
resource.TestCheckResourceAttrSet(resourceName, "current_key_version"),
445478
resource.TestCheckResourceAttr(resourceName, "display_name", "displayName2"),
446479
resource.TestCheckResourceAttr(resourceName, "freeform_tags.%", "1"),
447480
resource.TestCheckResourceAttrSet(resourceName, "id"),
481+
resource.TestCheckResourceAttr(resourceName, "is_auto_rotation_enabled", "true"),
448482
resource.TestCheckResourceAttr(resourceName, "key_shape.#", "1"),
449483
resource.TestCheckResourceAttr(resourceName, "key_shape.0.algorithm", "AES"),
450484
resource.TestCheckResourceAttr(resourceName, "key_shape.0.length", "16"),
@@ -481,6 +515,7 @@ func TestKmsKeyResource_basic(t *testing.T) {
481515
//resource.TestCheckResourceAttr(datasourceName, "keys.0.external_key_reference_details.#", "1"),
482516
resource.TestCheckResourceAttr(datasourceName, "keys.0.freeform_tags.%", "1"),
483517
resource.TestCheckResourceAttrSet(datasourceName, "keys.0.id"),
518+
resource.TestCheckResourceAttr(datasourceName, "keys.0.is_auto_rotation_enabled", "true"),
484519
resource.TestCheckResourceAttr(datasourceName, "keys.0.protection_mode", "SOFTWARE"),
485520
resource.TestCheckResourceAttrSet(datasourceName, "keys.0.state"),
486521
resource.TestCheckResourceAttrSet(datasourceName, "keys.0.time_created"),
@@ -495,11 +530,16 @@ func TestKmsKeyResource_basic(t *testing.T) {
495530
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
496531
resource.TestCheckResourceAttrSet(singularDatasourceName, "key_id"),
497532

533+
resource.TestCheckResourceAttr(singularDatasourceName, "auto_key_rotation_details.#", "1"),
534+
resource.TestCheckResourceAttr(singularDatasourceName, "auto_key_rotation_details.0.rotation_interval_in_days", "120"),
535+
resource.TestCheckResourceAttrSet(singularDatasourceName, "auto_key_rotation_details.0.time_of_next_rotation"),
536+
resource.TestCheckResourceAttrSet(singularDatasourceName, "auto_key_rotation_details.0.time_of_schedule_start"),
498537
resource.TestCheckResourceAttr(singularDatasourceName, "compartment_id", compartmentId),
499538
resource.TestCheckResourceAttrSet(singularDatasourceName, "current_key_version"),
500539
resource.TestCheckResourceAttr(singularDatasourceName, "display_name", "displayName2"),
501540
resource.TestCheckResourceAttr(singularDatasourceName, "freeform_tags.%", "1"),
502541
resource.TestCheckResourceAttrSet(singularDatasourceName, "id"),
542+
resource.TestCheckResourceAttr(singularDatasourceName, "is_auto_rotation_enabled", "true"),
503543
resource.TestCheckResourceAttrSet(singularDatasourceName, "is_primary"),
504544
resource.TestCheckResourceAttr(singularDatasourceName, "key_shape.#", "1"),
505545
resource.TestCheckResourceAttr(singularDatasourceName, "key_shape.0.algorithm", "AES"),
@@ -537,6 +577,8 @@ func TestKmsKeyResource_basic(t *testing.T) {
537577
"desired_state",
538578
"time_of_deletion",
539579
"replica_details",
580+
"is_auto_rotation_enabled",
581+
"auto_key_rotation_details",
540582
},
541583
ResourceName: resourceName,
542584
},

internal/integrationtest/kms_key_version_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,7 @@ func TestKmsKeyVersionResource_basic(t *testing.T) {
254254

255255
resource.TestCheckResourceAttr(datasourceName, "key_versions.#", "1"),
256256
resource.TestCheckResourceAttrSet(datasourceName, "key_versions.0.compartment_id"),
257+
resource.TestCheckResourceAttrSet(datasourceName, "key_versions.0.is_auto_rotated"),
257258
//resource.TestCheckResourceAttr(datasourceName, "key_versions.0.external_key_reference_details.#", "1"),
258259
resource.TestCheckResourceAttrSet(datasourceName, "key_versions.0.key_version_id"),
259260
resource.TestCheckResourceAttrSet(datasourceName, "key_versions.0.key_id"),
@@ -272,6 +273,7 @@ func TestKmsKeyVersionResource_basic(t *testing.T) {
272273
resource.TestCheckResourceAttrSet(singularDatasourceName, "key_version_id"),
273274
resource.TestCheckResourceAttrSet(singularDatasourceName, "management_endpoint"),
274275
resource.TestCheckResourceAttrSet(singularDatasourceName, "id"),
276+
resource.TestCheckResourceAttrSet(singularDatasourceName, "is_auto_rotated"),
275277
resource.TestCheckResourceAttrSet(singularDatasourceName, "is_primary"),
276278
resource.TestCheckResourceAttr(singularDatasourceName, "replica_details.#", "1"),
277279
resource.TestCheckResourceAttrSet(singularDatasourceName, "state"),

internal/service/kms/kms_key_data_source.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,12 @@ func (s *KmsKeyDataSourceCrud) SetData() error {
8181

8282
s.D.SetId(*s.Res.Id)
8383

84+
if s.Res.AutoKeyRotationDetails != nil {
85+
s.D.Set("auto_key_rotation_details", []interface{}{AutoKeyRotationDetailsToMap(s.Res.AutoKeyRotationDetails)})
86+
} else {
87+
s.D.Set("auto_key_rotation_details", nil)
88+
}
89+
8490
if s.Res.CompartmentId != nil {
8591
s.D.Set("compartment_id", *s.Res.CompartmentId)
8692
}
@@ -105,6 +111,10 @@ func (s *KmsKeyDataSourceCrud) SetData() error {
105111

106112
s.D.Set("freeform_tags", s.Res.FreeformTags)
107113

114+
if s.Res.IsAutoRotationEnabled != nil {
115+
s.D.Set("is_auto_rotation_enabled", *s.Res.IsAutoRotationEnabled)
116+
}
117+
108118
if s.Res.IsPrimary != nil {
109119
s.D.Set("is_primary", *s.Res.IsPrimary)
110120
}

internal/service/kms/kms_key_resource.go

Lines changed: 142 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import (
1919
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
2020

2121
"regexp"
22-
2322
"strings"
2423

2524
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
@@ -86,6 +85,55 @@ func KmsKeyResource() *schema.Resource {
8685
},
8786

8887
// Optional
88+
"auto_key_rotation_details": {
89+
Type: schema.TypeList,
90+
Optional: true,
91+
Computed: true,
92+
MaxItems: 1,
93+
MinItems: 1,
94+
Elem: &schema.Resource{
95+
Schema: map[string]*schema.Schema{
96+
// Required
97+
98+
// Optional
99+
"last_rotation_message": {
100+
Type: schema.TypeString,
101+
Optional: true,
102+
Computed: true,
103+
},
104+
"last_rotation_status": {
105+
Type: schema.TypeString,
106+
Optional: true,
107+
Computed: true,
108+
},
109+
"rotation_interval_in_days": {
110+
Type: schema.TypeInt,
111+
Optional: true,
112+
Computed: true,
113+
},
114+
"time_of_last_rotation": {
115+
Type: schema.TypeString,
116+
Optional: true,
117+
Computed: true,
118+
DiffSuppressFunc: tfresource.TimeDiffSuppressFunction,
119+
},
120+
"time_of_next_rotation": {
121+
Type: schema.TypeString,
122+
Optional: true,
123+
Computed: true,
124+
DiffSuppressFunc: tfresource.TimeDiffSuppressFunction,
125+
},
126+
"time_of_schedule_start": {
127+
Type: schema.TypeString,
128+
Optional: true,
129+
Computed: true,
130+
DiffSuppressFunc: tfresource.TimeDiffSuppressFunction,
131+
},
132+
133+
// Computed
134+
},
135+
},
136+
},
89137
"defined_tags": {
90138
Type: schema.TypeMap,
91139
Optional: true,
@@ -121,6 +169,11 @@ func KmsKeyResource() *schema.Resource {
121169
Computed: true,
122170
Elem: schema.TypeString,
123171
},
172+
"is_auto_rotation_enabled": {
173+
Type: schema.TypeBool,
174+
Optional: true,
175+
Computed: true,
176+
},
124177
"protection_mode": {
125178
Type: schema.TypeString,
126179
Optional: true,
@@ -449,6 +502,17 @@ func (s *KmsKeyResourceCrud) Create() error {
449502

450503
request := oci_kms.CreateKeyRequest{}
451504

505+
if autoKeyRotationDetails, ok := s.D.GetOkExists("auto_key_rotation_details"); ok {
506+
if tmpList := autoKeyRotationDetails.([]interface{}); len(tmpList) > 0 {
507+
fieldKeyFormat := fmt.Sprintf("%s.%d.%%s", "auto_key_rotation_details", 0)
508+
tmp, err := s.mapToAutoKeyRotationDetails(fieldKeyFormat)
509+
if err != nil {
510+
return err
511+
}
512+
request.AutoKeyRotationDetails = &tmp
513+
}
514+
}
515+
452516
if compartmentId, ok := s.D.GetOkExists("compartment_id"); ok {
453517
tmp := compartmentId.(string)
454518
request.CompartmentId = &tmp
@@ -482,6 +546,11 @@ func (s *KmsKeyResourceCrud) Create() error {
482546
request.FreeformTags = tfresource.ObjectMapToStringMap(freeformTags.(map[string]interface{}))
483547
}
484548

549+
if isAutoRotationEnabled, ok := s.D.GetOkExists("is_auto_rotation_enabled"); ok {
550+
tmp := isAutoRotationEnabled.(bool)
551+
request.IsAutoRotationEnabled = &tmp
552+
}
553+
485554
if keyShape, ok := s.D.GetOkExists("key_shape"); ok {
486555
if tmpList := keyShape.([]interface{}); len(tmpList) > 0 {
487556
fieldKeyFormat := fmt.Sprintf("%s.%d.%%s", "key_shape", 0)
@@ -520,7 +589,6 @@ func (s *KmsKeyResourceCrud) Get() error {
520589
if err != nil {
521590
return err
522591
}
523-
524592
s.Res = &response.Key
525593
return nil
526594
}
@@ -555,6 +623,17 @@ func (s *KmsKeyResourceCrud) UpdateKeyDetails() error {
555623
}
556624
request := oci_kms.UpdateKeyRequest{}
557625

626+
if autoKeyRotationDetails, ok := s.D.GetOkExists("auto_key_rotation_details"); ok {
627+
if tmpList := autoKeyRotationDetails.([]interface{}); len(tmpList) > 0 {
628+
fieldKeyFormat := fmt.Sprintf("%s.%d.%%s", "auto_key_rotation_details", 0)
629+
tmp, err := s.mapToAutoKeyRotationDetails(fieldKeyFormat)
630+
if err != nil {
631+
return err
632+
}
633+
request.AutoKeyRotationDetails = &tmp
634+
}
635+
}
636+
558637
if definedTags, ok := s.D.GetOkExists("defined_tags"); ok {
559638
convertedDefinedTags, err := tfresource.MapToDefinedTags(definedTags.(map[string]interface{}))
560639
if err != nil {
@@ -569,6 +648,12 @@ func (s *KmsKeyResourceCrud) UpdateKeyDetails() error {
569648
if freeformTags, ok := s.D.GetOkExists("freeform_tags"); ok {
570649
request.FreeformTags = tfresource.ObjectMapToStringMap(freeformTags.(map[string]interface{}))
571650
}
651+
652+
if isAutoRotationEnabled, ok := s.D.GetOkExists("is_auto_rotation_enabled"); ok {
653+
tmp := isAutoRotationEnabled.(bool)
654+
request.IsAutoRotationEnabled = &tmp
655+
}
656+
572657
tmp := s.D.Id()
573658

574659
request.KeyId = &tmp
@@ -624,6 +709,11 @@ func (s *KmsKeyResourceCrud) Delete() error {
624709
request.TimeOfDeletion = &oci_common.SDKTime{Time: tmpTime}
625710
}
626711

712+
if s.Res != nil && s.Res.AutoKeyRotationDetails != nil {
713+
s.D.Set("auto_key_rotation_details", []interface{}{AutoKeyRotationDetailsToMap(s.Res.AutoKeyRotationDetails)})
714+
} else {
715+
s.D.Set("auto_key_rotation_details", nil)
716+
}
627717
request.RequestMetadata.RetryPolicy = tfresource.GetRetryPolicy(s.DisableNotFoundRetries, "kms")
628718
tmp := s.D.Id()
629719
request.KeyId = &tmp
@@ -657,6 +747,10 @@ func (s *KmsKeyResourceCrud) SetData() error {
657747

658748
s.D.Set("freeform_tags", s.Res.FreeformTags)
659749

750+
if s.Res.IsAutoRotationEnabled != nil {
751+
s.D.Set("is_auto_rotation_enabled", *s.Res.IsAutoRotationEnabled)
752+
}
753+
660754
if s.Res.IsPrimary != nil {
661755
s.D.Set("is_primary", *s.Res.IsPrimary)
662756
}
@@ -698,6 +792,52 @@ func (s *KmsKeyResourceCrud) SetData() error {
698792
return nil
699793
}
700794

795+
func (s *KmsKeyResourceCrud) mapToAutoKeyRotationDetails(fieldKeyFormat string) (oci_kms.AutoKeyRotationDetails, error) {
796+
result := oci_kms.AutoKeyRotationDetails{}
797+
if rotationIntervalInDays, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "rotation_interval_in_days")); ok {
798+
tmp := rotationIntervalInDays.(int)
799+
result.RotationIntervalInDays = &tmp
800+
}
801+
802+
if timeOfScheduleStart, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "time_of_schedule_start")); ok {
803+
tmp, err := time.Parse(time.RFC3339Nano, timeOfScheduleStart.(string))
804+
if err != nil {
805+
return result, err
806+
}
807+
result.TimeOfScheduleStart = &oci_common.SDKTime{Time: tmp}
808+
}
809+
810+
return result, nil
811+
}
812+
813+
func AutoKeyRotationDetailsToMap(obj *oci_kms.AutoKeyRotationDetails) map[string]interface{} {
814+
result := map[string]interface{}{}
815+
816+
if obj.LastRotationMessage != nil {
817+
result["last_rotation_message"] = string(*obj.LastRotationMessage)
818+
}
819+
820+
result["last_rotation_status"] = string(obj.LastRotationStatus)
821+
822+
if obj.RotationIntervalInDays != nil {
823+
result["rotation_interval_in_days"] = int(*obj.RotationIntervalInDays)
824+
}
825+
826+
if obj.TimeOfLastRotation != nil {
827+
result["time_of_last_rotation"] = obj.TimeOfLastRotation.Format(time.RFC3339Nano)
828+
}
829+
830+
if obj.TimeOfNextRotation != nil {
831+
result["time_of_next_rotation"] = obj.TimeOfNextRotation.Format(time.RFC3339Nano)
832+
}
833+
834+
if obj.TimeOfScheduleStart != nil {
835+
result["time_of_schedule_start"] = obj.TimeOfScheduleStart.Format(time.RFC3339Nano)
836+
}
837+
838+
return result
839+
}
840+
701841
func (s *KmsKeyResourceCrud) mapToExternalKeyReference(fieldKeyFormat string) (oci_kms.ExternalKeyReference, error) {
702842
result := oci_kms.ExternalKeyReference{}
703843

0 commit comments

Comments
 (0)