Skip to content

Commit 1d994ea

Browse files
dddinaryChenHanZhang
authored andcommitted
resource/alicloud_oss_bucket: Create bucket with server side encryption
1 parent dcf2548 commit 1d994ea

File tree

2 files changed

+101
-1
lines changed

2 files changed

+101
-1
lines changed

alicloud/resource_alicloud_oss_bucket.go

+14-1
Original file line numberDiff line numberDiff line change
@@ -527,6 +527,19 @@ func resourceAlicloudOssBucketCreate(d *schema.ResourceData, meta interface{}) e
527527
req.AclTypeOption,
528528
}
529529

530+
// server_side_encryption_rule
531+
if encryption_rule, ok := d.Get("server_side_encryption_rule").([]interface{}); ok && encryption_rule != nil && len(encryption_rule) > 0 {
532+
if sse_rule, ok := encryption_rule[0].(map[string]interface{}); ok {
533+
if sse_algorithm, ok := sse_rule["sse_algorithm"].(string); ok {
534+
options = append(options, oss.SetHeader("x-oss-server-side-encryption", sse_algorithm))
535+
}
536+
537+
if sse_kms_id, ok := sse_rule["kms_master_key_id"].(string); ok {
538+
options = append(options, oss.SetHeader("x-oss-server-side-encryption-key-id", sse_kms_id))
539+
}
540+
}
541+
}
542+
530543
//resource_group_id
531544
if resourceGroupId, ok := d.Get("resource_group_id").(string); ok {
532545
if len(resourceGroupId) > 0 {
@@ -1037,7 +1050,7 @@ func resourceAlicloudOssBucketUpdate(d *schema.ResourceData, meta interface{}) e
10371050
d.SetPartial("policy")
10381051
}
10391052

1040-
if d.HasChange("server_side_encryption_rule") {
1053+
if !d.IsNewResource() && d.HasChange("server_side_encryption_rule") {
10411054
if err := resourceAlicloudOssBucketEncryptionUpdate(client, d); err != nil {
10421055
return WrapError(err)
10431056
}

alicloud/resource_alicloud_oss_bucket_test.go

+87
Original file line numberDiff line numberDiff line change
@@ -774,6 +774,93 @@ func TestAccAliCloudOssBucketCheckSseRule(t *testing.T) {
774774
})
775775
}
776776

777+
func TestAccAliCloudOssBucketCreateWithSseRule(t *testing.T) {
778+
var v oss.GetBucketInfoResult
779+
780+
resourceId := "alicloud_oss_bucket.default"
781+
ra := resourceAttrInit(resourceId, ossBucketBasicMap)
782+
783+
serviceFunc := func() interface{} {
784+
return &OssService{testAccProvider.Meta().(*connectivity.AliyunClient)}
785+
}
786+
rc := resourceCheckInit(resourceId, &v, serviceFunc)
787+
788+
rac := resourceAttrCheckInit(rc, ra)
789+
790+
testAccCheck := rac.resourceAttrMapUpdateSet()
791+
rand := acctest.RandIntRange(1000000, 9999999)
792+
name := fmt.Sprintf("tf-testacc-bucket-%d", rand)
793+
testAccConfig := resourceTestAccConfigFunc(resourceId, name, resourceOssBucketConfigDependence)
794+
resource.Test(t, resource.TestCase{
795+
PreCheck: func() {
796+
testAccPreCheck(t)
797+
},
798+
// module name
799+
IDRefreshName: resourceId,
800+
Providers: testAccProviders,
801+
CheckDestroy: rac.checkResourceDestroy(),
802+
Steps: []resource.TestStep{
803+
{
804+
Config: testAccConfig(map[string]interface{}{
805+
"bucket": name,
806+
"server_side_encryption_rule": []map[string]interface{}{
807+
{
808+
"sse_algorithm": "KMS",
809+
"kms_master_key_id": "kms-id",
810+
},
811+
},
812+
}),
813+
Check: resource.ComposeTestCheckFunc(
814+
testAccCheck(map[string]string{
815+
"bucket": name,
816+
"access_monitor.#": "1",
817+
"access_monitor.0.status": "Disabled",
818+
"resource_group_id": CHECKSET,
819+
"server_side_encryption_rule.#": "1",
820+
"server_side_encryption_rule.0.sse_algorithm": "KMS",
821+
"server_side_encryption_rule.0.kms_master_key_id": "kms-id",
822+
}),
823+
),
824+
},
825+
{
826+
ResourceName: resourceId,
827+
ImportState: true,
828+
ImportStateVerify: true,
829+
ImportStateVerifyIgnore: []string{"force_destroy", "lifecycle_rule_allow_same_action_overlap"},
830+
},
831+
{
832+
Config: testAccConfig(map[string]interface{}{
833+
"server_side_encryption_rule": []map[string]interface{}{
834+
{
835+
"sse_algorithm": "AES256",
836+
"kms_master_key_id": "",
837+
},
838+
},
839+
}),
840+
Check: resource.ComposeTestCheckFunc(
841+
testAccCheck(map[string]string{
842+
"server_side_encryption_rule.#": "1",
843+
"server_side_encryption_rule.0.sse_algorithm": "AES256",
844+
"server_side_encryption_rule.0.kms_master_key_id": "",
845+
}),
846+
),
847+
},
848+
{
849+
Config: testAccConfig(map[string]interface{}{
850+
"server_side_encryption_rule": REMOVEKEY,
851+
}),
852+
Check: resource.ComposeTestCheckFunc(
853+
testAccCheck(map[string]string{
854+
"server_side_encryption_rule.#": "0",
855+
"server_side_encryption_rule.0.sse_algorithm": REMOVEKEY,
856+
"server_side_encryption_rule.0.kms_master_key_id": REMOVEKEY,
857+
}),
858+
),
859+
},
860+
},
861+
})
862+
}
863+
777864
func TestAccAliCloudOssBucketCheckTransferAcc(t *testing.T) {
778865
var v oss.GetBucketInfoResult
779866

0 commit comments

Comments
 (0)