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 }