github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/autoscaling/v2/policies_test.go (about) 1 package v2 2 3 import ( 4 "testing" 5 6 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/clients" 7 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/openstack/autoscaling" 8 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/tools" 9 "github.com/opentelekomcloud/gophertelekomcloud/openstack/autoscaling/v2/logs" 10 "github.com/opentelekomcloud/gophertelekomcloud/openstack/autoscaling/v2/policies" 11 th "github.com/opentelekomcloud/gophertelekomcloud/testhelper" 12 ) 13 14 func TestPolicyLifecycle(t *testing.T) { 15 v1client, err := clients.NewAutoscalingV1Client() 16 th.AssertNoErr(t, err) 17 client, err := clients.NewAutoscalingV2Client() 18 th.AssertNoErr(t, err) 19 20 asPolicyCreateName := tools.RandomString("as-policy-create-", 3) 21 asGroupCreateName := tools.RandomString("as-group-create-", 3) 22 networkID := clients.EnvOS.GetEnv("NETWORK_ID") 23 vpcID := clients.EnvOS.GetEnv("VPC_ID") 24 if networkID == "" || vpcID == "" { 25 t.Skip("OS_NETWORK_ID or OS_VPC_ID env vars are missing but AS Policy test requires") 26 } 27 28 groupID := autoscaling.CreateAutoScalingGroup(t, v1client, networkID, vpcID, asGroupCreateName) 29 t.Cleanup(func() { 30 autoscaling.DeleteAutoScalingGroup(t, v1client, groupID) 31 }) 32 33 createOpts := policies.PolicyOpts{ 34 PolicyName: asPolicyCreateName, 35 PolicyType: "RECURRENCE", 36 ResourceID: groupID, 37 ResourceType: "SCALING_GROUP", 38 SchedulePolicy: policies.SchedulePolicyOpts{ 39 LaunchTime: "10:30", 40 RecurrenceType: "Weekly", 41 RecurrenceValue: "1,3,5", 42 EndTime: "2040-12-31T10:30Z", 43 }, 44 PolicyAction: policies.ActionOpts{ 45 Operation: "ADD", 46 Percentage: 15, 47 }, 48 } 49 50 t.Logf("Attempting to create AutoScaling Policy") 51 policyID, err := policies.Create(client, createOpts) 52 th.AssertNoErr(t, err) 53 t.Logf("Created AutoScaling Policy: %s", policyID) 54 55 t.Cleanup(func() { 56 t.Logf("Attempting to delete AutoScaling Policy") 57 err := policies.Delete(v1client, policyID) 58 th.AssertNoErr(t, err) 59 t.Logf("Deleted AutoScaling Policy: %s", policyID) 60 }) 61 62 policy, err := policies.Get(client, policyID) 63 th.AssertNoErr(t, err) 64 th.AssertEquals(t, asPolicyCreateName, policy.PolicyName) 65 th.AssertEquals(t, 15, policy.PolicyAction.Percentage) 66 th.AssertEquals(t, "ADD", policy.PolicyAction.Operation) 67 68 t.Logf("Attempting to update AutoScaling policy") 69 asPolicyUpdateName := tools.RandomString("as-policy-update-", 3) 70 71 updateOpts := policies.PolicyOpts{ 72 PolicyName: asPolicyUpdateName, 73 PolicyType: "RECURRENCE", 74 ResourceID: groupID, 75 ResourceType: "SCALING_GROUP", 76 SchedulePolicy: createOpts.SchedulePolicy, 77 PolicyAction: policies.ActionOpts{ 78 Percentage: 30, 79 }, 80 CoolDownTime: 0, 81 } 82 83 policyID, err = policies.Update(client, policy.PolicyID, updateOpts) 84 th.AssertNoErr(t, err) 85 t.Logf("Updated AutoScaling Policy") 86 87 policy, err = policies.Get(client, policyID) 88 th.AssertNoErr(t, err) 89 tools.PrintResource(t, policy) 90 th.AssertEquals(t, asPolicyUpdateName, policy.PolicyName) 91 th.AssertEquals(t, 30, policy.PolicyAction.Percentage) 92 93 activityLogs, err := logs.ListScalingActivityLogs(client, logs.ListScalingActivityLogsOpts{ScalingGroupId: groupID}) 94 th.AssertNoErr(t, err) 95 tools.PrintResource(t, activityLogs) 96 }