github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/csbs/v1/backup_test.go (about) 1 package v1 2 3 import ( 4 "testing" 5 6 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/clients" 7 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/openstack" 8 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/tools" 9 "github.com/opentelekomcloud/gophertelekomcloud/openstack/csbs/v1/backup" 10 "github.com/opentelekomcloud/gophertelekomcloud/openstack/csbs/v1/resource" 11 th "github.com/opentelekomcloud/gophertelekomcloud/testhelper" 12 ) 13 14 func TestBackupList(t *testing.T) { 15 client, err := clients.NewCsbsV1Client() 16 th.AssertNoErr(t, err) 17 18 backupList, err := backup.List(client, backup.ListOpts{}) 19 th.AssertNoErr(t, err) 20 21 for _, element := range backupList { 22 tools.PrintResource(t, element) 23 } 24 } 25 26 func TestBackupLifeCycle(t *testing.T) { 27 client, err := clients.NewCsbsV1Client() 28 th.AssertNoErr(t, err) 29 30 computeClient, err := clients.NewComputeV1Client() 31 th.AssertNoErr(t, err) 32 33 ecs := openstack.CreateCloudServer(t, computeClient, openstack.GetCloudServerCreateOpts(t)) 34 t.Cleanup(func() { openstack.DeleteCloudServer(t, computeClient, ecs.ID) }) 35 36 t.Logf("Check if resource is protectable") 37 query, err := resource.GetResBackupCapabilities(client, []resource.ResourceBackupCapOpts{ 38 { 39 ResourceId: ecs.ID, 40 ResourceType: "OS::Nova::Server", 41 }, 42 }) 43 th.AssertNoErr(t, err) 44 45 if query[0].Result { 46 t.Logf("Resource is protectable") 47 checkpoint := CreateCSBS(t, client, ecs.ID) 48 49 csbsBackupList, err := backup.List(client, backup.ListOpts{ 50 CheckpointId: checkpoint.Id, 51 }) 52 th.AssertNoErr(t, err) 53 54 t.Logf("Created CSBS backup: %s", checkpoint.Id) 55 56 capabilities, err := resource.GetResRestorationCapabilities(client, []resource.GetRestorationOpts{ 57 { 58 CheckpointItemId: checkpoint.Id, 59 Target: resource.RestorableTarget{ 60 ResourceId: ecs.ID, 61 ResourceType: "OS::Nova::Server", 62 Volumes: []resource.RestoreVolumeMapping{ 63 { 64 BackupId: csbsBackupList[0].Id, 65 VolumeId: ecs.VolumeAttached[0].ID, 66 }, 67 }, 68 }, 69 }, 70 }) 71 th.AssertNoErr(t, err) 72 tools.PrintResource(t, capabilities) 73 } else { 74 t.Logf("Resource isn't protectable") 75 } 76 }