github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/css/v1/snapshots_test.go (about) 1 package v1 2 3 import ( 4 "testing" 5 6 golangsdk "github.com/opentelekomcloud/gophertelekomcloud" 7 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/clients" 8 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/openstack" 9 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/tools" 10 "github.com/opentelekomcloud/gophertelekomcloud/openstack/css/v1/clusters" 11 "github.com/opentelekomcloud/gophertelekomcloud/openstack/css/v1/snapshots" 12 "github.com/opentelekomcloud/gophertelekomcloud/openstack/obs" 13 th "github.com/opentelekomcloud/gophertelekomcloud/testhelper" 14 ) 15 16 func TestSnapshotWorkflow(t *testing.T) { 17 agencyID := clients.EnvOS.GetEnv("AGENCY_ID") 18 if agencyID == "" { 19 t.Skipf("OS_AGENCY_ID is required for this test") 20 } 21 22 client, err := clients.NewCssV1Client() 23 th.AssertNoErr(t, err) 24 25 clusterID := createCluster(t, client) 26 defer deleteCluster(t, client, clusterID) 27 bucketName := createBucket(t) 28 defer deleteBucket(t, bucketName) 29 30 basicOpts := snapshots.UpdateConfigurationOpts{ 31 Bucket: bucketName, 32 Agency: agencyID, 33 } 34 err = snapshots.UpdateConfiguration(client, clusterID, basicOpts) 35 th.AssertNoErr(t, err) 36 37 policyOpts := snapshots.PolicyCreateOpts{ 38 Prefix: "snap", 39 Period: "00:00 GMT+03:00", 40 KeepDay: 1, 41 Enable: "true", 42 DeleteAuto: "true", 43 } 44 th.AssertNoErr(t, snapshots.PolicyCreate(client, policyOpts, clusterID)) 45 46 policy, err := snapshots.PolicyGet(client, clusterID) 47 th.AssertNoErr(t, err) 48 th.AssertEquals(t, basicOpts.Bucket, policy.Bucket) 49 th.AssertEquals(t, basicOpts.SnapshotCmkID, policy.SnapshotCmkID) 50 th.AssertEquals(t, policyOpts.Prefix, policy.Prefix) 51 tools.PrintResource(t, policy) 52 53 th.AssertNoErr(t, snapshots.Disable(client, clusterID)) 54 } 55 56 func createBucket(t *testing.T) string { 57 bucketName := "snapshot-sdk-test-bucket" 58 createOpts := &obs.CreateBucketInput{ 59 Bucket: bucketName, 60 } 61 obsClient, err := clients.NewOBSClient() 62 th.AssertNoErr(t, err) 63 64 _, err = obsClient.CreateBucket(createOpts) 65 th.AssertNoErr(t, err) 66 return bucketName 67 } 68 69 func deleteBucket(t *testing.T, bucket string) { 70 obsClient, err := clients.NewOBSClient() 71 th.AssertNoErr(t, err) 72 73 objects, err := obsClient.ListObjects(&obs.ListObjectsInput{Bucket: bucket}) 74 th.AssertNoErr(t, err) 75 76 objectsToDelete := make([]obs.ObjectToDelete, len(objects.Contents)) 77 for i, obj := range objects.Contents { 78 objectsToDelete[i] = obs.ObjectToDelete{ 79 Key: obj.Key, 80 } 81 } 82 _, err = obsClient.DeleteObjects(&obs.DeleteObjectsInput{ 83 Bucket: bucket, 84 Quiet: true, 85 Objects: objectsToDelete, 86 }) 87 th.AssertNoErr(t, err) 88 } 89 90 func createCluster(t *testing.T, client *golangsdk.ServiceClient) string { 91 vpcID := clients.EnvOS.GetEnv("VPC_ID") 92 subnetID := clients.EnvOS.GetEnv("NETWORK_ID") 93 94 if vpcID == "" || subnetID == "" { 95 t.Skip("Both `OS_VPC_ID`, `OS_NETWORK_ID` need to be defined") 96 } 97 98 sgID := openstack.DefaultSecurityGroup(t) 99 100 opts := clusters.CreateOpts{ 101 Name: tools.RandomString("snap-cluster-", 4), 102 Instance: &clusters.InstanceSpec{ 103 Flavor: "css.medium.8", 104 105 Volume: &clusters.Volume{ 106 Type: "COMMON", 107 Size: 40, 108 }, 109 Nics: &clusters.Nics{ 110 VpcID: vpcID, 111 SubnetID: subnetID, 112 SecurityGroupID: sgID, 113 }, 114 AvailabilityZone: "eu-de-02", 115 }, 116 InstanceNum: 1, 117 DiskEncryption: &clusters.DiskEncryption{ 118 Encrypted: "0", 119 }, 120 } 121 created, err := clusters.Create(client, opts) 122 th.AssertNoErr(t, err) 123 124 th.AssertNoErr(t, clusters.WaitForClusterOperationSucces(client, created.ID, timeout)) 125 return created.ID 126 } 127 128 func deleteCluster(t *testing.T, client *golangsdk.ServiceClient, id string) { 129 err := clusters.Delete(client, id) 130 th.AssertNoErr(t, err) 131 }