github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/cbr/v3/backups_test.go (about)

     1  package v3
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  
     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/cbr/v3/backups"
    11  	"github.com/opentelekomcloud/gophertelekomcloud/openstack/cbr/v3/checkpoint"
    12  	"github.com/opentelekomcloud/gophertelekomcloud/openstack/cbr/v3/vaults"
    13  	th "github.com/opentelekomcloud/gophertelekomcloud/testhelper"
    14  )
    15  
    16  func TestBackupLifecycle(t *testing.T) {
    17  	if os.Getenv("RUN_CBR") == "" {
    18  		t.Skip("unstable test")
    19  	}
    20  	client, err := clients.NewCbrV3Client()
    21  	th.AssertNoErr(t, err)
    22  
    23  	vault, aOpts, optsVault, checkp := CreateCBR(t, client)
    24  	th.AssertEquals(t, vault.ID, checkp.Vault.ID)
    25  	th.AssertEquals(t, optsVault.Parameters.Description, checkp.ExtraInfo.Description)
    26  	th.AssertEquals(t, optsVault.Parameters.Name, checkp.ExtraInfo.Name)
    27  	th.AssertEquals(t, aOpts.Resources[0].Type, checkp.Vault.Resources[0].Type)
    28  
    29  	checkpointGet, err := checkpoint.Get(client, checkp.ID)
    30  	th.AssertNoErr(t, err)
    31  	// Checks are disabled due to STO-10008 bug
    32  	// th.AssertEquals(t, description, checkpointGet.ExtraInfo.Description)
    33  	// th.AssertEquals(t, checkName, checkpointGet.ExtraInfo.Name)
    34  	th.AssertEquals(t, "available", checkpointGet.Status)
    35  	th.AssertEquals(t, vault.ID, checkpointGet.Vault.ID)
    36  	th.AssertEquals(t, aOpts.Resources[0].Type, checkp.Vault.Resources[0].Type)
    37  
    38  	allBackups, err := backups.List(client, backups.ListOpts{VaultID: vault.ID})
    39  	th.AssertNoErr(t, err)
    40  	t.Cleanup(func() {
    41  		err = backups.Delete(client, allBackups[0].ID)
    42  		th.AssertNoErr(t, err)
    43  		th.AssertNoErr(t, waitForBackupDelete(client, 600, allBackups[0].ID))
    44  	})
    45  
    46  	bOpts := backups.RestoreBackupOpts{
    47  		VolumeID: allBackups[0].ResourceID,
    48  	}
    49  	restoreErr := RestoreBackup(t, client, allBackups[0].ID, bOpts)
    50  	th.AssertNoErr(t, restoreErr)
    51  }
    52  
    53  func TestBackupListing(t *testing.T) {
    54  	if os.Getenv("RUN_CBR") == "" {
    55  		t.Skip("unstable test")
    56  	}
    57  	client, err := clients.NewCbrV3Client()
    58  	th.AssertNoErr(t, err)
    59  
    60  	// Create Vault for further backup
    61  	opts := vaults.CreateOpts{
    62  		Billing: &vaults.BillingCreate{
    63  			ConsistentLevel: "crash_consistent",
    64  			ObjectType:      "disk",
    65  			ProtectType:     "backup",
    66  			Size:            100,
    67  		},
    68  		Description: "gophertelemocloud testing vault",
    69  		Name:        tools.RandomString("cbr-test-", 5),
    70  		Resources:   []vaults.ResourceCreate{},
    71  	}
    72  	vault, err := vaults.Create(client, opts)
    73  	th.AssertNoErr(t, err)
    74  
    75  	t.Cleanup(func() {
    76  		th.AssertNoErr(t, vaults.Delete(client, vault.ID))
    77  	})
    78  
    79  	// Create Volume
    80  	volume := openstack.CreateVolume(t)
    81  	t.Cleanup(func() {
    82  		openstack.DeleteVolume(t, volume.ID)
    83  	})
    84  
    85  	// Associate server to the vault
    86  	aOpts := vaults.AssociateResourcesOpts{
    87  		Resources: []vaults.ResourceCreate{
    88  			{
    89  				ID:   volume.ID,
    90  				Type: "OS::Cinder::Volume",
    91  			},
    92  		},
    93  	}
    94  	associated, err := vaults.AssociateResources(client, vault.ID, aOpts)
    95  	th.AssertNoErr(t, err)
    96  	th.AssertEquals(t, 1, len(associated))
    97  
    98  	// Create vault checkpoint
    99  	optsVault := checkpoint.CreateOpts{
   100  		VaultID: vault.ID,
   101  		Parameters: checkpoint.CheckpointParam{
   102  			Description: "go created backup",
   103  			Incremental: true,
   104  			Name:        tools.RandomString("go-checkpoint", 5),
   105  		},
   106  	}
   107  	checkp := CreateCheckpoint(t, client, optsVault)
   108  	th.AssertEquals(t, vault.ID, checkp.Vault.ID)
   109  	th.AssertEquals(t, optsVault.Parameters.Description, checkp.ExtraInfo.Description)
   110  	th.AssertEquals(t, optsVault.Parameters.Name, checkp.ExtraInfo.Name)
   111  	th.AssertEquals(t, aOpts.Resources[0].Type, checkp.Vault.Resources[0].Type)
   112  
   113  	listOpts := backups.ListOpts{VaultID: vault.ID}
   114  	th.AssertNoErr(t, err)
   115  
   116  	allBackups, err := backups.List(client, listOpts)
   117  	th.AssertNoErr(t, err)
   118  	th.AssertEquals(t, 1, len(associated))
   119  
   120  	cases := map[string]backups.ListOpts{
   121  		"ID": {
   122  			ID: allBackups[0].ID,
   123  		},
   124  		"Name": {
   125  			Name: allBackups[0].Name,
   126  		},
   127  	}
   128  	for _, cOpts := range cases {
   129  		list, err := backups.List(client, cOpts)
   130  		th.AssertNoErr(t, err)
   131  		th.AssertEquals(t, 1, len(list))
   132  		th.AssertEquals(t, allBackups[0].ID, list[0].ID)
   133  
   134  	}
   135  	errBack := backups.Delete(client, allBackups[0].ID)
   136  	th.AssertNoErr(t, errBack)
   137  	th.AssertNoErr(t, waitForBackupDelete(client, 600, allBackups[0].ID))
   138  }