From 47d235f335489e777f15f347f2ca2f19d9a2716e Mon Sep 17 00:00:00 2001 From: Lance52259 <74246744+Lance52259@users.noreply.github.com> Date: Sat, 27 Feb 2021 16:09:28 +0800 Subject: [PATCH] refactor: keep code clean and comply with programming specifications (#941) --- docs/resources/compute_servergroup.md | 31 ++++++++++++------- ...esource_huaweicloud_compute_servergroup.go | 29 +++++------------ huaweicloud/types.go | 13 -------- 3 files changed, 27 insertions(+), 46 deletions(-) diff --git a/docs/resources/compute_servergroup.md b/docs/resources/compute_servergroup.md index f29aade120..f50169393f 100644 --- a/docs/resources/compute_servergroup.md +++ b/docs/resources/compute_servergroup.md @@ -10,9 +10,16 @@ This is an alternative to `huaweicloud_compute_servergroup_v2` ## Example Usage ```hcl +data "huaweicloud_compute_instance" "instance_demo" { + name = "ecs-servergroup-demo" +} + resource "huaweicloud_compute_servergroup" "test-sg" { name = "my-sg" policies = ["anti-affinity"] + members = [ + data.huaweicloud_compute_instance.instance_demo.id, + ] } ``` @@ -20,26 +27,28 @@ resource "huaweicloud_compute_servergroup" "test-sg" { The following arguments are supported: -* `region` - (Optional, String, ForceNew) The region in which to create the server group resource. If omitted, the provider-level region will be used. Changing this creates a new server group resource. - -* `name` - (Required, String, ForceNew) A unique name for the server group. Changing this creates - a new server group. +* `region` - (Optional, String, ForceNew) Specifies the region in which to create the server group resource. + If omitted, the provider-level region will be used. + Changing this creates a new server group. -* `policies` - (Required, List, ForceNew) The set of policies for the server group. Only two - policies are available right now, and both are mutually exclusive. Possible values are "affinity" and "anti-affinity". - "affinity": All instances/servers launched in this group will be hosted on the same compute node. - "anti-affinity": All instances/servers launched in this group will be hosted on different compute nodes. +* `name` - (Required, String, ForceNew) Specifies a unique name for the server group. + This parameter can contain a maximum of 255 characters, which may consist of + letters, digits, underscores (_), and hyphens (-). Changing this creates a new server group. -* `value_specs` - (Optional, Map, ForceNew) Map of additional options. +* `policies` - (Required, List, ForceNew) Specifies the set of policies for the server group. + Only *anti-affinity* policies are supported. + + * `anti-affinity`: All ECS in this group must be deployed on different hosts. + Changing this creates a new server group. -* `members` - (Optional, Set) Specifies the IDs of the an server group. +* `members` - (Optional, Set) Specifies an array of one or more instance ID to attach server group. ## Attributes Reference In addition to all arguments above, the following attributes are exported: -* `id` - Specifies a resource ID in UUID format. +* `id` - A resource ID in UUID format. ## Import diff --git a/huaweicloud/resource_huaweicloud_compute_servergroup.go b/huaweicloud/resource_huaweicloud_compute_servergroup.go index e29d9f4bae..ac50640a4a 100644 --- a/huaweicloud/resource_huaweicloud_compute_servergroup.go +++ b/huaweicloud/resource_huaweicloud_compute_servergroup.go @@ -49,12 +49,6 @@ func ResourceComputeServerGroupV2() *schema.Resource { Computed: true, Elem: &schema.Schema{Type: schema.TypeString}, }, - "value_specs": { - Type: schema.TypeMap, - Optional: true, - ForceNew: true, - Elem: &schema.Schema{Type: schema.TypeString}, - }, }, } } @@ -66,12 +60,9 @@ func resourceComputeServerGroupV2Create(d *schema.ResourceData, meta interface{} return fmt.Errorf("Error creating HuaweiCloud compute client: %s", err) } - createOpts := ServerGroupCreateOpts{ - servergroups.CreateOpts{ - Name: d.Get("name").(string), - Policies: resourceServerGroupPoliciesV2(d), - }, - MapValueSpecs(d), + createOpts := servergroups.CreateOpts{ + Name: d.Get("name").(string), + Policies: resourceServerGroupPoliciesV2(d), } log.Printf("[DEBUG] Create Options: %#v", createOpts) @@ -112,20 +103,14 @@ func resourceComputeServerGroupV2Read(d *schema.ResourceData, meta interface{}) log.Printf("[DEBUG] Retrieved ServerGroup %s: %+v", d.Id(), sg) - // Set the name - d.Set("name", sg.Name) - - // Set the policies - policies := []string{} - for _, p := range sg.Policies { - policies = append(policies, p) + policies := make([]string, len(sg.Policies)) + for i, p := range sg.Policies { + policies[i] = p } d.Set("policies", policies) - - // Set the members & fault_domains + d.Set("name", sg.Name) d.Set("members", sg.Members) d.Set("fault_domains", sg.FaultDomain.Names) - d.Set("region", GetRegion(d, config)) return nil diff --git a/huaweicloud/types.go b/huaweicloud/types.go index b59eb982ff..df00ae9527 100644 --- a/huaweicloud/types.go +++ b/huaweicloud/types.go @@ -12,7 +12,6 @@ import ( "strings" "time" - "github.com/huaweicloud/golangsdk/openstack/compute/v2/extensions/servergroups" "github.com/huaweicloud/golangsdk/openstack/dns/v2/recordsets" "github.com/huaweicloud/golangsdk/openstack/dns/v2/zones" "github.com/huaweicloud/golangsdk/openstack/networking/v1/eips" @@ -328,18 +327,6 @@ func (opts RuleCreateOpts) ToRuleCreateMap() (map[string]interface{}, error) { return b, nil } -// ServerGroupCreateOpts represents the attributes used when creating a new router. -type ServerGroupCreateOpts struct { - servergroups.CreateOpts - ValueSpecs map[string]string `json:"value_specs,omitempty"` -} - -// ToServerGroupCreateMap casts a CreateOpts struct to a map. -// It overrides routers.ToServerGroupCreateMap to add the ValueSpecs field. -func (opts ServerGroupCreateOpts) ToServerGroupCreateMap() (map[string]interface{}, error) { - return BuildRequest(opts, "server_group") -} - // SubnetCreateOpts represents the attributes used when creating a new subnet. type SubnetCreateOpts struct { subnets.CreateOpts