From c063304253bf2aabec03b0729487f8a2ec4805cf Mon Sep 17 00:00:00 2001 From: Diksha Mali Date: Wed, 17 Apr 2024 02:25:50 +0530 Subject: [PATCH 01/22] Adding changes for f1881 --- ibm/service/cos/resource_ibm_cos_bucket.go | 77 +- .../cos/resource_ibm_cos_bucket_test.go | 3763 ++++++++++++----- 2 files changed, 2852 insertions(+), 988 deletions(-) diff --git a/ibm/service/cos/resource_ibm_cos_bucket.go b/ibm/service/cos/resource_ibm_cos_bucket.go index 299dfb77ad8..3ac12a57c63 100644 --- a/ibm/service/cos/resource_ibm_cos_bucket.go +++ b/ibm/service/cos/resource_ibm_cos_bucket.go @@ -7,6 +7,7 @@ import ( "context" "fmt" "log" + "reflect" "regexp" "strings" "time" @@ -15,7 +16,8 @@ import ( "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex" "github.com/IBM-Cloud/terraform-provider-ibm/ibm/validate" "github.com/IBM/go-sdk-core/core" - rcsdk "github.com/IBM/ibm-cos-sdk-go-config/v2/resourceconfigurationv1" + + "github.com/IBM/ibm-cos-sdk-go-config/v2/resourceconfigurationv1" "github.com/IBM/ibm-cos-sdk-go/aws" "github.com/IBM/ibm-cos-sdk-go/aws/credentials/ibmiam" token "github.com/IBM/ibm-cos-sdk-go/aws/credentials/ibmiam/token" @@ -200,9 +202,14 @@ func ResourceIBMCOSBucket() *schema.Resource { Default: false, Description: "If set to true, all object write events will be sent to Activity Tracker.", }, + "management_events": { + Type: schema.TypeBool, + Optional: true, + Description: "If set to true, all object write events will be sent to Activity Tracker.", + }, "activity_tracker_crn": { Type: schema.TypeString, - Required: true, + Optional: true, Description: "The instance of Activity Tracker that will receive object event data", }, }, @@ -229,7 +236,7 @@ func ResourceIBMCOSBucket() *schema.Resource { }, "metrics_monitoring_crn": { Type: schema.TypeString, - Required: true, + Optional: true, Description: "Instance of IBM Cloud Monitoring that will receive the bucket metrics.", }, }, @@ -940,7 +947,7 @@ func resourceIBMCOSBucketUpdate(d *schema.ResourceData, meta interface{}) error //BucketName bucketName = d.Get("bucket_name").(string) - bucketPatchModel := new(rcsdk.BucketPatch) + bucketPatchModel := new(resourceconfigurationv1.BucketPatch) if d.HasChange("hard_quota") { hasChanged = true bucketPatchModel.HardQuota = core.Int64Ptr(int64(d.Get("hard_quota").(int))) @@ -948,7 +955,7 @@ func resourceIBMCOSBucketUpdate(d *schema.ResourceData, meta interface{}) error } if d.HasChange("allowed_ip") { - firewall := &rcsdk.Firewall{} + firewall := &resourceconfigurationv1.Firewall{} var ips = make([]string, 0) if ip, ok := d.GetOk("allowed_ip"); ok && ip != nil { for _, i := range ip.([]interface{}) { @@ -963,7 +970,7 @@ func resourceIBMCOSBucketUpdate(d *schema.ResourceData, meta interface{}) error } if d.HasChange("activity_tracking") { - activityTracker := &rcsdk.ActivityTracking{} + activityTracker := &resourceconfigurationv1.ActivityTracking{} if activity, ok := d.GetOk("activity_tracking"); ok { activitylist := activity.([]interface{}) for _, l := range activitylist { @@ -980,10 +987,22 @@ func resourceIBMCOSBucketUpdate(d *schema.ResourceData, meta interface{}) error writeSet := writeEvent.(bool) activityTracker.WriteDataEvents = &writeSet } + if managementEventSet, ok := d.GetOkExists("activity_tracking.0.management_events"); ok { + println("inside the management events after adding getok exists", managementEventSet) + managementEventValue := managementEventSet.(bool) + activityTracker.ManagementEvents = &managementEventValue + } + + //crn - Optional field + if activityMap["activity_tracker_crn"] != nil { + crnSet := activityMap["activity_tracker_crn"] + crnstring := crnSet.(string) + if crnstring != "" { + crn := activityMap["activity_tracker_crn"].(string) + activityTracker.ActivityTrackerCrn = &crn + } - //crn - Required field - crn := activityMap["activity_tracker_crn"].(string) - activityTracker.ActivityTrackerCrn = &crn + } } } hasChanged = true @@ -992,25 +1011,33 @@ func resourceIBMCOSBucketUpdate(d *schema.ResourceData, meta interface{}) error } if d.HasChange("metrics_monitoring") { - metricsMonitoring := &rcsdk.MetricsMonitoring{} + metricsMonitoring := &resourceconfigurationv1.MetricsMonitoring{} if metrics, ok := d.GetOk("metrics_monitoring"); ok { metricslist := metrics.([]interface{}) for _, l := range metricslist { metricsMap, _ := l.(map[string]interface{}) //metrics enabled - as its optional check for existence - if metricsSet := metricsMap["usage_metrics_enabled"]; metricsSet != nil { - metrics := metricsSet.(bool) + if metricsUsageSet := metricsMap["usage_metrics_enabled"]; metricsUsageSet != nil { + println("***inside usage metrics condition***") + metrics := metricsUsageSet.(bool) metricsMonitoring.UsageMetricsEnabled = &metrics } // request metrics enabled - as its optional check for existence - if metricsSet := metricsMap["request_metrics_enabled"]; metricsSet != nil { - metrics := metricsSet.(bool) + if metricsRequestSet := metricsMap["request_metrics_enabled"]; metricsRequestSet != nil { + println("***inside request metrics condition***") + metrics := metricsRequestSet.(bool) metricsMonitoring.RequestMetricsEnabled = &metrics } - //crn - Required field - crn := metricsMap["metrics_monitoring_crn"].(string) - metricsMonitoring.MetricsMonitoringCrn = &crn + //crn - optional field + if metricsMap["metrics_monitoring_crn"] != nil { + crnSet := metricsMap["metrics_monitoring_crn"] + crnstring := crnSet.(string) + if crnstring != "" { + crn := crnSet.(string) + metricsMonitoring.MetricsMonitoringCrn = &crn + } + } } } hasChanged = true @@ -1023,10 +1050,12 @@ func resourceIBMCOSBucketUpdate(d *schema.ResourceData, meta interface{}) error if asPatchErr != nil { return fmt.Errorf("[ERROR] Error Update COS Bucket: %s\n%s", err, bucketPatchModelAsPatch) } - setOptions := new(rcsdk.UpdateBucketConfigOptions) - setOptions.SetBucket(bucketName) - setOptions.BucketPatch = bucketPatchModelAsPatch - response, err := sess.UpdateBucketConfig(setOptions) + println("type of bucket patch", reflect.TypeOf(bucketPatchModelAsPatch)) + fmt.Println("bucket patch latest after removing default:", bucketPatchModelAsPatch) + updateBucketConfig := new(resourceconfigurationv1.UpdateBucketConfigOptions) + updateBucketConfig.Bucket = &bucketName + updateBucketConfig.BucketPatch = bucketPatchModelAsPatch + response, err := sess.UpdateBucketConfig(updateBucketConfig) if err != nil { return fmt.Errorf("[ERROR] Error Update COS Bucket: %s\n%s", err, response) } @@ -1172,9 +1201,9 @@ func resourceIBMCOSBucketRead(d *schema.ResourceData, meta interface{}) error { sess.SetServiceURL(satconfig) } - getOptions := new(rcsdk.GetBucketConfigOptions) - getOptions.SetBucket(bucketName) - bucketPtr, response, err := sess.GetBucketConfig(getOptions) + getBucketConfig := new(resourceconfigurationv1.GetBucketConfigOptions) + getBucketConfig.Bucket = &bucketName + bucketPtr, response, err := sess.GetBucketConfig(getBucketConfig) if err != nil { return fmt.Errorf("[ERROR] Error in getting bucket info rule: %s\n%s", err, response) } diff --git a/ibm/service/cos/resource_ibm_cos_bucket_test.go b/ibm/service/cos/resource_ibm_cos_bucket_test.go index bda0f1da884..1deec0dded5 100644 --- a/ibm/service/cos/resource_ibm_cos_bucket_test.go +++ b/ibm/service/cos/resource_ibm_cos_bucket_test.go @@ -173,15 +173,16 @@ func TestAccIBMCosBucket_Direct(t *testing.T) { }, }) } -func TestAccIBMCosBucket_ActivityTracker_Monitor(t *testing.T) { + +// *** F1881 Activity tracker test cases *** + +func TestAccIBMCosBucket_ActivityTracker_Only_Read_True_Without_Crn(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) - activityServiceName := fmt.Sprintf("activity_tracker_%d", acctest.RandIntRange(10, 100)) - monitorServiceName := fmt.Sprintf("metrics_monitor_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) - bucketRegion := "ams03" + bucketRegion := "us-south" bucketClass := "standard" - bucketRegionType := "single_site_location" + bucketRegionType := "region_location" resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -189,48 +190,29 @@ func TestAccIBMCosBucket_ActivityTracker_Monitor(t *testing.T) { CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_activityTracker_monitor(cosServiceName, activityServiceName, monitorServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_activityTracker_Only_Read_True_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "single_site_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "1"), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.#", "1"), - ), - }, - { - Config: testAccCheckIBMCosBucket_update_activityTracker_monitor(cosServiceName, activityServiceName, monitorServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "single_site_location", bucketRegion), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "0"), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.#", "0"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "false"), ), }, }, }) } -func TestAccIBMCosBucket_Archive_Expiration(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Only_Write_True_Without_Crn(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" - arch_ruleId := "my-rule-id-bucket-arch" - arch_enable := true - archiveDays := 1 - ruleType := "GLACIER" - exp_ruleId := "my-rule-id-bucket-expire" - exp_enable := true - expireDays := 1 - prefix := "prefix/" - archDaysUpdate := 3 - expDaysUpdate := 2 resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -238,54 +220,29 @@ func TestAccIBMCosBucket_Archive_Expiration(t *testing.T) { CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_archive_expire(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, arch_ruleId, arch_enable, archiveDays, ruleType, exp_ruleId, exp_enable, expireDays, prefix), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "archive_rule.#", "1"), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.#", "1"), - ), - }, - { - Config: testAccCheckIBMCosBucket_archive_expire_updateDays(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, arch_ruleId, arch_enable, archDaysUpdate, ruleType, exp_ruleId, exp_enable, expDaysUpdate, prefix), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "archive_rule.0.days", fmt.Sprintf("%d", archDaysUpdate)), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.0.days", fmt.Sprintf("%d", expDaysUpdate)), - ), - }, - { - Config: testAccCheckIBMCosBucket_update_archive_expire(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, arch_ruleId, arch_enable, archiveDays, ruleType, exp_ruleId, exp_enable, expireDays, prefix), + Config: testAccCheckIBMCosBucket_activityTracker_Only_Write_True_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "archive_rule.#", "0"), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.#", "0"), + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "false"), ), }, }, }) } -func TestAccIBMCosBucket_Archive(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Only_ManagementEvents_True_Without_Crn(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" - ruleId := "my-rule-id-bucket-arch" - enable := true - archiveDays := 1 - ruleType := "GLACIER" - archiveDaysUpdate := 3 resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -293,51 +250,29 @@ func TestAccIBMCosBucket_Archive(t *testing.T) { CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_archive(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, archiveDays, ruleType), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "archive_rule.#", "1"), - ), - }, - { - Config: testAccCheckIBMCosBucket_archive_updateDays(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, archiveDaysUpdate, ruleType), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "archive_rule.0.days", fmt.Sprintf("%d", archiveDaysUpdate)), - ), - }, - { - Config: testAccCheckIBMCosBucket_update_archive(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, archiveDays, ruleType), + Config: testAccCheckIBMCosBucket_activityTracker_Only_ManagementEvents_True_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "archive_rule.#", "0"), + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "true"), ), }, }, }) } -func TestAccIBMCosBucket_Expiredays(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_True_ManagementEvents_False_Without_Crn(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" - ruleId := "my-rule-id-bucket-expiredays" - enable := true - expireDays := 2 - prefix := "prefix/" - expireDaysUpdate := 3 resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -345,51 +280,29 @@ func TestAccIBMCosBucket_Expiredays(t *testing.T) { CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_expiredays(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, expireDays, prefix), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.#", "1"), - ), - }, - { - Config: testAccCheckIBMCosBucket_expire_updateDays(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, expireDaysUpdate, prefix), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.0.days", fmt.Sprintf("%d", expireDaysUpdate)), - ), - }, - { - Config: testAccCheckIBMCosBucket_update_expiredays(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, expireDays, prefix), + Config: testAccCheckIBMCosBucket_activityTracker_Read_True_Write_True_ManagementEvents_False_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.#", "0"), + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "false"), ), }, }, }) } -func TestAccIBMCosBucket_Expiredate(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Read_False_Write_False_ManagementEvents_False_Without_Crn(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" - ruleId := "my-rule-id-bucket-expiredate" - enable := true - expireDate := "2021-11-28" - prefix := "" - expireDateUpdate := "2021-11-30" resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -397,50 +310,29 @@ func TestAccIBMCosBucket_Expiredate(t *testing.T) { CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_expiredate(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, expireDate, prefix), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.#", "1"), - ), - }, - { - Config: testAccCheckIBMCosBucket_expire_updateDate(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, expireDateUpdate, prefix), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.0.date", expireDateUpdate), - ), - }, - { - Config: testAccCheckIBMCosBucket_update_expiredate(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, expireDate, prefix), + Config: testAccCheckIBMCosBucket_activityTracker_Read_False_Write_False_ManagementEvents_False_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.#", "0"), + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "false"), ), }, }, }) } -func TestAccIBMCosBucket_Expireddeletemarker(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Read_True_ManagementEvents_True_Without_Crn(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" - ruleId := "my-rule-id-bucket-expireddeletemarker" - enable := true - prefix := "" - expiredObjectDeleteMarker := false resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -448,30 +340,29 @@ func TestAccIBMCosBucket_Expireddeletemarker(t *testing.T) { CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_expiredeletemarker(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, expiredObjectDeleteMarker, prefix), + Config: testAccCheckIBMCosBucket_activityTracker_Read_True_ManagementEvents_True_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.#", "1"), + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "true"), ), }, }, }) } -func TestAccIBMCosBucket_AbortIncompeleteMPU(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Write_True_ManagementEvents_True_Without_Crn(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" - ruleId := "my-rule-id-bucket-abortmpu" - enable := true - prefix := "" - daysAfterInitiation := 1 resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -479,40 +370,29 @@ func TestAccIBMCosBucket_AbortIncompeleteMPU(t *testing.T) { CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_abortincompletempu(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, daysAfterInitiation, prefix), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "abort_incomplete_multipart_upload_days.#", "1"), - ), - }, - { - Config: testAccCheckIBMCosBucket_update_abortincompletempu(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, daysAfterInitiation, prefix), + Config: testAccCheckIBMCosBucket_activityTracker_Write_True_ManagementEvents_True_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "abort_incomplete_multipart_upload_days.#", "0"), + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "true"), ), }, }, }) } -func TestAccIBMCosBucket_noncurrentversion(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_True_ManagementEvents_True_Without_Crn(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" - ruleId := "my-rule-id-bucket-ncversion" - enable := true - prefix := "" - noncurrentDays := 1 resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -520,121 +400,124 @@ func TestAccIBMCosBucket_noncurrentversion(t *testing.T) { CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_noncurrentversion(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, noncurrentDays, prefix), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "noncurrent_version_expiration.#", "1"), - ), - }, - { - Config: testAccCheckIBMCosBucket_update_noncurrentversion(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, noncurrentDays, prefix), + Config: testAccCheckIBMCosBucket_activityTracker_Read_True_Write_True_ManagementEvents_True_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "noncurrent_version_expiration.#", "0"), + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "true"), ), }, }, }) } -func TestAccIBMCosBucket_Retention(t *testing.T) { +// *** with crn *** + +func TestAccIBMCosBucket_ActivityTracker_Read_True_ManagementEvents_Not_Set_With_Crn(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) - bucketRegion := "jp-tok" + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" - default_retention := 0 - maximum_retention := 1 - minimum_retention := 0 - + activityTrackerInstanceCRN := acc.ActivityTrackerInstanceCRN resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_retention(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, default_retention, maximum_retention, minimum_retention), + Config: testAccCheckIBMCosBucket_activityTracker_Read_True_ManagementEvents_Not_Set_With_Crn(cosServiceName, activityTrackerInstanceCRN, bucketName, bucketRegionType, bucketRegion, bucketClass), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "retention_rule.#", "1"), + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.activity_tracker_crn", activityTrackerInstanceCRN), ), }, }, }) } -func TestAccIBMCosBucket_Object_Versioning(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Write_True_ManagementEvents_Not_Set_With_Crn(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) - bucketRegion := "us-east" + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" - enable := true - + activityTrackerInstanceCRN := acc.ActivityTrackerInstanceCRN resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_object_versioning(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, enable), + Config: testAccCheckIBMCosBucket_activityTracker_Write_True_ManagementEvents_Not_Set_With_Crn(cosServiceName, activityTrackerInstanceCRN, bucketName, bucketRegionType, bucketRegion, bucketClass), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "object_versioning.#", "1"), + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.activity_tracker_crn", activityTrackerInstanceCRN), ), }, }, }) } -func TestAccIBMCosBucket_Hard_Quota(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Only_ManagementEvents_True_With_Crn(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" - hardQuota := 1024 - + activityTrackerInstanceCRN := acc.ActivityTrackerInstanceCRN resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_hard_quota(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, hardQuota), + Config: testAccCheckIBMCosBucket_activityTracker_Only_ManagementEvents_True_With_Crn(cosServiceName, activityTrackerInstanceCRN, bucketName, bucketRegionType, bucketRegion, bucketClass), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "hard_quota", fmt.Sprintf("%d", hardQuota)), + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.activity_tracker_crn", activityTrackerInstanceCRN), ), }, }, }) } -func TestAccIBMCosBucket_Smart_Type(t *testing.T) { - serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) - bucketRegion := "eu" - bucketClass := "smart" - bucketRegionType := "cross_region_location" +func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_True_ManagementEvents_Not_Set_With_Crn(t *testing.T) { + + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + bucketRegionType := "region_location" + activityTrackerInstanceCRN := acc.ActivityTrackerInstanceCRN resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -642,281 +525,285 @@ func TestAccIBMCosBucket_Smart_Type(t *testing.T) { CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_basic(serviceName, bucketName, bucketRegionType, bucketRegion, bucketClass), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "cross_region_location", bucketRegion), - ), - }, - { - Config: testAccCheckIBMCosBucket_updateWithSameName(serviceName, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_activityTracker_Read_True_Write_True_ManagementEvents_Not_Set_With_Crn(cosServiceName, activityTrackerInstanceCRN, bucketName, bucketRegionType, bucketRegion, bucketClass), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "cross_region_location", bucketRegion), + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.activity_tracker_crn", activityTrackerInstanceCRN), ), }, }, }) } -func TestAccIBMCosBucket_import(t *testing.T) { - serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) - bucketRegion := "eu" - bucketClass := "standard" - bucketRegionType := "cross_region_location" +func TestAccIBMCosBucket_ActivityTracker_Read_False_Write_False_ManagementEvents_Not_Set_With_Crn(t *testing.T) { + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + bucketRegionType := "region_location" + activityTrackerInstanceCRN := acc.ActivityTrackerInstanceCRN resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_basic(serviceName, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_activityTracker_Read_False_Write_False_ManagementEvents_Not_Set_With_Crn(cosServiceName, activityTrackerInstanceCRN, bucketName, bucketRegionType, bucketRegion, bucketClass), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "cross_region_location", bucketRegion), + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.activity_tracker_crn", activityTrackerInstanceCRN), ), }, - { - ResourceName: "ibm_cos_bucket.bucket", - ImportState: true, - ImportStateVerify: true, - ImportStateVerifyIgnore: []string{ - "wait_time_minutes", "parameters", "force_delete"}, - }, }, }) } -// Satellite location -func TestAccIBMCosBucket_Satellite(t *testing.T) { - - serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) - bucketRegion := acc.Satellite_location_id - ResourceInstanceId := acc.Satellite_Resource_instance_id +func TestAccIBMCosBucket_ActivityTracker_Read_True_ManagementEvents_True_With_Crn(t *testing.T) { + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + bucketRegionType := "region_location" + activityTrackerInstanceCRN := acc.ActivityTrackerInstanceCRN resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_basic_sat(serviceName, bucketName), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - ), - }, - { - Config: testAccCheckIBMCosBucket_sat_updateWithSameName(serviceName, bucketName), + Config: testAccCheckIBMCosBucket_activityTracker_Read_True_ManagementEvents_True_With_Crn(cosServiceName, activityTrackerInstanceCRN, bucketName, bucketRegionType, bucketRegion, bucketClass), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.activity_tracker_crn", activityTrackerInstanceCRN), ), }, }, }) } -func TestAccIBMCosBucket_Satellite_Expiredays(t *testing.T) { - - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) - bucketRegion := acc.Satellite_location_id - ResourceInstanceId := acc.Satellite_Resource_instance_id - ruleId := "my-rule-id-bucket-expiredays" - enable := true - expireDays := 2 - prefix := "prefix/" - expireDaysUpdate := 3 +func TestAccIBMCosBucket_ActivityTracker_Write_True_ManagementEvents_True_With_Crn(t *testing.T) { + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + bucketRegionType := "region_location" + activityTrackerInstanceCRN := acc.ActivityTrackerInstanceCRN resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_expiredays_satellite(bucketName, bucketRegion, ruleId, enable, expireDays, prefix), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.#", "1"), - ), - }, - { - Config: testAccCheckIBMCosBucket_expire_updateDays_satellite(bucketName, bucketRegion, ruleId, enable, expireDaysUpdate, prefix), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.0.days", fmt.Sprintf("%d", expireDaysUpdate)), - ), - }, - { - Config: testAccCheckIBMCosBucket_update_expiredays_satellite(bucketName, bucketRegion, ruleId, enable, expireDays, prefix), + Config: testAccCheckIBMCosBucket_activityTracker_Write_True_ManagementEvents_True_With_Crn(cosServiceName, activityTrackerInstanceCRN, bucketName, bucketRegionType, bucketRegion, bucketClass), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.#", "0"), + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.activity_tracker_crn", activityTrackerInstanceCRN), ), }, }, }) } -func TestAccIBMCosBucket_Satellite_Expiredate(t *testing.T) { - - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) - bucketRegion := acc.Satellite_location_id - ResourceInstanceId := acc.Satellite_Resource_instance_id - ruleId := "my-rule-id-bucket-expiredate" - enable := true - expireDate := "2021-11-28" - prefix := "" - expireDateUpdate := "2021-11-30" +func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_True_ManagementEvents_True_With_Crn(t *testing.T) { + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + bucketRegionType := "region_location" + activityTrackerInstanceCRN := acc.ActivityTrackerInstanceCRN resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_sat_expiredate(bucketName, bucketRegion, ruleId, enable, expireDate, prefix), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.#", "1"), - ), - }, - { - Config: testAccCheckIBMCosBucket_sat_expire_updateDate(bucketName, bucketRegion, ruleId, enable, expireDateUpdate, prefix), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.0.date", expireDateUpdate), - ), - }, - { - Config: testAccCheckIBMCosBucket_sat_update_expiredate(bucketName, bucketRegion, ruleId, enable, expireDate, prefix), + Config: testAccCheckIBMCosBucket_activityTracker_Read_True_Write_True_ManagementEvents_True_With_Crn(cosServiceName, activityTrackerInstanceCRN, bucketName, bucketRegionType, bucketRegion, bucketClass), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.#", "0"), + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.activity_tracker_crn", activityTrackerInstanceCRN), ), }, }, }) } -func TestAccIBMCosBucket_Satellite_Expireddeletemarker(t *testing.T) { - - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) - bucketRegion := acc.Satellite_location_id - ResourceInstanceId := acc.Satellite_Resource_instance_id - ruleId := "my-rule-id-bucket-expireddeletemarker" - enable := true - prefix := "" - expiredObjectDeleteMarker := false +func TestAccIBMCosBucket_Upload_Object_Activity_Tracker_Enabled_With_CRN(t *testing.T) { + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + key := fmt.Sprintf("tf-testacc-cos-%d", acctest.RandIntRange(10, 100)) + bucketRegionType := "region_location" + objectBody := "Acceptance Testing" + activityTrackerInstanceCRN := acc.ActivityTrackerInstanceCRN resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_sat_expiredeletemarker(bucketName, bucketRegion, ruleId, enable, expiredObjectDeleteMarker, prefix), + Config: testAccCheckIBMCosBucket_Upload_Object_Activity_Tracker_Enabled_With_CRN(cosServiceName, activityTrackerInstanceCRN, bucketName, bucketRegionType, bucketRegion, bucketClass, key, objectBody), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.#", "1"), + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.activity_tracker_crn", activityTrackerInstanceCRN), + resource.TestCheckResourceAttr("ibm_cos_bucket_object.testacc", "body", objectBody), ), }, }, }) } -func TestAccIBMCosBucket_Satellite_AbortIncompeleteMPU(t *testing.T) { - - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) - bucketRegion := acc.Satellite_location_id - ResourceInstanceId := acc.Satellite_Resource_instance_id - ruleId := "my-rule-id-bucket-abortmpu" - enable := true - prefix := "" - daysAfterInitiation := 1 +func TestAccIBMCosBucket_Upload_Object_Activity_Tracker_Enabled_Without_CRN(t *testing.T) { + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + key := fmt.Sprintf("tf-testacc-cos-%d", acctest.RandIntRange(10, 100)) + bucketRegionType := "region_location" + objectBody := "Acceptance Testing" resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_sat_abortincompletempu(bucketName, bucketRegion, ruleId, enable, daysAfterInitiation, prefix), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "abort_incomplete_multipart_upload_days.#", "1"), - ), - }, - { - Config: testAccCheckIBMCosBucket_sat_update_abortincompletempu(bucketName, bucketRegion, ruleId, enable, daysAfterInitiation, prefix), + Config: testAccCheckIBMCosBucket_upload_Object_Activity_Tracker_Enabled_Without_CRN(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, key, objectBody), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "abort_incomplete_multipart_upload_days.#", "0"), + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket_object.testacc", "body", objectBody), ), }, }, }) } -func TestAccIBMCosBucket_Satellite_noncurrentversion(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Read_False_Write_False_ManagementEvents_False_With_Crn(t *testing.T) { - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) - bucketRegion := acc.Satellite_location_id - ResourceInstanceId := acc.Satellite_Resource_instance_id - ruleId := "my-rule-id-bucket-ncversion" - enable := true - prefix := "" - noncurrentDays := 1 + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + bucketRegionType := "region_location" + activityTrackerInstanceCRN := acc.ActivityTrackerInstanceCRN + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_activityTracker_Read_False_Write_False_ManagementEvents_False_With_Crn(cosServiceName, activityTrackerInstanceCRN, bucketName, bucketRegionType, bucketRegion, bucketClass), + ExpectError: regexp.MustCompile("Error Update COS Bucket: Cannot have an Activity Tracking CRN without opting for management events"), + }, + }, + }) +} + +func TestAccIBMCosBucket_ActivityTracker_Read_Invalid_Write_Invalid_ManagementEvents_Invalid_With_Crn(t *testing.T) { + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + bucketRegionType := "region_location" + activityTrackerInstanceCRN := acc.ActivityTrackerInstanceCRN resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_sat_noncurrentversion(bucketName, bucketRegion, ruleId, enable, noncurrentDays, prefix), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "noncurrent_version_expiration.#", "1"), - ), + Config: testAccCheckIBMCosBucket_activityTracker_Read_Invalid_Write_Invalid_ManagementEvents_Invalid_With_Crn(cosServiceName, activityTrackerInstanceCRN, bucketName, bucketRegionType, bucketRegion, bucketClass), + ExpectError: regexp.MustCompile("Error: Incorrect attribute value type"), }, + }, + }) +} + +func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_True_ManagementEvents_True_With_Crn_Invalid(t *testing.T) { + + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + bucketRegionType := "region_location" + activityTrackerInstanceCRN := acc.ActivityTrackerInstanceCRN + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_sat_update_noncurrentversion(bucketName, bucketRegion, ruleId, enable, noncurrentDays, prefix), - Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "noncurrent_version_expiration.#", "0"), - ), + Config: testAccCheckIBMCosBucket_activityTracker_Read_True_Write_True_ManagementEvents_True_With_Crn_Invalid(cosServiceName, activityTrackerInstanceCRN, bucketName, bucketRegionType, bucketRegion, bucketClass), + ExpectError: regexp.MustCompile("Error Update COS Bucket: Malformed activity tracker CRN"), }, }, }) } -func TestAccIBMCosBucket_Satellite_Object_Versioning(t *testing.T) { +//Metrics monitoring test cases: - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) - bucketRegion := acc.Satellite_location_id - ResourceInstanceId := acc.Satellite_Resource_instance_id - enable := true +func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_True_Without_Crn(t *testing.T) { + + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + bucketRegionType := "region_location" resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -924,24 +811,27 @@ func TestAccIBMCosBucket_Satellite_Object_Versioning(t *testing.T) { CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_sat_object_versioning(bucketName, bucketRegion, enable), + Config: testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_True_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "object_versioning.#", "1"), + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.request_metrics_enabled", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.usage_metrics_enabled", "false"), ), }, }, }) } -func TestAccIBMCosBucket_OneRate_With_Storageclass(t *testing.T) { +func TestAccIBMCosBucket_MetricsMonitoring_UsageMetrics_True_Without_Crn(t *testing.T) { - serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" - bucketClass := "onerate_active" + bucketClass := "standard" bucketRegionType := "region_location" resource.Test(t, resource.TestCase{ @@ -950,23 +840,27 @@ func TestAccIBMCosBucket_OneRate_With_Storageclass(t *testing.T) { CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_Onerate_With_Storageclass(serviceName, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_metricsMonitoring_UsageMetrics_True_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.request_metrics_enabled", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.usage_metrics_enabled", "true"), ), }, }, }) } -func TestAccIBMCosBucket_OneRate_Without_Storage_class(t *testing.T) { +func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_True_UsageMetrics_True_Without_Crn(t *testing.T) { - serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" + bucketClass := "standard" bucketRegionType := "region_location" resource.Test(t, resource.TestCase{ @@ -975,22 +869,27 @@ func TestAccIBMCosBucket_OneRate_Without_Storage_class(t *testing.T) { CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_Onerate_Without_Storage_class(serviceName, bucketName, bucketRegionType, bucketRegion), + Config: testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_True_UsageMetrics_True_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.request_metrics_enabled", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.usage_metrics_enabled", "true"), ), }, }, }) } -func TestAccIBMCosBucket_OneRate_With_Invalid_Storageclass(t *testing.T) { - serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) +func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_False_UsageMetrics_False_Without_Crn(t *testing.T) { + + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" - bucketClass := "invalidstorageclass" + bucketClass := "standard" bucketRegionType := "region_location" resource.Test(t, resource.TestCase{ @@ -999,20 +898,29 @@ func TestAccIBMCosBucket_OneRate_With_Invalid_Storageclass(t *testing.T) { CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_Onerate_With_Invalid_Storageclass(serviceName, bucketName, bucketRegionType, bucketRegion, bucketClass), - ExpectError: regexp.MustCompile("\"storage_class\" must contain a value from \\[\\]string{\"standard\", \"vault\", \"cold\", \"smart\", \"flex\", \"onerate_active\"}, got \"invalidstorageclass\""), + Config: testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_False_UsageMetrics_False_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.request_metrics_enabled", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.usage_metrics_enabled", "false"), + ), }, }, }) } -func TestAccIBMCosBucket_COS_Plan_Storageclass_Mismatch_Type1(t *testing.T) { +func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_True_With_Crn(t *testing.T) { - serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + metricsMonitoringCrn := acc.MetricsMonitoringCRN resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -1020,650 +928,2564 @@ func TestAccIBMCosBucket_COS_Plan_Storageclass_Mismatch_Type1(t *testing.T) { CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_COS_Plan_Storageclass_Mismatch_Type1(serviceName, bucketName, bucketRegionType, bucketRegion, bucketClass), - ExpectError: regexp.MustCompile("InvalidLocationConstraint: Storage class not allowed for one rate user"), + Config: testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_True_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, bucketRegionType, bucketRegion, bucketClass), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.request_metrics_enabled", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.usage_metrics_enabled", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.metrics_monitoring_crn", metricsMonitoringCrn), + ), }, }, }) } -func TestAccIBMCosBucket_COS_Plan_Storageclass_Mismatch_Type2(t *testing.T) { - serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) +func TestAccIBMCosBucket_MetricsMonitoring_UsageMetrics_True_With_Crn(t *testing.T) { + + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" - bucketClass := "onerate_active" + bucketClass := "standard" bucketRegionType := "region_location" - + metricsMonitoringCrn := acc.MetricsMonitoringCRN resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_COS_Plan_Storageclass_Mismatch_Type2(serviceName, bucketName, bucketRegionType, bucketRegion, bucketClass), - ExpectError: regexp.MustCompile("InvalidLocationConstraint: Storage class not allowed for standard or cloud lite user"), + Config: testAccCheckIBMCosBucket_metricsMonitoring_UsageMetrics_True_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, bucketRegionType, bucketRegion, bucketClass), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.request_metrics_enabled", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.usage_metrics_enabled", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.metrics_monitoring_crn", metricsMonitoringCrn), + ), }, }, }) } -func testAccCheckIBMCosBucketDestroy(s *terraform.State) error { - var s3Conf *aws.Config - var apiEndpoint string - var resourceInstance string - for _, rs := range s.RootModule().Resources { - if rs.Type == "ibm_cos_bucket" { - apiEndpoint = rs.Primary.Attributes["s3_endpoint_public"] - } - if rs.Type == "ibm_resource_instance" && rs.Primary.Attributes["service"] == "cloud-object-storage" { - resourceInstance = rs.Primary.Attributes["crn"] +func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_True_UsageMetrics_True_With_Crn(t *testing.T) { - } - } + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + bucketRegionType := "region_location" + metricsMonitoringCrn := acc.MetricsMonitoringCRN + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_True_UsageMetrics_True_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, bucketRegionType, bucketRegion, bucketClass), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.request_metrics_enabled", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.usage_metrics_enabled", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.metrics_monitoring_crn", metricsMonitoringCrn), + ), + }, + }, + }) +} - rsContClient, err := acc.TestAccProvider.Meta().(conns.ClientSession).BluemixSession() - if err != nil { - return err - } +func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_False_UsageMetrics_False_With_Crn(t *testing.T) { - authEndpoint, err := rsContClient.Config.EndpointLocator.IAMEndpoint() - if err != nil { - return err - } - authEndpointPath := fmt.Sprintf("%s%s", authEndpoint, "/identity/token") - apiKey := rsContClient.Config.BluemixAPIKey - if apiKey != "" { - s3Conf = aws.NewConfig().WithEndpoint(apiEndpoint).WithCredentials(ibmiam.NewStaticCredentials(aws.NewConfig(), authEndpointPath, apiKey, resourceInstance)).WithS3ForcePathStyle(true) - } - iamAccessToken := rsContClient.Config.IAMAccessToken - if iamAccessToken != "" { - initFunc := func() (*token.Token, error) { - return &token.Token{ - AccessToken: rsContClient.Config.IAMAccessToken, - RefreshToken: rsContClient.Config.IAMRefreshToken, - TokenType: "Bearer", - ExpiresIn: int64((time.Hour * 248).Seconds()) * -1, - Expiration: time.Now().Add(-1 * time.Hour).Unix(), - }, nil - } - s3Conf = aws.NewConfig().WithEndpoint(apiEndpoint).WithCredentials(ibmiam.NewCustomInitFuncCredentials(aws.NewConfig(), initFunc, authEndpointPath, resourceInstance)).WithS3ForcePathStyle(true) - } - s3Sess := session.Must(session.NewSession()) - s3Client := s3.New(s3Sess, s3Conf) + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + bucketRegionType := "region_location" + metricsMonitoringCrn := acc.MetricsMonitoringCRN + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_False_UsageMetrics_False_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, bucketRegionType, bucketRegion, bucketClass), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.request_metrics_enabled", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.usage_metrics_enabled", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.metrics_monitoring_crn", metricsMonitoringCrn), + ), + }, + }, + }) +} - bucketList, _ := s3Client.ListBuckets(&s3.ListBucketsInput{}) - if len(bucketList.Buckets) > 0 { - return errors.New("Bucket still exists") +func TestAccIBMCosBucket_MetricsMonitoring_Upload_Object_RequestMetrics_True_UsageMetrics_True_With_Crn(t *testing.T) { - } - return nil + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + bucketRegionType := "region_location" + key := fmt.Sprintf("tf-testacc-cos-%d", acctest.RandIntRange(10, 100)) + objectBody := "Acceptance Testing" + metricsMonitoringCrn := acc.MetricsMonitoringCRN + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_metricsMonitoring_Upload_Object_RequestMetrics_True_UsageMetrics_True_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, bucketRegionType, bucketRegion, bucketClass, key, objectBody), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.request_metrics_enabled", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.usage_metrics_enabled", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.metrics_monitoring_crn", metricsMonitoringCrn), + ), + }, + }, + }) } -// COS Satellite -func testAccCheckIBMCosBucket_Satellite_Exists(resource string, bucket string, region string, bucketname string) resource.TestCheckFunc { - - return func(s *terraform.State) error { - var s3Conf *aws.Config - - bucket, ok := s.RootModule().Resources[bucket] - if !ok { - return fmt.Errorf("Bucket Not found: %s", bucket) - } - - satloc_guid := strings.Split(resource, ":") - bucketsatcrn := satloc_guid[7] - resource = bucketsatcrn - - var rt string - - rt = "sl" - - apiEndpoint := cos.SelectSatlocCosApi(rt, resource, region) - - rsContClient, err := acc.TestAccProvider.Meta().(conns.ClientSession).BluemixSession() - if err != nil { - return err - } - - authEndpoint, err := rsContClient.Config.EndpointLocator.IAMEndpoint() - if err != nil { - return err - } - authEndpointPath := fmt.Sprintf("%s%s", authEndpoint, "/identity/token") - apiKey := rsContClient.Config.BluemixAPIKey - if apiKey != "" { - s3Conf = aws.NewConfig().WithEndpoint(apiEndpoint).WithCredentials(ibmiam.NewStaticCredentials(aws.NewConfig(), authEndpointPath, apiKey, resource)).WithS3ForcePathStyle(true) - } - iamAccessToken := rsContClient.Config.IAMAccessToken - if iamAccessToken != "" { - initFunc := func() (*token.Token, error) { - return &token.Token{ - AccessToken: rsContClient.Config.IAMAccessToken, - RefreshToken: rsContClient.Config.IAMRefreshToken, - TokenType: "Bearer", - ExpiresIn: int64((time.Hour * 248).Seconds()) * -1, - Expiration: time.Now().Add(-1 * time.Hour).Unix(), - }, nil - } - s3Conf = aws.NewConfig().WithEndpoint(apiEndpoint).WithCredentials(ibmiam.NewCustomInitFuncCredentials(aws.NewConfig(), initFunc, authEndpointPath, resource)).WithS3ForcePathStyle(true) - } - s3Sess := session.Must(session.NewSession()) - s3Client := s3.New(s3Sess, s3Conf) - - bucketList, _ := s3Client.ListBuckets(&s3.ListBucketsInput{}) - for _, bucket := range bucketList.Buckets { - bn := *bucket.Name - if bn == bucketname { - return nil - } - } - return errors.New("bucket does not exist") - } -} - -// / IBMCLOUD -func testAccCheckIBMCosBucketExists(resource string, bucket string, regiontype string, region string, bucketname string) resource.TestCheckFunc { - - return func(s *terraform.State) error { - var s3Conf *aws.Config - resourceInstance, ok := s.RootModule().Resources[resource] - - if !ok { - return fmt.Errorf("Not found: %s", resource) - } - - bucket, ok := s.RootModule().Resources[bucket] - - if !ok { - return fmt.Errorf("Not found: %s", bucket) - } - - var rt string - if regiontype == "single_site_location" { - rt = "ssl" - } - if regiontype == "region_location" { - rt = "rl" - } - if regiontype == "cross_region_location" { - rt = "crl" - } - - apiEndpoint, _, _ := cos.SelectCosApi(rt, region) - - rsContClient, err := acc.TestAccProvider.Meta().(conns.ClientSession).BluemixSession() - if err != nil { - return err - } - - authEndpoint, err := rsContClient.Config.EndpointLocator.IAMEndpoint() - if err != nil { - return err - } - authEndpointPath := fmt.Sprintf("%s%s", authEndpoint, "/identity/token") - apiKey := rsContClient.Config.BluemixAPIKey - if apiKey != "" { - s3Conf = aws.NewConfig().WithEndpoint(apiEndpoint).WithCredentials(ibmiam.NewStaticCredentials(aws.NewConfig(), authEndpointPath, apiKey, resourceInstance.Primary.ID)).WithS3ForcePathStyle(true) - } - iamAccessToken := rsContClient.Config.IAMAccessToken - if iamAccessToken != "" { - initFunc := func() (*token.Token, error) { - return &token.Token{ - AccessToken: rsContClient.Config.IAMAccessToken, - RefreshToken: rsContClient.Config.IAMRefreshToken, - TokenType: "Bearer", - ExpiresIn: int64((time.Hour * 248).Seconds()) * -1, - Expiration: time.Now().Add(-1 * time.Hour).Unix(), - }, nil - } - s3Conf = aws.NewConfig().WithEndpoint(apiEndpoint).WithCredentials(ibmiam.NewCustomInitFuncCredentials(aws.NewConfig(), initFunc, authEndpointPath, resourceInstance.Primary.ID)).WithS3ForcePathStyle(true) - } - s3Sess := session.Must(session.NewSession()) - s3Client := s3.New(s3Sess, s3Conf) +func TestAccIBMCosBucket_MetricsMonitoring_Upload_Object_RequestMetrics_True_UsageMetrics_True_Without_Crn(t *testing.T) { - bucketList, _ := s3Client.ListBuckets(&s3.ListBucketsInput{}) - for _, bucket := range bucketList.Buckets { - bn := *bucket.Name - if bn == bucketname { - return nil - } - } - return errors.New("bucket does not exist") - } -} -func TestAccIBMCOSKP(t *testing.T) { - instanceName := fmt.Sprintf("kms_%d", acctest.RandIntRange(10, 100)) - serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) - keyName := fmt.Sprintf("key_%d", acctest.RandIntRange(10, 100)) - bucketRegion := "us" + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" bucketClass := "standard" - bucketRegionType := "cross_region_location" - + bucketRegionType := "region_location" + key := fmt.Sprintf("tf-testacc-cos-%d", acctest.RandIntRange(10, 100)) + objectBody := "Acceptance Testing" resource.Test(t, resource.TestCase{ - PreCheck: func() { acc.TestAccPreCheck(t) }, - Providers: acc.TestAccProviders, + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMKeyProtectRootkeyWithCOSBucket(instanceName, keyName, serviceName, bucketName, bucketRegion, bucketClass), - Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttr("ibm_kms_key.test", "key_name", keyName), - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + Config: testAccCheckIBMCosBucket_metricsMonitoring_Upload_Object_RequestMetrics_True_UsageMetrics_True_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, key, objectBody), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.request_metrics_enabled", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.usage_metrics_enabled", "true"), ), }, }, }) } +func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_Invalid_UsageMetrics_Invalid_With_Crn(t *testing.T) { -func TestAccIBMCOSHPCS(t *testing.T) { - serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) - keyName := fmt.Sprintf("key_%d", acctest.RandIntRange(10, 100)) + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" - bucketRegionType := "cross_region_location" + bucketRegionType := "region_location" + metricsMonitoringCrn := acc.MetricsMonitoringCRN + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_Invalid_UsageMetrics_Invalid_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, bucketRegionType, bucketRegion, bucketClass), + ExpectError: regexp.MustCompile("Error: Incorrect attribute value type"), + }, + }, + }) +} + +func TestAccIBMCosBucket_MetricsMonitoring_Crn_Invalid(t *testing.T) { + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + bucketRegionType := "region_location" + metricsMonitoringCrn := acc.MetricsMonitoringCRN resource.Test(t, resource.TestCase{ - PreCheck: func() { acc.TestAccPreCheck(t) }, - Providers: acc.TestAccProviders, + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMHPCSRootkeyWithCOSBucket(keyName, serviceName, bucketName, bucketRegion, bucketClass), - Check: resource.ComposeTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "key_protect", acc.HpcsRootKeyCrn), - ), + Config: testAccCheckIBMCosBucket_metricsMonitoring_Crn_Invalid(cosServiceName, metricsMonitoringCrn, bucketName, bucketRegionType, bucketRegion, bucketClass), + ExpectError: regexp.MustCompile("Error Update COS Bucket: Malformed Monitoring CRN."), }, }, }) } -// new hpcs -func TestAccIBMCOSKPKmsParamValid(t *testing.T) { +// func TestAccIBMCosBucket_MetricsMonitoring_New_Instance(t *testing.T) { + +// cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) +// bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) +// bucketRegion := "us-south" +// bucketClass := "standard" +// bucketRegionType := "region_location" +// monitorServiceName := fmt.Sprintf("metrics_monitor_%d", acctest.RandIntRange(10, 100)) +// resource.Test(t, resource.TestCase{ +// PreCheck: func() { acc.TestAccPreCheck(t) }, +// Providers: acc.TestAccProviders, +// CheckDestroy: testAccCheckIBMCosBucketDestroy, +// Steps: []resource.TestStep{ +// { +// Config: testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_New_Instance(cosServiceName, monitorServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), +// Check: resource.ComposeAggregateTestCheckFunc( +// testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), +// resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), +// resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), +// resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), +// resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.#", "1"), +// resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.request_metrics_enabled", "true"), +// resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "metrics_monitoring.0.usage_metrics_enabled", "true"), +// ), +// }, +// }, +// }) +// } + +// *** f1881 tests cases end *** - instanceName := fmt.Sprintf("kms_%d", acctest.RandIntRange(10, 100)) - serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) - keyName := fmt.Sprintf("key_%d", acctest.RandIntRange(10, 100)) - bucketRegion := "us" +func TestAccIBMCosBucket_Archive_Expiration(t *testing.T) { + + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" bucketClass := "standard" - bucketRegionType := "cross_region_location" + bucketRegionType := "region_location" + arch_ruleId := "my-rule-id-bucket-arch" + arch_enable := true + archiveDays := 1 + ruleType := "GLACIER" + exp_ruleId := "my-rule-id-bucket-expire" + exp_enable := true + expireDays := 1 + prefix := "prefix/" + archDaysUpdate := 3 + expDaysUpdate := 2 resource.Test(t, resource.TestCase{ - PreCheck: func() { acc.TestAccPreCheck(t) }, - Providers: acc.TestAccProviders, + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMKeyProtectRootkeyWithCOSBucketKmsParam(instanceName, keyName, serviceName, bucketName, bucketRegion, bucketClass), - Check: resource.ComposeTestCheckFunc( + Config: testAccCheckIBMCosBucket_archive_expire(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, arch_ruleId, arch_enable, archiveDays, ruleType, exp_ruleId, exp_enable, expireDays, prefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "archive_rule.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.#", "1"), + ), + }, + { + Config: testAccCheckIBMCosBucket_archive_expire_updateDays(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, arch_ruleId, arch_enable, archDaysUpdate, ruleType, exp_ruleId, exp_enable, expDaysUpdate, prefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "archive_rule.0.days", fmt.Sprintf("%d", archDaysUpdate)), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.0.days", fmt.Sprintf("%d", expDaysUpdate)), + ), + }, + { + Config: testAccCheckIBMCosBucket_update_archive_expire(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, arch_ruleId, arch_enable, archiveDays, ruleType, exp_ruleId, exp_enable, expireDays, prefix), + Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "archive_rule.#", "0"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.#", "0"), ), }, }, }) } -func TestAccIBMCOSKPKmsParamWithInvalidCRN(t *testing.T) { - instanceName := fmt.Sprintf("kms_%d", acctest.RandIntRange(10, 100)) - serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) - keyName := fmt.Sprintf("key_%d", acctest.RandIntRange(10, 100)) - bucketRegion := "us" - bucketClass := "standard" +func TestAccIBMCosBucket_Archive(t *testing.T) { + + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + bucketRegionType := "region_location" + ruleId := "my-rule-id-bucket-arch" + enable := true + archiveDays := 1 + ruleType := "GLACIER" + archiveDaysUpdate := 3 + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_archive(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, archiveDays, ruleType), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "archive_rule.#", "1"), + ), + }, + { + Config: testAccCheckIBMCosBucket_archive_updateDays(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, archiveDaysUpdate, ruleType), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "archive_rule.0.days", fmt.Sprintf("%d", archiveDaysUpdate)), + ), + }, + { + Config: testAccCheckIBMCosBucket_update_archive(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, archiveDays, ruleType), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "archive_rule.#", "0"), + ), + }, + }, + }) +} + +func TestAccIBMCosBucket_Expiredays(t *testing.T) { + + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + bucketRegionType := "region_location" + ruleId := "my-rule-id-bucket-expiredays" + enable := true + expireDays := 2 + prefix := "prefix/" + expireDaysUpdate := 3 + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_expiredays(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, expireDays, prefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.#", "1"), + ), + }, + { + Config: testAccCheckIBMCosBucket_expire_updateDays(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, expireDaysUpdate, prefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.0.days", fmt.Sprintf("%d", expireDaysUpdate)), + ), + }, + { + Config: testAccCheckIBMCosBucket_update_expiredays(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, expireDays, prefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.#", "0"), + ), + }, + }, + }) +} + +func TestAccIBMCosBucket_Expiredate(t *testing.T) { + + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + bucketRegionType := "region_location" + ruleId := "my-rule-id-bucket-expiredate" + enable := true + expireDate := "2021-11-28" + prefix := "" + expireDateUpdate := "2021-11-30" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_expiredate(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, expireDate, prefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.#", "1"), + ), + }, + { + Config: testAccCheckIBMCosBucket_expire_updateDate(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, expireDateUpdate, prefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.0.date", expireDateUpdate), + ), + }, + { + Config: testAccCheckIBMCosBucket_update_expiredate(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, expireDate, prefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.#", "0"), + ), + }, + }, + }) +} + +func TestAccIBMCosBucket_Expireddeletemarker(t *testing.T) { + + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + bucketRegionType := "region_location" + ruleId := "my-rule-id-bucket-expireddeletemarker" + enable := true + prefix := "" + expiredObjectDeleteMarker := false + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_expiredeletemarker(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, expiredObjectDeleteMarker, prefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.#", "1"), + ), + }, + }, + }) +} + +func TestAccIBMCosBucket_AbortIncompeleteMPU(t *testing.T) { + + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + bucketRegionType := "region_location" + ruleId := "my-rule-id-bucket-abortmpu" + enable := true + prefix := "" + daysAfterInitiation := 1 + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_abortincompletempu(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, daysAfterInitiation, prefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "abort_incomplete_multipart_upload_days.#", "1"), + ), + }, + { + Config: testAccCheckIBMCosBucket_update_abortincompletempu(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, daysAfterInitiation, prefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "abort_incomplete_multipart_upload_days.#", "0"), + ), + }, + }, + }) +} + +func TestAccIBMCosBucket_noncurrentversion(t *testing.T) { + + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + bucketRegionType := "region_location" + ruleId := "my-rule-id-bucket-ncversion" + enable := true + prefix := "" + noncurrentDays := 1 + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_noncurrentversion(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, noncurrentDays, prefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "noncurrent_version_expiration.#", "1"), + ), + }, + { + Config: testAccCheckIBMCosBucket_update_noncurrentversion(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, ruleId, enable, noncurrentDays, prefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "noncurrent_version_expiration.#", "0"), + ), + }, + }, + }) +} + +func TestAccIBMCosBucket_Retention(t *testing.T) { + + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketRegion := "jp-tok" + bucketClass := "standard" + bucketRegionType := "region_location" + default_retention := 0 + maximum_retention := 1 + minimum_retention := 0 + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_retention(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, default_retention, maximum_retention, minimum_retention), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "retention_rule.#", "1"), + ), + }, + }, + }) +} + +func TestAccIBMCosBucket_Object_Versioning(t *testing.T) { + + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-east" + bucketClass := "standard" + bucketRegionType := "region_location" + enable := true + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_object_versioning(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, enable), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "object_versioning.#", "1"), + ), + }, + }, + }) +} + +func TestAccIBMCosBucket_Hard_Quota(t *testing.T) { + + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + bucketRegionType := "region_location" + hardQuota := 1024 + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_hard_quota(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, hardQuota), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "hard_quota", fmt.Sprintf("%d", hardQuota)), + ), + }, + }, + }) +} + +func TestAccIBMCosBucket_Smart_Type(t *testing.T) { + serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketRegion := "eu" + bucketClass := "smart" + bucketRegionType := "cross_region_location" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_basic(serviceName, bucketName, bucketRegionType, bucketRegion, bucketClass), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "cross_region_location", bucketRegion), + ), + }, + { + Config: testAccCheckIBMCosBucket_updateWithSameName(serviceName, bucketName, bucketRegionType, bucketRegion, bucketClass), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "cross_region_location", bucketRegion), + ), + }, + }, + }) +} + +func TestAccIBMCosBucket_import(t *testing.T) { + serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketRegion := "eu" + bucketClass := "standard" + bucketRegionType := "cross_region_location" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_basic(serviceName, bucketName, bucketRegionType, bucketRegion, bucketClass), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "cross_region_location", bucketRegion), + ), + }, + { + ResourceName: "ibm_cos_bucket.bucket", + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{ + "wait_time_minutes", "parameters", "force_delete"}, + }, + }, + }) +} + +// Satellite location +func TestAccIBMCosBucket_Satellite(t *testing.T) { + + serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketRegion := acc.Satellite_location_id + ResourceInstanceId := acc.Satellite_Resource_instance_id + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_basic_sat(serviceName, bucketName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + ), + }, + { + Config: testAccCheckIBMCosBucket_sat_updateWithSameName(serviceName, bucketName), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + ), + }, + }, + }) +} + +func TestAccIBMCosBucket_Satellite_Expiredays(t *testing.T) { + + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketRegion := acc.Satellite_location_id + ResourceInstanceId := acc.Satellite_Resource_instance_id + ruleId := "my-rule-id-bucket-expiredays" + enable := true + expireDays := 2 + prefix := "prefix/" + expireDaysUpdate := 3 + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_expiredays_satellite(bucketName, bucketRegion, ruleId, enable, expireDays, prefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.#", "1"), + ), + }, + { + Config: testAccCheckIBMCosBucket_expire_updateDays_satellite(bucketName, bucketRegion, ruleId, enable, expireDaysUpdate, prefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.0.days", fmt.Sprintf("%d", expireDaysUpdate)), + ), + }, + { + Config: testAccCheckIBMCosBucket_update_expiredays_satellite(bucketName, bucketRegion, ruleId, enable, expireDays, prefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.#", "0"), + ), + }, + }, + }) +} + +func TestAccIBMCosBucket_Satellite_Expiredate(t *testing.T) { + + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketRegion := acc.Satellite_location_id + ResourceInstanceId := acc.Satellite_Resource_instance_id + ruleId := "my-rule-id-bucket-expiredate" + enable := true + expireDate := "2021-11-28" + prefix := "" + expireDateUpdate := "2021-11-30" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_sat_expiredate(bucketName, bucketRegion, ruleId, enable, expireDate, prefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.#", "1"), + ), + }, + { + Config: testAccCheckIBMCosBucket_sat_expire_updateDate(bucketName, bucketRegion, ruleId, enable, expireDateUpdate, prefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.0.date", expireDateUpdate), + ), + }, + { + Config: testAccCheckIBMCosBucket_sat_update_expiredate(bucketName, bucketRegion, ruleId, enable, expireDate, prefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.#", "0"), + ), + }, + }, + }) +} + +func TestAccIBMCosBucket_Satellite_Expireddeletemarker(t *testing.T) { + + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketRegion := acc.Satellite_location_id + ResourceInstanceId := acc.Satellite_Resource_instance_id + ruleId := "my-rule-id-bucket-expireddeletemarker" + enable := true + prefix := "" + expiredObjectDeleteMarker := false + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_sat_expiredeletemarker(bucketName, bucketRegion, ruleId, enable, expiredObjectDeleteMarker, prefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "expire_rule.#", "1"), + ), + }, + }, + }) +} + +func TestAccIBMCosBucket_Satellite_AbortIncompeleteMPU(t *testing.T) { + + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketRegion := acc.Satellite_location_id + ResourceInstanceId := acc.Satellite_Resource_instance_id + ruleId := "my-rule-id-bucket-abortmpu" + enable := true + prefix := "" + daysAfterInitiation := 1 + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_sat_abortincompletempu(bucketName, bucketRegion, ruleId, enable, daysAfterInitiation, prefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "abort_incomplete_multipart_upload_days.#", "1"), + ), + }, + { + Config: testAccCheckIBMCosBucket_sat_update_abortincompletempu(bucketName, bucketRegion, ruleId, enable, daysAfterInitiation, prefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "abort_incomplete_multipart_upload_days.#", "0"), + ), + }, + }, + }) +} + +func TestAccIBMCosBucket_Satellite_noncurrentversion(t *testing.T) { + + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketRegion := acc.Satellite_location_id + ResourceInstanceId := acc.Satellite_Resource_instance_id + ruleId := "my-rule-id-bucket-ncversion" + enable := true + prefix := "" + noncurrentDays := 1 + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_sat_noncurrentversion(bucketName, bucketRegion, ruleId, enable, noncurrentDays, prefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "noncurrent_version_expiration.#", "1"), + ), + }, + { + Config: testAccCheckIBMCosBucket_sat_update_noncurrentversion(bucketName, bucketRegion, ruleId, enable, noncurrentDays, prefix), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "noncurrent_version_expiration.#", "0"), + ), + }, + }, + }) +} + +func TestAccIBMCosBucket_Satellite_Object_Versioning(t *testing.T) { + + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketRegion := acc.Satellite_location_id + ResourceInstanceId := acc.Satellite_Resource_instance_id + enable := true + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_sat_object_versioning(bucketName, bucketRegion, enable), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucket_Satellite_Exists(ResourceInstanceId, "ibm_cos_bucket.bucket", bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "object_versioning.#", "1"), + ), + }, + }, + }) +} + +func TestAccIBMCosBucket_OneRate_With_Storageclass(t *testing.T) { + + serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "onerate_active" + bucketRegionType := "region_location" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_Onerate_With_Storageclass(serviceName, bucketName, bucketRegionType, bucketRegion, bucketClass), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), + ), + }, + }, + }) +} + +func TestAccIBMCosBucket_OneRate_Without_Storage_class(t *testing.T) { + + serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketRegionType := "region_location" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_Onerate_Without_Storage_class(serviceName, bucketName, bucketRegionType, bucketRegion), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "region_location", bucketRegion), + ), + }, + }, + }) +} +func TestAccIBMCosBucket_OneRate_With_Invalid_Storageclass(t *testing.T) { + + serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "invalidstorageclass" + bucketRegionType := "region_location" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_Onerate_With_Invalid_Storageclass(serviceName, bucketName, bucketRegionType, bucketRegion, bucketClass), + ExpectError: regexp.MustCompile("\"storage_class\" must contain a value from \\[\\]string{\"standard\", \"vault\", \"cold\", \"smart\", \"flex\", \"onerate_active\"}, got \"invalidstorageclass\""), + }, + }, + }) +} + +func TestAccIBMCosBucket_COS_Plan_Storageclass_Mismatch_Type1(t *testing.T) { + + serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + bucketRegionType := "region_location" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_COS_Plan_Storageclass_Mismatch_Type1(serviceName, bucketName, bucketRegionType, bucketRegion, bucketClass), + ExpectError: regexp.MustCompile("InvalidLocationConstraint: Storage class not allowed for one rate user"), + }, + }, + }) +} +func TestAccIBMCosBucket_COS_Plan_Storageclass_Mismatch_Type2(t *testing.T) { + + serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "onerate_active" + bucketRegionType := "region_location" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_COS_Plan_Storageclass_Mismatch_Type2(serviceName, bucketName, bucketRegionType, bucketRegion, bucketClass), + ExpectError: regexp.MustCompile("InvalidLocationConstraint: Storage class not allowed for standard or cloud lite user"), + }, + }, + }) +} +func testAccCheckIBMCosBucketDestroy(s *terraform.State) error { + + var s3Conf *aws.Config + var apiEndpoint string + var resourceInstance string + for _, rs := range s.RootModule().Resources { + if rs.Type == "ibm_cos_bucket" { + apiEndpoint = rs.Primary.Attributes["s3_endpoint_public"] + } + if rs.Type == "ibm_resource_instance" && rs.Primary.Attributes["service"] == "cloud-object-storage" { + resourceInstance = rs.Primary.Attributes["crn"] + + } + } + + rsContClient, err := acc.TestAccProvider.Meta().(conns.ClientSession).BluemixSession() + if err != nil { + return err + } + + authEndpoint, err := rsContClient.Config.EndpointLocator.IAMEndpoint() + if err != nil { + return err + } + authEndpointPath := fmt.Sprintf("%s%s", authEndpoint, "/identity/token") + apiKey := rsContClient.Config.BluemixAPIKey + if apiKey != "" { + s3Conf = aws.NewConfig().WithEndpoint(apiEndpoint).WithCredentials(ibmiam.NewStaticCredentials(aws.NewConfig(), authEndpointPath, apiKey, resourceInstance)).WithS3ForcePathStyle(true) + } + iamAccessToken := rsContClient.Config.IAMAccessToken + if iamAccessToken != "" { + initFunc := func() (*token.Token, error) { + return &token.Token{ + AccessToken: rsContClient.Config.IAMAccessToken, + RefreshToken: rsContClient.Config.IAMRefreshToken, + TokenType: "Bearer", + ExpiresIn: int64((time.Hour * 248).Seconds()) * -1, + Expiration: time.Now().Add(-1 * time.Hour).Unix(), + }, nil + } + s3Conf = aws.NewConfig().WithEndpoint(apiEndpoint).WithCredentials(ibmiam.NewCustomInitFuncCredentials(aws.NewConfig(), initFunc, authEndpointPath, resourceInstance)).WithS3ForcePathStyle(true) + } + s3Sess := session.Must(session.NewSession()) + s3Client := s3.New(s3Sess, s3Conf) + + bucketList, _ := s3Client.ListBuckets(&s3.ListBucketsInput{}) + if len(bucketList.Buckets) > 0 { + return errors.New("Bucket still exists") + + } + return nil +} + +// COS Satellite +func testAccCheckIBMCosBucket_Satellite_Exists(resource string, bucket string, region string, bucketname string) resource.TestCheckFunc { + + return func(s *terraform.State) error { + var s3Conf *aws.Config + + bucket, ok := s.RootModule().Resources[bucket] + if !ok { + return fmt.Errorf("Bucket Not found: %s", bucket) + } + + satloc_guid := strings.Split(resource, ":") + bucketsatcrn := satloc_guid[7] + resource = bucketsatcrn + + var rt string + + rt = "sl" + + apiEndpoint := cos.SelectSatlocCosApi(rt, resource, region) + + rsContClient, err := acc.TestAccProvider.Meta().(conns.ClientSession).BluemixSession() + if err != nil { + return err + } + + authEndpoint, err := rsContClient.Config.EndpointLocator.IAMEndpoint() + if err != nil { + return err + } + authEndpointPath := fmt.Sprintf("%s%s", authEndpoint, "/identity/token") + apiKey := rsContClient.Config.BluemixAPIKey + if apiKey != "" { + s3Conf = aws.NewConfig().WithEndpoint(apiEndpoint).WithCredentials(ibmiam.NewStaticCredentials(aws.NewConfig(), authEndpointPath, apiKey, resource)).WithS3ForcePathStyle(true) + } + iamAccessToken := rsContClient.Config.IAMAccessToken + if iamAccessToken != "" { + initFunc := func() (*token.Token, error) { + return &token.Token{ + AccessToken: rsContClient.Config.IAMAccessToken, + RefreshToken: rsContClient.Config.IAMRefreshToken, + TokenType: "Bearer", + ExpiresIn: int64((time.Hour * 248).Seconds()) * -1, + Expiration: time.Now().Add(-1 * time.Hour).Unix(), + }, nil + } + s3Conf = aws.NewConfig().WithEndpoint(apiEndpoint).WithCredentials(ibmiam.NewCustomInitFuncCredentials(aws.NewConfig(), initFunc, authEndpointPath, resource)).WithS3ForcePathStyle(true) + } + s3Sess := session.Must(session.NewSession()) + s3Client := s3.New(s3Sess, s3Conf) + + bucketList, _ := s3Client.ListBuckets(&s3.ListBucketsInput{}) + for _, bucket := range bucketList.Buckets { + bn := *bucket.Name + if bn == bucketname { + return nil + } + } + return errors.New("bucket does not exist") + } +} + +// / IBMCLOUD +func testAccCheckIBMCosBucketExists(resource string, bucket string, regiontype string, region string, bucketname string) resource.TestCheckFunc { + + return func(s *terraform.State) error { + var s3Conf *aws.Config + resourceInstance, ok := s.RootModule().Resources[resource] + + if !ok { + return fmt.Errorf("Not found: %s", resource) + } + + bucket, ok := s.RootModule().Resources[bucket] + + if !ok { + return fmt.Errorf("Not found: %s", bucket) + } + + var rt string + if regiontype == "single_site_location" { + rt = "ssl" + } + if regiontype == "region_location" { + rt = "rl" + } + if regiontype == "cross_region_location" { + rt = "crl" + } + + apiEndpoint, _, _ := cos.SelectCosApi(rt, region) + + rsContClient, err := acc.TestAccProvider.Meta().(conns.ClientSession).BluemixSession() + if err != nil { + return err + } + + authEndpoint, err := rsContClient.Config.EndpointLocator.IAMEndpoint() + if err != nil { + return err + } + authEndpointPath := fmt.Sprintf("%s%s", authEndpoint, "/identity/token") + apiKey := rsContClient.Config.BluemixAPIKey + if apiKey != "" { + s3Conf = aws.NewConfig().WithEndpoint(apiEndpoint).WithCredentials(ibmiam.NewStaticCredentials(aws.NewConfig(), authEndpointPath, apiKey, resourceInstance.Primary.ID)).WithS3ForcePathStyle(true) + } + iamAccessToken := rsContClient.Config.IAMAccessToken + if iamAccessToken != "" { + initFunc := func() (*token.Token, error) { + return &token.Token{ + AccessToken: rsContClient.Config.IAMAccessToken, + RefreshToken: rsContClient.Config.IAMRefreshToken, + TokenType: "Bearer", + ExpiresIn: int64((time.Hour * 248).Seconds()) * -1, + Expiration: time.Now().Add(-1 * time.Hour).Unix(), + }, nil + } + s3Conf = aws.NewConfig().WithEndpoint(apiEndpoint).WithCredentials(ibmiam.NewCustomInitFuncCredentials(aws.NewConfig(), initFunc, authEndpointPath, resourceInstance.Primary.ID)).WithS3ForcePathStyle(true) + } + s3Sess := session.Must(session.NewSession()) + s3Client := s3.New(s3Sess, s3Conf) + + bucketList, _ := s3Client.ListBuckets(&s3.ListBucketsInput{}) + for _, bucket := range bucketList.Buckets { + bn := *bucket.Name + if bn == bucketname { + return nil + } + } + return errors.New("bucket does not exist") + } +} +func TestAccIBMCOSKP(t *testing.T) { + instanceName := fmt.Sprintf("kms_%d", acctest.RandIntRange(10, 100)) + serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + keyName := fmt.Sprintf("key_%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us" + bucketClass := "standard" + bucketRegionType := "cross_region_location" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMKeyProtectRootkeyWithCOSBucket(instanceName, keyName, serviceName, bucketName, bucketRegion, bucketClass), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("ibm_kms_key.test", "key_name", keyName), + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + ), + }, + }, + }) +} + +func TestAccIBMCOSHPCS(t *testing.T) { + serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + keyName := fmt.Sprintf("key_%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + bucketRegionType := "cross_region_location" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMHPCSRootkeyWithCOSBucket(keyName, serviceName, bucketName, bucketRegion, bucketClass), + Check: resource.ComposeTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "key_protect", acc.HpcsRootKeyCrn), + ), + }, + }, + }) +} + +// new hpcs +func TestAccIBMCOSKPKmsParamValid(t *testing.T) { + + instanceName := fmt.Sprintf("kms_%d", acctest.RandIntRange(10, 100)) + serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + keyName := fmt.Sprintf("key_%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us" + bucketClass := "standard" + bucketRegionType := "cross_region_location" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMKeyProtectRootkeyWithCOSBucketKmsParam(instanceName, keyName, serviceName, bucketName, bucketRegion, bucketClass), + Check: resource.ComposeTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + ), + }, + }, + }) +} +func TestAccIBMCOSKPKmsParamWithInvalidCRN(t *testing.T) { + + instanceName := fmt.Sprintf("kms_%d", acctest.RandIntRange(10, 100)) + serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + keyName := fmt.Sprintf("key_%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us" + bucketClass := "standard" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMKeyProtectRootkeyWithCOSBucketKmsParamWithInvalidCRN(instanceName, keyName, serviceName, bucketName, bucketRegion, bucketClass), + ExpectError: regexp.MustCompile("InvalidArgument: Invalid ibm-sse-kp-customer-root-key-crn: received only 7 of required 10 segments"), + }, + }, + }) +} + +func TestAccIBMCOSHPCSKmsParam(t *testing.T) { + serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + keyName := fmt.Sprintf("key_%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + bucketRegionType := "cross_region_location" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMHPCSRootkeyWithCOSBucketKmsParam(keyName, serviceName, bucketName, bucketRegion, bucketClass), + Check: resource.ComposeTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "kms_key_crn", acc.HpcsRootKeyCrn), + ), + }, + }, + }) +} + +func TestAccIBMCOSHPCSKmsParamWithInvalidCRN(t *testing.T) { + serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + keyName := fmt.Sprintf("key_%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMHPCSRootkeyWithCOSBucketKmsParamWithInvalidCRN(keyName, serviceName, bucketName, bucketRegion, bucketClass), + ExpectError: regexp.MustCompile("InvalidArgument: Invalid ibm-sse-kp-customer-root-key-crn: received only 7 of required 10 segments"), + }, + }, + }) +} + +func TestAccIBMCOSKMSBothParamProvided(t *testing.T) { + serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) + keyName := fmt.Sprintf("key_%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMHPCSRootkeyWithCOSBucketKMSBothParamProvided(keyName, serviceName, bucketName, bucketRegion, bucketClass), + ExpectError: regexp.MustCompile("Error: Conflicting configuration arguments"), + }, + }, + }) +} +func testAccCheckIBMCosBucket_basic(serviceName string, bucketName string, regiontype string, region string, storageClass string) string { + + return fmt.Sprintf(` + data "ibm_resource_group" "group" { + is_default=true + } + + resource "ibm_resource_instance" "instance" { + name = "%s" + service = "cloud-object-storage" + plan = "standard" + location = "global" + resource_group_id = data.ibm_resource_group.group.id + } + + resource "ibm_cos_bucket" "bucket" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance.id + storage_class = "%s" + cross_region_location = "%s" + } + + + `, serviceName, bucketName, storageClass, region) +} + +func testAccCheckIBMCosBucket_basic_ssl(serviceName string, bucketName string, regiontype string, region string, storageClass string) string { + + return fmt.Sprintf(` + data "ibm_resource_group" "group" { + is_default=true + } + + resource "ibm_resource_instance" "instance" { + name = "%s" + service = "cloud-object-storage" + plan = "standard" + location = "global" + resource_group_id = data.ibm_resource_group.group.id + } + + resource "ibm_cos_bucket" "bucket" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance.id + storage_class = "%s" + single_site_location = "%s" + } + `, serviceName, bucketName, storageClass, region) +} + +func testAccCheckIBMCosBucket_Onerate_With_Storageclass(serviceName string, bucketName string, regiontype string, region string, storageClass string) string { + + return fmt.Sprintf(` + data "ibm_resource_group" "group" { + is_default=true + } + + resource "ibm_resource_instance" "instance" { + name = "%s" + service = "cloud-object-storage" + plan = "cos-one-rate-plan" + location = "global" + resource_group_id = data.ibm_resource_group.group.id + } + + resource "ibm_cos_bucket" "bucket" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance.id + storage_class = "%s" + region_location = "%s" + } + + + `, serviceName, bucketName, storageClass, region) +} + +func testAccCheckIBMCosBucket_Onerate_Without_Storage_class(serviceName string, bucketName string, regiontype string, region string) string { + + return fmt.Sprintf(` + data "ibm_resource_group" "group" { + is_default=true + } + + resource "ibm_resource_instance" "instance" { + name = "%s" + service = "cloud-object-storage" + plan = "cos-one-rate-plan" + location = "global" + resource_group_id = data.ibm_resource_group.group.id + } + + resource "ibm_cos_bucket" "bucket" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance.id + region_location = "%s" + } + + `, serviceName, bucketName, region) +} + +func testAccCheckIBMCosBucket_Onerate_With_Invalid_Storageclass(serviceName string, bucketName string, regiontype string, region string, storageClass string) string { + + return fmt.Sprintf(` + data "ibm_resource_group" "group" { + is_default=true + } + + resource "ibm_resource_instance" "instance" { + name = "%s" + service = "cloud-object-storage" + plan = "cos-one-rate-plan" + location = "global" + resource_group_id = data.ibm_resource_group.group.id + } + + resource "ibm_cos_bucket" "bucket" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance.id + storage_class = "%s" + region_location = "%s" + } + + `, serviceName, bucketName, storageClass, region) +} + +func testAccCheckIBMCosBucket_COS_Plan_Storageclass_Mismatch_Type1(serviceName string, bucketName string, regiontype string, region string, storageClass string) string { + + return fmt.Sprintf(` + data "ibm_resource_group" "group" { + is_default=true + } + + resource "ibm_resource_instance" "instance" { + name = "%s" + service = "cloud-object-storage" + plan = "cos-one-rate-plan" + location = "global" + resource_group_id = data.ibm_resource_group.group.id + } + + resource "ibm_cos_bucket" "bucket" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance.id + storage_class = "%s" + region_location = "%s" + } + + `, serviceName, bucketName, storageClass, region) +} +func testAccCheckIBMCosBucket_COS_Plan_Storageclass_Mismatch_Type2(serviceName string, bucketName string, regiontype string, region string, storageClass string) string { + + return fmt.Sprintf(` + data "ibm_resource_group" "group" { + is_default=true + } + + resource "ibm_resource_instance" "instance" { + name = "%s" + service = "cloud-object-storage" + plan = "standard" + location = "global" + resource_group_id = data.ibm_resource_group.group.id + } + + resource "ibm_cos_bucket" "bucket" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance.id + storage_class = "%s" + region_location = "%s" + } + + `, serviceName, bucketName, storageClass, region) +} + +func testAccCheckIBMCosBucket_allowedip(serviceName string, bucketName string, regiontype string, region string, storageClass string, allowedIp1 string, allowedIp2 string) string { + + return fmt.Sprintf(` + data "ibm_resource_group" "group" { + is_default=true + } + + resource "ibm_resource_instance" "instance" { + name = "%s" + service = "cloud-object-storage" + plan = "standard" + location = "global" + resource_group_id = data.ibm_resource_group.group.id + } + + resource "ibm_cos_bucket" "bucket" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance.id + storage_class = "%s" + cross_region_location = "%s" + allowed_ip = ["%s","%s"] + } + + `, serviceName, bucketName, storageClass, region, allowedIp1, allowedIp2) +} + +func testAccCheckIBMCosBucket_allowedipremoved(serviceName string, bucketName string, regiontype string, region string, storageClass string) string { + + return fmt.Sprintf(` + data "ibm_resource_group" "group" { + is_default=true + } + + resource "ibm_resource_instance" "instance" { + name = "%s" + service = "cloud-object-storage" + plan = "standard" + location = "global" + resource_group_id = data.ibm_resource_group.group.id + } + + resource "ibm_cos_bucket" "bucket" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance.id + storage_class = "%s" + cross_region_location = "%s" + + } + + + `, serviceName, bucketName, storageClass, region) +} +func testAccCheckIBMCosBucket_direct(serviceName string, bucketName string, regiontype string, region string, storageClass string) string { + + return fmt.Sprintf(` + data "ibm_resource_group" "group" { + is_default=true + } + + resource "ibm_resource_instance" "instance" { + name = "%s" + service = "cloud-object-storage" + plan = "standard" + location = "global" + resource_group_id = data.ibm_resource_group.group.id + } + + resource "ibm_cos_bucket" "bucket" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance.id + storage_class = "%s" + cross_region_location = "%s" + endpoint_type= "direct" + } + + + `, serviceName, bucketName, storageClass, region) +} +func testAccCheckIBMCosBucket_updateWithSameName(serviceName string, bucketName string, regiontype string, region, storageClass string) string { + + return fmt.Sprintf(` + data "ibm_resource_group" "group" { + is_default=true + } + + resource "ibm_resource_instance" "instance" { + name = "%s" + service = "cloud-object-storage" + plan = "standard" + location = "global" + resource_group_id = data.ibm_resource_group.group.id + } + + resource "ibm_cos_bucket" "bucket" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance.id + storage_class = "%s" + cross_region_location = "%s" + } + `, serviceName, bucketName, storageClass, region) +} + +func testAccCheckIBMCosBucket_activityTracker_Only_Read_True_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string) string { + + return fmt.Sprintf(` + + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { + name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id + service = "cloud-object-storage" + plan = "standard" + location = "global" + } + resource "ibm_cos_bucket" "bucket2" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" + storage_class = "%s" + activity_tracking { + read_data_events = true + } + } + `, cosServiceName, bucketName, region, storageClass) +} + +func testAccCheckIBMCosBucket_activityTracker_Only_Write_True_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string) string { + + return fmt.Sprintf(` + + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { + name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id + service = "cloud-object-storage" + plan = "standard" + location = "global" + } + resource "ibm_cos_bucket" "bucket2" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" + storage_class = "%s" + activity_tracking { + write_data_events = true + } + } + `, cosServiceName, bucketName, region, storageClass) +} + +func testAccCheckIBMCosBucket_activityTracker_Only_ManagementEvents_True_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string) string { + + return fmt.Sprintf(` + + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { + name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id + service = "cloud-object-storage" + plan = "standard" + location = "global" + } + resource "ibm_cos_bucket" "bucket2" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" + storage_class = "%s" + activity_tracking { + management_events = true + } + } + `, cosServiceName, bucketName, region, storageClass) +} + +func testAccCheckIBMCosBucket_activityTracker_Read_True_Write_True_ManagementEvents_False_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string) string { + + return fmt.Sprintf(` + + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { + name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id + service = "cloud-object-storage" + plan = "standard" + location = "global" + } + resource "ibm_cos_bucket" "bucket2" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" + storage_class = "%s" + activity_tracking { + read_data_events = true + write_data_events = true + } + } + `, cosServiceName, bucketName, region, storageClass) +} + +func testAccCheckIBMCosBucket_activityTracker_Read_False_Write_False_ManagementEvents_False_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string) string { + + return fmt.Sprintf(` + + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { + name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id + service = "cloud-object-storage" + plan = "standard" + location = "global" + } + resource "ibm_cos_bucket" "bucket2" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" + storage_class = "%s" + activity_tracking { + read_data_events = false + write_data_events = false + management_events = false + + } + } + `, cosServiceName, bucketName, region, storageClass) +} + +func testAccCheckIBMCosBucket_activityTracker_Read_True_ManagementEvents_True_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string) string { + + return fmt.Sprintf(` + + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { + name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id + service = "cloud-object-storage" + plan = "standard" + location = "global" + } + resource "ibm_cos_bucket" "bucket2" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" + storage_class = "%s" + activity_tracking { + read_data_events = true + management_events = true + + } + } + `, cosServiceName, bucketName, region, storageClass) +} + +func testAccCheckIBMCosBucket_activityTracker_Write_True_ManagementEvents_True_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string) string { + + return fmt.Sprintf(` + + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { + name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id + service = "cloud-object-storage" + plan = "standard" + location = "global" + } + resource "ibm_cos_bucket" "bucket2" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" + storage_class = "%s" + activity_tracking { + write_data_events = true + management_events = true + + } + } + `, cosServiceName, bucketName, region, storageClass) +} + +func testAccCheckIBMCosBucket_activityTracker_Read_True_Write_True_ManagementEvents_True_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string) string { + + return fmt.Sprintf(` + + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { + name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id + service = "cloud-object-storage" + plan = "standard" + location = "global" + } + resource "ibm_cos_bucket" "bucket2" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" + storage_class = "%s" + activity_tracking { + read_data_events = true + write_data_events = true + management_events = true + + } + } + `, cosServiceName, bucketName, region, storageClass) +} + +func testAccCheckIBMCosBucket_activityTracker_Read_True_ManagementEvents_Not_Set_With_Crn(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass string) string { + + return fmt.Sprintf(` + + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { + name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id + service = "cloud-object-storage" + plan = "standard" + location = "global" + } + resource "ibm_cos_bucket" "bucket2" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" + storage_class = "%s" + activity_tracking { + read_data_events = true + activity_tracker_crn = "%s" + } + } + `, cosServiceName, bucketName, region, storageClass, activityTrackerCRN) +} + +func testAccCheckIBMCosBucket_activityTracker_Write_True_ManagementEvents_Not_Set_With_Crn(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass string) string { + + return fmt.Sprintf(` + + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { + name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id + service = "cloud-object-storage" + plan = "standard" + location = "global" + } + resource "ibm_cos_bucket" "bucket2" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" + storage_class = "%s" + activity_tracking { + write_data_events = true + activity_tracker_crn = "%s" + } + } + `, cosServiceName, bucketName, region, storageClass, activityTrackerCRN) +} + +func testAccCheckIBMCosBucket_activityTracker_Only_ManagementEvents_True_With_Crn(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass string) string { + + return fmt.Sprintf(` + + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { + name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id + service = "cloud-object-storage" + plan = "standard" + location = "global" + } + resource "ibm_cos_bucket" "bucket2" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" + storage_class = "%s" + activity_tracking { + management_events = true + activity_tracker_crn = "%s" + } + } + `, cosServiceName, bucketName, region, storageClass, activityTrackerCRN) +} + +func testAccCheckIBMCosBucket_activityTracker_Read_True_Write_True_ManagementEvents_Not_Set_With_Crn(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass string) string { + + return fmt.Sprintf(` + + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { + name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id + service = "cloud-object-storage" + plan = "standard" + location = "global" + } + resource "ibm_cos_bucket" "bucket2" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" + storage_class = "%s" + activity_tracking { + read_data_events = true + write_data_events = true + activity_tracker_crn = "%s" + } + } + `, cosServiceName, bucketName, region, storageClass, activityTrackerCRN) +} + +func testAccCheckIBMCosBucket_activityTracker_Read_False_Write_False_ManagementEvents_Not_Set_With_Crn(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass string) string { + + return fmt.Sprintf(` + + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { + name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id + service = "cloud-object-storage" + plan = "standard" + location = "global" + } + resource "ibm_cos_bucket" "bucket2" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" + storage_class = "%s" + activity_tracking { + read_data_events = false + write_data_events = false + activity_tracker_crn = "%s" + } + } + `, cosServiceName, bucketName, region, storageClass, activityTrackerCRN) +} + +func testAccCheckIBMCosBucket_activityTracker_Read_False_Write_False_ManagementEvents_False_With_Crn(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass string) string { + + return fmt.Sprintf(` + + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { + name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id + service = "cloud-object-storage" + plan = "standard" + location = "global" + } + resource "ibm_cos_bucket" "bucket2" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" + storage_class = "%s" + activity_tracking { + read_data_events = false + write_data_events = false + management_events = false + activity_tracker_crn = "%s" + } + } + `, cosServiceName, bucketName, region, storageClass, activityTrackerCRN) +} + +func testAccCheckIBMCosBucket_activityTracker_Read_True_Write_True_ManagementEvents_True_With_Crn_Invalid(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass string) string { + + return fmt.Sprintf(` + + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { + name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id + service = "cloud-object-storage" + plan = "standard" + location = "global" + } + resource "ibm_cos_bucket" "bucket2" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" + storage_class = "%s" + activity_tracking { + read_data_events = true + write_data_events = true + management_events = true + activity_tracker_crn = "invalid" + } + } + `, cosServiceName, bucketName, region, storageClass) +} + +func testAccCheckIBMCosBucket_activityTracker_Read_Invalid_Write_Invalid_ManagementEvents_Invalid_With_Crn(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass string) string { + + return fmt.Sprintf(` + + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { + name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id + service = "cloud-object-storage" + plan = "standard" + location = "global" + } + resource "ibm_cos_bucket" "bucket2" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" + storage_class = "%s" + activity_tracking { + read_data_events = "invalid" + write_data_events = "invalid" + management_events = "invalid" + activity_tracker_crn = "%s" + } + } + `, cosServiceName, bucketName, region, storageClass, activityTrackerCRN) +} + +func testAccCheckIBMCosBucket_activityTracker_Read_True_ManagementEvents_True_With_Crn(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass string) string { - resource.Test(t, resource.TestCase{ - PreCheck: func() { acc.TestAccPreCheck(t) }, - Providers: acc.TestAccProviders, - Steps: []resource.TestStep{ - { - Config: testAccCheckIBMKeyProtectRootkeyWithCOSBucketKmsParamWithInvalidCRN(instanceName, keyName, serviceName, bucketName, bucketRegion, bucketClass), - ExpectError: regexp.MustCompile("InvalidArgument: Invalid ibm-sse-kp-customer-root-key-crn: received only 7 of required 10 segments"), - }, - }, - }) + return fmt.Sprintf(` + + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { + name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id + service = "cloud-object-storage" + plan = "standard" + location = "global" + } + resource "ibm_cos_bucket" "bucket2" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" + storage_class = "%s" + activity_tracking { + read_data_events = true + management_events = true + activity_tracker_crn = "%s" + } + } + `, cosServiceName, bucketName, region, storageClass, activityTrackerCRN) } -func TestAccIBMCOSHPCSKmsParam(t *testing.T) { - serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) - keyName := fmt.Sprintf("key_%d", acctest.RandIntRange(10, 100)) - bucketRegion := "us-south" - bucketClass := "standard" - bucketRegionType := "cross_region_location" +func testAccCheckIBMCosBucket_activityTracker_Write_True_ManagementEvents_True_With_Crn(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass string) string { - resource.Test(t, resource.TestCase{ - PreCheck: func() { acc.TestAccPreCheck(t) }, - Providers: acc.TestAccProviders, - Steps: []resource.TestStep{ - { - Config: testAccCheckIBMHPCSRootkeyWithCOSBucketKmsParam(keyName, serviceName, bucketName, bucketRegion, bucketClass), - Check: resource.ComposeTestCheckFunc( - testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "kms_key_crn", acc.HpcsRootKeyCrn), - ), - }, - }, - }) + return fmt.Sprintf(` + + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { + name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id + service = "cloud-object-storage" + plan = "standard" + location = "global" + } + resource "ibm_cos_bucket" "bucket2" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" + storage_class = "%s" + activity_tracking { + write_data_events = true + management_events = true + activity_tracker_crn = "%s" + } + } + `, cosServiceName, bucketName, region, storageClass, activityTrackerCRN) } -func TestAccIBMCOSHPCSKmsParamWithInvalidCRN(t *testing.T) { - serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) - keyName := fmt.Sprintf("key_%d", acctest.RandIntRange(10, 100)) - bucketRegion := "us-south" - bucketClass := "standard" +func testAccCheckIBMCosBucket_activityTracker_Read_True_Write_True_ManagementEvents_True_With_Crn(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass string) string { - resource.Test(t, resource.TestCase{ - PreCheck: func() { acc.TestAccPreCheck(t) }, - Providers: acc.TestAccProviders, - Steps: []resource.TestStep{ - { - Config: testAccCheckIBMHPCSRootkeyWithCOSBucketKmsParamWithInvalidCRN(keyName, serviceName, bucketName, bucketRegion, bucketClass), - ExpectError: regexp.MustCompile("InvalidArgument: Invalid ibm-sse-kp-customer-root-key-crn: received only 7 of required 10 segments"), - }, - }, - }) + return fmt.Sprintf(` + + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { + name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id + service = "cloud-object-storage" + plan = "standard" + location = "global" + } + resource "ibm_cos_bucket" "bucket2" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" + storage_class = "%s" + activity_tracking { + read_data_events = true + write_data_events = true + management_events = true + activity_tracker_crn = "%s" + } + } + `, cosServiceName, bucketName, region, storageClass, activityTrackerCRN) } -func TestAccIBMCOSKMSBothParamProvided(t *testing.T) { - serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) - keyName := fmt.Sprintf("key_%d", acctest.RandIntRange(10, 100)) - bucketRegion := "us-south" - bucketClass := "standard" +func testAccCheckIBMCosBucket_Upload_Object_Activity_Tracker_Enabled_With_CRN(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass, key, object_body string) string { - resource.Test(t, resource.TestCase{ - PreCheck: func() { acc.TestAccPreCheck(t) }, - Providers: acc.TestAccProviders, - Steps: []resource.TestStep{ - { - Config: testAccCheckIBMHPCSRootkeyWithCOSBucketKMSBothParamProvided(keyName, serviceName, bucketName, bucketRegion, bucketClass), - ExpectError: regexp.MustCompile("Error: Conflicting configuration arguments"), - }, - }, - }) + return fmt.Sprintf(` + + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { + name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id + service = "cloud-object-storage" + plan = "standard" + location = "global" + } + resource "ibm_cos_bucket" "bucket2" { + bucket_name = "%s" + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" + storage_class = "%s" + activity_tracking { + read_data_events = true + write_data_events = true + management_events = true + activity_tracker_crn = "%s" + } + } + resource "ibm_cos_bucket_object" "testacc" { + bucket_crn = ibm_cos_bucket.bucket2.crn + bucket_location = ibm_cos_bucket.bucket2.region_location + key = "%s.txt" + content = "%s" + } + `, cosServiceName, bucketName, region, storageClass, activityTrackerCRN, key, object_body) } -func testAccCheckIBMCosBucket_basic(serviceName string, bucketName string, regiontype string, region string, storageClass string) string { + +func testAccCheckIBMCosBucket_upload_Object_Activity_Tracker_Enabled_Without_CRN(cosServiceName, bucketName, regiontype, region, storageClass, key, object_body string) string { return fmt.Sprintf(` - data "ibm_resource_group" "group" { + + data "ibm_resource_group" "cos_group" { is_default=true - } - - resource "ibm_resource_instance" "instance" { + } + resource "ibm_resource_instance" "instance2" { name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id service = "cloud-object-storage" plan = "standard" location = "global" - resource_group_id = data.ibm_resource_group.group.id - } - - resource "ibm_cos_bucket" "bucket" { + } + resource "ibm_cos_bucket" "bucket2" { bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance.id + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" storage_class = "%s" - cross_region_location = "%s" + activity_tracking { + read_data_events = true + write_data_events = true + management_events = true + } + } + resource "ibm_cos_bucket_object" "testacc" { + bucket_crn = ibm_cos_bucket.bucket2.crn + bucket_location = ibm_cos_bucket.bucket2.region_location + key = "%s.txt" + content = "%s" } - - - `, serviceName, bucketName, storageClass, region) + `, cosServiceName, bucketName, region, storageClass, key, object_body) } -func testAccCheckIBMCosBucket_basic_ssl(serviceName string, bucketName string, regiontype string, region string, storageClass string) string { +func testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_True_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string) string { return fmt.Sprintf(` - data "ibm_resource_group" "group" { - is_default=true - } - resource "ibm_resource_instance" "instance" { + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id service = "cloud-object-storage" plan = "standard" location = "global" - resource_group_id = data.ibm_resource_group.group.id - } - - resource "ibm_cos_bucket" "bucket" { + } + resource "ibm_cos_bucket" "bucket2" { bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance.id + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" storage_class = "%s" - single_site_location = "%s" - } - `, serviceName, bucketName, storageClass, region) + metrics_monitoring { + request_metrics_enabled = true + } + } + `, cosServiceName, bucketName, region, storageClass) } -func testAccCheckIBMCosBucket_Onerate_With_Storageclass(serviceName string, bucketName string, regiontype string, region string, storageClass string) string { +func testAccCheckIBMCosBucket_metricsMonitoring_UsageMetrics_True_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string) string { return fmt.Sprintf(` - data "ibm_resource_group" "group" { + + data "ibm_resource_group" "cos_group" { is_default=true - } - - resource "ibm_resource_instance" "instance" { + } + resource "ibm_resource_instance" "instance2" { name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id service = "cloud-object-storage" - plan = "cos-one-rate-plan" + plan = "standard" location = "global" - resource_group_id = data.ibm_resource_group.group.id - } - - resource "ibm_cos_bucket" "bucket" { + } + resource "ibm_cos_bucket" "bucket2" { bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance.id - storage_class = "%s" + resource_instance_id = ibm_resource_instance.instance2.id region_location = "%s" - } - - - `, serviceName, bucketName, storageClass, region) + storage_class = "%s" + metrics_monitoring { + usage_metrics_enabled = true + } + } + `, cosServiceName, bucketName, region, storageClass) } -func testAccCheckIBMCosBucket_Onerate_Without_Storage_class(serviceName string, bucketName string, regiontype string, region string) string { +func testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_True_UsageMetrics_True_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string) string { return fmt.Sprintf(` - data "ibm_resource_group" "group" { - is_default=true - } - resource "ibm_resource_instance" "instance" { + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id service = "cloud-object-storage" - plan = "cos-one-rate-plan" + plan = "standard" location = "global" - resource_group_id = data.ibm_resource_group.group.id - } - - resource "ibm_cos_bucket" "bucket" { + } + resource "ibm_cos_bucket" "bucket2" { bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance.id + resource_instance_id = ibm_resource_instance.instance2.id region_location = "%s" - } - - `, serviceName, bucketName, region) + storage_class = "%s" + metrics_monitoring { + usage_metrics_enabled = true + request_metrics_enabled = true + } + } + `, cosServiceName, bucketName, region, storageClass) } -func testAccCheckIBMCosBucket_Onerate_With_Invalid_Storageclass(serviceName string, bucketName string, regiontype string, region string, storageClass string) string { +func testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_False_UsageMetrics_False_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string) string { return fmt.Sprintf(` - data "ibm_resource_group" "group" { - is_default=true - } - resource "ibm_resource_instance" "instance" { + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id service = "cloud-object-storage" - plan = "cos-one-rate-plan" + plan = "standard" location = "global" - resource_group_id = data.ibm_resource_group.group.id - } - - resource "ibm_cos_bucket" "bucket" { + } + resource "ibm_cos_bucket" "bucket2" { bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance.id - storage_class = "%s" + resource_instance_id = ibm_resource_instance.instance2.id region_location = "%s" - } - - `, serviceName, bucketName, storageClass, region) + storage_class = "%s" + metrics_monitoring { + usage_metrics_enabled = false + request_metrics_enabled = false + } + } + `, cosServiceName, bucketName, region, storageClass) } -func testAccCheckIBMCosBucket_COS_Plan_Storageclass_Mismatch_Type1(serviceName string, bucketName string, regiontype string, region string, storageClass string) string { +func testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_True_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, regiontype, region, storageClass string) string { return fmt.Sprintf(` - data "ibm_resource_group" "group" { - is_default=true - } - resource "ibm_resource_instance" "instance" { + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id service = "cloud-object-storage" - plan = "cos-one-rate-plan" + plan = "standard" location = "global" - resource_group_id = data.ibm_resource_group.group.id - } - - resource "ibm_cos_bucket" "bucket" { + } + resource "ibm_cos_bucket" "bucket2" { bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance.id - storage_class = "%s" + resource_instance_id = ibm_resource_instance.instance2.id region_location = "%s" - } - - `, serviceName, bucketName, storageClass, region) + storage_class = "%s" + metrics_monitoring { + request_metrics_enabled = true + metrics_monitoring_crn = "%s" + } + } + `, cosServiceName, bucketName, region, storageClass, metricsMonitoringCrn) } -func testAccCheckIBMCosBucket_COS_Plan_Storageclass_Mismatch_Type2(serviceName string, bucketName string, regiontype string, region string, storageClass string) string { + +func testAccCheckIBMCosBucket_metricsMonitoring_UsageMetrics_True_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, regiontype, region, storageClass string) string { return fmt.Sprintf(` - data "ibm_resource_group" "group" { - is_default=true - } - resource "ibm_resource_instance" "instance" { + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id service = "cloud-object-storage" plan = "standard" location = "global" - resource_group_id = data.ibm_resource_group.group.id - } - - resource "ibm_cos_bucket" "bucket" { + } + resource "ibm_cos_bucket" "bucket2" { bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance.id - storage_class = "%s" + resource_instance_id = ibm_resource_instance.instance2.id region_location = "%s" - } - - `, serviceName, bucketName, storageClass, region) + storage_class = "%s" + metrics_monitoring { + usage_metrics_enabled = true + metrics_monitoring_crn = "%s" + } + } + `, cosServiceName, bucketName, region, storageClass, metricsMonitoringCrn) } -func testAccCheckIBMCosBucket_allowedip(serviceName string, bucketName string, regiontype string, region string, storageClass string, allowedIp1 string, allowedIp2 string) string { +func testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_True_UsageMetrics_True_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, regiontype, region, storageClass string) string { return fmt.Sprintf(` - data "ibm_resource_group" "group" { - is_default=true - } - resource "ibm_resource_instance" "instance" { + data "ibm_resource_group" "cos_group" { + is_default=true + } + resource "ibm_resource_instance" "instance2" { name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id service = "cloud-object-storage" plan = "standard" location = "global" - resource_group_id = data.ibm_resource_group.group.id - } - - resource "ibm_cos_bucket" "bucket" { + } + resource "ibm_cos_bucket" "bucket2" { bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance.id + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" storage_class = "%s" - cross_region_location = "%s" - allowed_ip = ["%s","%s"] - } - - `, serviceName, bucketName, storageClass, region, allowedIp1, allowedIp2) + metrics_monitoring { + usage_metrics_enabled = true + request_metrics_enabled = true + metrics_monitoring_crn = "%s" + } + } + `, cosServiceName, bucketName, region, storageClass, metricsMonitoringCrn) } -func testAccCheckIBMCosBucket_allowedipremoved(serviceName string, bucketName string, regiontype string, region string, storageClass string) string { +func testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_Invalid_UsageMetrics_Invalid_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, regiontype, region, storageClass string) string { return fmt.Sprintf(` - data "ibm_resource_group" "group" { + + data "ibm_resource_group" "cos_group" { is_default=true - } - - resource "ibm_resource_instance" "instance" { + } + resource "ibm_resource_instance" "instance2" { name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id service = "cloud-object-storage" plan = "standard" location = "global" - resource_group_id = data.ibm_resource_group.group.id - } - - resource "ibm_cos_bucket" "bucket" { + } + resource "ibm_cos_bucket" "bucket2" { bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance.id + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" storage_class = "%s" - cross_region_location = "%s" - - } - - - `, serviceName, bucketName, storageClass, region) + metrics_monitoring { + usage_metrics_enabled = "invalid" + request_metrics_enabled = "invalid" + metrics_monitoring_crn = "%s" + } + } + `, cosServiceName, bucketName, region, storageClass, metricsMonitoringCrn) } -func testAccCheckIBMCosBucket_direct(serviceName string, bucketName string, regiontype string, region string, storageClass string) string { + +func testAccCheckIBMCosBucket_metricsMonitoring_Crn_Invalid(cosServiceName, metricsMonitoringCrn, bucketName, regiontype, region, storageClass string) string { return fmt.Sprintf(` - data "ibm_resource_group" "group" { + + data "ibm_resource_group" "cos_group" { is_default=true - } - - resource "ibm_resource_instance" "instance" { + } + resource "ibm_resource_instance" "instance2" { name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id service = "cloud-object-storage" plan = "standard" location = "global" - resource_group_id = data.ibm_resource_group.group.id - } - - resource "ibm_cos_bucket" "bucket" { + } + resource "ibm_cos_bucket" "bucket2" { bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance.id + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" storage_class = "%s" - cross_region_location = "%s" - endpoint_type= "direct" - } - - - `, serviceName, bucketName, storageClass, region) + metrics_monitoring { + usage_metrics_enabled = true + request_metrics_enabled = true + metrics_monitoring_crn = "invalid" + } + } + `, cosServiceName, bucketName, region, storageClass) } -func testAccCheckIBMCosBucket_updateWithSameName(serviceName string, bucketName string, regiontype string, region, storageClass string) string { +func testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_False_UsageMetrics_False_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, regiontype, region, storageClass string) string { - return fmt.Sprintf(` - data "ibm_resource_group" "group" { + return fmt.Sprintf(` + + data "ibm_resource_group" "cos_group" { is_default=true - } - - resource "ibm_resource_instance" "instance" { + } + resource "ibm_resource_instance" "instance2" { name = "%s" + resource_group_id = data.ibm_resource_group.cos_group.id service = "cloud-object-storage" plan = "standard" location = "global" - resource_group_id = data.ibm_resource_group.group.id - } - - resource "ibm_cos_bucket" "bucket" { + } + resource "ibm_cos_bucket" "bucket2" { bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance.id + resource_instance_id = ibm_resource_instance.instance2.id + region_location = "%s" storage_class = "%s" - cross_region_location = "%s" - } - `, serviceName, bucketName, storageClass, region) + metrics_monitoring { + usage_metrics_enabled = false + request_metrics_enabled = false + metrics_monitoring_crn = "%s" + } + } + `, cosServiceName, bucketName, region, storageClass, metricsMonitoringCrn) } -func testAccCheckIBMCosBucket_activityTracker_monitor(cosServiceName, activityServiceName, monitorServiceName, bucketName, regiontype, region, storageClass string) string { +func testAccCheckIBMCosBucket_metricsMonitoring_Upload_Object_RequestMetrics_True_UsageMetrics_True_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, regiontype, region, storageClass, key, objectBody string) string { return fmt.Sprintf(` @@ -1677,84 +3499,97 @@ func testAccCheckIBMCosBucket_activityTracker_monitor(cosServiceName, activitySe plan = "standard" location = "global" } - resource "ibm_resource_instance" "activity_tracker2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "logdnaat" - plan = "7-day" - location = "us-south" - } - resource "ibm_resource_instance" "metrics_monitor2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "sysdig-monitor" - plan = "graduated-tier" - location = "us-south" - parameters = { - default_receiver = true - } - } resource "ibm_cos_bucket" "bucket2" { bucket_name = "%s" resource_instance_id = ibm_resource_instance.instance2.id - single_site_location = "%s" + region_location = "%s" storage_class = "%s" - activity_tracking { - read_data_events = true - write_data_events = true - activity_tracker_crn = ibm_resource_instance.activity_tracker2.id - } metrics_monitoring { - usage_metrics_enabled = true + usage_metrics_enabled = true request_metrics_enabled = true - metrics_monitoring_crn = ibm_resource_instance.metrics_monitor2.id + metrics_monitoring_crn = "%s" } } - `, cosServiceName, activityServiceName, monitorServiceName, bucketName, region, storageClass) + resource "ibm_cos_bucket_object" "testacc" { + bucket_crn = ibm_cos_bucket.bucket2.crn + bucket_location = ibm_cos_bucket.bucket2.region_location + key = "%s.txt" + content = "%s" + } + `, cosServiceName, bucketName, region, storageClass, metricsMonitoringCrn, key, objectBody) } -func testAccCheckIBMCosBucket_update_activityTracker_monitor(cosServiceName, activityServiceName, monitorServiceName, bucketName, regiontype, region, storageClass string) string { +func testAccCheckIBMCosBucket_metricsMonitoring_Upload_Object_RequestMetrics_True_UsageMetrics_True_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass, key, objectBody string) string { + + return fmt.Sprintf(` - return fmt.Sprintf(` data "ibm_resource_group" "cos_group" { is_default=true - } - - resource "ibm_resource_instance" "instance2" { + } + resource "ibm_resource_instance" "instance2" { name = "%s" resource_group_id = data.ibm_resource_group.cos_group.id service = "cloud-object-storage" plan = "standard" location = "global" } - - resource "ibm_resource_instance" "activity_tracker2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "logdnaat" - plan = "7-day" - location = "us-south" - } - - resource "ibm_resource_instance" "metrics_monitor2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "sysdig-monitor" - plan = "graduated-tier" - location = "us-south" - parameters = { - default_receiver = true - } - } - resource "ibm_cos_bucket" "bucket2" { + resource "ibm_cos_bucket" "bucket2" { bucket_name = "%s" resource_instance_id = ibm_resource_instance.instance2.id - single_site_location = "%s" + region_location = "%s" storage_class = "%s" - } - `, cosServiceName, activityServiceName, monitorServiceName, bucketName, region, storageClass) + metrics_monitoring { + usage_metrics_enabled = true + request_metrics_enabled = true + } + } + resource "ibm_cos_bucket_object" "testacc" { + bucket_crn = ibm_cos_bucket.bucket2.crn + bucket_location = ibm_cos_bucket.bucket2.region_location + key = "%s.txt" + content = "%s" + } + `, cosServiceName, bucketName, region, storageClass, key, objectBody) } +// func testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_New_Instance(cosServiceName, metricsMonitoringName, bucketName, regiontype, region, storageClass string) string { + +// return fmt.Sprintf(` + +// data "ibm_resource_group" "cos_group" { +// is_default=true +// } +// resource "ibm_resource_instance" "instance2" { +// name = "%s" +// resource_group_id = data.ibm_resource_group.cos_group.id +// service = "cloud-object-storage" +// plan = "standard" +// location = "global" +// } +// resource "ibm_resource_instance" "metrics_monitor2" { +// name = "%s" +// resource_group_id = data.ibm_resource_group.cos_group.id +// service = "sysdig-monitor" +// plan = "graduated-tier" +// location = "us-south" +// parameters = { +// default_receiver = true +// } +// } +// resource "ibm_cos_bucket" "bucket2" { +// bucket_name = "%s" +// resource_instance_id = ibm_resource_instance.instance2.id +// region_location = "%s" +// storage_class = "%s" +// metrics_monitoring { +// usage_metrics_enabled = true +// request_metrics_enabled = true +// metrics_monitoring_crn = ibm_resource_instance.metrics_monitor2.id +// } +// } +// `, cosServiceName, metricsMonitoringName, bucketName, region, storageClass) +// } + func testAccCheckIBMCosBucket_archive(cosServiceName string, bucketName string, regiontype string, region string, storageClass string, ruleId string, enable bool, archiveDays int, ruleType string) string { return fmt.Sprintf(` From e1f7208809b6a0f10827068efd67a601f797fe44 Mon Sep 17 00:00:00 2001 From: Diksha Mali Date: Wed, 17 Apr 2024 15:55:17 +0530 Subject: [PATCH 02/22] Adding the documentation --- examples/ibm-cos-bucket/README.md | 6 ++++-- examples/ibm-cos-bucket/main.tf | 1 + ibm/flex/structures.go | 3 +++ ibm/service/cos/data_source_ibm_cos_bucket.go | 5 +++++ ibm/service/cos/resource_ibm_cos_bucket.go | 8 +------- website/docs/d/cos_bucket.html.markdown | 1 + website/docs/r/cos_bucket.html.markdown | 4 ++++ 7 files changed, 19 insertions(+), 9 deletions(-) diff --git a/examples/ibm-cos-bucket/README.md b/examples/ibm-cos-bucket/README.md index e459bc9a887..33b13e6711a 100644 --- a/examples/ibm-cos-bucket/README.md +++ b/examples/ibm-cos-bucket/README.md @@ -60,6 +60,7 @@ resource "ibm_cos_bucket" "standard-ams03" { activity_tracking { read_data_events = true write_data_events = true + management_events = true activity_tracker_crn = ibm_resource_instance.activity_tracker.id } metrics_monitoring { @@ -531,10 +532,11 @@ resource ibm_cos_bucket_website_configuration "website_configuration" { | region | The location for a cross-regional bucket. Supported values are **us, eu, and ap**. | `string` | no | | read_data_events | Enables sending log data to Activity Tracker and LogDNA to provide visibility into object read and write events. | `array` | no | write_data_events | All object write events (i.e. uploads) will be sent to Activity Tracker. | `bool` | no -| activity_tracker_crn | Required the first time activity_tracking is configured. | `string` | yes +| management_events | All the bucket management events will will be sent to Activity Tracker. | `bool` | no +| activity_tracker_crn | Required the first time activity_tracking is configured. | `string` | no | usage_metrics_enabled | Specify **true or false** to set usage metrics (i.e. bytes_used). | `bool` | no | request_metrics_enabled | Specify true or false to set cos request metrics (i.e. get, put, or post request). | `bool` | no -| metrics_monitoring_crn | Required the first time metrics_monitoring is configured. The instance of IBM Cloud Monitoring that will receive the bucket metrics. | `string` | yes +| metrics_monitoring_crn | Required the first time metrics_monitoring is configured. The instance of IBM Cloud Monitoring that will receive the bucket metrics. | `string` | no | regional_loc | The location for a regional bucket. Supported values are **au-syd, eu-de, eu-gb, jp-tok, us-east, or us-south**. | `string` | no | type | Specifies the archive type to which you want the object to transition. Supported values are **Glacier or Accelerated**. | `string` |yes | rule_id | Unique identifier for the rule. | `string` | no diff --git a/examples/ibm-cos-bucket/main.tf b/examples/ibm-cos-bucket/main.tf index 7d9a1390d71..95ba2a53046 100644 --- a/examples/ibm-cos-bucket/main.tf +++ b/examples/ibm-cos-bucket/main.tf @@ -34,6 +34,7 @@ resource "ibm_cos_bucket" "standard-ams03" { activity_tracking { read_data_events = true write_data_events = true + management_events = true activity_tracker_crn = ibm_resource_instance.activity_tracker.id } metrics_monitoring { diff --git a/ibm/flex/structures.go b/ibm/flex/structures.go index e2c92e969b6..5fe5616aa25 100644 --- a/ibm/flex/structures.go +++ b/ibm/flex/structures.go @@ -690,6 +690,9 @@ func FlattenActivityTrack(in *resourceconfigurationv1.ActivityTracking) []interf if in.WriteDataEvents != nil { att["write_data_events"] = *in.WriteDataEvents } + if in.ManagementEvents != nil { + att["management_events"] = *in.ManagementEvents + } if in.ActivityTrackerCrn != nil { att["activity_tracker_crn"] = *in.ActivityTrackerCrn } diff --git a/ibm/service/cos/data_source_ibm_cos_bucket.go b/ibm/service/cos/data_source_ibm_cos_bucket.go index 83f519a3940..3b65ed49992 100644 --- a/ibm/service/cos/data_source_ibm_cos_bucket.go +++ b/ibm/service/cos/data_source_ibm_cos_bucket.go @@ -133,6 +133,11 @@ func DataSourceIBMCosBucket() *schema.Resource { Computed: true, Description: "If set to true, all object write events will be sent to Activity Tracker.", }, + "management_events": { + Type: schema.TypeBool, + Computed: true, + Description: "If set to true, all bucket management events will be sent to Activity Tracker", + }, "activity_tracker_crn": { Type: schema.TypeString, Computed: true, diff --git a/ibm/service/cos/resource_ibm_cos_bucket.go b/ibm/service/cos/resource_ibm_cos_bucket.go index 3ac12a57c63..56cdfb41c96 100644 --- a/ibm/service/cos/resource_ibm_cos_bucket.go +++ b/ibm/service/cos/resource_ibm_cos_bucket.go @@ -7,7 +7,6 @@ import ( "context" "fmt" "log" - "reflect" "regexp" "strings" "time" @@ -205,7 +204,7 @@ func ResourceIBMCOSBucket() *schema.Resource { "management_events": { Type: schema.TypeBool, Optional: true, - Description: "If set to true, all object write events will be sent to Activity Tracker.", + Description: "If set to true, all bucket management events will be sent to Activity Tracker", }, "activity_tracker_crn": { Type: schema.TypeString, @@ -988,7 +987,6 @@ func resourceIBMCOSBucketUpdate(d *schema.ResourceData, meta interface{}) error activityTracker.WriteDataEvents = &writeSet } if managementEventSet, ok := d.GetOkExists("activity_tracking.0.management_events"); ok { - println("inside the management events after adding getok exists", managementEventSet) managementEventValue := managementEventSet.(bool) activityTracker.ManagementEvents = &managementEventValue } @@ -1019,13 +1017,11 @@ func resourceIBMCOSBucketUpdate(d *schema.ResourceData, meta interface{}) error //metrics enabled - as its optional check for existence if metricsUsageSet := metricsMap["usage_metrics_enabled"]; metricsUsageSet != nil { - println("***inside usage metrics condition***") metrics := metricsUsageSet.(bool) metricsMonitoring.UsageMetricsEnabled = &metrics } // request metrics enabled - as its optional check for existence if metricsRequestSet := metricsMap["request_metrics_enabled"]; metricsRequestSet != nil { - println("***inside request metrics condition***") metrics := metricsRequestSet.(bool) metricsMonitoring.RequestMetricsEnabled = &metrics } @@ -1050,8 +1046,6 @@ func resourceIBMCOSBucketUpdate(d *schema.ResourceData, meta interface{}) error if asPatchErr != nil { return fmt.Errorf("[ERROR] Error Update COS Bucket: %s\n%s", err, bucketPatchModelAsPatch) } - println("type of bucket patch", reflect.TypeOf(bucketPatchModelAsPatch)) - fmt.Println("bucket patch latest after removing default:", bucketPatchModelAsPatch) updateBucketConfig := new(resourceconfigurationv1.UpdateBucketConfigOptions) updateBucketConfig.Bucket = &bucketName updateBucketConfig.BucketPatch = bucketPatchModelAsPatch diff --git a/website/docs/d/cos_bucket.html.markdown b/website/docs/d/cos_bucket.html.markdown index 73a9727d2fa..4cf95575f6e 100644 --- a/website/docs/d/cos_bucket.html.markdown +++ b/website/docs/d/cos_bucket.html.markdown @@ -141,6 +141,7 @@ In addition to all argument reference list, you can access the following attribu - `activity_tracker_crn` - (String) The first time activity_tracking is configured. - `read_data_events` - (Array) Enables sending log data to Activity Tracker to provide visibility into an object read and write events. - `write_data_events`- (Bool) If set to **true**, all object write events (that is `uploads`) is sent to Activity Tracker. + - `management_events`- (Bool) If set to **true**, all the bucket management events are sent to Activity Tracker. - `archive_rule` (List) Nested block with the following structure. Nested scheme for `archive_rule`: diff --git a/website/docs/r/cos_bucket.html.markdown b/website/docs/r/cos_bucket.html.markdown index 0b0d7cf0697..d2dd9188d7d 100644 --- a/website/docs/r/cos_bucket.html.markdown +++ b/website/docs/r/cos_bucket.html.markdown @@ -75,6 +75,7 @@ resource "ibm_cos_bucket" "standard-ams03-firewall" { activity_tracking { read_data_events = true write_data_events = true + management_events = true activity_tracker_crn = ibm_resource_instance.activity_tracker.id } metrics_monitoring { @@ -93,6 +94,7 @@ resource "ibm_cos_bucket" "smart-us-south-firewall" { activity_tracking { read_data_events = true write_data_events = true + management_events = true activity_tracker_crn = ibm_resource_instance.activity_tracker.id } metrics_monitoring { @@ -111,6 +113,7 @@ resource "ibm_cos_bucket" "cold-ap-firewall" { activity_tracking { read_data_events = true write_data_events = true + management_events = true activity_tracker_crn = ibm_resource_instance.activity_tracker.id } metrics_monitoring { @@ -454,6 +457,7 @@ Review the argument references that you can specify for your resource. - `activity_tracker_crn`- (Required, String) The CRN of your IBM Cloud Activity Tracker service instance that you want to send your events to. This value is required only when you configure your instance for the first time. - `read_data_events`- (Required, Bool) If set to **true**, all read events against a bucket are sent to your IBM Cloud Activity Tracker service instance. - `write_data_events`- (Required, Bool) If set to **true**, all write events against a bucket are sent to your IBM Cloud Activity Tracker service instance. + - `management_events`- (Required, Bool) If set to **true**, all the bucketmanagement events are sent to your IBM Cloud Activity Tracker service instance. - `archive_rule` - (Required, List) Nested archive_rule block has following structure. Nested scheme for `archive_rule`: From dc7921a21efe089601b5af391071bdc6e7f641b7 Mon Sep 17 00:00:00 2001 From: Diksha Mali Date: Tue, 23 Apr 2024 21:15:29 +0530 Subject: [PATCH 03/22] Making changes to the documentation and test case improvement --- ibm/acctest/acctest.go | 12 ++++++++++++ ibm/service/cos/resource_ibm_cos_bucket.go | 6 +++--- website/docs/d/cos_bucket.html.markdown | 10 ++++++++-- website/docs/r/cos_bucket.html.markdown | 12 +++++++++--- 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/ibm/acctest/acctest.go b/ibm/acctest/acctest.go index 71d18fad014..9b31da6d9ab 100644 --- a/ibm/acctest/acctest.go +++ b/ibm/acctest/acctest.go @@ -36,6 +36,8 @@ var ( CloudShellAccountID string CosCRN string BucketCRN string + ActivityTrackerInstanceCRN string + MetricsMonitoringCRN string BucketName string CosName string Ibmid1 string @@ -510,6 +512,16 @@ func init() { BucketCRN = "" fmt.Println("[WARN] Set the environment variable IBM_COS_Bucket_CRN with a VALID BUCKET CRN for testing ibm_cos_bucket* resources") } + ActivityTrackerInstanceCRN = os.Getenv("IBM_COS_ACTIVITY_TRACKER_CRN") + if ActivityTrackerInstanceCRN == "" { + ActivityTrackerInstanceCRN = "" + fmt.Println("[WARN] Set the environment variable IBM_COS_ACTIVITY_TRACKER_CRN with a VALID ACTIVITY TRACKER INSTANCE CRN in valid region for testing ibm_cos_bucket* resources") + } + MetricsMonitoringCRN = os.Getenv("IBM_COS_METRICS_MONITORING_CRN") + if MetricsMonitoringCRN == "" { + MetricsMonitoringCRN = "" + fmt.Println("[WARN] Set the environment variable IBM_COS_METRICS_MONITORING_CRN with a VALID METRICS MONITORING CRN for testing ibm_cos_bucket* resources") + } BucketName = os.Getenv("IBM_COS_BUCKET_NAME") if BucketName == "" { BucketName = "" diff --git a/ibm/service/cos/resource_ibm_cos_bucket.go b/ibm/service/cos/resource_ibm_cos_bucket.go index 56cdfb41c96..ad1283f33e5 100644 --- a/ibm/service/cos/resource_ibm_cos_bucket.go +++ b/ibm/service/cos/resource_ibm_cos_bucket.go @@ -204,12 +204,12 @@ func ResourceIBMCOSBucket() *schema.Resource { "management_events": { Type: schema.TypeBool, Optional: true, - Description: "If set to true, all bucket management events will be sent to Activity Tracker", + Description: "This field only applies if `activity_tracker_crn` is not populated. If set to `true`, all bucket management events will be sent to Activity Tracker.", }, "activity_tracker_crn": { Type: schema.TypeString, Optional: true, - Description: "The instance of Activity Tracker that will receive object event data", + Description: "When the activity_tracker_crn is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the ATracker Router service configuration. If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled", }, }, }, @@ -236,7 +236,7 @@ func ResourceIBMCOSBucket() *schema.Resource { "metrics_monitoring_crn": { Type: schema.TypeString, Optional: true, - Description: "Instance of IBM Cloud Monitoring that will receive the bucket metrics.", + Description: "When the metrics_monitoring_crn is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration. If metrics_monitoring_crn is populated, then enabled events are sent to the Metrics Monitoring instance specified.", }, }, }, diff --git a/website/docs/d/cos_bucket.html.markdown b/website/docs/d/cos_bucket.html.markdown index 4cf95575f6e..105647dfcdc 100644 --- a/website/docs/d/cos_bucket.html.markdown +++ b/website/docs/d/cos_bucket.html.markdown @@ -138,10 +138,14 @@ In addition to all argument reference list, you can access the following attribu - `activity_tracking` (List) Nested block with the following structure. Nested scheme for `activity_tracking`: - - `activity_tracker_crn` - (String) The first time activity_tracking is configured. + - `activity_tracker_crn` - (String) If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. + **Note:** + When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the ATracker Router service configuration. - `read_data_events` - (Array) Enables sending log data to Activity Tracker to provide visibility into an object read and write events. - `write_data_events`- (Bool) If set to **true**, all object write events (that is `uploads`) is sent to Activity Tracker. - `management_events`- (Bool) If set to **true**, all the bucket management events are sent to Activity Tracker. + **Note:** + `management_events` field only applies if `activity_tracker_crn` is not populated. - `archive_rule` (List) Nested block with the following structure. Nested scheme for `archive_rule`: @@ -177,7 +181,9 @@ In addition to all argument reference list, you can access the following attribu - `metrics_monitoring`- (List) Nested block with the following structure. Nested scheme for `metrics_monitoring`: - - `metrics_monitoring_crn` - (String) The first time `metrics_monitoring` is configured. The instance of IBM Cloud monitoring that will receive the bucket metrics. + - `metrics_monitoring_crn` - (String) If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified. + **Note:** + When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration. - `request_metrics_enabled` - (Bool) If set to `true`, all request metrics `ibm_cos_bucket_all_request` is sent to the monitoring service at 1 minute (`@1mins`) granularity. - `usage_metrics_enabled`- (Bool) If set to **true**, all usage metrics (that is `bytes_used`) is sent to the monitoring service. - `noncurrent_version_expiration` (List) Nested block with the following structure. diff --git a/website/docs/r/cos_bucket.html.markdown b/website/docs/r/cos_bucket.html.markdown index d2dd9188d7d..161e5087353 100644 --- a/website/docs/r/cos_bucket.html.markdown +++ b/website/docs/r/cos_bucket.html.markdown @@ -454,10 +454,14 @@ Review the argument references that you can specify for your resource. - `activity_tracking`- (List of objects) Object to enable auditing with IBM Cloud Activity Tracker - Optional - Configure your IBM Cloud Activity Tracker service instance and the type of events that you want to send to your service to audit activity against your bucket. For a list of supported actions, see [Bucket actions](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-at-events#at-actions-mngt-2). Nested scheme for `activity_tracking`: - - `activity_tracker_crn`- (Required, String) The CRN of your IBM Cloud Activity Tracker service instance that you want to send your events to. This value is required only when you configure your instance for the first time. + - `activity_tracker_crn`- (Optional, String) The CRN of your IBM Cloud Activity Tracker service instance. If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. + **Note:** + When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the ATracker Router service configuration.. - `read_data_events`- (Required, Bool) If set to **true**, all read events against a bucket are sent to your IBM Cloud Activity Tracker service instance. - `write_data_events`- (Required, Bool) If set to **true**, all write events against a bucket are sent to your IBM Cloud Activity Tracker service instance. - - `management_events`- (Required, Bool) If set to **true**, all the bucketmanagement events are sent to your IBM Cloud Activity Tracker service instance. + - `management_events`- (Required, Bool) If set to **true**, all the bucket management events are sent to Activity Tracker. + **Note:** + `management_events` field only applies if `activity_tracker_crn` is not populated. - `archive_rule` - (Required, List) Nested archive_rule block has following structure. Nested scheme for `archive_rule`: @@ -500,7 +504,9 @@ Review the argument references that you can specify for your resource. - `metrics_monitoring`- (Object) to enable metrics tracking with IBM Cloud Monitoring - Optional- Set up your IBM Cloud Monitoring service instance to receive metrics for your IBM Cloud Object Storage bucket. Nested scheme for `metrics_monitoring`: - - `metrics_monitoring_crn` - (Required, string) Required the first time `metrics_monitoring` is configured. The instance of IBM Cloud Monitoring receives the bucket metrics. + - `metrics_monitoring_crn` - (Optional, string) If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified. + **Note:** + When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration.. - `request_metrics_enabled` : (Optional, Bool) If set to **true**, all request metrics `ibm_cos_bucket_all_request` is sent to the monitoring service `@1mins` granulatiy. - `usage_metrics_enabled` : (Optional, Bool) If set to **true**, all usage metrics that is `bytes_used` is sent to the monitoring service.e. From 2e12ea21c240a5cf06368424b9dae52a7b526cb5 Mon Sep 17 00:00:00 2001 From: Diksha Mali Date: Tue, 23 Apr 2024 21:16:23 +0530 Subject: [PATCH 04/22] Test case improvement --- .../cos/resource_ibm_cos_bucket_test.go | 999 +++++------------- 1 file changed, 245 insertions(+), 754 deletions(-) diff --git a/ibm/service/cos/resource_ibm_cos_bucket_test.go b/ibm/service/cos/resource_ibm_cos_bucket_test.go index 1deec0dded5..488d5f582cc 100644 --- a/ibm/service/cos/resource_ibm_cos_bucket_test.go +++ b/ibm/service/cos/resource_ibm_cos_bucket_test.go @@ -175,14 +175,16 @@ func TestAccIBMCosBucket_Direct(t *testing.T) { } // *** F1881 Activity tracker test cases *** - -func TestAccIBMCosBucket_ActivityTracker_Only_Read_True_Without_Crn(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_False_ActivityTrackerCrn_NotSet_ManagementEvents_False(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + readDataEvents := true + writeDataEvents := false + managementEvents := false resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -190,7 +192,7 @@ func TestAccIBMCosBucket_ActivityTracker_Only_Read_True_Without_Crn(t *testing.T CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_activityTracker_Only_Read_True_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_activityTracker_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, readDataEvents, writeDataEvents, managementEvents), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), @@ -206,13 +208,16 @@ func TestAccIBMCosBucket_ActivityTracker_Only_Read_True_Without_Crn(t *testing.T }) } -func TestAccIBMCosBucket_ActivityTracker_Only_Write_True_Without_Crn(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Read_False_Write_True_ActivityTrackerCrn_NotSet_ManagementEvents_False(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + readDataEvents := false + writeDataEvents := true + managementEvents := false resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -220,7 +225,7 @@ func TestAccIBMCosBucket_ActivityTracker_Only_Write_True_Without_Crn(t *testing. CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_activityTracker_Only_Write_True_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_activityTracker_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, readDataEvents, writeDataEvents, managementEvents), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), @@ -236,13 +241,16 @@ func TestAccIBMCosBucket_ActivityTracker_Only_Write_True_Without_Crn(t *testing. }) } -func TestAccIBMCosBucket_ActivityTracker_Only_ManagementEvents_True_Without_Crn(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Read_False_Write_False_ActivityTrackerCrn_NotSet_ManagementEvents_True(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + readDataEvents := false + writeDataEvents := false + managementEvents := true resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -250,7 +258,7 @@ func TestAccIBMCosBucket_ActivityTracker_Only_ManagementEvents_True_Without_Crn( CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_activityTracker_Only_ManagementEvents_True_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_activityTracker_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, readDataEvents, writeDataEvents, managementEvents), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), @@ -266,13 +274,16 @@ func TestAccIBMCosBucket_ActivityTracker_Only_ManagementEvents_True_Without_Crn( }) } -func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_True_ManagementEvents_False_Without_Crn(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_True_ActivityTrackerCrn_NotSet_ManagementEvents_False(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + readDataEvents := true + writeDataEvents := true + managementEvents := false resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -280,7 +291,7 @@ func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_True_ManagementEvents_F CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_activityTracker_Read_True_Write_True_ManagementEvents_False_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_activityTracker_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, readDataEvents, writeDataEvents, managementEvents), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), @@ -296,13 +307,16 @@ func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_True_ManagementEvents_F }) } -func TestAccIBMCosBucket_ActivityTracker_Read_False_Write_False_ManagementEvents_False_Without_Crn(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Read_False_Write_False_ActivityTrackerCrn_NotSet_ManagementEvents_False(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + readDataEvents := false + writeDataEvents := false + managementEvents := false resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -310,7 +324,7 @@ func TestAccIBMCosBucket_ActivityTracker_Read_False_Write_False_ManagementEvents CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_activityTracker_Read_False_Write_False_ManagementEvents_False_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_activityTracker_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, readDataEvents, writeDataEvents, managementEvents), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), @@ -326,13 +340,16 @@ func TestAccIBMCosBucket_ActivityTracker_Read_False_Write_False_ManagementEvents }) } -func TestAccIBMCosBucket_ActivityTracker_Read_True_ManagementEvents_True_Without_Crn(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_False_ActivityTrackerCrn_NotSet_ManagementEvents_True(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + readDataEvents := true + writeDataEvents := false + managementEvents := true resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -340,7 +357,7 @@ func TestAccIBMCosBucket_ActivityTracker_Read_True_ManagementEvents_True_Without CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_activityTracker_Read_True_ManagementEvents_True_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_activityTracker_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, readDataEvents, writeDataEvents, managementEvents), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), @@ -356,13 +373,16 @@ func TestAccIBMCosBucket_ActivityTracker_Read_True_ManagementEvents_True_Without }) } -func TestAccIBMCosBucket_ActivityTracker_Write_True_ManagementEvents_True_Without_Crn(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Read_False_Write_True_ActivityTrackerCrn_NotSet_ManagementEvents_True(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + readDataEvents := false + writeDataEvents := true + managementEvents := true resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -370,7 +390,7 @@ func TestAccIBMCosBucket_ActivityTracker_Write_True_ManagementEvents_True_Withou CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_activityTracker_Write_True_ManagementEvents_True_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_activityTracker_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, readDataEvents, writeDataEvents, managementEvents), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), @@ -386,13 +406,16 @@ func TestAccIBMCosBucket_ActivityTracker_Write_True_ManagementEvents_True_Withou }) } -func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_True_ManagementEvents_True_Without_Crn(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_True_ActivityTrackerCrn_NotSet_ManagementEvents_True(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + readDataEvents := true + writeDataEvents := true + managementEvents := true resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -400,7 +423,7 @@ func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_True_ManagementEvents_T CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_activityTracker_Read_True_Write_True_ManagementEvents_True_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_activityTracker_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, readDataEvents, writeDataEvents, managementEvents), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), @@ -418,13 +441,15 @@ func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_True_ManagementEvents_T // *** with crn *** -func TestAccIBMCosBucket_ActivityTracker_Read_True_ManagementEvents_Not_Set_With_Crn(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_False_ActivityTrackerCrn_Set_ManagementEvents_Not_Set(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + readDataEvents := true + writeDataEvents := false activityTrackerInstanceCRN := acc.ActivityTrackerInstanceCRN resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -432,7 +457,7 @@ func TestAccIBMCosBucket_ActivityTracker_Read_True_ManagementEvents_Not_Set_With CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_activityTracker_Read_True_ManagementEvents_Not_Set_With_Crn(cosServiceName, activityTrackerInstanceCRN, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_activityTracker_With_Crn_ManagementEvents_NotSet(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, activityTrackerInstanceCRN, readDataEvents, writeDataEvents), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), @@ -448,13 +473,15 @@ func TestAccIBMCosBucket_ActivityTracker_Read_True_ManagementEvents_Not_Set_With }) } -func TestAccIBMCosBucket_ActivityTracker_Write_True_ManagementEvents_Not_Set_With_Crn(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Read_False_Write_True_ActivityTrackerCrn_Set_ManagementEvents_Not_Set(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + readDataEvents := false + writeDataEvents := true activityTrackerInstanceCRN := acc.ActivityTrackerInstanceCRN resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -462,7 +489,7 @@ func TestAccIBMCosBucket_ActivityTracker_Write_True_ManagementEvents_Not_Set_Wit CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_activityTracker_Write_True_ManagementEvents_Not_Set_With_Crn(cosServiceName, activityTrackerInstanceCRN, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_activityTracker_With_Crn_ManagementEvents_NotSet(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, activityTrackerInstanceCRN, readDataEvents, writeDataEvents), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), @@ -479,30 +506,33 @@ func TestAccIBMCosBucket_ActivityTracker_Write_True_ManagementEvents_Not_Set_Wit }) } -func TestAccIBMCosBucket_ActivityTracker_Only_ManagementEvents_True_With_Crn(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_True_ActivityTrackerCrn_Set_ManagementEvents_Not_Set(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + readDataEvents := true + writeDataEvents := true activityTrackerInstanceCRN := acc.ActivityTrackerInstanceCRN + resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_activityTracker_Only_ManagementEvents_True_With_Crn(cosServiceName, activityTrackerInstanceCRN, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_activityTracker_With_Crn_ManagementEvents_NotSet(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, activityTrackerInstanceCRN, readDataEvents, writeDataEvents), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "1"), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "false"), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "false"), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "false"), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.activity_tracker_crn", activityTrackerInstanceCRN), ), }, @@ -510,30 +540,31 @@ func TestAccIBMCosBucket_ActivityTracker_Only_ManagementEvents_True_With_Crn(t * }) } -func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_True_ManagementEvents_Not_Set_With_Crn(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Read_False_Write_False_ActivityTrackerCrn_Set_ManagementEvents_Not_Set(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + readDataEvents := false + writeDataEvents := false activityTrackerInstanceCRN := acc.ActivityTrackerInstanceCRN - resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_activityTracker_Read_True_Write_True_ManagementEvents_Not_Set_With_Crn(cosServiceName, activityTrackerInstanceCRN, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_activityTracker_With_Crn_ManagementEvents_NotSet(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, activityTrackerInstanceCRN, readDataEvents, writeDataEvents), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "1"), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "true"), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "false"), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "false"), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.activity_tracker_crn", activityTrackerInstanceCRN), ), @@ -542,13 +573,16 @@ func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_True_ManagementEvents_N }) } -func TestAccIBMCosBucket_ActivityTracker_Read_False_Write_False_ManagementEvents_Not_Set_With_Crn(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_False_ActivityTrackerCrn_Set_ManagementEvents_True(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + readDataEvents := true + writeDataEvents := false + managementEvents := true activityTrackerInstanceCRN := acc.ActivityTrackerInstanceCRN resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -556,16 +590,16 @@ func TestAccIBMCosBucket_ActivityTracker_Read_False_Write_False_ManagementEvents CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_activityTracker_Read_False_Write_False_ManagementEvents_Not_Set_With_Crn(cosServiceName, activityTrackerInstanceCRN, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_activityTracker_With_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, activityTrackerInstanceCRN, readDataEvents, writeDataEvents, managementEvents), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "1"), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "true"), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "false"), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "true"), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.activity_tracker_crn", activityTrackerInstanceCRN), ), }, @@ -573,13 +607,16 @@ func TestAccIBMCosBucket_ActivityTracker_Read_False_Write_False_ManagementEvents }) } -func TestAccIBMCosBucket_ActivityTracker_Read_True_ManagementEvents_True_With_Crn(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Read_False_Write_True_ActivityTrackerCrn_Set_ManagementEvents_True(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + readDataEvents := false + writeDataEvents := true + managementEvents := true activityTrackerInstanceCRN := acc.ActivityTrackerInstanceCRN resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -587,15 +624,15 @@ func TestAccIBMCosBucket_ActivityTracker_Read_True_ManagementEvents_True_With_Cr CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_activityTracker_Read_True_ManagementEvents_True_With_Crn(cosServiceName, activityTrackerInstanceCRN, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_activityTracker_With_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, activityTrackerInstanceCRN, readDataEvents, writeDataEvents, managementEvents), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "1"), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "true"), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "true"), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "true"), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.activity_tracker_crn", activityTrackerInstanceCRN), ), @@ -604,13 +641,16 @@ func TestAccIBMCosBucket_ActivityTracker_Read_True_ManagementEvents_True_With_Cr }) } -func TestAccIBMCosBucket_ActivityTracker_Write_True_ManagementEvents_True_With_Crn(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_True_ActivityTrackerCrn_Set_ManagementEvents_True(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + readDataEvents := true + writeDataEvents := true + managementEvents := true activityTrackerInstanceCRN := acc.ActivityTrackerInstanceCRN resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -618,14 +658,14 @@ func TestAccIBMCosBucket_ActivityTracker_Write_True_ManagementEvents_True_With_C CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_activityTracker_Write_True_ManagementEvents_True_With_Crn(cosServiceName, activityTrackerInstanceCRN, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_activityTracker_With_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, activityTrackerInstanceCRN, readDataEvents, writeDataEvents, managementEvents), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "1"), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "true"), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "true"), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "true"), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.activity_tracker_crn", activityTrackerInstanceCRN), @@ -635,13 +675,16 @@ func TestAccIBMCosBucket_ActivityTracker_Write_True_ManagementEvents_True_With_C }) } -func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_True_ManagementEvents_True_With_Crn(t *testing.T) { +func TestAccIBMCosBucket_ActivityTracker_Read_False_Write_False_ActivityTrackerCrn_Set_ManagementEvents_True(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + readDataEvents := false + writeDataEvents := false + managementEvents := true activityTrackerInstanceCRN := acc.ActivityTrackerInstanceCRN resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -649,15 +692,15 @@ func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_True_ManagementEvents_T CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_activityTracker_Read_True_Write_True_ManagementEvents_True_With_Crn(cosServiceName, activityTrackerInstanceCRN, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_activityTracker_With_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, activityTrackerInstanceCRN, readDataEvents, writeDataEvents, managementEvents), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "storage_class", bucketClass), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "region_location", bucketRegion), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.#", "1"), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "true"), - resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "true"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.read_data_events", "false"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.write_data_events", "false"), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.management_events", "true"), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "activity_tracking.0.activity_tracker_crn", activityTrackerInstanceCRN), ), @@ -665,7 +708,29 @@ func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_True_ManagementEvents_T }, }) } +func TestAccIBMCosBucket_ActivityTracker_Read_False_Write_False_ManagementEvents_False_ActivityTrackerCrn_Set(t *testing.T) { + cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us-south" + bucketClass := "standard" + bucketRegionType := "region_location" + readDataEvents := false + writeDataEvents := false + managementEvents := false + activityTrackerInstanceCRN := acc.ActivityTrackerInstanceCRN + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_activityTracker_With_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, activityTrackerInstanceCRN, readDataEvents, writeDataEvents, managementEvents), + ExpectError: regexp.MustCompile("Error Update COS Bucket: Cannot have an Activity Tracking CRN without opting for management events"), + }, + }, + }) +} func TestAccIBMCosBucket_Upload_Object_Activity_Tracker_Enabled_With_CRN(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) @@ -732,27 +797,6 @@ func TestAccIBMCosBucket_Upload_Object_Activity_Tracker_Enabled_Without_CRN(t *t }) } -func TestAccIBMCosBucket_ActivityTracker_Read_False_Write_False_ManagementEvents_False_With_Crn(t *testing.T) { - - cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) - bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) - bucketRegion := "us-south" - bucketClass := "standard" - bucketRegionType := "region_location" - activityTrackerInstanceCRN := acc.ActivityTrackerInstanceCRN - resource.Test(t, resource.TestCase{ - PreCheck: func() { acc.TestAccPreCheck(t) }, - Providers: acc.TestAccProviders, - CheckDestroy: testAccCheckIBMCosBucketDestroy, - Steps: []resource.TestStep{ - { - Config: testAccCheckIBMCosBucket_activityTracker_Read_False_Write_False_ManagementEvents_False_With_Crn(cosServiceName, activityTrackerInstanceCRN, bucketName, bucketRegionType, bucketRegion, bucketClass), - ExpectError: regexp.MustCompile("Error Update COS Bucket: Cannot have an Activity Tracking CRN without opting for management events"), - }, - }, - }) -} - func TestAccIBMCosBucket_ActivityTracker_Read_Invalid_Write_Invalid_ManagementEvents_Invalid_With_Crn(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) @@ -781,6 +825,9 @@ func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_True_ManagementEvents_T bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + readDataEvents := true + writeDataEvents := true + managementEvents := true activityTrackerInstanceCRN := acc.ActivityTrackerInstanceCRN resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -788,7 +835,7 @@ func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_True_ManagementEvents_T CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_activityTracker_Read_True_Write_True_ManagementEvents_True_With_Crn_Invalid(cosServiceName, activityTrackerInstanceCRN, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_activityTracker_With_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, activityTrackerInstanceCRN, readDataEvents, writeDataEvents, managementEvents), ExpectError: regexp.MustCompile("Error Update COS Bucket: Malformed activity tracker CRN"), }, }, @@ -797,13 +844,15 @@ func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_True_ManagementEvents_T //Metrics monitoring test cases: -func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_True_Without_Crn(t *testing.T) { +func TestAccIBMCosBucket_MetricsMonitoring_RequestEnabled_True_UsageEnabled_False_MonitoringCrn_NotSet(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + requestEnabled := true + usageEnabled := false resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -811,7 +860,7 @@ func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_True_Without_Crn(t *te CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_True_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_metricsMonitoring_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, requestEnabled, usageEnabled), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), @@ -826,13 +875,15 @@ func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_True_Without_Crn(t *te }) } -func TestAccIBMCosBucket_MetricsMonitoring_UsageMetrics_True_Without_Crn(t *testing.T) { +func TestAccIBMCosBucket_MetricsMonitoring_RequestEnabled_False_UsageEnabled_True_MonitoringCrn_NotSet(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + requestEnabled := false + usageEnabled := true resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -840,7 +891,7 @@ func TestAccIBMCosBucket_MetricsMonitoring_UsageMetrics_True_Without_Crn(t *test CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_metricsMonitoring_UsageMetrics_True_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_metricsMonitoring_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, requestEnabled, usageEnabled), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), @@ -855,13 +906,15 @@ func TestAccIBMCosBucket_MetricsMonitoring_UsageMetrics_True_Without_Crn(t *test }) } -func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_True_UsageMetrics_True_Without_Crn(t *testing.T) { +func TestAccIBMCosBucket_MetricsMonitoring_RequestEnabled_True_UsageEnabled_True_MonitoringCrn_NotSet(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + requestEnabled := true + usageEnabled := true resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -869,7 +922,7 @@ func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_True_UsageMetrics_True CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_True_UsageMetrics_True_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_metricsMonitoring_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, requestEnabled, usageEnabled), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), @@ -884,13 +937,15 @@ func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_True_UsageMetrics_True }) } -func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_False_UsageMetrics_False_Without_Crn(t *testing.T) { +func TestAccIBMCosBucket_MetricsMonitoring_RequestEnabled_False_UsageEnabled_False_MonitoringCrn_NotSet(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + requestEnabled := false + usageEnabled := false resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -898,7 +953,7 @@ func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_False_UsageMetrics_Fal CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_False_UsageMetrics_False_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_metricsMonitoring_Without_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, requestEnabled, usageEnabled), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), @@ -913,13 +968,15 @@ func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_False_UsageMetrics_Fal }) } -func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_True_With_Crn(t *testing.T) { +func TestAccIBMCosBucket_MetricsMonitoring_RequestEnabled_True_UsageEnabled_False_MonitoringCrn_Set(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + requestEnabled := true + usageEnabled := false metricsMonitoringCrn := acc.MetricsMonitoringCRN resource.Test(t, resource.TestCase{ @@ -928,7 +985,7 @@ func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_True_With_Crn(t *testi CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_True_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_metricsMonitoring_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, bucketRegionType, bucketRegion, bucketClass, requestEnabled, usageEnabled), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), @@ -944,13 +1001,15 @@ func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_True_With_Crn(t *testi }) } -func TestAccIBMCosBucket_MetricsMonitoring_UsageMetrics_True_With_Crn(t *testing.T) { +func TestAccIBMCosBucket_MetricsMonitoring_RequestEnabled_False_UsageEnabled_True_MonitoringCrn_Set(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + requestEnabled := false + usageEnabled := true metricsMonitoringCrn := acc.MetricsMonitoringCRN resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -958,7 +1017,7 @@ func TestAccIBMCosBucket_MetricsMonitoring_UsageMetrics_True_With_Crn(t *testing CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_metricsMonitoring_UsageMetrics_True_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_metricsMonitoring_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, bucketRegionType, bucketRegion, bucketClass, requestEnabled, usageEnabled), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), @@ -974,13 +1033,15 @@ func TestAccIBMCosBucket_MetricsMonitoring_UsageMetrics_True_With_Crn(t *testing }) } -func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_True_UsageMetrics_True_With_Crn(t *testing.T) { +func TestAccIBMCosBucket_MetricsMonitoring_RequestEnabled_True_UsageEnabled_True_MonitoringCrn_Set(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + requestEnabled := true + usageEnabled := true metricsMonitoringCrn := acc.MetricsMonitoringCRN resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -988,7 +1049,7 @@ func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_True_UsageMetrics_True CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_True_UsageMetrics_True_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_metricsMonitoring_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, bucketRegionType, bucketRegion, bucketClass, requestEnabled, usageEnabled), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), @@ -1004,13 +1065,15 @@ func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_True_UsageMetrics_True }) } -func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_False_UsageMetrics_False_With_Crn(t *testing.T) { +func TestAccIBMCosBucket_MetricsMonitoring_RequestEnabled_False_UsageEnabled_False_MonitoringCrn_Set(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) bucketRegion := "us-south" bucketClass := "standard" bucketRegionType := "region_location" + requestEnabled := false + usageEnabled := false metricsMonitoringCrn := acc.MetricsMonitoringCRN resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, @@ -1018,7 +1081,7 @@ func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_False_UsageMetrics_Fal CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_False_UsageMetrics_False_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, bucketRegionType, bucketRegion, bucketClass), + Config: testAccCheckIBMCosBucket_metricsMonitoring_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, bucketRegionType, bucketRegion, bucketClass, requestEnabled, usageEnabled), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckIBMCosBucketExists("ibm_resource_instance.instance2", "ibm_cos_bucket.bucket2", bucketRegionType, bucketRegion, bucketName), resource.TestCheckResourceAttr("ibm_cos_bucket.bucket2", "bucket_name", bucketName), @@ -1034,7 +1097,7 @@ func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_False_UsageMetrics_Fal }) } -func TestAccIBMCosBucket_MetricsMonitoring_Upload_Object_RequestMetrics_True_UsageMetrics_True_With_Crn(t *testing.T) { +func TestAccIBMCosBucket_MetricsMonitoring_Upload_Object_RequestMetrics_True_UsageMetrics_True_MonitoringCrn_Set(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) @@ -1095,7 +1158,7 @@ func TestAccIBMCosBucket_MetricsMonitoring_Upload_Object_RequestMetrics_True_Usa }, }) } -func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_Invalid_UsageMetrics_Invalid_With_Crn(t *testing.T) { +func TestAccIBMCosBucket_MetricsMonitoring_RequestMetrics_Invalid_UsageMetrics_Invalid_MonitoringCrn_Set(t *testing.T) { cosServiceName := fmt.Sprintf("cos_instance_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("tf-bucket%d", acctest.RandIntRange(10, 100)) @@ -2617,85 +2680,9 @@ func testAccCheckIBMCosBucket_updateWithSameName(serviceName string, bucketName `, serviceName, bucketName, storageClass, region) } -func testAccCheckIBMCosBucket_activityTracker_Only_Read_True_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string) string { - - return fmt.Sprintf(` - - data "ibm_resource_group" "cos_group" { - is_default=true - } - resource "ibm_resource_instance" "instance2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "cloud-object-storage" - plan = "standard" - location = "global" - } - resource "ibm_cos_bucket" "bucket2" { - bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance2.id - region_location = "%s" - storage_class = "%s" - activity_tracking { - read_data_events = true - } - } - `, cosServiceName, bucketName, region, storageClass) -} - -func testAccCheckIBMCosBucket_activityTracker_Only_Write_True_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string) string { - - return fmt.Sprintf(` - - data "ibm_resource_group" "cos_group" { - is_default=true - } - resource "ibm_resource_instance" "instance2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "cloud-object-storage" - plan = "standard" - location = "global" - } - resource "ibm_cos_bucket" "bucket2" { - bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance2.id - region_location = "%s" - storage_class = "%s" - activity_tracking { - write_data_events = true - } - } - `, cosServiceName, bucketName, region, storageClass) -} - -func testAccCheckIBMCosBucket_activityTracker_Only_ManagementEvents_True_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string) string { - - return fmt.Sprintf(` - - data "ibm_resource_group" "cos_group" { - is_default=true - } - resource "ibm_resource_instance" "instance2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "cloud-object-storage" - plan = "standard" - location = "global" - } - resource "ibm_cos_bucket" "bucket2" { - bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance2.id - region_location = "%s" - storage_class = "%s" - activity_tracking { - management_events = true - } - } - `, cosServiceName, bucketName, region, storageClass) -} +// f1881 -func testAccCheckIBMCosBucket_activityTracker_Read_True_Write_True_ManagementEvents_False_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string) string { +func testAccCheckIBMCosBucket_activityTracker_Without_Crn(cosServiceName string, bucketName string, regiontype string, region string, storageClass string, readDataEvents bool, writeDataEvents bool, managementEvents bool) string { return fmt.Sprintf(` @@ -2715,14 +2702,15 @@ func testAccCheckIBMCosBucket_activityTracker_Read_True_Write_True_ManagementEve region_location = "%s" storage_class = "%s" activity_tracking { - read_data_events = true - write_data_events = true + read_data_events = %v + write_data_events = %v + management_events = %v } } - `, cosServiceName, bucketName, region, storageClass) + `, cosServiceName, bucketName, region, storageClass, readDataEvents, writeDataEvents, managementEvents) } -func testAccCheckIBMCosBucket_activityTracker_Read_False_Write_False_ManagementEvents_False_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string) string { +func testAccCheckIBMCosBucket_activityTracker_With_Crn(cosServiceName string, bucketName string, regiontype string, region string, storageClass string, activityTrackerCRN string, readDataEvents bool, writeDataEvents bool, managementEvents bool) string { return fmt.Sprintf(` @@ -2742,16 +2730,16 @@ func testAccCheckIBMCosBucket_activityTracker_Read_False_Write_False_ManagementE region_location = "%s" storage_class = "%s" activity_tracking { - read_data_events = false - write_data_events = false - management_events = false - + read_data_events = %v + write_data_events = %v + management_events = %v + activity_tracker_crn = "%s" } } - `, cosServiceName, bucketName, region, storageClass) + `, cosServiceName, bucketName, region, storageClass, readDataEvents, writeDataEvents, managementEvents, activityTrackerCRN) } -func testAccCheckIBMCosBucket_activityTracker_Read_True_ManagementEvents_True_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string) string { +func testAccCheckIBMCosBucket_activityTracker_With_Crn_ManagementEvents_NotSet(cosServiceName string, bucketName string, regiontype string, region string, storageClass string, activityTrackerCRN string, readDataEvents bool, writeDataEvents bool) string { return fmt.Sprintf(` @@ -2771,15 +2759,15 @@ func testAccCheckIBMCosBucket_activityTracker_Read_True_ManagementEvents_True_Wi region_location = "%s" storage_class = "%s" activity_tracking { - read_data_events = true - management_events = true - + read_data_events = %v + write_data_events = %v + activity_tracker_crn = "%s" } } - `, cosServiceName, bucketName, region, storageClass) + `, cosServiceName, bucketName, region, storageClass, readDataEvents, writeDataEvents, activityTrackerCRN) } -func testAccCheckIBMCosBucket_activityTracker_Write_True_ManagementEvents_True_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string) string { +func testAccCheckIBMCosBucket_activityTracker_Read_Invalid_Write_Invalid_ManagementEvents_Invalid_With_Crn(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass string) string { return fmt.Sprintf(` @@ -2799,15 +2787,16 @@ func testAccCheckIBMCosBucket_activityTracker_Write_True_ManagementEvents_True_W region_location = "%s" storage_class = "%s" activity_tracking { - write_data_events = true - management_events = true - + read_data_events = "invalid" + write_data_events = "invalid" + management_events = "invalid" + activity_tracker_crn = "%s" } } - `, cosServiceName, bucketName, region, storageClass) + `, cosServiceName, bucketName, region, storageClass, activityTrackerCRN) } -func testAccCheckIBMCosBucket_activityTracker_Read_True_Write_True_ManagementEvents_True_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string) string { +func testAccCheckIBMCosBucket_Upload_Object_Activity_Tracker_Enabled_With_CRN(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass, key, object_body string) string { return fmt.Sprintf(` @@ -2827,16 +2816,22 @@ func testAccCheckIBMCosBucket_activityTracker_Read_True_Write_True_ManagementEve region_location = "%s" storage_class = "%s" activity_tracking { - read_data_events = true - write_data_events = true - management_events = true - + read_data_events = true + write_data_events = true + management_events = true + activity_tracker_crn = "%s" } - } - `, cosServiceName, bucketName, region, storageClass) + } + resource "ibm_cos_bucket_object" "testacc" { + bucket_crn = ibm_cos_bucket.bucket2.crn + bucket_location = ibm_cos_bucket.bucket2.region_location + key = "%s.txt" + content = "%s" + } + `, cosServiceName, bucketName, region, storageClass, activityTrackerCRN, key, object_body) } -func testAccCheckIBMCosBucket_activityTracker_Read_True_ManagementEvents_Not_Set_With_Crn(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass string) string { +func testAccCheckIBMCosBucket_upload_Object_Activity_Tracker_Enabled_Without_CRN(cosServiceName, bucketName, regiontype, region, storageClass, key, object_body string) string { return fmt.Sprintf(` @@ -2857,13 +2852,20 @@ func testAccCheckIBMCosBucket_activityTracker_Read_True_ManagementEvents_Not_Set storage_class = "%s" activity_tracking { read_data_events = true - activity_tracker_crn = "%s" + write_data_events = true + management_events = true } - } - `, cosServiceName, bucketName, region, storageClass, activityTrackerCRN) + } + resource "ibm_cos_bucket_object" "testacc" { + bucket_crn = ibm_cos_bucket.bucket2.crn + bucket_location = ibm_cos_bucket.bucket2.region_location + key = "%s.txt" + content = "%s" + } + `, cosServiceName, bucketName, region, storageClass, key, object_body) } -func testAccCheckIBMCosBucket_activityTracker_Write_True_ManagementEvents_Not_Set_With_Crn(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass string) string { +func testAccCheckIBMCosBucket_metricsMonitoring_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string, requestMetricsEnabled, usageMetricsEnabled bool) string { return fmt.Sprintf(` @@ -2882,15 +2884,15 @@ func testAccCheckIBMCosBucket_activityTracker_Write_True_ManagementEvents_Not_Se resource_instance_id = ibm_resource_instance.instance2.id region_location = "%s" storage_class = "%s" - activity_tracking { - write_data_events = true - activity_tracker_crn = "%s" + metrics_monitoring { + request_metrics_enabled = %v + usage_metrics_enabled = %v } } - `, cosServiceName, bucketName, region, storageClass, activityTrackerCRN) + `, cosServiceName, bucketName, region, storageClass, requestMetricsEnabled, usageMetricsEnabled) } -func testAccCheckIBMCosBucket_activityTracker_Only_ManagementEvents_True_With_Crn(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass string) string { +func testAccCheckIBMCosBucket_metricsMonitoring_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, regiontype, region, storageClass string, requestMetricsEnabled, usageMetricsEnabled bool) string { return fmt.Sprintf(` @@ -2909,15 +2911,16 @@ func testAccCheckIBMCosBucket_activityTracker_Only_ManagementEvents_True_With_Cr resource_instance_id = ibm_resource_instance.instance2.id region_location = "%s" storage_class = "%s" - activity_tracking { - management_events = true - activity_tracker_crn = "%s" + metrics_monitoring { + request_metrics_enabled = %v + usage_metrics_enabled = %v + metrics_monitoring_crn = "%s" } } - `, cosServiceName, bucketName, region, storageClass, activityTrackerCRN) + `, cosServiceName, bucketName, region, storageClass, requestMetricsEnabled, usageMetricsEnabled, metricsMonitoringCrn) } -func testAccCheckIBMCosBucket_activityTracker_Read_True_Write_True_ManagementEvents_Not_Set_With_Crn(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass string) string { +func testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_Invalid_UsageMetrics_Invalid_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, regiontype, region, storageClass string) string { return fmt.Sprintf(` @@ -2936,16 +2939,16 @@ func testAccCheckIBMCosBucket_activityTracker_Read_True_Write_True_ManagementEve resource_instance_id = ibm_resource_instance.instance2.id region_location = "%s" storage_class = "%s" - activity_tracking { - read_data_events = true - write_data_events = true - activity_tracker_crn = "%s" + metrics_monitoring { + usage_metrics_enabled = "invalid" + request_metrics_enabled = "invalid" + metrics_monitoring_crn = "%s" } } - `, cosServiceName, bucketName, region, storageClass, activityTrackerCRN) + `, cosServiceName, bucketName, region, storageClass, metricsMonitoringCrn) } -func testAccCheckIBMCosBucket_activityTracker_Read_False_Write_False_ManagementEvents_Not_Set_With_Crn(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass string) string { +func testAccCheckIBMCosBucket_metricsMonitoring_Crn_Invalid(cosServiceName, metricsMonitoringCrn, bucketName, regiontype, region, storageClass string) string { return fmt.Sprintf(` @@ -2964,16 +2967,16 @@ func testAccCheckIBMCosBucket_activityTracker_Read_False_Write_False_ManagementE resource_instance_id = ibm_resource_instance.instance2.id region_location = "%s" storage_class = "%s" - activity_tracking { - read_data_events = false - write_data_events = false - activity_tracker_crn = "%s" + metrics_monitoring { + usage_metrics_enabled = true + request_metrics_enabled = true + metrics_monitoring_crn = "invalid" } } - `, cosServiceName, bucketName, region, storageClass, activityTrackerCRN) + `, cosServiceName, bucketName, region, storageClass) } -func testAccCheckIBMCosBucket_activityTracker_Read_False_Write_False_ManagementEvents_False_With_Crn(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass string) string { +func testAccCheckIBMCosBucket_metricsMonitoring_Upload_Object_RequestMetrics_True_UsageMetrics_True_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, regiontype, region, storageClass, key, objectBody string) string { return fmt.Sprintf(` @@ -2992,17 +2995,22 @@ func testAccCheckIBMCosBucket_activityTracker_Read_False_Write_False_ManagementE resource_instance_id = ibm_resource_instance.instance2.id region_location = "%s" storage_class = "%s" - activity_tracking { - read_data_events = false - write_data_events = false - management_events = false - activity_tracker_crn = "%s" + metrics_monitoring { + usage_metrics_enabled = true + request_metrics_enabled = true + metrics_monitoring_crn = "%s" } } - `, cosServiceName, bucketName, region, storageClass, activityTrackerCRN) + resource "ibm_cos_bucket_object" "testacc" { + bucket_crn = ibm_cos_bucket.bucket2.crn + bucket_location = ibm_cos_bucket.bucket2.region_location + key = "%s.txt" + content = "%s" + } + `, cosServiceName, bucketName, region, storageClass, metricsMonitoringCrn, key, objectBody) } -func testAccCheckIBMCosBucket_activityTracker_Read_True_Write_True_ManagementEvents_True_With_Crn_Invalid(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass string) string { +func testAccCheckIBMCosBucket_metricsMonitoring_Upload_Object_RequestMetrics_True_UsageMetrics_True_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass, key, objectBody string) string { return fmt.Sprintf(` @@ -3021,540 +3029,23 @@ func testAccCheckIBMCosBucket_activityTracker_Read_True_Write_True_ManagementEve resource_instance_id = ibm_resource_instance.instance2.id region_location = "%s" storage_class = "%s" - activity_tracking { - read_data_events = true - write_data_events = true - management_events = true - activity_tracker_crn = "invalid" + metrics_monitoring { + usage_metrics_enabled = true + request_metrics_enabled = true } } - `, cosServiceName, bucketName, region, storageClass) + resource "ibm_cos_bucket_object" "testacc" { + bucket_crn = ibm_cos_bucket.bucket2.crn + bucket_location = ibm_cos_bucket.bucket2.region_location + key = "%s.txt" + content = "%s" + } + `, cosServiceName, bucketName, region, storageClass, key, objectBody) } -func testAccCheckIBMCosBucket_activityTracker_Read_Invalid_Write_Invalid_ManagementEvents_Invalid_With_Crn(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass string) string { +// func testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_New_Instance(cosServiceName, metricsMonitoringName, bucketName, regiontype, region, storageClass string) string { - return fmt.Sprintf(` - - data "ibm_resource_group" "cos_group" { - is_default=true - } - resource "ibm_resource_instance" "instance2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "cloud-object-storage" - plan = "standard" - location = "global" - } - resource "ibm_cos_bucket" "bucket2" { - bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance2.id - region_location = "%s" - storage_class = "%s" - activity_tracking { - read_data_events = "invalid" - write_data_events = "invalid" - management_events = "invalid" - activity_tracker_crn = "%s" - } - } - `, cosServiceName, bucketName, region, storageClass, activityTrackerCRN) -} - -func testAccCheckIBMCosBucket_activityTracker_Read_True_ManagementEvents_True_With_Crn(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass string) string { - - return fmt.Sprintf(` - - data "ibm_resource_group" "cos_group" { - is_default=true - } - resource "ibm_resource_instance" "instance2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "cloud-object-storage" - plan = "standard" - location = "global" - } - resource "ibm_cos_bucket" "bucket2" { - bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance2.id - region_location = "%s" - storage_class = "%s" - activity_tracking { - read_data_events = true - management_events = true - activity_tracker_crn = "%s" - } - } - `, cosServiceName, bucketName, region, storageClass, activityTrackerCRN) -} - -func testAccCheckIBMCosBucket_activityTracker_Write_True_ManagementEvents_True_With_Crn(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass string) string { - - return fmt.Sprintf(` - - data "ibm_resource_group" "cos_group" { - is_default=true - } - resource "ibm_resource_instance" "instance2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "cloud-object-storage" - plan = "standard" - location = "global" - } - resource "ibm_cos_bucket" "bucket2" { - bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance2.id - region_location = "%s" - storage_class = "%s" - activity_tracking { - write_data_events = true - management_events = true - activity_tracker_crn = "%s" - } - } - `, cosServiceName, bucketName, region, storageClass, activityTrackerCRN) -} - -func testAccCheckIBMCosBucket_activityTracker_Read_True_Write_True_ManagementEvents_True_With_Crn(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass string) string { - - return fmt.Sprintf(` - - data "ibm_resource_group" "cos_group" { - is_default=true - } - resource "ibm_resource_instance" "instance2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "cloud-object-storage" - plan = "standard" - location = "global" - } - resource "ibm_cos_bucket" "bucket2" { - bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance2.id - region_location = "%s" - storage_class = "%s" - activity_tracking { - read_data_events = true - write_data_events = true - management_events = true - activity_tracker_crn = "%s" - } - } - `, cosServiceName, bucketName, region, storageClass, activityTrackerCRN) -} - -func testAccCheckIBMCosBucket_Upload_Object_Activity_Tracker_Enabled_With_CRN(cosServiceName, activityTrackerCRN, bucketName, regiontype, region, storageClass, key, object_body string) string { - - return fmt.Sprintf(` - - data "ibm_resource_group" "cos_group" { - is_default=true - } - resource "ibm_resource_instance" "instance2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "cloud-object-storage" - plan = "standard" - location = "global" - } - resource "ibm_cos_bucket" "bucket2" { - bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance2.id - region_location = "%s" - storage_class = "%s" - activity_tracking { - read_data_events = true - write_data_events = true - management_events = true - activity_tracker_crn = "%s" - } - } - resource "ibm_cos_bucket_object" "testacc" { - bucket_crn = ibm_cos_bucket.bucket2.crn - bucket_location = ibm_cos_bucket.bucket2.region_location - key = "%s.txt" - content = "%s" - } - `, cosServiceName, bucketName, region, storageClass, activityTrackerCRN, key, object_body) -} - -func testAccCheckIBMCosBucket_upload_Object_Activity_Tracker_Enabled_Without_CRN(cosServiceName, bucketName, regiontype, region, storageClass, key, object_body string) string { - - return fmt.Sprintf(` - - data "ibm_resource_group" "cos_group" { - is_default=true - } - resource "ibm_resource_instance" "instance2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "cloud-object-storage" - plan = "standard" - location = "global" - } - resource "ibm_cos_bucket" "bucket2" { - bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance2.id - region_location = "%s" - storage_class = "%s" - activity_tracking { - read_data_events = true - write_data_events = true - management_events = true - } - } - resource "ibm_cos_bucket_object" "testacc" { - bucket_crn = ibm_cos_bucket.bucket2.crn - bucket_location = ibm_cos_bucket.bucket2.region_location - key = "%s.txt" - content = "%s" - } - `, cosServiceName, bucketName, region, storageClass, key, object_body) -} - -func testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_True_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string) string { - - return fmt.Sprintf(` - - data "ibm_resource_group" "cos_group" { - is_default=true - } - resource "ibm_resource_instance" "instance2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "cloud-object-storage" - plan = "standard" - location = "global" - } - resource "ibm_cos_bucket" "bucket2" { - bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance2.id - region_location = "%s" - storage_class = "%s" - metrics_monitoring { - request_metrics_enabled = true - } - } - `, cosServiceName, bucketName, region, storageClass) -} - -func testAccCheckIBMCosBucket_metricsMonitoring_UsageMetrics_True_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string) string { - - return fmt.Sprintf(` - - data "ibm_resource_group" "cos_group" { - is_default=true - } - resource "ibm_resource_instance" "instance2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "cloud-object-storage" - plan = "standard" - location = "global" - } - resource "ibm_cos_bucket" "bucket2" { - bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance2.id - region_location = "%s" - storage_class = "%s" - metrics_monitoring { - usage_metrics_enabled = true - } - } - `, cosServiceName, bucketName, region, storageClass) -} - -func testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_True_UsageMetrics_True_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string) string { - - return fmt.Sprintf(` - - data "ibm_resource_group" "cos_group" { - is_default=true - } - resource "ibm_resource_instance" "instance2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "cloud-object-storage" - plan = "standard" - location = "global" - } - resource "ibm_cos_bucket" "bucket2" { - bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance2.id - region_location = "%s" - storage_class = "%s" - metrics_monitoring { - usage_metrics_enabled = true - request_metrics_enabled = true - } - } - `, cosServiceName, bucketName, region, storageClass) -} - -func testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_False_UsageMetrics_False_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass string) string { - - return fmt.Sprintf(` - - data "ibm_resource_group" "cos_group" { - is_default=true - } - resource "ibm_resource_instance" "instance2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "cloud-object-storage" - plan = "standard" - location = "global" - } - resource "ibm_cos_bucket" "bucket2" { - bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance2.id - region_location = "%s" - storage_class = "%s" - metrics_monitoring { - usage_metrics_enabled = false - request_metrics_enabled = false - } - } - `, cosServiceName, bucketName, region, storageClass) -} - -func testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_True_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, regiontype, region, storageClass string) string { - - return fmt.Sprintf(` - - data "ibm_resource_group" "cos_group" { - is_default=true - } - resource "ibm_resource_instance" "instance2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "cloud-object-storage" - plan = "standard" - location = "global" - } - resource "ibm_cos_bucket" "bucket2" { - bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance2.id - region_location = "%s" - storage_class = "%s" - metrics_monitoring { - request_metrics_enabled = true - metrics_monitoring_crn = "%s" - } - } - `, cosServiceName, bucketName, region, storageClass, metricsMonitoringCrn) -} - -func testAccCheckIBMCosBucket_metricsMonitoring_UsageMetrics_True_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, regiontype, region, storageClass string) string { - - return fmt.Sprintf(` - - data "ibm_resource_group" "cos_group" { - is_default=true - } - resource "ibm_resource_instance" "instance2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "cloud-object-storage" - plan = "standard" - location = "global" - } - resource "ibm_cos_bucket" "bucket2" { - bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance2.id - region_location = "%s" - storage_class = "%s" - metrics_monitoring { - usage_metrics_enabled = true - metrics_monitoring_crn = "%s" - } - } - `, cosServiceName, bucketName, region, storageClass, metricsMonitoringCrn) -} - -func testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_True_UsageMetrics_True_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, regiontype, region, storageClass string) string { - - return fmt.Sprintf(` - - data "ibm_resource_group" "cos_group" { - is_default=true - } - resource "ibm_resource_instance" "instance2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "cloud-object-storage" - plan = "standard" - location = "global" - } - resource "ibm_cos_bucket" "bucket2" { - bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance2.id - region_location = "%s" - storage_class = "%s" - metrics_monitoring { - usage_metrics_enabled = true - request_metrics_enabled = true - metrics_monitoring_crn = "%s" - } - } - `, cosServiceName, bucketName, region, storageClass, metricsMonitoringCrn) -} - -func testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_Invalid_UsageMetrics_Invalid_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, regiontype, region, storageClass string) string { - - return fmt.Sprintf(` - - data "ibm_resource_group" "cos_group" { - is_default=true - } - resource "ibm_resource_instance" "instance2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "cloud-object-storage" - plan = "standard" - location = "global" - } - resource "ibm_cos_bucket" "bucket2" { - bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance2.id - region_location = "%s" - storage_class = "%s" - metrics_monitoring { - usage_metrics_enabled = "invalid" - request_metrics_enabled = "invalid" - metrics_monitoring_crn = "%s" - } - } - `, cosServiceName, bucketName, region, storageClass, metricsMonitoringCrn) -} - -func testAccCheckIBMCosBucket_metricsMonitoring_Crn_Invalid(cosServiceName, metricsMonitoringCrn, bucketName, regiontype, region, storageClass string) string { - - return fmt.Sprintf(` - - data "ibm_resource_group" "cos_group" { - is_default=true - } - resource "ibm_resource_instance" "instance2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "cloud-object-storage" - plan = "standard" - location = "global" - } - resource "ibm_cos_bucket" "bucket2" { - bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance2.id - region_location = "%s" - storage_class = "%s" - metrics_monitoring { - usage_metrics_enabled = true - request_metrics_enabled = true - metrics_monitoring_crn = "invalid" - } - } - `, cosServiceName, bucketName, region, storageClass) -} -func testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_False_UsageMetrics_False_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, regiontype, region, storageClass string) string { - - return fmt.Sprintf(` - - data "ibm_resource_group" "cos_group" { - is_default=true - } - resource "ibm_resource_instance" "instance2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "cloud-object-storage" - plan = "standard" - location = "global" - } - resource "ibm_cos_bucket" "bucket2" { - bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance2.id - region_location = "%s" - storage_class = "%s" - metrics_monitoring { - usage_metrics_enabled = false - request_metrics_enabled = false - metrics_monitoring_crn = "%s" - } - } - `, cosServiceName, bucketName, region, storageClass, metricsMonitoringCrn) -} - -func testAccCheckIBMCosBucket_metricsMonitoring_Upload_Object_RequestMetrics_True_UsageMetrics_True_With_Crn(cosServiceName, metricsMonitoringCrn, bucketName, regiontype, region, storageClass, key, objectBody string) string { - - return fmt.Sprintf(` - - data "ibm_resource_group" "cos_group" { - is_default=true - } - resource "ibm_resource_instance" "instance2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "cloud-object-storage" - plan = "standard" - location = "global" - } - resource "ibm_cos_bucket" "bucket2" { - bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance2.id - region_location = "%s" - storage_class = "%s" - metrics_monitoring { - usage_metrics_enabled = true - request_metrics_enabled = true - metrics_monitoring_crn = "%s" - } - } - resource "ibm_cos_bucket_object" "testacc" { - bucket_crn = ibm_cos_bucket.bucket2.crn - bucket_location = ibm_cos_bucket.bucket2.region_location - key = "%s.txt" - content = "%s" - } - `, cosServiceName, bucketName, region, storageClass, metricsMonitoringCrn, key, objectBody) -} - -func testAccCheckIBMCosBucket_metricsMonitoring_Upload_Object_RequestMetrics_True_UsageMetrics_True_Without_Crn(cosServiceName, bucketName, regiontype, region, storageClass, key, objectBody string) string { - - return fmt.Sprintf(` - - data "ibm_resource_group" "cos_group" { - is_default=true - } - resource "ibm_resource_instance" "instance2" { - name = "%s" - resource_group_id = data.ibm_resource_group.cos_group.id - service = "cloud-object-storage" - plan = "standard" - location = "global" - } - resource "ibm_cos_bucket" "bucket2" { - bucket_name = "%s" - resource_instance_id = ibm_resource_instance.instance2.id - region_location = "%s" - storage_class = "%s" - metrics_monitoring { - usage_metrics_enabled = true - request_metrics_enabled = true - } - } - resource "ibm_cos_bucket_object" "testacc" { - bucket_crn = ibm_cos_bucket.bucket2.crn - bucket_location = ibm_cos_bucket.bucket2.region_location - key = "%s.txt" - content = "%s" - } - `, cosServiceName, bucketName, region, storageClass, key, objectBody) -} - -// func testAccCheckIBMCosBucket_metricsMonitoring_RequestMetrics_New_Instance(cosServiceName, metricsMonitoringName, bucketName, regiontype, region, storageClass string) string { - -// return fmt.Sprintf(` +// return fmt.Sprintf(` // data "ibm_resource_group" "cos_group" { // is_default=true @@ -3589,7 +3080,7 @@ func testAccCheckIBMCosBucket_metricsMonitoring_Upload_Object_RequestMetrics_Tru // } // `, cosServiceName, metricsMonitoringName, bucketName, region, storageClass) // } - +// f1881 end func testAccCheckIBMCosBucket_archive(cosServiceName string, bucketName string, regiontype string, region string, storageClass string, ruleId string, enable bool, archiveDays int, ruleType string) string { return fmt.Sprintf(` From 382defdf6d2893b8cdbc430626c574d540dd6367 Mon Sep 17 00:00:00 2001 From: Diksha Mali Date: Mon, 29 Apr 2024 16:26:36 +0530 Subject: [PATCH 05/22] Making corrections in existing documentation for activity tracker --- examples/ibm-cos-bucket/README.md | 6 +++--- website/docs/d/cos_bucket.html.markdown | 2 +- website/docs/r/cos_bucket.html.markdown | 14 ++++++++++---- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/examples/ibm-cos-bucket/README.md b/examples/ibm-cos-bucket/README.md index 33b13e6711a..22ae10df1e7 100644 --- a/examples/ibm-cos-bucket/README.md +++ b/examples/ibm-cos-bucket/README.md @@ -530,13 +530,13 @@ resource ibm_cos_bucket_website_configuration "website_configuration" { | satellite_location_id | satellite location. | `string` | no | | storage | The storage class that you want to use for the bucket. Supported values are **standard, vault, cold, flex, and smart**.| `string` | no | | region | The location for a cross-regional bucket. Supported values are **us, eu, and ap**. | `string` | no | -| read_data_events | Enables sending log data to Activity Tracker and LogDNA to provide visibility into object read and write events. | `array` | no +| read_data_events | Enables sending log data to Activity Tracker and LogDNA to provide visibility into object read and write events. | `bool` | no | write_data_events | All object write events (i.e. uploads) will be sent to Activity Tracker. | `bool` | no | management_events | All the bucket management events will will be sent to Activity Tracker. | `bool` | no -| activity_tracker_crn | Required the first time activity_tracking is configured. | `string` | no +| activity_tracker_crn | When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the ATracker Router service configuration.If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. | `string` | no | usage_metrics_enabled | Specify **true or false** to set usage metrics (i.e. bytes_used). | `bool` | no | request_metrics_enabled | Specify true or false to set cos request metrics (i.e. get, put, or post request). | `bool` | no -| metrics_monitoring_crn | Required the first time metrics_monitoring is configured. The instance of IBM Cloud Monitoring that will receive the bucket metrics. | `string` | no +| metrics_monitoring_crn | When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration.If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified. | `string` | no | regional_loc | The location for a regional bucket. Supported values are **au-syd, eu-de, eu-gb, jp-tok, us-east, or us-south**. | `string` | no | type | Specifies the archive type to which you want the object to transition. Supported values are **Glacier or Accelerated**. | `string` |yes | rule_id | Unique identifier for the rule. | `string` | no diff --git a/website/docs/d/cos_bucket.html.markdown b/website/docs/d/cos_bucket.html.markdown index 105647dfcdc..81bd829910d 100644 --- a/website/docs/d/cos_bucket.html.markdown +++ b/website/docs/d/cos_bucket.html.markdown @@ -141,7 +141,7 @@ In addition to all argument reference list, you can access the following attribu - `activity_tracker_crn` - (String) If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. **Note:** When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the ATracker Router service configuration. - - `read_data_events` - (Array) Enables sending log data to Activity Tracker to provide visibility into an object read and write events. + - `read_data_events` - (Bool) Enables sending log data to Activity Tracker to provide visibility into an object read and write events. - `write_data_events`- (Bool) If set to **true**, all object write events (that is `uploads`) is sent to Activity Tracker. - `management_events`- (Bool) If set to **true**, all the bucket management events are sent to Activity Tracker. **Note:** diff --git a/website/docs/r/cos_bucket.html.markdown b/website/docs/r/cos_bucket.html.markdown index 161e5087353..a78aea0f2a2 100644 --- a/website/docs/r/cos_bucket.html.markdown +++ b/website/docs/r/cos_bucket.html.markdown @@ -455,11 +455,15 @@ Review the argument references that you can specify for your resource. Nested scheme for `activity_tracking`: - `activity_tracker_crn`- (Optional, String) The CRN of your IBM Cloud Activity Tracker service instance. If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. + + **Note:** - When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the ATracker Router service configuration.. - - `read_data_events`- (Required, Bool) If set to **true**, all read events against a bucket are sent to your IBM Cloud Activity Tracker service instance. - - `write_data_events`- (Required, Bool) If set to **true**, all write events against a bucket are sent to your IBM Cloud Activity Tracker service instance. - - `management_events`- (Required, Bool) If set to **true**, all the bucket management events are sent to Activity Tracker. + When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the ATracker Router service configuration. + - `read_data_events`- (Optional, Bool) If set to **true**, all read events against a bucket are sent to your IBM Cloud Activity Tracker service instance. + - `write_data_events`- (Optional, Bool) If set to **true**, all write events against a bucket are sent to your IBM Cloud Activity Tracker service instance. + - `management_events`- (Optional, Bool) This field only applies if `activity_tracker_crn` is not populated. If set to `true`, all bucket management events will be sent to Activity Tracker. + + **Note:** `management_events` field only applies if `activity_tracker_crn` is not populated. - `archive_rule` - (Required, List) Nested archive_rule block has following structure. @@ -505,6 +509,8 @@ Review the argument references that you can specify for your resource. Nested scheme for `metrics_monitoring`: - `metrics_monitoring_crn` - (Optional, string) If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified. + + **Note:** When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration.. - `request_metrics_enabled` : (Optional, Bool) If set to **true**, all request metrics `ibm_cos_bucket_all_request` is sent to the monitoring service `@1mins` granulatiy. From b9137c0603706596ad8e5241c8adad6caa8b4d62 Mon Sep 17 00:00:00 2001 From: Diksha Mali Date: Mon, 29 Apr 2024 16:30:29 +0530 Subject: [PATCH 06/22] Making corrections in existing documentation for f1881 --- website/docs/d/cos_bucket.html.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/website/docs/d/cos_bucket.html.markdown b/website/docs/d/cos_bucket.html.markdown index 81bd829910d..910654a6d33 100644 --- a/website/docs/d/cos_bucket.html.markdown +++ b/website/docs/d/cos_bucket.html.markdown @@ -139,11 +139,15 @@ In addition to all argument reference list, you can access the following attribu Nested scheme for `activity_tracking`: - `activity_tracker_crn` - (String) If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. + + **Note:** When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the ATracker Router service configuration. - `read_data_events` - (Bool) Enables sending log data to Activity Tracker to provide visibility into an object read and write events. - `write_data_events`- (Bool) If set to **true**, all object write events (that is `uploads`) is sent to Activity Tracker. - `management_events`- (Bool) If set to **true**, all the bucket management events are sent to Activity Tracker. + + **Note:** `management_events` field only applies if `activity_tracker_crn` is not populated. - `archive_rule` (List) Nested block with the following structure. @@ -182,6 +186,8 @@ In addition to all argument reference list, you can access the following attribu Nested scheme for `metrics_monitoring`: - `metrics_monitoring_crn` - (String) If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified. + + **Note:** When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration. - `request_metrics_enabled` - (Bool) If set to `true`, all request metrics `ibm_cos_bucket_all_request` is sent to the monitoring service at 1 minute (`@1mins`) granularity. From cedb962c215257c59ebc46cf2cfd2e6e2e08cd8d Mon Sep 17 00:00:00 2001 From: Diksha Mali Date: Mon, 13 May 2024 13:57:28 +0530 Subject: [PATCH 07/22] Addressing the review comments for documentation --- examples/ibm-cos-bucket/README.md | 4 ++-- examples/ibm-cos-bucket/main.tf | 13 ++++++++++- ibm/service/cos/resource_ibm_cos_bucket.go | 2 +- website/docs/d/cos_bucket.html.markdown | 4 ++-- website/docs/r/cos_bucket.html.markdown | 25 +++++++++------------- 5 files changed, 27 insertions(+), 21 deletions(-) diff --git a/examples/ibm-cos-bucket/README.md b/examples/ibm-cos-bucket/README.md index 22ae10df1e7..4156f15dcfe 100644 --- a/examples/ibm-cos-bucket/README.md +++ b/examples/ibm-cos-bucket/README.md @@ -532,8 +532,8 @@ resource ibm_cos_bucket_website_configuration "website_configuration" { | region | The location for a cross-regional bucket. Supported values are **us, eu, and ap**. | `string` | no | | read_data_events | Enables sending log data to Activity Tracker and LogDNA to provide visibility into object read and write events. | `bool` | no | write_data_events | All object write events (i.e. uploads) will be sent to Activity Tracker. | `bool` | no -| management_events | All the bucket management events will will be sent to Activity Tracker. | `bool` | no -| activity_tracker_crn | When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the ATracker Router service configuration.If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. | `string` | no +| management_events | All the bucket management events will be sent to Activity Tracker.This field only applies if `activity_tracker_crn` is not populated | `bool` | no +| activity_tracker_crn | (Recommended)When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Router service configuration.(Legacy)If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. | `string` | no | usage_metrics_enabled | Specify **true or false** to set usage metrics (i.e. bytes_used). | `bool` | no | request_metrics_enabled | Specify true or false to set cos request metrics (i.e. get, put, or post request). | `bool` | no | metrics_monitoring_crn | When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration.If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified. | `string` | no diff --git a/examples/ibm-cos-bucket/main.tf b/examples/ibm-cos-bucket/main.tf index 95ba2a53046..e0211b01000 100644 --- a/examples/ibm-cos-bucket/main.tf +++ b/examples/ibm-cos-bucket/main.tf @@ -35,7 +35,6 @@ resource "ibm_cos_bucket" "standard-ams03" { read_data_events = true write_data_events = true management_events = true - activity_tracker_crn = ibm_resource_instance.activity_tracker.id } metrics_monitoring { usage_metrics_enabled = true @@ -45,6 +44,18 @@ resource "ibm_cos_bucket" "standard-ams03" { allowed_ip = ["223.196.168.27", "223.196.161.38", "192.168.0.1"] } +// Activity tracker with activity_tracker_crn - Legacy +resource "ibm_cos_bucket" "activity_tracker_crn_cos" { + bucket_name = var.bucket_name + resource_instance_id = ibm_resource_instance.cos_instance.id + single_site_location = var.single_site_loc + storage_class = var.standard_storage_class + activity_tracking { + read_data_events = true + write_data_events = true + activity_tracker_crn = ibm_resource_instance.activity_tracker.id + } +} resource "ibm_cos_bucket" "lifecycle_rule_cos" { bucket_name = var.bucket_name resource_instance_id = ibm_resource_instance.cos_instance.id diff --git a/ibm/service/cos/resource_ibm_cos_bucket.go b/ibm/service/cos/resource_ibm_cos_bucket.go index ad1283f33e5..3eef1a30d23 100644 --- a/ibm/service/cos/resource_ibm_cos_bucket.go +++ b/ibm/service/cos/resource_ibm_cos_bucket.go @@ -209,7 +209,7 @@ func ResourceIBMCOSBucket() *schema.Resource { "activity_tracker_crn": { Type: schema.TypeString, Optional: true, - Description: "When the activity_tracker_crn is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the ATracker Router service configuration. If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled", + Description: "When the activity_tracker_crn is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Router service configuration. If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled", }, }, }, diff --git a/website/docs/d/cos_bucket.html.markdown b/website/docs/d/cos_bucket.html.markdown index 910654a6d33..14b3db2a523 100644 --- a/website/docs/d/cos_bucket.html.markdown +++ b/website/docs/d/cos_bucket.html.markdown @@ -138,11 +138,11 @@ In addition to all argument reference list, you can access the following attribu - `activity_tracking` (List) Nested block with the following structure. Nested scheme for `activity_tracking`: - - `activity_tracker_crn` - (String) If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. + - `activity_tracker_crn` - (String) (Legacy)If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. **Note:** - When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the ATracker Router service configuration. + (Recommended)When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Router service configuration. - `read_data_events` - (Bool) Enables sending log data to Activity Tracker to provide visibility into an object read and write events. - `write_data_events`- (Bool) If set to **true**, all object write events (that is `uploads`) is sent to Activity Tracker. - `management_events`- (Bool) If set to **true**, all the bucket management events are sent to Activity Tracker. diff --git a/website/docs/r/cos_bucket.html.markdown b/website/docs/r/cos_bucket.html.markdown index a78aea0f2a2..0012f63fe96 100644 --- a/website/docs/r/cos_bucket.html.markdown +++ b/website/docs/r/cos_bucket.html.markdown @@ -451,21 +451,16 @@ Review the argument references that you can specify for your resource. - `prefix` - (Optional, String) A rule with a prefix will only apply to the objects that match. You can use multiple rules for different actions for different prefixes within the same bucket. - `rule_id` - (Optional, String) Unique identifier for the rule. Rules allow you to set a specific time frame after which objects are deleted. Set Rule ID for cos bucket. - `allowed_ip` - (Optional, Array of string) A list of IPv4 or IPv6 addresses in CIDR notation that you want to allow access to your IBM Cloud Object Storage bucket. -- `activity_tracking`- (List of objects) Object to enable auditing with IBM Cloud Activity Tracker - Optional - Configure your IBM Cloud Activity Tracker service instance and the type of events that you want to send to your service to audit activity against your bucket. For a list of supported actions, see [Bucket actions](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-at-events#at-actions-mngt-2). +- `activity_tracking`- (Object) Object to enable auditing with IBM Cloud Activity Tracker - Optional - Configure your IBM Cloud Activity Tracker service instance and the type of events that you want to send to your service to audit activity against your bucket. For a list of supported actions, see [Bucket actions](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-at-events#at-actions-mngt-2). Nested scheme for `activity_tracking`: - - `activity_tracker_crn`- (Optional, String) The CRN of your IBM Cloud Activity Tracker service instance. If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. - - - **Note:** - When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the ATracker Router service configuration. + - `activity_tracker_crn`- (Optional, String) The CRN of your IBM Cloud Activity Tracker service instance. (Legacy)If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. + **Note:** + (Recommended)When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Router service configuration. - `read_data_events`- (Optional, Bool) If set to **true**, all read events against a bucket are sent to your IBM Cloud Activity Tracker service instance. - `write_data_events`- (Optional, Bool) If set to **true**, all write events against a bucket are sent to your IBM Cloud Activity Tracker service instance. - `management_events`- (Optional, Bool) This field only applies if `activity_tracker_crn` is not populated. If set to `true`, all bucket management events will be sent to Activity Tracker. - - **Note:** - `management_events` field only applies if `activity_tracker_crn` is not populated. - `archive_rule` - (Required, List) Nested archive_rule block has following structure. Nested scheme for `archive_rule`: @@ -508,17 +503,17 @@ Review the argument references that you can specify for your resource. - `metrics_monitoring`- (Object) to enable metrics tracking with IBM Cloud Monitoring - Optional- Set up your IBM Cloud Monitoring service instance to receive metrics for your IBM Cloud Object Storage bucket. Nested scheme for `metrics_monitoring`: - - `metrics_monitoring_crn` - (Optional, string) If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified. - - + - `metrics_monitoring_crn` - (Optional, string) If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified(Legacy). **Note:** - When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration.. - - `request_metrics_enabled` : (Optional, Bool) If set to **true**, all request metrics `ibm_cos_bucket_all_request` is sent to the monitoring service `@1mins` granulatiy. - - `usage_metrics_enabled` : (Optional, Bool) If set to **true**, all usage metrics that is `bytes_used` is sent to the monitoring service.e. + (Recommended)When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration. + + - `request_metrics_enabled` : (Optional, Bool) If set to **true**, all request metrics (eg: `ibm_cos_bucket_all_request`) are sent to the monitoring service at a 1 min granularity. + - `usage_metrics_enabled` : (Optional, Bool) If set to **true**, all usage metrics (eg: `bytes_used`) are sent to the monitoring service.Usage metrics are sent to the monitoring services every 24 hours **Note:** - Request metrics are supported in all regions and console has the support. For more details check the [cloud documention](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-mm-cos-integration). - One of the location option must be present. + - `noncurrent_version_expiration` - (Required, List) lifecycle has a versioning related expiration action: non-current version expiration. This can remove old versions of objects after they've been non-current for a specified number of days which is specified with a NoncurrentDays parameter on the rule. see [lifecycle actions](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-versioning). Nested noncurrent_version_expiration block has following structure. Nested scheme for `noncurrent_version_expiration`: From fdc6d749ddc4a2eca7fcc9c25916ad637c84a1ae Mon Sep 17 00:00:00 2001 From: Diksha Mali Date: Mon, 13 May 2024 14:03:47 +0530 Subject: [PATCH 08/22] Adding the example in the documentation --- examples/ibm-cos-bucket/README.md | 26 ++++++++++++++++++------- website/docs/r/cos_bucket.html.markdown | 16 ++++++++++++--- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/examples/ibm-cos-bucket/README.md b/examples/ibm-cos-bucket/README.md index 4156f15dcfe..3b58fabe1fc 100644 --- a/examples/ibm-cos-bucket/README.md +++ b/examples/ibm-cos-bucket/README.md @@ -52,23 +52,35 @@ resource "ibm_resource_instance" "metrics_monitor" { } } resource "ibm_cos_bucket" "standard-ams03" { - bucket_name = var.bucket_name - resource_instance_id = ibm_resource_instance.cos_instance.id - single_site_location = "sjc04" - #cross_region_location = var.region - storage_class = var.storage + bucket_name = var.bucket_name + resource_instance_id = ibm_resource_instance.cos_instance.id + single_site_location = var.single_site_loc + storage_class = var.standard_storage_class + hard_quota = var.quota activity_tracking { read_data_events = true write_data_events = true management_events = true - activity_tracker_crn = ibm_resource_instance.activity_tracker.id } metrics_monitoring { usage_metrics_enabled = true request_metrics_enabled = true metrics_monitoring_crn = ibm_resource_instance.metrics_monitor.id } - allowed_ip = ["223.196.168.27","223.196.161.38","192.168.0.1"] + allowed_ip = ["223.196.168.27", "223.196.161.38", "192.168.0.1"] +} + +// Activity tracker with activity_tracker_crn - Legacy +resource "ibm_cos_bucket" "activity_tracker_crn_cos" { + bucket_name = var.bucket_name + resource_instance_id = ibm_resource_instance.cos_instance.id + single_site_location = var.single_site_loc + storage_class = var.standard_storage_class + activity_tracking { + read_data_events = true + write_data_events = true + activity_tracker_crn = ibm_resource_instance.activity_tracker.id + } } resource "ibm_cos_bucket" "archive_expire_rule_cos" { diff --git a/website/docs/r/cos_bucket.html.markdown b/website/docs/r/cos_bucket.html.markdown index 0012f63fe96..c07f5c433f1 100644 --- a/website/docs/r/cos_bucket.html.markdown +++ b/website/docs/r/cos_bucket.html.markdown @@ -76,7 +76,6 @@ resource "ibm_cos_bucket" "standard-ams03-firewall" { read_data_events = true write_data_events = true management_events = true - activity_tracker_crn = ibm_resource_instance.activity_tracker.id } metrics_monitoring { usage_metrics_enabled = true @@ -95,7 +94,6 @@ resource "ibm_cos_bucket" "smart-us-south-firewall" { read_data_events = true write_data_events = true management_events = true - activity_tracker_crn = ibm_resource_instance.activity_tracker.id } metrics_monitoring { usage_metrics_enabled = true @@ -114,7 +112,6 @@ resource "ibm_cos_bucket" "cold-ap-firewall" { read_data_events = true write_data_events = true management_events = true - activity_tracker_crn = ibm_resource_instance.activity_tracker.id } metrics_monitoring { usage_metrics_enabled = true @@ -124,6 +121,19 @@ resource "ibm_cos_bucket" "cold-ap-firewall" { allowed_ip = ["223.196.168.27", "223.196.161.38", "192.168.0.1"] } +### Activity tracker with activity_tracker_crn - Legacy +resource "ibm_cos_bucket" "activity_tracker_crn_cos" { + bucket_name = var.bucket_name + resource_instance_id = ibm_resource_instance.cos_instance.id + single_site_location = var.single_site_loc + storage_class = var.standard_storage_class + activity_tracking { + read_data_events = true + write_data_events = true + activity_tracker_crn = ibm_resource_instance.activity_tracker.id + } +} + ### Configure archive and expire rules on COS Bucket resource "ibm_cos_bucket" "archive_expire_rule_cos" { From 0a688f36038bc67281a544ae6c5ca1c9a3ecdc15 Mon Sep 17 00:00:00 2001 From: Diksha Mali Date: Mon, 13 May 2024 14:10:16 +0530 Subject: [PATCH 09/22] Fixing the indentation --- website/docs/d/cos_bucket.html.markdown | 5 +---- website/docs/r/cos_bucket.html.markdown | 2 ++ 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/website/docs/d/cos_bucket.html.markdown b/website/docs/d/cos_bucket.html.markdown index 14b3db2a523..19eacd593dc 100644 --- a/website/docs/d/cos_bucket.html.markdown +++ b/website/docs/d/cos_bucket.html.markdown @@ -140,14 +140,12 @@ In addition to all argument reference list, you can access the following attribu Nested scheme for `activity_tracking`: - `activity_tracker_crn` - (String) (Legacy)If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. - - **Note:** +**Note:** (Recommended)When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Router service configuration. - `read_data_events` - (Bool) Enables sending log data to Activity Tracker to provide visibility into an object read and write events. - `write_data_events`- (Bool) If set to **true**, all object write events (that is `uploads`) is sent to Activity Tracker. - `management_events`- (Bool) If set to **true**, all the bucket management events are sent to Activity Tracker. - **Note:** `management_events` field only applies if `activity_tracker_crn` is not populated. - `archive_rule` (List) Nested block with the following structure. @@ -187,7 +185,6 @@ In addition to all argument reference list, you can access the following attribu Nested scheme for `metrics_monitoring`: - `metrics_monitoring_crn` - (String) If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified. - **Note:** When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration. - `request_metrics_enabled` - (Bool) If set to `true`, all request metrics `ibm_cos_bucket_all_request` is sent to the monitoring service at 1 minute (`@1mins`) granularity. diff --git a/website/docs/r/cos_bucket.html.markdown b/website/docs/r/cos_bucket.html.markdown index c07f5c433f1..59dea001e68 100644 --- a/website/docs/r/cos_bucket.html.markdown +++ b/website/docs/r/cos_bucket.html.markdown @@ -465,6 +465,7 @@ Review the argument references that you can specify for your resource. Nested scheme for `activity_tracking`: - `activity_tracker_crn`- (Optional, String) The CRN of your IBM Cloud Activity Tracker service instance. (Legacy)If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. + **Note:** (Recommended)When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Router service configuration. - `read_data_events`- (Optional, Bool) If set to **true**, all read events against a bucket are sent to your IBM Cloud Activity Tracker service instance. @@ -514,6 +515,7 @@ Review the argument references that you can specify for your resource. Nested scheme for `metrics_monitoring`: - `metrics_monitoring_crn` - (Optional, string) If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified(Legacy). + **Note:** (Recommended)When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration. From 6b36002ddcd50c2b79a0b3c9aa7f0bc95b157272 Mon Sep 17 00:00:00 2001 From: Diksha Mali Date: Mon, 13 May 2024 14:19:00 +0530 Subject: [PATCH 10/22] Adding changes to the description of activity_tracker_crn and metrics_monitoring_crn --- examples/ibm-cos-bucket/README.md | 4 ++-- ibm/service/cos/resource_ibm_cos_bucket.go | 4 ++-- website/docs/d/cos_bucket.html.markdown | 10 +++------- website/docs/r/cos_bucket.html.markdown | 11 +++-------- 4 files changed, 10 insertions(+), 19 deletions(-) diff --git a/examples/ibm-cos-bucket/README.md b/examples/ibm-cos-bucket/README.md index 3b58fabe1fc..7330f5147af 100644 --- a/examples/ibm-cos-bucket/README.md +++ b/examples/ibm-cos-bucket/README.md @@ -545,10 +545,10 @@ resource ibm_cos_bucket_website_configuration "website_configuration" { | read_data_events | Enables sending log data to Activity Tracker and LogDNA to provide visibility into object read and write events. | `bool` | no | write_data_events | All object write events (i.e. uploads) will be sent to Activity Tracker. | `bool` | no | management_events | All the bucket management events will be sent to Activity Tracker.This field only applies if `activity_tracker_crn` is not populated | `bool` | no -| activity_tracker_crn | (Recommended)When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Router service configuration.(Legacy)If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. | `string` | no +| activity_tracker_crn | `Recommended` When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Router service configuration.`Legacy` If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. | `string` | no | usage_metrics_enabled | Specify **true or false** to set usage metrics (i.e. bytes_used). | `bool` | no | request_metrics_enabled | Specify true or false to set cos request metrics (i.e. get, put, or post request). | `bool` | no -| metrics_monitoring_crn | When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration.If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified. | `string` | no +| metrics_monitoring_crn | `Recommended` When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration.`Legacy` If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified. | `string` | no | regional_loc | The location for a regional bucket. Supported values are **au-syd, eu-de, eu-gb, jp-tok, us-east, or us-south**. | `string` | no | type | Specifies the archive type to which you want the object to transition. Supported values are **Glacier or Accelerated**. | `string` |yes | rule_id | Unique identifier for the rule. | `string` | no diff --git a/ibm/service/cos/resource_ibm_cos_bucket.go b/ibm/service/cos/resource_ibm_cos_bucket.go index 3eef1a30d23..8662b6d9447 100644 --- a/ibm/service/cos/resource_ibm_cos_bucket.go +++ b/ibm/service/cos/resource_ibm_cos_bucket.go @@ -209,7 +209,7 @@ func ResourceIBMCOSBucket() *schema.Resource { "activity_tracker_crn": { Type: schema.TypeString, Optional: true, - Description: "When the activity_tracker_crn is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Router service configuration. If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled", + Description: "(Recommended) When the activity_tracker_crn is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Router service configuration.(Legacy) If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled", }, }, }, @@ -236,7 +236,7 @@ func ResourceIBMCOSBucket() *schema.Resource { "metrics_monitoring_crn": { Type: schema.TypeString, Optional: true, - Description: "When the metrics_monitoring_crn is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration. If metrics_monitoring_crn is populated, then enabled events are sent to the Metrics Monitoring instance specified.", + Description: "(Recommended) When the metrics_monitoring_crn is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration. (Legacy)If metrics_monitoring_crn is populated, then enabled events are sent to the Metrics Monitoring instance specified.", }, }, }, diff --git a/website/docs/d/cos_bucket.html.markdown b/website/docs/d/cos_bucket.html.markdown index 19eacd593dc..9bbfa42e590 100644 --- a/website/docs/d/cos_bucket.html.markdown +++ b/website/docs/d/cos_bucket.html.markdown @@ -138,10 +138,8 @@ In addition to all argument reference list, you can access the following attribu - `activity_tracking` (List) Nested block with the following structure. Nested scheme for `activity_tracking`: - - `activity_tracker_crn` - (String) (Legacy)If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. + - `activity_tracker_crn` - (String) `Recommended` When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Router service configuration.`Legacy` If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. -**Note:** - (Recommended)When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Router service configuration. - `read_data_events` - (Bool) Enables sending log data to Activity Tracker to provide visibility into an object read and write events. - `write_data_events`- (Bool) If set to **true**, all object write events (that is `uploads`) is sent to Activity Tracker. - `management_events`- (Bool) If set to **true**, all the bucket management events are sent to Activity Tracker. @@ -183,10 +181,8 @@ In addition to all argument reference list, you can access the following attribu - `metrics_monitoring`- (List) Nested block with the following structure. Nested scheme for `metrics_monitoring`: - - `metrics_monitoring_crn` - (String) If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified. - - **Note:** - When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration. + - `metrics_monitoring_crn` - (String) `Recommended` When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration.`Legacy` If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified. + - `request_metrics_enabled` - (Bool) If set to `true`, all request metrics `ibm_cos_bucket_all_request` is sent to the monitoring service at 1 minute (`@1mins`) granularity. - `usage_metrics_enabled`- (Bool) If set to **true**, all usage metrics (that is `bytes_used`) is sent to the monitoring service. - `noncurrent_version_expiration` (List) Nested block with the following structure. diff --git a/website/docs/r/cos_bucket.html.markdown b/website/docs/r/cos_bucket.html.markdown index 59dea001e68..41151a1c4b1 100644 --- a/website/docs/r/cos_bucket.html.markdown +++ b/website/docs/r/cos_bucket.html.markdown @@ -464,10 +464,8 @@ Review the argument references that you can specify for your resource. - `activity_tracking`- (Object) Object to enable auditing with IBM Cloud Activity Tracker - Optional - Configure your IBM Cloud Activity Tracker service instance and the type of events that you want to send to your service to audit activity against your bucket. For a list of supported actions, see [Bucket actions](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-at-events#at-actions-mngt-2). Nested scheme for `activity_tracking`: - - `activity_tracker_crn`- (Optional, String) The CRN of your IBM Cloud Activity Tracker service instance. (Legacy)If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. - - **Note:** - (Recommended)When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Router service configuration. + - `activity_tracker_crn`- (Optional, String) The CRN of your IBM Cloud Activity Tracker service instance.`Recommended` When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Router service configuration.`Legacy` If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. + - `read_data_events`- (Optional, Bool) If set to **true**, all read events against a bucket are sent to your IBM Cloud Activity Tracker service instance. - `write_data_events`- (Optional, Bool) If set to **true**, all write events against a bucket are sent to your IBM Cloud Activity Tracker service instance. - `management_events`- (Optional, Bool) This field only applies if `activity_tracker_crn` is not populated. If set to `true`, all bucket management events will be sent to Activity Tracker. @@ -514,10 +512,7 @@ Review the argument references that you can specify for your resource. - `metrics_monitoring`- (Object) to enable metrics tracking with IBM Cloud Monitoring - Optional- Set up your IBM Cloud Monitoring service instance to receive metrics for your IBM Cloud Object Storage bucket. Nested scheme for `metrics_monitoring`: - - `metrics_monitoring_crn` - (Optional, string) If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified(Legacy). - - **Note:** - (Recommended)When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration. + - `metrics_monitoring_crn` - (Optional, string) `Recommended` When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration.`Legacy` If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified(Legacy). - `request_metrics_enabled` : (Optional, Bool) If set to **true**, all request metrics (eg: `ibm_cos_bucket_all_request`) are sent to the monitoring service at a 1 min granularity. - `usage_metrics_enabled` : (Optional, Bool) If set to **true**, all usage metrics (eg: `bytes_used`) are sent to the monitoring service.Usage metrics are sent to the monitoring services every 24 hours From cea8999a702da28bfe555da12f04533ac9cc233b Mon Sep 17 00:00:00 2001 From: Diksha Mali Date: Mon, 13 May 2024 14:21:35 +0530 Subject: [PATCH 11/22] Adding changes to the description of activity_tracker_crn and metrics_monitoring_crn --- examples/ibm-cos-bucket/README.md | 4 ++-- website/docs/d/cos_bucket.html.markdown | 4 ++-- website/docs/r/cos_bucket.html.markdown | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/ibm-cos-bucket/README.md b/examples/ibm-cos-bucket/README.md index 7330f5147af..f4477ab6507 100644 --- a/examples/ibm-cos-bucket/README.md +++ b/examples/ibm-cos-bucket/README.md @@ -545,10 +545,10 @@ resource ibm_cos_bucket_website_configuration "website_configuration" { | read_data_events | Enables sending log data to Activity Tracker and LogDNA to provide visibility into object read and write events. | `bool` | no | write_data_events | All object write events (i.e. uploads) will be sent to Activity Tracker. | `bool` | no | management_events | All the bucket management events will be sent to Activity Tracker.This field only applies if `activity_tracker_crn` is not populated | `bool` | no -| activity_tracker_crn | `Recommended` When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Router service configuration.`Legacy` If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. | `string` | no +| activity_tracker_crn | (Recommended) When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Router service configuration.(Legacy) If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. | `string` | no | usage_metrics_enabled | Specify **true or false** to set usage metrics (i.e. bytes_used). | `bool` | no | request_metrics_enabled | Specify true or false to set cos request metrics (i.e. get, put, or post request). | `bool` | no -| metrics_monitoring_crn | `Recommended` When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration.`Legacy` If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified. | `string` | no +| metrics_monitoring_crn | (Recommended) When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration.(Legacy) If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified. | `string` | no | regional_loc | The location for a regional bucket. Supported values are **au-syd, eu-de, eu-gb, jp-tok, us-east, or us-south**. | `string` | no | type | Specifies the archive type to which you want the object to transition. Supported values are **Glacier or Accelerated**. | `string` |yes | rule_id | Unique identifier for the rule. | `string` | no diff --git a/website/docs/d/cos_bucket.html.markdown b/website/docs/d/cos_bucket.html.markdown index 9bbfa42e590..dbf913e048d 100644 --- a/website/docs/d/cos_bucket.html.markdown +++ b/website/docs/d/cos_bucket.html.markdown @@ -138,7 +138,7 @@ In addition to all argument reference list, you can access the following attribu - `activity_tracking` (List) Nested block with the following structure. Nested scheme for `activity_tracking`: - - `activity_tracker_crn` - (String) `Recommended` When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Router service configuration.`Legacy` If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. + - `activity_tracker_crn` - (String) (Recommended) When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Router service configuration.(Legacy) If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. - `read_data_events` - (Bool) Enables sending log data to Activity Tracker to provide visibility into an object read and write events. - `write_data_events`- (Bool) If set to **true**, all object write events (that is `uploads`) is sent to Activity Tracker. @@ -181,7 +181,7 @@ In addition to all argument reference list, you can access the following attribu - `metrics_monitoring`- (List) Nested block with the following structure. Nested scheme for `metrics_monitoring`: - - `metrics_monitoring_crn` - (String) `Recommended` When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration.`Legacy` If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified. + - `metrics_monitoring_crn` - (String) (Recommended) When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration.(Legacy) If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified. - `request_metrics_enabled` - (Bool) If set to `true`, all request metrics `ibm_cos_bucket_all_request` is sent to the monitoring service at 1 minute (`@1mins`) granularity. - `usage_metrics_enabled`- (Bool) If set to **true**, all usage metrics (that is `bytes_used`) is sent to the monitoring service. diff --git a/website/docs/r/cos_bucket.html.markdown b/website/docs/r/cos_bucket.html.markdown index 41151a1c4b1..b0d9d87ec6f 100644 --- a/website/docs/r/cos_bucket.html.markdown +++ b/website/docs/r/cos_bucket.html.markdown @@ -464,7 +464,7 @@ Review the argument references that you can specify for your resource. - `activity_tracking`- (Object) Object to enable auditing with IBM Cloud Activity Tracker - Optional - Configure your IBM Cloud Activity Tracker service instance and the type of events that you want to send to your service to audit activity against your bucket. For a list of supported actions, see [Bucket actions](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-at-events#at-actions-mngt-2). Nested scheme for `activity_tracking`: - - `activity_tracker_crn`- (Optional, String) The CRN of your IBM Cloud Activity Tracker service instance.`Recommended` When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Router service configuration.`Legacy` If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. + - `activity_tracker_crn`- (Optional, String) The CRN of your IBM Cloud Activity Tracker service instance.(Recommended) When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Router service configuration.(Legacy) If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. - `read_data_events`- (Optional, Bool) If set to **true**, all read events against a bucket are sent to your IBM Cloud Activity Tracker service instance. - `write_data_events`- (Optional, Bool) If set to **true**, all write events against a bucket are sent to your IBM Cloud Activity Tracker service instance. @@ -512,7 +512,7 @@ Review the argument references that you can specify for your resource. - `metrics_monitoring`- (Object) to enable metrics tracking with IBM Cloud Monitoring - Optional- Set up your IBM Cloud Monitoring service instance to receive metrics for your IBM Cloud Object Storage bucket. Nested scheme for `metrics_monitoring`: - - `metrics_monitoring_crn` - (Optional, string) `Recommended` When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration.`Legacy` If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified(Legacy). + - `metrics_monitoring_crn` - (Optional, string) (Recommended) When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration.(Legacy) If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified(Legacy). - `request_metrics_enabled` : (Optional, Bool) If set to **true**, all request metrics (eg: `ibm_cos_bucket_all_request`) are sent to the monitoring service at a 1 min granularity. - `usage_metrics_enabled` : (Optional, Bool) If set to **true**, all usage metrics (eg: `bytes_used`) are sent to the monitoring service.Usage metrics are sent to the monitoring services every 24 hours From c5a9999d00cdeb1d57a787401e6e5f8e8da1ad10 Mon Sep 17 00:00:00 2001 From: Diksha Mali Date: Mon, 13 May 2024 21:09:50 +0530 Subject: [PATCH 12/22] Removingthe examples with crn and adding changes to field description --- examples/ibm-cos-bucket/README.md | 72 ++++----- examples/ibm-cos-bucket/main.tf | 13 -- ibm/service/cos/data_source_ibm_cos_bucket.go | 14 +- ibm/service/cos/resource_ibm_cos_bucket.go | 12 +- website/docs/d/cos_bucket.html.markdown | 118 ++++++++------- website/docs/r/cos_bucket.html.markdown | 137 ++++++++---------- 6 files changed, 162 insertions(+), 204 deletions(-) diff --git a/examples/ibm-cos-bucket/README.md b/examples/ibm-cos-bucket/README.md index f4477ab6507..cac577e30aa 100644 --- a/examples/ibm-cos-bucket/README.md +++ b/examples/ibm-cos-bucket/README.md @@ -65,24 +65,10 @@ resource "ibm_cos_bucket" "standard-ams03" { metrics_monitoring { usage_metrics_enabled = true request_metrics_enabled = true - metrics_monitoring_crn = ibm_resource_instance.metrics_monitor.id } allowed_ip = ["223.196.168.27", "223.196.161.38", "192.168.0.1"] } -// Activity tracker with activity_tracker_crn - Legacy -resource "ibm_cos_bucket" "activity_tracker_crn_cos" { - bucket_name = var.bucket_name - resource_instance_id = ibm_resource_instance.cos_instance.id - single_site_location = var.single_site_loc - storage_class = var.standard_storage_class - activity_tracking { - read_data_events = true - write_data_events = true - activity_tracker_crn = ibm_resource_instance.activity_tracker.id - } -} - resource "ibm_cos_bucket" "archive_expire_rule_cos" { bucket_name = "a-bucket-archive-expire" resource_instance_id = ibm_resource_instance.cos_instance.id @@ -542,13 +528,13 @@ resource ibm_cos_bucket_website_configuration "website_configuration" { | satellite_location_id | satellite location. | `string` | no | | storage | The storage class that you want to use for the bucket. Supported values are **standard, vault, cold, flex, and smart**.| `string` | no | | region | The location for a cross-regional bucket. Supported values are **us, eu, and ap**. | `string` | no | -| read_data_events | Enables sending log data to Activity Tracker and LogDNA to provide visibility into object read and write events. | `bool` | no -| write_data_events | All object write events (i.e. uploads) will be sent to Activity Tracker. | `bool` | no -| management_events | All the bucket management events will be sent to Activity Tracker.This field only applies if `activity_tracker_crn` is not populated | `bool` | no -| activity_tracker_crn | (Recommended) When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Router service configuration.(Legacy) If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. | `string` | no -| usage_metrics_enabled | Specify **true or false** to set usage metrics (i.e. bytes_used). | `bool` | no -| request_metrics_enabled | Specify true or false to set cos request metrics (i.e. get, put, or post request). | `bool` | no -| metrics_monitoring_crn | (Recommended) When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration.(Legacy) If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified. | `string` | no +| read_data_events | If set to **true**, all object read events (i.e. downloads) will be sent to Activity Tracker. | `bool` | no +| write_data_events | If set to **true**, all object write events (i.e. uploads) will be sent to Activity Tracker. | `bool` | no +| management_events | This field only applies if `activity_tracker_crn` is not populated. If set to **true**, all bucket management events will be sent to Activity Tracker. | `bool` | no +| activity_tracker_crn |When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Event Routing service configuration.If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. | `string` | no +| usage_metrics_enabled |If set to **true**, all usage metrics (i.e. `bytes_used`) will be sent to the monitoring service.| `bool` | no +| request_metrics_enabled | If set to **true**, all request metrics (i.e. `rest.object.head`) will be sent to the monitoring service. | `bool` | no +| metrics_monitoring_crn | When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration.If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified. | `string` | no | regional_loc | The location for a regional bucket. Supported values are **au-syd, eu-de, eu-gb, jp-tok, us-east, or us-south**. | `string` | no | type | Specifies the archive type to which you want the object to transition. Supported values are **Glacier or Accelerated**. | `string` |yes | rule_id | Unique identifier for the rule. | `string` | no @@ -567,28 +553,28 @@ resource ibm_cos_bucket_website_configuration "website_configuration" { | object_lock | enables Object Lock on a bucket. | `bool` | no | bucket\_crn | The CRN of the source COS bucket. | `string` | yes | | bucket\_location | The location of the source COS bucket. | `string` | yes | -| destination_bucket_crn | The CRN of your destination bucket that you want to replicate to. | `String` | yes -| deletemarker_replication_status | Specifies whether Object storage replicates delete markers. Specify true for Enabling it or false for Disabling it. | `String` | no -| status | Specifies whether the rule is enabled. Specify true for Enabling it or false for Disabling it. | `String` | yes -| rule_id | The rule id. | `String` | no -| priority | A priority is associated with each rule. The rule will be applied in a higher priority if there are multiple rules configured. The higher the number, the higher the priority | `String` | no -| prefix | An object key name prefix that identifies the subset of objects to which the rule applies. | `String` | no -| bucket_crn | The CRN of the COS bucket on which Object Lock is enabled or should be enabled. | `String` | yes -| bucket_location | Location of the COS bucket. | `String` | yes -| endpoint_type | Endpoint types of the COS bucket. | `String` | no -| object_lock_enabled | Enable Object Lock on an existing COS bucket. | `String` | yes -| mode | Retention mode for the Object Lock configuration. | `String` | yes +| destination_bucket_crn | The CRN of your destination bucket that you want to replicate to. | `string` | yes +| deletemarker_replication_status | Specifies whether Object storage replicates delete markers. Specify true for Enabling it or false for Disabling it. | `string` | no +| status | Specifies whether the rule is enabled. Specify true for Enabling it or false for Disabling it. | `string` | yes +| rule_id | The rule id. | `string` | no +| priority | A priority is associated with each rule. The rule will be applied in a higher priority if there are multiple rules configured. The higher the number, the higher the priority | `string` | no +| prefix | An object key name prefix that identifies the subset of objects to which the rule applies. | `string` | no +| bucket_crn | The CRN of the COS bucket on which Object Lock is enabled or should be enabled. | `string` | yes +| bucket_location | Location of the COS bucket. | `string` | yes +| endpoint_type | Endpoint types of the COS bucket. | `string` | no +| object_lock_enabled | Enable Object Lock on an existing COS bucket. | `string` | yes +| mode | Retention mode for the Object Lock configuration. | `string` | yes | years | Retention period in terms of years after which the object can be deleted. | `int` | no | days | Retention period in terms of days after which the object can be deleted. | `int` | no -| key | Object key name to use when a 4XX class error occurs given as error document. | `String` | no -| suffix | The home or default page of the website when static web hosting configuration is added. | `String` | Yes -| hostname | Name of the host where requests are redirected. | `String` | Yes -| protocol | Protocol to use when redirecting requests. The default is the protocol that is used in the original request. | `String` | No -| http_error_code_returned_equals | HTTP error code when the redirect is applied. | `String` | No -| key_prefix_equals | Object key name prefix when the redirect is applied. | `String` | No -| host_name | Host name to use in the redirect request. | `String` | Yes -| protocol | Protocol to use when redirecting requests. | `String` | No -| http_redirect_code | HTTP redirect code to use on the response. | `String` | No -| replace_key_with | Specific object key to use in the redirect request. | `String` | No -| replace_key_prefix_with | Object key prefix to use in the redirect request. | `String` | No +| key | Object key name to use when a 4XX class error occurs given as error document. | `string` | no +| suffix | The home or default page of the website when static web hosting configuration is added. | `string` | Yes +| hostname | Name of the host where requests are redirected. | `string` | Yes +| protocol | Protocol to use when redirecting requests. The default is the protocol that is used in the original request. | `string` | No +| http_error_code_returned_equals | HTTP error code when the redirect is applied. | `string` | No +| key_prefix_equals | Object key name prefix when the redirect is applied. | `string` | No +| host_name | Host name to use in the redirect request. | `string` | Yes +| protocol | Protocol to use when redirecting requests. | `string` | No +| http_redirect_code | HTTP redirect code to use on the response. | `string` | No +| replace_key_with | Specific object key to use in the redirect request. | `string` | No +| replace_key_prefix_with | Object key prefix to use in the redirect request. | `string` | No {: caption="inputs"} diff --git a/examples/ibm-cos-bucket/main.tf b/examples/ibm-cos-bucket/main.tf index e0211b01000..8e83a6f669e 100644 --- a/examples/ibm-cos-bucket/main.tf +++ b/examples/ibm-cos-bucket/main.tf @@ -39,23 +39,10 @@ resource "ibm_cos_bucket" "standard-ams03" { metrics_monitoring { usage_metrics_enabled = true request_metrics_enabled = true - metrics_monitoring_crn = ibm_resource_instance.metrics_monitor.id } allowed_ip = ["223.196.168.27", "223.196.161.38", "192.168.0.1"] } -// Activity tracker with activity_tracker_crn - Legacy -resource "ibm_cos_bucket" "activity_tracker_crn_cos" { - bucket_name = var.bucket_name - resource_instance_id = ibm_resource_instance.cos_instance.id - single_site_location = var.single_site_loc - storage_class = var.standard_storage_class - activity_tracking { - read_data_events = true - write_data_events = true - activity_tracker_crn = ibm_resource_instance.activity_tracker.id - } -} resource "ibm_cos_bucket" "lifecycle_rule_cos" { bucket_name = var.bucket_name resource_instance_id = ibm_resource_instance.cos_instance.id diff --git a/ibm/service/cos/data_source_ibm_cos_bucket.go b/ibm/service/cos/data_source_ibm_cos_bucket.go index 3b65ed49992..ef6b87f88b9 100644 --- a/ibm/service/cos/data_source_ibm_cos_bucket.go +++ b/ibm/service/cos/data_source_ibm_cos_bucket.go @@ -126,22 +126,22 @@ func DataSourceIBMCosBucket() *schema.Resource { "read_data_events": { Type: schema.TypeBool, Computed: true, - Description: "If set to true, all object read events will be sent to Activity Tracker.", + Description: "If set to true, all object read events (i.e. downloads) will be sent to Activity Tracker.", }, "write_data_events": { Type: schema.TypeBool, Computed: true, - Description: "If set to true, all object write events will be sent to Activity Tracker.", + Description: "If set to true, all object write events (i.e. uploads) will be sent to Activity Tracker.", }, "management_events": { Type: schema.TypeBool, Computed: true, - Description: "If set to true, all bucket management events will be sent to Activity Tracker", + Description: "This field only applies if `activity_tracker_crn` is not populated. If set to true, all bucket management events will be sent to Activity Tracker.", }, "activity_tracker_crn": { Type: schema.TypeString, Computed: true, - Description: "The instance of Activity Tracker that will receive object event data", + Description: "When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Event Routing service configuration.If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled.", }, }, }, @@ -154,17 +154,17 @@ func DataSourceIBMCosBucket() *schema.Resource { "usage_metrics_enabled": { Type: schema.TypeBool, Computed: true, - Description: "Usage metrics will be sent to the monitoring service.", + Description: "If set to `true`, all usage metrics (i.e. `bytes_used`) will be sent to the monitoring service.", }, "request_metrics_enabled": { Type: schema.TypeBool, Computed: true, - Description: "Request metrics will be sent to the monitoring service.", + Description: "If set to true, all request metrics (i.e. `rest.object.head`) will be sent to the monitoring service", }, "metrics_monitoring_crn": { Type: schema.TypeString, Computed: true, - Description: "Instance of IBM Cloud Monitoring that will receive the bucket metrics.", + Description: "When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration.If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified.", }, }, }, diff --git a/ibm/service/cos/resource_ibm_cos_bucket.go b/ibm/service/cos/resource_ibm_cos_bucket.go index 8662b6d9447..19fb1e4b90a 100644 --- a/ibm/service/cos/resource_ibm_cos_bucket.go +++ b/ibm/service/cos/resource_ibm_cos_bucket.go @@ -193,13 +193,13 @@ func ResourceIBMCOSBucket() *schema.Resource { Type: schema.TypeBool, Optional: true, Default: false, - Description: "If set to true, all object read events will be sent to Activity Tracker.", + Description: "If set to `true`, all object read events (i.e. downloads) will be sent to Activity Tracker.", }, "write_data_events": { Type: schema.TypeBool, Optional: true, Default: false, - Description: "If set to true, all object write events will be sent to Activity Tracker.", + Description: "If set to `true`, all object write events (i.e. uploads) will be sent to Activity Tracker.", }, "management_events": { Type: schema.TypeBool, @@ -209,7 +209,7 @@ func ResourceIBMCOSBucket() *schema.Resource { "activity_tracker_crn": { Type: schema.TypeString, Optional: true, - Description: "(Recommended) When the activity_tracker_crn is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Router service configuration.(Legacy) If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled", + Description: "When the activity_tracker_crn is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Event Routing service configuration.If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled.", }, }, }, @@ -225,18 +225,18 @@ func ResourceIBMCOSBucket() *schema.Resource { Type: schema.TypeBool, Optional: true, Default: false, - Description: "Usage metrics will be sent to the monitoring service.", + Description: "If set to true, all usage metrics (i.e. `bytes_used`) will be sent to the monitoring service.", }, "request_metrics_enabled": { Type: schema.TypeBool, Optional: true, Default: false, - Description: "Request metrics will be sent to the monitoring service.", + Description: "If set to true, all request metrics (i.e. `rest.object.head`) will be sent to the monitoring service.", }, "metrics_monitoring_crn": { Type: schema.TypeString, Optional: true, - Description: "(Recommended) When the metrics_monitoring_crn is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration. (Legacy)If metrics_monitoring_crn is populated, then enabled events are sent to the Metrics Monitoring instance specified.", + Description: "When the metrics_monitoring_crn is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration.If metrics_monitoring_crn is populated, then enabled events are sent to the Metrics Monitoring instance specified.", }, }, }, diff --git a/website/docs/d/cos_bucket.html.markdown b/website/docs/d/cos_bucket.html.markdown index dbf913e048d..ec1576fbc10 100644 --- a/website/docs/d/cos_bucket.html.markdown +++ b/website/docs/d/cos_bucket.html.markdown @@ -102,7 +102,7 @@ resource "ibm_cos_bucket" "smart-us-south" { # ibm_cos_object_lock_configuration -Retrieves an IBM Cloud Object Storage bucket Object Lock configuration set on the bucket. Allows Object Lock configuration to be updated or deleted. Object Lock cannot be disabled once enabled on a bucket.. +Retrieves an IBM Cloud Object Storage bucket Object Lock configuration set on the bucket. Allows Object Lock configuration to be updated or deleted. Object Lock cannot be disabled once enabled on a bucket. ## Example usage @@ -123,57 +123,55 @@ data "ibm_cos_bucket" "object_lock_bucket" { ## Argument reference Review the argument references that you can specify for your data source. -- `bucket_name` - (Required, String) The name of the bucket. -- `bucket_region` - (Optional, String) The region of the bucket. -- `bucket_type` - (Optional, String) The type of the bucket. Supported values are `single_site_location`, `region_location`, and `cross_region_location`. -- `endpoint_type` - (Optional, String) The type of the endpoint either `public` or `private` or `direct` to be used for the buckets. Default value is `public`. -- `resource_instance_id` - (Required, String) The ID of the IBM Cloud Object Storage service instance for which you want to create a bucket. -- `storage_class`- (Optional, String) Storage class of the bucket. Supported values are `standard`, `vault`, `cold`, `smart` for `standard` and `lite` COS plans, `onerate_active` for `cos-one-rate-plan` COS instance. -- `satellite_location_id` - (Optional, String) satellite location id. Provided by end users. -- `object_lock` - (Optional, String) Specifies Object Lock status. +- `bucket_name` - (Required, string) The name of the bucket. +- `bucket_region` - (Optional, string) The region of the bucket. +- `bucket_type` - (Optional, string) The type of the bucket. Supported values are `single_site_location`, `region_location`, and `cross_region_location`. +- `endpoint_type` - (Optional, string) The type of the endpoint either `public` or `private` or `direct` to be used for the buckets. Default value is `public`. +- `resource_instance_id` - (Required, string) The ID of the IBM Cloud Object Storage service instance for which you want to create a bucket. +- `storage_class`- (Optional, string) Storage class of the bucket. Supported values are `standard`, `vault`, `cold`, `smart` for `standard` and `lite` COS plans, `onerate_active` for `cos-one-rate-plan` COS instance. +- `satellite_location_id` - (Optional, string) satellite location id. Provided by end users. +- `object_lock` - (Optional, string) Specifies Object Lock status. ## Attribute reference In addition to all argument reference list, you can access the following attribute references after your data source is created. -- `allowed_ip`- (String) List of `IPv4` or `IPv6` addresses in CIDR notation to be affected by firewall. +- `allowed_ip`- (string) List of `IPv4` or `IPv6` addresses in CIDR notation to be affected by firewall. - `activity_tracking` (List) Nested block with the following structure. Nested scheme for `activity_tracking`: - - `activity_tracker_crn` - (String) (Recommended) When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Router service configuration.(Legacy) If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. + - `activity_tracker_crn` - (string)When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Event Routing service configuration.If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. - - `read_data_events` - (Bool) Enables sending log data to Activity Tracker to provide visibility into an object read and write events. - - `write_data_events`- (Bool) If set to **true**, all object write events (that is `uploads`) is sent to Activity Tracker. - - `management_events`- (Bool) If set to **true**, all the bucket management events are sent to Activity Tracker. + - `read_data_events` - (bool) If set to **true**, all object read events (i.e. downloads) will be sent to Activity Tracker. + - `write_data_events`- (bool) If set to **true**, all object write events (that is `uploads`) is sent to Activity Tracker. + - `management_events`- (bool) This field only applies if `activity_tracker_crn` is not populated. If set to **true**, all bucket management events will be sent to Activity Tracker. - **Note:** - `management_events` field only applies if `activity_tracker_crn` is not populated. - `archive_rule` (List) Nested block with the following structure. Nested scheme for `archive_rule`: - - `days` - (String) Specifies the number of days when the specific rule action takes effect. - - `enable`- (Bool) Specifies archive rule status either `enable` or `disable` for a bucket. - - `rule_id` - (String) Unique identifier for the rule. Archive rules allow you to set a specific time frame after which objects transition to archive. - - `type` - (String) Specifies the storage class or archive type to which you want the object to transition. Supported values are `Glacier` or `Accelerated`. + - `days` - (string) Specifies the number of days when the specific rule action takes effect. + - `enable`- (bool) Specifies archive rule status either `enable` or `disable` for a bucket. + - `rule_id` - (string) Unique identifier for the rule. Archive rules allow you to set a specific time frame after which objects transition to archive. + - `type` - (string) Specifies the storage class or archive type to which you want the object to transition. Supported values are `Glacier` or `Accelerated`. - `abort_incomplete_multipart_upload_days` (List) Nested block with the following structure. Nested scheme for `abort_incomplete_multipart_upload_days`: - `days_after_initiation` - (Integer) Specifies the number of days that govern the automatic cancellation of part upload. Clean up incomplete multi-part uploads after a period of time. Must be a value greater than 0. - - `enable` - (Bool) A rule can either be `enabled` or `disabled`. A rule is active only when enabled. - - `prefix` - (String) A rule with a prefix will only apply to the objects that match. You can use multiple rules for different actions for different prefixes within the same bucket. - - `rule_id` - (String) Unique identifier for the rule. Rules allow you to set a specific time frame after which objects are deleted. Set Rule ID for cos bucket. -- `crn` - (String) The CRN of the bucket. -- `cross_region_location` - (String) The location to create a cross-regional bucket. + - `enable` - (bool) A rule can either be `enabled` or `disabled`. A rule is active only when enabled. + - `prefix` - (string) A rule with a prefix will only apply to the objects that match. You can use multiple rules for different actions for different prefixes within the same bucket. + - `rule_id` - (string) Unique identifier for the rule. Rules allow you to set a specific time frame after which objects are deleted. Set Rule ID for cos bucket. +- `crn` - (string) The CRN of the bucket. +- `cross_region_location` - (string) The location to create a cross-regional bucket. - `expire_rule` (List) Nested block with the following structure. Nested scheme for `expire_rule`: - - `days` - (String) Specifies the number of days when the specific rule action takes effect. - - `date` - (String) After the specifies date , the current version of objects in your bucket expires. - - `enable`- (Bool) Specifies expire rule status either `enable` or `disable` for a bucket. - - `expired_object_delete_marker` - (Bool) Expired object delete markers can be automatically cleaned up to improve performance in your bucket. This cannot be used alongside version expiration. - - `prefix` - (String) Specifies a prefix filter to apply to only a subset of objects with names that match the prefix. - - `rule_id` - (String) Unique identifier for the rule. Expire rules allow you to set a specific time frame after which objects are deleted. -- `hard_quota` - (String) Maximum bytes for the bucket. -- `id` - (String) The ID of the bucket. -- `kms_key_crn` - (String) The CRN of the IBM Key Protect instance where a root key is already provisioned. + - `days` - (string) Specifies the number of days when the specific rule action takes effect. + - `date` - (string) After the specifies date , the current version of objects in your bucket expires. + - `enable`- (bool) Specifies expire rule status either `enable` or `disable` for a bucket. + - `expired_object_delete_marker` - (bool) Expired object delete markers can be automatically cleaned up to improve performance in your bucket. This cannot be used alongside version expiration. + - `prefix` - (string) Specifies a prefix filter to apply to only a subset of objects with names that match the prefix. + - `rule_id` - (string) Unique identifier for the rule. Expire rules allow you to set a specific time frame after which objects are deleted. +- `hard_quota` - (string) Maximum bytes for the bucket. +- `id` - (string) The ID of the bucket. +- `kms_key_crn` - (string) The CRN of the IBM Key Protect instance where a root key is already provisioned. **Note:** `key_protect` attribute has been renamed as `kms_key_crn` , hence it is recommended to all the new users to use `kms_key_crn`.Although the support for older attribute name `key_protect` will be continued for existing customers. @@ -181,60 +179,60 @@ In addition to all argument reference list, you can access the following attribu - `metrics_monitoring`- (List) Nested block with the following structure. Nested scheme for `metrics_monitoring`: - - `metrics_monitoring_crn` - (String) (Recommended) When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration.(Legacy) If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified. + - `metrics_monitoring_crn` - (string)When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration.If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified. - - `request_metrics_enabled` - (Bool) If set to `true`, all request metrics `ibm_cos_bucket_all_request` is sent to the monitoring service at 1 minute (`@1mins`) granularity. - - `usage_metrics_enabled`- (Bool) If set to **true**, all usage metrics (that is `bytes_used`) is sent to the monitoring service. + - `request_metrics_enabled` - (bool) If set to **true**, all request metrics (i.e. `rest.object.head`) will be sent to the monitoring service.. + - `usage_metrics_enabled`- (bool) If set to **true**, all usage metrics (i.e. `bytes_used`) will be sent to the monitoring service. - `noncurrent_version_expiration` (List) Nested block with the following structure. Nested scheme for `noncurrent_version_expiration`: - - `enable` - (Bool) A rule can either be `enabled` or `disabled`. A rule is active only when enabled. + - `enable` - (bool) A rule can either be `enabled` or `disabled`. A rule is active only when enabled. - `noncurrent_days` - (Int) Configuration parameter in your policy that says how long to retain a non-current version before deleting it. Must be greater than 0. - - `prefix` - (String) The rule applies to any objects with keys that match this prefix. You can use multiple rules for different actions for different prefixes within the same bucket. - - `rule_id` - (String) Unique identifier for the rule. Rules allow you to remove versions from objects. Set Rule ID for cos bucket. + - `prefix` - (string) The rule applies to any objects with keys that match this prefix. You can use multiple rules for different actions for different prefixes within the same bucket. + - `rule_id` - (string) Unique identifier for the rule. Rules allow you to remove versions from objects. Set Rule ID for cos bucket. - `object_versioning` - (List) Nestedblock have the following structure: Nested scheme for `object_verionining`: - - `enable` - (String) Specifies versioning status either enable or suspended for the objects in the bucket. -- `region_location` - (String) The location to create a regional bucket. -- `resource_instance_id` - (String) The ID of {site.data.keyword.cos_full_notm}} instance. + - `enable` - (string) Specifies versioning status either enable or suspended for the objects in the bucket. +- `region_location` - (string) The location to create a regional bucket. +- `resource_instance_id` - (string) The ID of {site.data.keyword.cos_full_notm}} instance. - `retention_rule` - (List) Nested block have the following structure: Nested scheme for `retention rule`: - - `default` - (String) default retention period are defined by this policy and apply to all objects in the bucket. - - `maximum` - (String) Specifies maximum duration of time an object can be kept unmodified in the bucket. - - `minimum` - (String) Specifies minimum duration of time an object must be kept unmodified in the bucket. - - `permanent` - (String) Specifies a permanent retention status either enable or disable for a bucket. + - `default` - (string) default retention period are defined by this policy and apply to all objects in the bucket. + - `maximum` - (string) Specifies maximum duration of time an object can be kept unmodified in the bucket. + - `minimum` - (string) Specifies minimum duration of time an object must be kept unmodified in the bucket. + - `permanent` - (string) Specifies a permanent retention status either enable or disable for a bucket. - `replication_rule`- (List) Nested block have the following structure: Nested scheme for `replication_rule`: - - `rule_id`- (String) The rule id. - - `enable`- (Bool) Specifies whether the rule is enabled. Specify true for Enabling it or false for Disabling it. - - `prefix`- (String) An object key name prefix that identifies the subset of objects to which the rule applies. + - `rule_id`- (string) The rule id. + - `enable`- (bool) Specifies whether the rule is enabled. Specify true for Enabling it or false for Disabling it. + - `prefix`- (string) An object key name prefix that identifies the subset of objects to which the rule applies. - `priority`- (Int) A priority is associated with each rule. The rule will be applied in a higher priority if there are multiple rules configured. The higher the number, the higher the priority - - `deletemarker_replication_status`- (Bool) Specifies whether Object storage replicates delete markers. Specify true for Enabling it or false for Disabling it. - - `destination_bucket_crn`- (String) The CRN of your destination bucket that you want to replicate to. + - `deletemarker_replication_status`- (bool) Specifies whether Object storage replicates delete markers. Specify true for Enabling it or false for Disabling it. + - `destination_bucket_crn`- (string) The CRN of your destination bucket that you want to replicate to. - `object_lock_configuration`- (Required, List) Nested block have the following structure: Nested scheme for `object_lock_configuration`: - - `object_lock_enabled`- (String) Indicates whether this bucket has an Object Lock configuration enabled. Defaults to Enabled. Valid values: Enabled. + - `object_lock_enabled`- (string) Indicates whether this bucket has an Object Lock configuration enabled. Defaults to Enabled. Valid values: Enabled. - `object_lock_rule`- (List) Object Lock rule has following arguement: Nested scheme for `object_lock_rule`: - `default_retention`- (Required) Configuration block for specifying the default Object Lock retention settings for new objects placed in the specified bucket Nested scheme for `default_retention`: - - `mode`- (String) Default Object Lock retention mode you want to apply to new objects placed in the specified bucket. Supported values: COMPLIANCE. + - `mode`- (string) Default Object Lock retention mode you want to apply to new objects placed in the specified bucket. Supported values: COMPLIANCE. - `days`- (Int) Specifies number of days after which the object can be deleted from the COS bucket. - `years`- (Int) Specifies number of years after which the object can be deleted from the COS bucket. **Note:** Either days or years should be provided for default retention, both cannot be used simultaneoulsy. - - `website_endpoint` - (String) Website endpoint, if the bucket is configured with a website. If not, this will be an empty string. + - `website_endpoint` - (string) Website endpoint, if the bucket is configured with a website. If not, this will be an empty string. -- `single_site_location` - (String) The location to create a single site bucket. -- `storage_class` - (String) The storage class of the bucket. -- `s3_endpoint_public` - (String) Public endpoint for cos bucket. -- `s3_endpoint_private` - (String) Private endpoint for cos bucket. -- `s3_endpoint_direct` - (String) Direct endpoint for cos bucket. +- `single_site_location` - (string) The location to create a single site bucket. +- `storage_class` - (string) The storage class of the bucket. +- `s3_endpoint_public` - (string) Public endpoint for cos bucket. +- `s3_endpoint_private` - (string) Private endpoint for cos bucket. +- `s3_endpoint_direct` - (string) Direct endpoint for cos bucket. diff --git a/website/docs/r/cos_bucket.html.markdown b/website/docs/r/cos_bucket.html.markdown index b0d9d87ec6f..b628a29d779 100644 --- a/website/docs/r/cos_bucket.html.markdown +++ b/website/docs/r/cos_bucket.html.markdown @@ -80,7 +80,6 @@ resource "ibm_cos_bucket" "standard-ams03-firewall" { metrics_monitoring { usage_metrics_enabled = true request_metrics_enabled = true - metrics_monitoring_crn = ibm_resource_instance.metrics_monitor.id } allowed_ip = ["223.196.168.27", "223.196.161.38", "192.168.0.1"] } @@ -98,7 +97,6 @@ resource "ibm_cos_bucket" "smart-us-south-firewall" { metrics_monitoring { usage_metrics_enabled = true request_metrics_enabled = true - metrics_monitoring_crn = ibm_resource_instance.metrics_monitor.id } allowed_ip = ["223.196.168.27", "223.196.161.38", "192.168.0.1"] } @@ -116,24 +114,10 @@ resource "ibm_cos_bucket" "cold-ap-firewall" { metrics_monitoring { usage_metrics_enabled = true request_metrics_enabled = true - metrics_monitoring_crn = ibm_resource_instance.metrics_monitor.id } allowed_ip = ["223.196.168.27", "223.196.161.38", "192.168.0.1"] } -### Activity tracker with activity_tracker_crn - Legacy -resource "ibm_cos_bucket" "activity_tracker_crn_cos" { - bucket_name = var.bucket_name - resource_instance_id = ibm_resource_instance.cos_instance.id - single_site_location = var.single_site_loc - storage_class = var.standard_storage_class - activity_tracking { - read_data_events = true - write_data_events = true - activity_tracker_crn = ibm_resource_instance.activity_tracker.id - } -} - ### Configure archive and expire rules on COS Bucket resource "ibm_cos_bucket" "archive_expire_rule_cos" { @@ -456,43 +440,47 @@ Review the argument references that you can specify for your resource. - `abort_incomplete_multipart_upload_days` (Optional,List) Nested block with the following structure. Nested scheme for `abort_incomplete_multipart_upload_days`: - - `days_after_initiation` - (Optional, Integer) Specifies the number of days that govern the automatic cancellation of part upload. Clean up incomplete multi-part uploads after a period of time. Must be a value greater than 0 and less than 3650. - - `enable` - (Required, Bool) A rule can either be `enabled` or `disabled`. A rule is active only when enabled. - - `prefix` - (Optional, String) A rule with a prefix will only apply to the objects that match. You can use multiple rules for different actions for different prefixes within the same bucket. - - `rule_id` - (Optional, String) Unique identifier for the rule. Rules allow you to set a specific time frame after which objects are deleted. Set Rule ID for cos bucket. + - `days_after_initiation` - (Optional, integer) Specifies the number of days that govern the automatic cancellation of part upload. Clean up incomplete multi-part uploads after a period of time. Must be a value greater than 0 and less than 3650. + - `enable` - (Required, bool) A rule can either be `enabled` or `disabled`. A rule is active only when enabled. + - `prefix` - (Optional, string) A rule with a prefix will only apply to the objects that match. You can use multiple rules for different actions for different prefixes within the same bucket. + - `rule_id` - (Optional, string) Unique identifier for the rule. Rules allow you to set a specific time frame after which objects are deleted. Set Rule ID for cos bucket. - `allowed_ip` - (Optional, Array of string) A list of IPv4 or IPv6 addresses in CIDR notation that you want to allow access to your IBM Cloud Object Storage bucket. -- `activity_tracking`- (Object) Object to enable auditing with IBM Cloud Activity Tracker - Optional - Configure your IBM Cloud Activity Tracker service instance and the type of events that you want to send to your service to audit activity against your bucket. For a list of supported actions, see [Bucket actions](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-at-events#at-actions-mngt-2). + +- `activity_tracking`- (Object) Enables sending log data to IBM Cloud Activity Tracker to provide visibility into bucket management, object read and write events. +(Recommended) When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance at the container's location unless otherwise specified in the ATracker Routing service configuration. +(Legacy) When the `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified. +For more information please follow ,[IBM Cloud Activity Tracker](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-at).For a list of supported actions, see [Bucket actions](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-at-events#at-actions-mngt-2). Nested scheme for `activity_tracking`: - - `activity_tracker_crn`- (Optional, String) The CRN of your IBM Cloud Activity Tracker service instance.(Recommended) When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Router service configuration.(Legacy) If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. + - `activity_tracker_crn`- (Optional, string) When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Event Routing service configuration.If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. - - `read_data_events`- (Optional, Bool) If set to **true**, all read events against a bucket are sent to your IBM Cloud Activity Tracker service instance. - - `write_data_events`- (Optional, Bool) If set to **true**, all write events against a bucket are sent to your IBM Cloud Activity Tracker service instance. - - `management_events`- (Optional, Bool) This field only applies if `activity_tracker_crn` is not populated. If set to `true`, all bucket management events will be sent to Activity Tracker. + - `read_data_events`- (Optional, bool) If set to **true**, all object read events (i.e. downloads) will be sent to Activity Tracker. + - `write_data_events`- (Optional, bool) If set to **true**, all object write events (i.e. uploads) will be sent to Activity Tracker. + - `management_events`- (Optional, bool) This field only applies if `activity_tracker_crn` is not populated. If set to **true**, all bucket management events will be sent to Activity Tracker. - `archive_rule` - (Required, List) Nested archive_rule block has following structure. Nested scheme for `archive_rule`: - - `days` - (Required, Integer) Specifies the number of days when the specific rule action takes effect. - - `enable` - (Required, Bool) Specifies archive rule status either `enable` or `disable` for a bucket. - - `rule_id` - (Optional, Computed, String) The unique ID for the rule. Archive rules allow you to set a specific time frame after the objects transition to the archive. - - `type` - (Required, String) Specifies the storage class or archive type to which you want the object to transition. Allowed values are `Glacier` or `Accelerated`. + - `days` - (Required, integer) Specifies the number of days when the specific rule action takes effect. + - `enable` - (Required, bool) Specifies archive rule status either `enable` or `disable` for a bucket. + - `rule_id` - (Optional, Computed, string) The unique ID for the rule. Archive rules allow you to set a specific time frame after the objects transition to the archive. + - `type` - (Required, string) Specifies the storage class or archive type to which you want the object to transition. Allowed values are `Glacier` or `Accelerated`. **Note:** - Archive is available in certain regions only. For more information, see [Integrated Services](https://cloud.ibm.com/docs/cloud-object-storage/basics?topic=cloud-object-storage-service-availability). - Restoring object once archive is not supported yet. -- `bucket_name` - (Required, String) The name of the bucket. -- `cross_region_location` - (Optional, String) Specify the cross-regional bucket location. Supported values are `us`, `eu`, and `ap`. If you use this parameter, do not set `single_site_location` or `region_location` at the same time. -- `endpoint_type`- (Optional, String) The type of the endpoint either `public` or `private` or `direct` to be used for buckets. Default value is `public`. +- `bucket_name` - (Required, string) The name of the bucket. +- `cross_region_location` - (Optional, string) Specify the cross-regional bucket location. Supported values are `us`, `eu`, and `ap`. If you use this parameter, do not set `single_site_location` or `region_location` at the same time. +- `endpoint_type`- (Optional, string) The type of the endpoint either `public` or `private` or `direct` to be used for buckets. Default value is `public`. - `expire_rule` - (Required, List) An expiration rule deletes objects after a defined period (from the object creation date). see [lifecycle actions](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-versioning). Nested expire_rule block has following structure. Nested scheme for `expire_rule`: - - `days` - (Optional, Integer) Specifies the number of days when the specific rule action takes effect. - - `date` - (Optional, String) After the specifies date , the current version of objects in your bucket expires. - - `enable` - (Required, Bool) Specifies expire rule status either `enable` or `disable` for a bucket. - - `expired_object_delete_marker` - (Optional, String) Expired object delete markers can be automatically cleaned up to improve performance in your bucket. This cannot be used alongside version expiration. This element for the Expiration action which will only remove delete markers that have no non-current versions at all & objects whose only version is a single delete marker. - - `prefix` - (Optional, String) Specifies a prefix filter to apply to only a subset of objects with names that match the prefix. - - `rule_id` - (Optional, Computed, String) Unique ID for the rule. Expire rules allow you to set a specific time frame after which objects are deleted. + - `days` - (Optional, integer) Specifies the number of days when the specific rule action takes effect. + - `date` - (Optional, string) After the specifies date , the current version of objects in your bucket expires. + - `enable` - (Required, bool) Specifies expire rule status either `enable` or `disable` for a bucket. + - `expired_object_delete_marker` - (Optional, string) Expired object delete markers can be automatically cleaned up to improve performance in your bucket. This cannot be used alongside version expiration. This element for the Expiration action which will only remove delete markers that have no non-current versions at all & objects whose only version is a single delete marker. + - `prefix` - (Optional, string) Specifies a prefix filter to apply to only a subset of objects with names that match the prefix. + - `rule_id` - (Optional, Computed, string) Unique ID for the rule. Expire rules allow you to set a specific time frame after which objects are deleted. **Note:** - Both `archive_rule` and `expire_rule` must be managed by Terraform as they use the same lifecycle configuration. If user creates any of the rule outside of Terraform by using command line or console, you can see unexpected difference like removal of any of the rule or one rule overrides another. The policy cannot match as expected due to API limitations, as the lifecycle is a single API request for both archive and expire. @@ -500,38 +488,37 @@ Review the argument references that you can specify for your resource. - expired_object_delete_marker element can not be used in conjunction with other expiry action elements (Days or Date). - The expiry 3 action elements (Days, Date, ExpiredObjectDeleteMarker) are all mutually exclusive.Anyone parameter can apply among 3 (Days, Date, ExpiredObjectDeleteMarker) in expire_rule. - You cannot specify both a Days and ExpiredObjectDeleteMarker tag on the same rule. Specifying the Days tag will automatically perform ExpiredObjectDeleteMarker cleanup once delete markers are old enough to satisfy the age criteria. You can create a separate rule with only the tag ExpiredObjectDeleteMarker to clean up delete markers as soon as they become the only version. -- `force_delete`- (Optional, Bool) As the default value set to **true**, it will delete all the objects in the COS Bucket and then delete the bucket. +- `force_delete`- (Optional, bool) As the default value set to **true**, it will delete all the objects in the COS Bucket and then delete the bucket. **Note:** `force_delete` will timeout on buckets with a large amount of objects. 24 hours before you delete the bucket you can set an expire rule to remove all the files over a day old. -- `hard_quota` - (Optional, Integer) Sets a maximum amount of storage (in bytes) available for a bucket. For more information, check the [cloud documention](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-quota). -- `kms_key_crn` - (Optional, String) The CRN of the IBM Key Protect root key that you want to use to encrypt data that is sent and stored in IBM Cloud Object Storage. Before you can enable IBM Key Protect encryption, you must provision an instance of IBM Key Protect and authorize the service to access IBM Cloud Object Storage. For more information, see [Server-Side Encryption with IBM Key Protect or Hyper Protect Crypto Services (SSE-KP)](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-encryption). +- `hard_quota` - (Optional, integer) Sets a maximum amount of storage (in bytes) available for a bucket. For more information, check the [cloud documention](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-quota). +- `kms_key_crn` - (Optional, string) The CRN of the IBM Key Protect root key that you want to use to encrypt data that is sent and stored in IBM Cloud Object Storage. Before you can enable IBM Key Protect encryption, you must provision an instance of IBM Key Protect and authorize the service to access IBM Cloud Object Storage. For more information, see [Server-Side Encryption with IBM Key Protect or Hyper Protect Crypto Services (SSE-KP)](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-encryption). **Note:** `key_protect` attribute has been renamed as `kms_key_crn` , hence it is recommended to all the new users to use `kms_key_crn`.Although the support for older attribute name `key_protect` will be continued for existing customers. -- `metrics_monitoring`- (Object) to enable metrics tracking with IBM Cloud Monitoring - Optional- Set up your IBM Cloud Monitoring service instance to receive metrics for your IBM Cloud Object Storage bucket. +- `metrics_monitoring`- (Object) Enables sending metrics to IBM Cloud Monitoring. All metrics are opt-in. +(Recommended) When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the Monitoring instance at the container's location unless otherwise specified in the Metrics Router service configuration. +(Legacy) When the `metrics_monitoring_crn` is populated, then enabled metrics are sent to the Monitoring instance defined in the `metrics_monitoring_crn` field. +For more details check the [IBM Cloud Monitoring](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-mm-cos-integration). Nested scheme for `metrics_monitoring`: - - `metrics_monitoring_crn` - (Optional, string) (Recommended) When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration.(Legacy) If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified(Legacy). + - `metrics_monitoring_crn` - (Optional, string)When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration.If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified(Legacy). - - `request_metrics_enabled` : (Optional, Bool) If set to **true**, all request metrics (eg: `ibm_cos_bucket_all_request`) are sent to the monitoring service at a 1 min granularity. - - `usage_metrics_enabled` : (Optional, Bool) If set to **true**, all usage metrics (eg: `bytes_used`) are sent to the monitoring service.Usage metrics are sent to the monitoring services every 24 hours - - **Note:** - - Request metrics are supported in all regions and console has the support. For more details check the [cloud documention](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-mm-cos-integration). - - One of the location option must be present. + - `request_metrics_enabled` : (Optional, bool) If set to **true**, all request metrics (i.e. `rest.object.head`) will be sent to the monitoring service. + - `usage_metrics_enabled` : (Optional, bool) If set to **true**, all usage metrics (i.e. `bytes_used`) will be sent to the monitoring service. - `noncurrent_version_expiration` - (Required, List) lifecycle has a versioning related expiration action: non-current version expiration. This can remove old versions of objects after they've been non-current for a specified number of days which is specified with a NoncurrentDays parameter on the rule. see [lifecycle actions](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-versioning). Nested noncurrent_version_expiration block has following structure. Nested scheme for `noncurrent_version_expiration`: - - `enable` - (Requried, Bool) A rule can either be `enabled` or `disabled`. A rule is active only when enabled. - - `noncurrent_days` - (Optional, Integer) Configuration parameter in your policy that says how long to retain a non-current version before deleting it. Must be greater than 0. - - `prefix` - (Optional, String) The rule applies to any objects with keys that match this prefix. You can use multiple rules for different actions for different prefixes within the same bucket. - - `rule_id` - (Optional, String) Unique identifier for the rule. Rules allow you to remove versions from objects. Set Rule ID for cos bucket. + - `enable` - (Requried, bool) A rule can either be `enabled` or `disabled`. A rule is active only when enabled. + - `noncurrent_days` - (Optional, integer) Configuration parameter in your policy that says how long to retain a non-current version before deleting it. Must be greater than 0. + - `prefix` - (Optional, string) The rule applies to any objects with keys that match this prefix. You can use multiple rules for different actions for different prefixes within the same bucket. + - `rule_id` - (Optional, string) Unique identifier for the rule. Rules allow you to remove versions from objects. Set Rule ID for cos bucket. - `object_versioning` - (Object) Object Versioning allows the COS user to keep multiple versions of an object in a bucket to protect against accidental deletion or overwrites. With versioning, you can easily recover from both unintended user actions and application failure. Nested block have the following structure: Nested scheme for `object_versioning`: - - `enable` : (Optional, Bool) Specifies Versioning status either enable or Suspended for the objects in the bucket.Default value set to false. + - `enable` : (Optional, bool) Specifies Versioning status either enable or Suspended for the objects in the bucket.Default value set to false. **Note:** - Versioning allows multiple revisions of a single object to exist in the same bucket. Each version of an object can be queried, read, restored from an archived state, or deleted. @@ -542,25 +529,25 @@ Review the argument references that you can specify for your resource. - Containers with proxy configuration cannot use versioning and vice versa. - SoftLayer accounts cannot use versioning. - Currently, you cannot support `MFA_Delete`, that is a feature to add additional security to version delete. -- `region_location` - (Optional, String) The location of a regional bucket. Supported values are `au-syd`, `eu-de`, `eu-gb`, `jp-tok`, `us-east`, `us-south`, `ca-tor`, `jp-osa`, `br-sao`. If you set this parameter, do not set `single_site_location` or `cross_region_location` at the same time. -- `resource_instance_id` - (Required, String) The ID of the IBM Cloud Object Storage service instance for which you want to create a bucket. +- `region_location` - (Optional, string) The location of a regional bucket. Supported values are `au-syd`, `eu-de`, `eu-gb`, `jp-tok`, `us-east`, `us-south`, `ca-tor`, `jp-osa`, `br-sao`. If you set this parameter, do not set `single_site_location` or `cross_region_location` at the same time. +- `resource_instance_id` - (Required, string) The ID of the IBM Cloud Object Storage service instance for which you want to create a bucket. - `retention_rule` - (List) Nested block have the following structure: Nested scheme for `retention rule`: - - `default` - (Required, Integer) default retention period are defined by this policy and apply to all objects in the bucket. - - `maximum` - (Required, Integer) Specifies maximum duration of time an object that can be kept unmodified in the bucket. - - `minimum` - (Required, Integer) Specifies minimum duration of time an object must be kept unmodified in the bucket. - - `permanent` : (Optional, Bool) Specifies a permanent retention status either enable or disable for a bucket. + - `default` - (Required, integer) default retention period are defined by this policy and apply to all objects in the bucket. + - `maximum` - (Required, integer) Specifies maximum duration of time an object that can be kept unmodified in the bucket. + - `minimum` - (Required, integer) Specifies minimum duration of time an object must be kept unmodified in the bucket. + - `permanent` : (Optional, bool) Specifies a permanent retention status either enable or disable for a bucket. **Note:** - Retention policies cannot be removed. For a new bucket, ensure that you are creating the bucket in a supported region. For more information, see [Integrated Services](https://cloud.ibm.com/docs/cloud-object-storage/basics?topic=cloud-object-storage-service-availability). - The minimum retention period must be less than or equal to the default retention period, that in turn must be less than or equal to the maximum retention period. - Permanent retention can only be enabled at a IBM Cloud Object Storage bucket level with retention policy enabled and users are able to select the permanent retention period option during object uploads. Once enabled, this process can't be reversed and objects uploaded that use a permanent retention period cannot be deleted. It's the responsibility of the users to validate at their end if there's a legitimate need to permanently store objects by using Object Storage buckets with a retention policy. - force deleting the bucket will not work if any object is still under retention. As objects cannot be deleted or overwritten until the retention period has expired and all the legal holds have been removed. -- `single_site_location` - (Optional, String) The location for a single site bucket. Supported values are: `ams03`, `che01`, `hkg02`, `mel01`, `mex01`, `mil01`, `mon01`, `osl01`, `par01`, `sjc04`, `sao01`, `seo01`, `sng01`, and `tor01`. If you set this parameter, do not set `region_location` or `cross_region_location` at the same time. -- `storage_class` - (Optional, String) The storage class that you want to use for the bucket. Supported values are `standard`, `vault`, `cold` and `smart` for `standard` and `lite` COS plans, `onerate_active` for `cos-one-rate-plan` COS plan.For more information, about storage classes, see [Use storage classes](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-classes).`storage_class` should not be used with Satellite location id. -- `satellite_location_id` - (Optional, String) satellite location id. Provided by end users. -- `object_lock` - (Optional, Bool) Enables Object Lock feature on a COS bucket. +- `single_site_location` - (Optional, string) The location for a single site bucket. Supported values are: `ams03`, `che01`, `hkg02`, `mel01`, `mex01`, `mil01`, `mon01`, `osl01`, `par01`, `sjc04`, `sao01`, `seo01`, `sng01`, and `tor01`. If you set this parameter, do not set `region_location` or `cross_region_location` at the same time. +- `storage_class` - (Optional, string) The storage class that you want to use for the bucket. Supported values are `standard`, `vault`, `cold` and `smart` for `standard` and `lite` COS plans, `onerate_active` for `cos-one-rate-plan` COS plan.For more information, about storage classes, see [Use storage classes](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-classes).`storage_class` should not be used with Satellite location id. +- `satellite_location_id` - (Optional, string) satellite location id. Provided by end users. +- `object_lock` - (Optional, bool) Enables Object Lock feature on a COS bucket. **Note:** - To enable Object Lock on a bucket , object_versioning should be enabled. @@ -569,20 +556,20 @@ Review the argument references that you can specify for your resource. ## Attribute reference In addition to all argument reference list, you can access the following attribute reference after your resource is created. -- `crn` - (String) The CRN of the bucket. -- `cross_region_location` - (String) The location if you created a cross-regional bucket. -- `id` - (String) The ID of the bucket. -- `kms_key_crn` - (String) The CRN of the IBM Key Protect instance that you use to encrypt your data in IBM Cloud Object Storage. +- `crn` - (string) The CRN of the bucket. +- `cross_region_location` - (string) The location if you created a cross-regional bucket. +- `id` - (string) The ID of the bucket. +- `kms_key_crn` - (string) The CRN of the IBM Key Protect instance that you use to encrypt your data in IBM Cloud Object Storage. **Note:** `key_protect` attribute has been renamed as `kms_key_crn` , hence it is recommended to all the new users to use `kms_key_crn`.Although the support for older attribute name `key_protect` will be continued for existing customers. -- `region_location` - (String) The location if you created a regional bucket. -- `resource_instance_id` - (String) The ID of IBM Cloud Object Storage instance. -- `single_site_location` - (String) The location if you created a single site bucket. -- `storage_class` - (String) The storage class of the bucket. -- `s3_endpoint_public` - (String) Public endpoint for cos bucket. -- `s3_endpoint_private` - (String) Private endpoint for cos bucket. -- `s3_endpoint_direct` - (String) Direct endpoint for cos bucket. +- `region_location` - (string) The location if you created a regional bucket. +- `resource_instance_id` - (string) The ID of IBM Cloud Object Storage instance. +- `single_site_location` - (string) The location if you created a single site bucket. +- `storage_class` - (string) The storage class of the bucket. +- `s3_endpoint_public` - (string) Public endpoint for cos bucket. +- `s3_endpoint_private` - (string) Private endpoint for cos bucket. +- `s3_endpoint_direct` - (string) Direct endpoint for cos bucket. ## Import IBM COS Bucket The `ibm_cos_bucket` resource can be imported by using the `id`. The ID is formed from the `CRN` (Cloud Resource Name), the `bucket type` which must be `ssl` for single_site_location, `rl` for region_location or `crl` for cross_region_location, and the bucket location. The `CRN` and bucket location can be found on the portal. From b283832e6b9cf52f877f1c626ce450377b34fffa Mon Sep 17 00:00:00 2001 From: Diksha Mali Date: Tue, 14 May 2024 20:03:15 +0530 Subject: [PATCH 13/22] Documentation changes --- website/docs/r/cos_bucket.html.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/website/docs/r/cos_bucket.html.markdown b/website/docs/r/cos_bucket.html.markdown index b628a29d779..b2007414e3d 100644 --- a/website/docs/r/cos_bucket.html.markdown +++ b/website/docs/r/cos_bucket.html.markdown @@ -448,6 +448,7 @@ Review the argument references that you can specify for your resource. - `activity_tracking`- (Object) Enables sending log data to IBM Cloud Activity Tracker to provide visibility into bucket management, object read and write events. (Recommended) When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance at the container's location unless otherwise specified in the ATracker Routing service configuration. + (Legacy) When the `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified. For more information please follow ,[IBM Cloud Activity Tracker](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-at).For a list of supported actions, see [Bucket actions](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-at-events#at-actions-mngt-2). @@ -499,6 +500,8 @@ For more information please follow ,[IBM Cloud Activity Tracker](https://cloud.i - `metrics_monitoring`- (Object) Enables sending metrics to IBM Cloud Monitoring. All metrics are opt-in. (Recommended) When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the Monitoring instance at the container's location unless otherwise specified in the Metrics Router service configuration. + + (Legacy) When the `metrics_monitoring_crn` is populated, then enabled metrics are sent to the Monitoring instance defined in the `metrics_monitoring_crn` field. For more details check the [IBM Cloud Monitoring](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-mm-cos-integration). From 9ee92f9fc404a10e172e812c9e99cc082a932bbe Mon Sep 17 00:00:00 2001 From: Diksha Mali Date: Tue, 14 May 2024 20:06:33 +0530 Subject: [PATCH 14/22] Documentation indentation changes --- website/docs/r/cos_bucket.html.markdown | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/website/docs/r/cos_bucket.html.markdown b/website/docs/r/cos_bucket.html.markdown index b2007414e3d..24cee5def5f 100644 --- a/website/docs/r/cos_bucket.html.markdown +++ b/website/docs/r/cos_bucket.html.markdown @@ -447,12 +447,14 @@ Review the argument references that you can specify for your resource. - `allowed_ip` - (Optional, Array of string) A list of IPv4 or IPv6 addresses in CIDR notation that you want to allow access to your IBM Cloud Object Storage bucket. - `activity_tracking`- (Object) Enables sending log data to IBM Cloud Activity Tracker to provide visibility into bucket management, object read and write events. -(Recommended) When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance at the container's location unless otherwise specified in the ATracker Routing service configuration. -(Legacy) When the `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified. -For more information please follow ,[IBM Cloud Activity Tracker](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-at).For a list of supported actions, see [Bucket actions](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-at-events#at-actions-mngt-2). + (Recommended) When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance at the container's location unless otherwise specified in the ATracker Routing service configuration. - Nested scheme for `activity_tracking`: + (Legacy) When the `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified. + + For more information please follow ,[IBM Cloud Activity Tracker](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-at).For a list of supported actions, see [Bucket actions](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-at-events#at-actions-mngt-2). + + - Nested scheme for `activity_tracking`: - `activity_tracker_crn`- (Optional, string) When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Event Routing service configuration.If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. - `read_data_events`- (Optional, bool) If set to **true**, all object read events (i.e. downloads) will be sent to Activity Tracker. @@ -501,7 +503,6 @@ For more information please follow ,[IBM Cloud Activity Tracker](https://cloud.i - `metrics_monitoring`- (Object) Enables sending metrics to IBM Cloud Monitoring. All metrics are opt-in. (Recommended) When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the Monitoring instance at the container's location unless otherwise specified in the Metrics Router service configuration. - (Legacy) When the `metrics_monitoring_crn` is populated, then enabled metrics are sent to the Monitoring instance defined in the `metrics_monitoring_crn` field. For more details check the [IBM Cloud Monitoring](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-mm-cos-integration). From 8d151d65a50da6b2f524e8275c1120ea083be3ee Mon Sep 17 00:00:00 2001 From: Diksha Mali Date: Tue, 14 May 2024 20:08:34 +0530 Subject: [PATCH 15/22] Documentation indentation changes --- website/docs/r/cos_bucket.html.markdown | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/website/docs/r/cos_bucket.html.markdown b/website/docs/r/cos_bucket.html.markdown index 24cee5def5f..5c70d71cfe0 100644 --- a/website/docs/r/cos_bucket.html.markdown +++ b/website/docs/r/cos_bucket.html.markdown @@ -451,10 +451,10 @@ Review the argument references that you can specify for your resource. (Recommended) When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance at the container's location unless otherwise specified in the ATracker Routing service configuration. (Legacy) When the `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified. - + For more information please follow ,[IBM Cloud Activity Tracker](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-at).For a list of supported actions, see [Bucket actions](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-at-events#at-actions-mngt-2). - - Nested scheme for `activity_tracking`: + Nested scheme for `activity_tracking`: - `activity_tracker_crn`- (Optional, string) When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Event Routing service configuration.If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. - `read_data_events`- (Optional, bool) If set to **true**, all object read events (i.e. downloads) will be sent to Activity Tracker. @@ -501,10 +501,10 @@ Review the argument references that you can specify for your resource. `key_protect` attribute has been renamed as `kms_key_crn` , hence it is recommended to all the new users to use `kms_key_crn`.Although the support for older attribute name `key_protect` will be continued for existing customers. - `metrics_monitoring`- (Object) Enables sending metrics to IBM Cloud Monitoring. All metrics are opt-in. -(Recommended) When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the Monitoring instance at the container's location unless otherwise specified in the Metrics Router service configuration. + (Recommended) When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the Monitoring instance at the container's location unless otherwise specified in the Metrics Router service configuration. -(Legacy) When the `metrics_monitoring_crn` is populated, then enabled metrics are sent to the Monitoring instance defined in the `metrics_monitoring_crn` field. -For more details check the [IBM Cloud Monitoring](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-mm-cos-integration). + (Legacy) When the `metrics_monitoring_crn` is populated, then enabled metrics are sent to the Monitoring instance defined in the `metrics_monitoring_crn` field. + For more details check the [IBM Cloud Monitoring](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-mm-cos-integration). Nested scheme for `metrics_monitoring`: - `metrics_monitoring_crn` - (Optional, string)When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the monitoring instance associated to the container's location unless otherwise specified in the Metrics Router service configuration.If `metrics_monitoring_crn` is populated, then enabled events are sent to the Metrics Monitoring instance specified(Legacy). From e5f772f793027265ba4a9717ddf12628f0836d25 Mon Sep 17 00:00:00 2001 From: Diksha Mali Date: Tue, 14 May 2024 20:14:38 +0530 Subject: [PATCH 16/22] Documentation description changes --- ibm/service/cos/resource_ibm_cos_bucket.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ibm/service/cos/resource_ibm_cos_bucket.go b/ibm/service/cos/resource_ibm_cos_bucket.go index 19fb1e4b90a..6a1e64feb68 100644 --- a/ibm/service/cos/resource_ibm_cos_bucket.go +++ b/ibm/service/cos/resource_ibm_cos_bucket.go @@ -186,7 +186,7 @@ func ResourceIBMCOSBucket() *schema.Resource { Type: schema.TypeList, Optional: true, MaxItems: 1, - Description: "Enables sending log data to Activity Tracker and LogDNA to provide visibility into object read and write events", + Description: "Enables sending log data to IBM Cloud Activity Tracker to provide visibility into bucket management, object read and write events.", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "read_data_events": { @@ -218,7 +218,7 @@ func ResourceIBMCOSBucket() *schema.Resource { Type: schema.TypeList, Optional: true, MaxItems: 1, - Description: "Enables sending metrics to IBM Cloud Monitoring.", + Description: " Enables sending metrics to IBM Cloud Monitoring.All metrics are opt-in", Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "usage_metrics_enabled": { From 4eae5dd4e549e25b3217fc00d7f9770768ea4775 Mon Sep 17 00:00:00 2001 From: Diksha Mali Date: Tue, 14 May 2024 20:16:55 +0530 Subject: [PATCH 17/22] Documentation indentation fix --- website/docs/r/cos_bucket.html.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/website/docs/r/cos_bucket.html.markdown b/website/docs/r/cos_bucket.html.markdown index 5c70d71cfe0..1df45b7ee1f 100644 --- a/website/docs/r/cos_bucket.html.markdown +++ b/website/docs/r/cos_bucket.html.markdown @@ -501,6 +501,7 @@ Review the argument references that you can specify for your resource. `key_protect` attribute has been renamed as `kms_key_crn` , hence it is recommended to all the new users to use `kms_key_crn`.Although the support for older attribute name `key_protect` will be continued for existing customers. - `metrics_monitoring`- (Object) Enables sending metrics to IBM Cloud Monitoring. All metrics are opt-in. + (Recommended) When the `metrics_monitoring_crn` is not populated, then enabled metrics are sent to the Monitoring instance at the container's location unless otherwise specified in the Metrics Router service configuration. (Legacy) When the `metrics_monitoring_crn` is populated, then enabled metrics are sent to the Monitoring instance defined in the `metrics_monitoring_crn` field. From 4bbd0988247567625280bfa7ccf8882793d588ea Mon Sep 17 00:00:00 2001 From: Diksha Mali Date: Wed, 15 May 2024 21:06:58 +0530 Subject: [PATCH 18/22] Addressing the Documentation review comments --- examples/ibm-cos-bucket/README.md | 2 +- ibm/service/cos/resource_ibm_cos_bucket.go | 2 +- website/docs/d/cos_bucket.html.markdown | 2 +- website/docs/r/cos_bucket.html.markdown | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/ibm-cos-bucket/README.md b/examples/ibm-cos-bucket/README.md index cac577e30aa..6f4e5f63601 100644 --- a/examples/ibm-cos-bucket/README.md +++ b/examples/ibm-cos-bucket/README.md @@ -530,7 +530,7 @@ resource ibm_cos_bucket_website_configuration "website_configuration" { | region | The location for a cross-regional bucket. Supported values are **us, eu, and ap**. | `string` | no | | read_data_events | If set to **true**, all object read events (i.e. downloads) will be sent to Activity Tracker. | `bool` | no | write_data_events | If set to **true**, all object write events (i.e. uploads) will be sent to Activity Tracker. | `bool` | no -| management_events | This field only applies if `activity_tracker_crn` is not populated. If set to **true**, all bucket management events will be sent to Activity Tracker. | `bool` | no +| management_events |If set to **true**, all bucket management events will be sent to Activity Tracker.This field only applies if `activity_tracker_crn` is not populated. | `bool` | no | activity_tracker_crn |When the `activity_tracker_crn` is not populated, then enabled events are sent to the Activity Tracker instance associated to the container's location unless otherwise specified in the Activity Tracker Event Routing service configuration.If `activity_tracker_crn` is populated, then enabled events are sent to the Activity Tracker instance specified and bucket management events are always enabled. | `string` | no | usage_metrics_enabled |If set to **true**, all usage metrics (i.e. `bytes_used`) will be sent to the monitoring service.| `bool` | no | request_metrics_enabled | If set to **true**, all request metrics (i.e. `rest.object.head`) will be sent to the monitoring service. | `bool` | no diff --git a/ibm/service/cos/resource_ibm_cos_bucket.go b/ibm/service/cos/resource_ibm_cos_bucket.go index 6a1e64feb68..44cc75d7721 100644 --- a/ibm/service/cos/resource_ibm_cos_bucket.go +++ b/ibm/service/cos/resource_ibm_cos_bucket.go @@ -204,7 +204,7 @@ func ResourceIBMCOSBucket() *schema.Resource { "management_events": { Type: schema.TypeBool, Optional: true, - Description: "This field only applies if `activity_tracker_crn` is not populated. If set to `true`, all bucket management events will be sent to Activity Tracker.", + Description: "If set to `true`, all bucket management events will be sent to Activity Tracker.This field only applies if `activity_tracker_crn` is not populated.", }, "activity_tracker_crn": { Type: schema.TypeString, diff --git a/website/docs/d/cos_bucket.html.markdown b/website/docs/d/cos_bucket.html.markdown index ec1576fbc10..15d9a767aff 100644 --- a/website/docs/d/cos_bucket.html.markdown +++ b/website/docs/d/cos_bucket.html.markdown @@ -142,7 +142,7 @@ In addition to all argument reference list, you can access the following attribu - `read_data_events` - (bool) If set to **true**, all object read events (i.e. downloads) will be sent to Activity Tracker. - `write_data_events`- (bool) If set to **true**, all object write events (that is `uploads`) is sent to Activity Tracker. - - `management_events`- (bool) This field only applies if `activity_tracker_crn` is not populated. If set to **true**, all bucket management events will be sent to Activity Tracker. + - `management_events`- (bool) If set to **true**, all bucket management events will be sent to Activity Tracker.This field only applies if `activity_tracker_crn` is not populated. - `archive_rule` (List) Nested block with the following structure. diff --git a/website/docs/r/cos_bucket.html.markdown b/website/docs/r/cos_bucket.html.markdown index 1df45b7ee1f..ce6a8180f66 100644 --- a/website/docs/r/cos_bucket.html.markdown +++ b/website/docs/r/cos_bucket.html.markdown @@ -459,7 +459,7 @@ Review the argument references that you can specify for your resource. - `read_data_events`- (Optional, bool) If set to **true**, all object read events (i.e. downloads) will be sent to Activity Tracker. - `write_data_events`- (Optional, bool) If set to **true**, all object write events (i.e. uploads) will be sent to Activity Tracker. - - `management_events`- (Optional, bool) This field only applies if `activity_tracker_crn` is not populated. If set to **true**, all bucket management events will be sent to Activity Tracker. + - `management_events`- (Optional, bool) If set to **true**, all bucket management events will be sent to Activity Tracker.This field only applies if `activity_tracker_crn` is not populated. - `archive_rule` - (Required, List) Nested archive_rule block has following structure. From 780f8ba09c299afcdfaf767e43c17605c5c4e04f Mon Sep 17 00:00:00 2001 From: Diksha Mali Date: Thu, 13 Jun 2024 10:31:04 +0530 Subject: [PATCH 19/22] Adding location constraint for objectlock bucket --- ibm/service/cos/resource_ibm_cos_bucket.go | 3 +++ ...os_bucket_objectlock_configuration_test.go | 27 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/ibm/service/cos/resource_ibm_cos_bucket.go b/ibm/service/cos/resource_ibm_cos_bucket.go index 44cc75d7721..1a20a529b78 100644 --- a/ibm/service/cos/resource_ibm_cos_bucket.go +++ b/ibm/service/cos/resource_ibm_cos_bucket.go @@ -1400,6 +1400,9 @@ func resourceIBMCOSBucketCreate(d *schema.ResourceData, meta interface{}) error create = &s3.CreateBucketInput{ Bucket: aws.String(bucketName), ObjectLockEnabledForBucket: aws.Bool(true), + CreateBucketConfiguration: &s3.CreateBucketConfiguration{ + LocationConstraint: aws.String(lConstraint), + }, } } else { create = &s3.CreateBucketInput{ diff --git a/ibm/service/cos/resource_ibm_cos_bucket_objectlock_configuration_test.go b/ibm/service/cos/resource_ibm_cos_bucket_objectlock_configuration_test.go index ab8f8a18128..41e9daada6d 100644 --- a/ibm/service/cos/resource_ibm_cos_bucket_objectlock_configuration_test.go +++ b/ibm/service/cos/resource_ibm_cos_bucket_objectlock_configuration_test.go @@ -37,6 +37,33 @@ func TestAccIBMCosBucket_Objectlock_Bucket_Enabled(t *testing.T) { }) } +func TestAccIBMCosBucket_Objectlock_Bucket_Enabled_Smart_tier_bucket(t *testing.T) { + serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) + bucketName := fmt.Sprintf("terraform-smart-tier-ol%d", acctest.RandIntRange(10, 100)) + bucketRegion := "us" + bucketClass := "smart" + bucketRegionType := "cross_region_location" + objectLockEnabled := true + resource.Test(t, resource.TestCase{ + PreCheck: func() { acc.TestAccPreCheck(t) }, + Providers: acc.TestAccProviders, + CheckDestroy: testAccCheckIBMCosBucketDestroy, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCosBucket_Objectlock_Bucket_Enabled(serviceName, bucketName, bucketRegionType, bucketRegion, bucketClass, objectLockEnabled), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckIBMCosBucketExists("ibm_resource_instance.instance", "ibm_cos_bucket.bucket", bucketRegionType, bucketRegion, bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "bucket_name", bucketName), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "storage_class", bucketClass), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "cross_region_location", bucketRegion), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "object_versioning.#", "1"), + resource.TestCheckResourceAttr("ibm_cos_bucket.bucket", "object_lock", "true"), + ), + }, + }, + }) +} + func TestAccIBMCosBucket_Objectlock_Configuration_Without_Rule(t *testing.T) { serviceName := fmt.Sprintf("terraform_%d", acctest.RandIntRange(10, 100)) bucketName := fmt.Sprintf("terraform%d", acctest.RandIntRange(10, 100)) From f6de9f70372be94f60f7eedd288520701eca57ff Mon Sep 17 00:00:00 2001 From: Diksha Mali Date: Thu, 13 Jun 2024 10:33:22 +0530 Subject: [PATCH 20/22] Format issue --- .../cos/resource_ibm_cos_bucket_test.go | 67 ++++++++++--------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/ibm/service/cos/resource_ibm_cos_bucket_test.go b/ibm/service/cos/resource_ibm_cos_bucket_test.go index 488d5f582cc..16048f2882c 100644 --- a/ibm/service/cos/resource_ibm_cos_bucket_test.go +++ b/ibm/service/cos/resource_ibm_cos_bucket_test.go @@ -3047,39 +3047,40 @@ func testAccCheckIBMCosBucket_metricsMonitoring_Upload_Object_RequestMetrics_Tru // return fmt.Sprintf(` -// data "ibm_resource_group" "cos_group" { -// is_default=true -// } -// resource "ibm_resource_instance" "instance2" { -// name = "%s" -// resource_group_id = data.ibm_resource_group.cos_group.id -// service = "cloud-object-storage" -// plan = "standard" -// location = "global" -// } -// resource "ibm_resource_instance" "metrics_monitor2" { -// name = "%s" -// resource_group_id = data.ibm_resource_group.cos_group.id -// service = "sysdig-monitor" -// plan = "graduated-tier" -// location = "us-south" -// parameters = { -// default_receiver = true -// } -// } -// resource "ibm_cos_bucket" "bucket2" { -// bucket_name = "%s" -// resource_instance_id = ibm_resource_instance.instance2.id -// region_location = "%s" -// storage_class = "%s" -// metrics_monitoring { -// usage_metrics_enabled = true -// request_metrics_enabled = true -// metrics_monitoring_crn = ibm_resource_instance.metrics_monitor2.id -// } -// } -// `, cosServiceName, metricsMonitoringName, bucketName, region, storageClass) -// } +// data "ibm_resource_group" "cos_group" { +// is_default=true +// } +// resource "ibm_resource_instance" "instance2" { +// name = "%s" +// resource_group_id = data.ibm_resource_group.cos_group.id +// service = "cloud-object-storage" +// plan = "standard" +// location = "global" +// } +// resource "ibm_resource_instance" "metrics_monitor2" { +// name = "%s" +// resource_group_id = data.ibm_resource_group.cos_group.id +// service = "sysdig-monitor" +// plan = "graduated-tier" +// location = "us-south" +// parameters = { +// default_receiver = true +// } +// } +// resource "ibm_cos_bucket" "bucket2" { +// bucket_name = "%s" +// resource_instance_id = ibm_resource_instance.instance2.id +// region_location = "%s" +// storage_class = "%s" +// metrics_monitoring { +// usage_metrics_enabled = true +// request_metrics_enabled = true +// metrics_monitoring_crn = ibm_resource_instance.metrics_monitor2.id +// } +// } +// `, cosServiceName, metricsMonitoringName, bucketName, region, storageClass) +// } +// // f1881 end func testAccCheckIBMCosBucket_archive(cosServiceName string, bucketName string, regiontype string, region string, storageClass string, ruleId string, enable bool, archiveDays int, ruleType string) string { From 3f431854c07af606d187ea4900c3407b640891d5 Mon Sep 17 00:00:00 2001 From: Diksha Mali Date: Fri, 14 Jun 2024 16:01:54 +0530 Subject: [PATCH 21/22] Upgrading RC go sdk to 2.1.0 --- go.mod | 20 ++++++++++---------- go.sum | 40 +++++++++++++++++++++------------------- 2 files changed, 31 insertions(+), 29 deletions(-) diff --git a/go.mod b/go.mod index 33d45702b07..0071d930a83 100644 --- a/go.mod +++ b/go.mod @@ -16,9 +16,9 @@ require ( github.com/IBM/event-notifications-go-admin-sdk v0.4.0 github.com/IBM/eventstreams-go-sdk v1.4.0 github.com/IBM/go-sdk-core/v3 v3.2.4 - github.com/IBM/go-sdk-core/v5 v5.16.3 - github.com/IBM/ibm-cos-sdk-go v1.10.1 - github.com/IBM/ibm-cos-sdk-go-config/v2 v2.0.4 + github.com/IBM/go-sdk-core/v5 v5.17.3 + github.com/IBM/ibm-cos-sdk-go v1.10.3 + github.com/IBM/ibm-cos-sdk-go-config/v2 v2.1.0 github.com/IBM/ibm-hpcs-tke-sdk v0.0.0-20211109141421-a4b61b05f7d1 github.com/IBM/ibm-hpcs-uko-sdk v0.0.20-beta github.com/IBM/keyprotect-go-client v0.12.2 @@ -37,7 +37,7 @@ require ( github.com/apache/openwhisk-client-go v0.0.0-20200201143223-a804fb82d105 github.com/apparentlymart/go-cidr v1.1.0 github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 - github.com/go-openapi/strfmt v0.22.1 + github.com/go-openapi/strfmt v0.23.0 github.com/golang-jwt/jwt v3.2.2+incompatible github.com/google/go-cmp v0.6.0 github.com/google/uuid v1.6.0 @@ -52,7 +52,7 @@ require ( github.com/pkg/errors v0.9.1 github.com/rook/rook v1.11.4 github.com/softlayer/softlayer-go v1.0.3 - golang.org/x/crypto v0.19.0 + golang.org/x/crypto v0.22.0 gopkg.in/yaml.v3 v3.0.1 gotest.tools v2.2.0+incompatible k8s.io/api v0.26.3 @@ -105,7 +105,7 @@ require ( github.com/go-logr/logr v1.3.0 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/analysis v0.21.5 // indirect - github.com/go-openapi/errors v0.21.0 // indirect + github.com/go-openapi/errors v0.22.0 // indirect github.com/go-openapi/jsonpointer v0.20.1 // indirect github.com/go-openapi/jsonreference v0.20.3 // indirect github.com/go-openapi/loads v0.21.3 // indirect @@ -116,7 +116,7 @@ require ( github.com/go-ozzo/ozzo-validation/v4 v4.3.0 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect - github.com/go-playground/validator/v10 v10.18.0 // indirect + github.com/go-playground/validator/v10 v10.19.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/golang/snappy v0.0.4 // indirect @@ -208,10 +208,10 @@ require ( go.opentelemetry.io/otel/trace v1.14.0 // indirect go.uber.org/ratelimit v0.2.0 // indirect golang.org/x/mod v0.14.0 // indirect - golang.org/x/net v0.21.0 // indirect + golang.org/x/net v0.24.0 // indirect golang.org/x/oauth2 v0.7.0 // indirect - golang.org/x/sys v0.17.0 // indirect - golang.org/x/term v0.17.0 // indirect + golang.org/x/sys v0.19.0 // indirect + golang.org/x/term v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.3.0 // indirect gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect diff --git a/go.sum b/go.sum index 8502039b83d..a88d4db6d64 100644 --- a/go.sum +++ b/go.sum @@ -141,12 +141,12 @@ github.com/IBM/go-sdk-core/v5 v5.7.0/go.mod h1:+YbdhrjCHC84ls4MeBp+Hj4NZCni+tDAc github.com/IBM/go-sdk-core/v5 v5.9.2/go.mod h1:YlOwV9LeuclmT/qi/LAK2AsobbAP42veV0j68/rlZsE= github.com/IBM/go-sdk-core/v5 v5.9.5/go.mod h1:YlOwV9LeuclmT/qi/LAK2AsobbAP42veV0j68/rlZsE= github.com/IBM/go-sdk-core/v5 v5.10.2/go.mod h1:WZPFasUzsKab/2mzt29xPcfruSk5js2ywAPwW4VJjdI= -github.com/IBM/go-sdk-core/v5 v5.16.3 h1:GJI62GNAagX2xeTMpTACIqki5rDVO3YbxzMuIpAXSrQ= -github.com/IBM/go-sdk-core/v5 v5.16.3/go.mod h1:aojBkkq4HXkOYdn7YZ6ve8cjPWHdcB3tt8v0b9Cbac8= -github.com/IBM/ibm-cos-sdk-go v1.10.1 h1:vQCsu61OHRVF2lL6ah+m3AmUlhnYGkI1qogukCEFULs= -github.com/IBM/ibm-cos-sdk-go v1.10.1/go.mod h1:zhcgfL2YG5DVaI5R2F6oYO2DYnvwW14vpcpFq+ybhXU= -github.com/IBM/ibm-cos-sdk-go-config/v2 v2.0.4 h1:fvy/cMKn/3BngdxaL5dXaSlUuzTANY42VuVQuW0NEYE= -github.com/IBM/ibm-cos-sdk-go-config/v2 v2.0.4/go.mod h1:Pam4aWm9Ve/pqAVrPW8nm2yCXq0h9LDeQ1Iacx5g9rU= +github.com/IBM/go-sdk-core/v5 v5.17.3 h1:CZSVCKzhQc/hRQZOtuEmi9dlNtWMnxJvOsPtQKP7cZ4= +github.com/IBM/go-sdk-core/v5 v5.17.3/go.mod h1:GatGZpxlo1KaxiRN6E10/rNgWtUtx1hN/GoHSCaSPKA= +github.com/IBM/ibm-cos-sdk-go v1.10.3 h1:YfZSLqMiCrqDPbr3r+amY2sicIXlrd+3L5pok6QRXIQ= +github.com/IBM/ibm-cos-sdk-go v1.10.3/go.mod h1:T9x7pC47DUd5jD/TMFzlvly39P6EdW5wOemA78XEo2g= +github.com/IBM/ibm-cos-sdk-go-config/v2 v2.1.0 h1:U7EmXSfv7jtugRpTpOkPUmgS/xiNKtGfKVH3BGyC1hg= +github.com/IBM/ibm-cos-sdk-go-config/v2 v2.1.0/go.mod h1:vMQ0DKpyoPk1MstfipPBoLfFxl3HWjzG/wH/UVg/xiU= github.com/IBM/ibm-hpcs-tke-sdk v0.0.0-20211109141421-a4b61b05f7d1 h1:T5UwRKKd+BoaPZ7UIlpJrzXzVTUEs8HcxwQ3pCIbORs= github.com/IBM/ibm-hpcs-tke-sdk v0.0.0-20211109141421-a4b61b05f7d1/go.mod h1:M2JyuyeWHPtgGNeezr6YqVRuaav2MpY8Ha4QrEYvMoI= github.com/IBM/ibm-hpcs-uko-sdk v0.0.20-beta h1:P1fdIfKsD9xvJQ5MHIEztPS9yfNf9x+VDTamaYcmqcs= @@ -504,8 +504,8 @@ github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpX github.com/go-openapi/errors v0.20.0/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/errors v0.20.3/go.mod h1:Z3FlZ4I8jEGxjUK+bugx3on2mIAk4txuAOhlsB1FSgk= -github.com/go-openapi/errors v0.21.0 h1:FhChC/duCnfoLj1gZ0BgaBmzhJC2SL/sJr8a2vAobSY= -github.com/go-openapi/errors v0.21.0/go.mod h1:jxNTMUxRCKj65yb/okJGEtahVd7uvWnuWfj53bse4ho= +github.com/go-openapi/errors v0.22.0 h1:c4xY/OLxUBSTiepAg3j/MHuAv5mJhnf53LLMWFB+u/w= +github.com/go-openapi/errors v0.22.0/go.mod h1:J3DmZScxCDufmIMsdOuDHxJbdOGC0xtUynjIx092vXE= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= @@ -552,8 +552,8 @@ github.com/go-openapi/strfmt v0.21.1/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrC github.com/go-openapi/strfmt v0.21.2/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k= github.com/go-openapi/strfmt v0.21.3/go.mod h1:k+RzNO0Da+k3FrrynSNN8F7n/peCmQQqbbXjtDfvmGg= github.com/go-openapi/strfmt v0.21.7/go.mod h1:adeGTkxE44sPyLk0JV235VQAO/ZXUr8KAzYjclFs3ew= -github.com/go-openapi/strfmt v0.22.1 h1:5Ky8cybT4576C6Ffc+8gYji/wRXCo6Ozm8RaWjPI6jc= -github.com/go-openapi/strfmt v0.22.1/go.mod h1:OfVoytIXJasDkkGvkb1Cceb3BPyMOwk1FgmyyEw7NYg= +github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c= +github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4= github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= @@ -580,8 +580,8 @@ github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+ github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= -github.com/go-playground/validator/v10 v10.18.0 h1:BvolUXjp4zuvkZ5YN5t7ebzbhlUtPsPm2S9NAZ5nl9U= -github.com/go-playground/validator/v10 v10.18.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= +github.com/go-playground/validator/v10 v10.19.0 h1:ol+5Fu+cSq9JD7SoSqe04GMI92cbn0+wvQ3bZ8b/AU4= +github.com/go-playground/validator/v10 v10.19.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= @@ -1280,8 +1280,8 @@ github.com/onsi/gomega v1.27.7/go.mod h1:1p8OOlwo2iUUDsHnOrjE5UKYJ+e3W8eQ3qSlRah github.com/onsi/gomega v1.27.8/go.mod h1:2J8vzI/s+2shY9XHRApDkdgPo1TKT7P2u6fXeJKFnNQ= github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= -github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo= github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0= +github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= @@ -1489,7 +1489,6 @@ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1F github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= @@ -1636,8 +1635,9 @@ golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98y golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= +golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1762,8 +1762,8 @@ golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= -golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190130055435-99b60b757ec1/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1908,8 +1908,9 @@ golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= +golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1926,8 +1927,9 @@ golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= -golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q= +golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= From f94f2e12a3b7448ca7be03db1d473d5539842708 Mon Sep 17 00:00:00 2001 From: Diksha Mali Date: Sat, 15 Jun 2024 03:13:25 +0530 Subject: [PATCH 22/22] Adding Fix for upgrade crn config issue --- ibm/service/cos/resource_ibm_cos_bucket.go | 39 ++++++++++++------- .../resource_ibm_cos_bucket_object_test.go | 4 +- .../cos/resource_ibm_cos_bucket_test.go | 4 +- 3 files changed, 30 insertions(+), 17 deletions(-) diff --git a/ibm/service/cos/resource_ibm_cos_bucket.go b/ibm/service/cos/resource_ibm_cos_bucket.go index 1a20a529b78..48dcf4f049a 100644 --- a/ibm/service/cos/resource_ibm_cos_bucket.go +++ b/ibm/service/cos/resource_ibm_cos_bucket.go @@ -992,14 +992,21 @@ func resourceIBMCOSBucketUpdate(d *schema.ResourceData, meta interface{}) error } //crn - Optional field - if activityMap["activity_tracker_crn"] != nil { - crnSet := activityMap["activity_tracker_crn"] - crnstring := crnSet.(string) - if crnstring != "" { - crn := activityMap["activity_tracker_crn"].(string) - activityTracker.ActivityTrackerCrn = &crn - } + oldATCrnValue, newATCrnValue := d.GetChange("activity_tracking.0.activity_tracker_crn") + if newATCrnValue != "" { + if activityMap["activity_tracker_crn"] != nil { + crnSet := activityMap["activity_tracker_crn"] + crnstring := crnSet.(string) + if crnstring != "" { + crn := activityMap["activity_tracker_crn"].(string) + activityTracker.ActivityTrackerCrn = &crn + } + + } + } else if oldATCrnValue != "" && newATCrnValue == "" { + println("this is upgrading to new config") + activityTracker.ActivityTrackerCrn = aws.String("") } } } @@ -1026,13 +1033,19 @@ func resourceIBMCOSBucketUpdate(d *schema.ResourceData, meta interface{}) error metricsMonitoring.RequestMetricsEnabled = &metrics } //crn - optional field - if metricsMap["metrics_monitoring_crn"] != nil { - crnSet := metricsMap["metrics_monitoring_crn"] - crnstring := crnSet.(string) - if crnstring != "" { - crn := crnSet.(string) - metricsMonitoring.MetricsMonitoringCrn = &crn + oldMMCrnValue, newMMCrnValue := d.GetChange("metrics_monitoring.0.metrics_monitoring_crn") + if newMMCrnValue != "" { + if metricsMap["metrics_monitoring_crn"] != nil { + crnSet := metricsMap["metrics_monitoring_crn"] + crnstring := crnSet.(string) + if crnstring != "" { + crn := crnSet.(string) + metricsMonitoring.MetricsMonitoringCrn = &crn + } } + } else if oldMMCrnValue != "" && newMMCrnValue == "" { + println("Setting the metricsMonitoring crn as null") + metricsMonitoring.MetricsMonitoringCrn = aws.String("") } } } diff --git a/ibm/service/cos/resource_ibm_cos_bucket_object_test.go b/ibm/service/cos/resource_ibm_cos_bucket_object_test.go index 648ecb82137..e46753b93f3 100644 --- a/ibm/service/cos/resource_ibm_cos_bucket_object_test.go +++ b/ibm/service/cos/resource_ibm_cos_bucket_object_test.go @@ -179,7 +179,7 @@ func TestAccIBMCOSBucketObjectlock_Retention_Without_Mode(t *testing.T) { Steps: []resource.TestStep{ { Config: testAccIBMCOSBucketObjectlock_retention_without_mode(name, instanceCRN, objectBody, retainUntilDateString), - ExpectError: regexp.MustCompile("MalformedXML: The XML you provided was not well-formed or did not validate against our published schema."), + ExpectError: regexp.MustCompile("Error: Missing required argument"), }, }, }) @@ -267,7 +267,7 @@ func TestAccIBMCOSBucketObjectlock_Retention_Without_Retainuntildate(t *testing. Steps: []resource.TestStep{ { Config: testAccIBMCOSBucketObjectlock_Retention_Without_Retainuntildate(name, instanceCRN, objectBody, mode), - ExpectError: regexp.MustCompile("MalformedXML: The XML you provided was not well-formed or did not validate against our published schema."), + ExpectError: regexp.MustCompile("Error: Missing required argument"), }, }, }) diff --git a/ibm/service/cos/resource_ibm_cos_bucket_test.go b/ibm/service/cos/resource_ibm_cos_bucket_test.go index 16048f2882c..a6e68398350 100644 --- a/ibm/service/cos/resource_ibm_cos_bucket_test.go +++ b/ibm/service/cos/resource_ibm_cos_bucket_test.go @@ -828,14 +828,14 @@ func TestAccIBMCosBucket_ActivityTracker_Read_True_Write_True_ManagementEvents_T readDataEvents := true writeDataEvents := true managementEvents := true - activityTrackerInstanceCRN := acc.ActivityTrackerInstanceCRN + crnValue := "Invalid" resource.Test(t, resource.TestCase{ PreCheck: func() { acc.TestAccPreCheck(t) }, Providers: acc.TestAccProviders, CheckDestroy: testAccCheckIBMCosBucketDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckIBMCosBucket_activityTracker_With_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, activityTrackerInstanceCRN, readDataEvents, writeDataEvents, managementEvents), + Config: testAccCheckIBMCosBucket_activityTracker_With_Crn(cosServiceName, bucketName, bucketRegionType, bucketRegion, bucketClass, crnValue, readDataEvents, writeDataEvents, managementEvents), ExpectError: regexp.MustCompile("Error Update COS Bucket: Malformed activity tracker CRN"), }, },