github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/csbs/v1/common.go (about) 1 package v1 2 3 import ( 4 "testing" 5 6 "github.com/opentelekomcloud/gophertelekomcloud" 7 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/tools" 8 "github.com/opentelekomcloud/gophertelekomcloud/openstack/csbs/v1/backup" 9 th "github.com/opentelekomcloud/gophertelekomcloud/testhelper" 10 ) 11 12 func CreateCSBS(t *testing.T, client *golangsdk.ServiceClient, ecsId string) *backup.Checkpoint { 13 backupName := tools.RandomString("backup-", 3) 14 15 t.Logf("Attempting to create CSBS backup") 16 checkpoint, err := backup.Create(client, ecsId, backup.CreateOpts{ 17 BackupName: backupName, 18 Description: "bla-bla", 19 ResourceType: "OS::Nova::Server", 20 }) 21 th.AssertNoErr(t, err) 22 23 t.Cleanup(func() { 24 t.Logf("Attempting to delete CSBS backup: %s", checkpoint.Id) 25 err = backup.Delete(client, checkpoint.Id) 26 th.AssertNoErr(t, err) 27 28 err = waitForBackupDeleted(client, 600, checkpoint.Id) 29 th.AssertNoErr(t, err) 30 t.Logf("Deleted CSBS backup: %s", checkpoint.Id) 31 }) 32 33 err = waitForBackupCreated(client, 600, checkpoint.Id) 34 th.AssertNoErr(t, err) 35 36 return checkpoint 37 } 38 39 func waitForBackupCreated(client *golangsdk.ServiceClient, secs int, backupID string) error { 40 return golangsdk.WaitFor(secs, func() (bool, error) { 41 csbsBackup, err := backup.Get(client, backupID) 42 if err != nil { 43 return false, err 44 } 45 46 if csbsBackup.Id == "error" { 47 return false, err 48 } 49 50 if csbsBackup.Status == "available" { 51 return true, nil 52 } 53 54 return false, nil 55 }) 56 } 57 58 func waitForBackupDeleted(client *golangsdk.ServiceClient, secs int, backupID string) error { 59 return golangsdk.WaitFor(secs, func() (bool, error) { 60 _, err := backup.Get(client, backupID) 61 if err != nil { 62 if _, ok := err.(golangsdk.ErrDefault404); ok { 63 return true, nil 64 } 65 return false, err 66 } 67 return false, nil 68 }) 69 }