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  }