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  }