github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/cbr/v3/vaults_test.go (about) 1 package v3 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/cbr/v3/policies" 10 "github.com/opentelekomcloud/gophertelekomcloud/openstack/cbr/v3/vaults" 11 th "github.com/opentelekomcloud/gophertelekomcloud/testhelper" 12 ) 13 14 func TestVaultLifecycle(t *testing.T) { 15 client, err := clients.NewCbrV3Client() 16 th.AssertNoErr(t, err) 17 18 opts := vaults.CreateOpts{ 19 Billing: &vaults.BillingCreate{ 20 ConsistentLevel: "crash_consistent", 21 ObjectType: "server", 22 ProtectType: "backup", 23 Size: 100, 24 }, 25 Description: "gophertelemocloud testing vault", 26 Name: tools.RandomString("cbr-test-", 5), 27 Resources: []vaults.ResourceCreate{}, 28 } 29 vault, err := vaults.Create(client, opts) 30 th.AssertNoErr(t, err) 31 32 th.AssertEquals(t, opts.Billing.ConsistentLevel, vault.Billing.ConsistentLevel) 33 th.AssertEquals(t, opts.Billing.ObjectType, vault.Billing.ObjectType) 34 th.AssertEquals(t, opts.Billing.ProtectType, vault.Billing.ProtectType) 35 th.AssertEquals(t, opts.Billing.Size, vault.Billing.Size) 36 th.AssertEquals(t, opts.Name, vault.Name) 37 th.AssertEquals(t, opts.Description, vault.Description) 38 39 t.Cleanup(func() { 40 th.AssertNoErr(t, vaults.Delete(client, vault.ID)) 41 }) 42 43 getVault, err := vaults.Get(client, vault.ID) 44 th.AssertNoErr(t, err) 45 th.AssertDeepEquals(t, vault, getVault) 46 47 updateOpts := vaults.UpdateOpts{ 48 Name: tools.RandomString("cbr-test-2-", 5), 49 } 50 updated, err := vaults.Update(client, vault.ID, updateOpts) 51 th.AssertNoErr(t, err) 52 th.AssertEquals(t, vault.ID, updated.ID) 53 th.AssertEquals(t, updateOpts.Name, updated.Name) 54 55 getUpdated, err := vaults.Get(client, vault.ID) 56 th.AssertNoErr(t, err) 57 th.AssertDeepEquals(t, updated, getUpdated) 58 } 59 60 func TestVaultResources(t *testing.T) { 61 client, err := clients.NewCbrV3Client() 62 th.AssertNoErr(t, err) 63 64 opts := vaults.CreateOpts{ 65 Billing: &vaults.BillingCreate{ 66 ConsistentLevel: "crash_consistent", 67 ObjectType: "disk", 68 ProtectType: "backup", 69 Size: 100, 70 }, 71 Description: "gophertelemocloud testing vault", 72 Name: tools.RandomString("cbr-test-", 5), 73 Resources: []vaults.ResourceCreate{}, 74 } 75 vault, err := vaults.Create(client, opts) 76 th.AssertNoErr(t, err) 77 78 t.Cleanup(func() { 79 th.AssertNoErr(t, vaults.Delete(client, vault.ID)) 80 }) 81 82 resourceType := "OS::Cinder::Volume" 83 volume := openstack.CreateVolume(t) 84 t.Cleanup(func() { 85 openstack.DeleteVolume(t, volume.ID) 86 }) 87 88 aOpts := vaults.AssociateResourcesOpts{ 89 Resources: []vaults.ResourceCreate{ 90 { 91 ID: volume.ID, 92 Type: resourceType, 93 Name: "cbr-vault-test-volume", 94 }, 95 }, 96 } 97 associated, err := vaults.AssociateResources(client, vault.ID, aOpts) 98 th.AssertNoErr(t, err) 99 th.AssertEquals(t, 1, len(associated)) 100 th.AssertEquals(t, volume.ID, associated[0]) 101 102 dOpts := vaults.DissociateResourcesOpts{ResourceIDs: associated} 103 dissociated, err := vaults.DissociateResources(client, vault.ID, dOpts) 104 th.AssertNoErr(t, err) 105 th.AssertDeepEquals(t, associated, dissociated) 106 } 107 108 func TestVaultPolicy(t *testing.T) { 109 client, err := clients.NewCbrV3Client() 110 th.AssertNoErr(t, err) 111 112 opts := vaults.CreateOpts{ 113 Billing: &vaults.BillingCreate{ 114 ConsistentLevel: "crash_consistent", 115 ObjectType: "disk", 116 ProtectType: "backup", 117 Size: 100, 118 }, 119 Description: "gophertelemocloud testing vault", 120 Name: tools.RandomString("cbr-test-", 5), 121 Resources: []vaults.ResourceCreate{}, 122 } 123 vault, err := vaults.Create(client, opts) 124 th.AssertNoErr(t, err) 125 126 t.Cleanup(func() { 127 th.AssertNoErr(t, vaults.Delete(client, vault.ID)) 128 }) 129 130 iTrue := true 131 policy, err := policies.Create(client, policies.CreateOpts{ 132 Name: "test-vault-policy", 133 OperationDefinition: &policies.PolicyODCreate{ 134 DailyBackups: 1, 135 WeekBackups: 2, 136 YearBackups: 3, 137 MonthBackups: 4, 138 MaxBackups: 10, 139 Timezone: "UTC+03:00", 140 }, 141 Trigger: &policies.Trigger{ 142 Properties: policies.TriggerProperties{ 143 Pattern: []string{"FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=14;BYMINUTE=00"}, 144 }, 145 }, 146 Enabled: &iTrue, 147 OperationType: "backup", 148 }) 149 th.AssertNoErr(t, err) 150 151 t.Cleanup(func() { 152 th.AssertNoErr(t, policies.Delete(client, policy.ID)) 153 }) 154 155 bind, err := vaults.BindPolicy(client, vault.ID, vaults.BindPolicyOpts{PolicyID: policy.ID}) 156 th.AssertNoErr(t, err) 157 th.AssertEquals(t, vault.ID, bind.VaultID) 158 th.AssertEquals(t, policy.ID, bind.PolicyID) 159 160 unbind, err := vaults.UnbindPolicy(client, vault.ID, vaults.BindPolicyOpts{PolicyID: policy.ID}) 161 th.AssertNoErr(t, err) 162 th.AssertEquals(t, vault.ID, unbind.VaultID) 163 th.AssertEquals(t, policy.ID, unbind.PolicyID) 164 }