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  }