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  }