|
|
|
@ -24,6 +24,7 @@ Visit https://github.com/rudecs/terraform-provider-decort for full source code p
|
|
|
|
|
package decort
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"encoding/json"
|
|
|
|
|
"fmt"
|
|
|
|
|
"net/url"
|
|
|
|
|
|
|
|
|
@ -122,6 +123,19 @@ func resourceResgroupCreate(d *schema.ResourceData, m interface{}) error {
|
|
|
|
|
|
|
|
|
|
d.SetId(api_resp) // rg/create API returns ID of the newly creted resource group on success
|
|
|
|
|
// rg.ID, _ = strconv.Atoi(api_resp)
|
|
|
|
|
if !set_quota {
|
|
|
|
|
resp, err := utilityResgroupCheckPresence(d, m)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rg := ResgroupGetResp{}
|
|
|
|
|
if err := json.Unmarshal([]byte(resp), &rg); err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
d.Set("quota", parseQuota(rg.Quota))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// re-read newly created RG to make sure schema contains complete and up to date set of specifications
|
|
|
|
|
return resourceResgroupRead(d, m)
|
|
|
|
@ -130,7 +144,7 @@ func resourceResgroupCreate(d *schema.ResourceData, m interface{}) error {
|
|
|
|
|
func resourceResgroupRead(d *schema.ResourceData, m interface{}) error {
|
|
|
|
|
log.Debugf("resourceResgroupRead: called for RG name %s, account ID %s",
|
|
|
|
|
d.Get("name").(string), d.Get("account_id").(int))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rg_facts, err := utilityResgroupCheckPresence(d, m)
|
|
|
|
|
if rg_facts == "" {
|
|
|
|
|
// if empty string is returned from utilityResgroupCheckPresence then there is no
|
|
|
|
@ -165,9 +179,8 @@ func resourceResgroupUpdate(d *schema.ResourceData, m interface{}) error {
|
|
|
|
|
if attr_new.(int) != attr_old.(int) {
|
|
|
|
|
return fmt.Errorf("resourceResgroupUpdate: RG ID %s: changing ext_net_id for existing RG is not allowed", d.Id())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
do_general_update := false // will be true if general RG update is necessary (API rg/update)
|
|
|
|
|
do_general_update := false // will be true if general RG update is necessary (API rg/update)
|
|
|
|
|
|
|
|
|
|
controller := m.(*ControllerCfg)
|
|
|
|
|
url_values := &url.Values{}
|
|
|
|
@ -314,18 +327,18 @@ func resourceResgroup() *schema.Resource {
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
"account_id": {
|
|
|
|
|
Type: schema.TypeInt,
|
|
|
|
|
Required: true,
|
|
|
|
|
Type: schema.TypeInt,
|
|
|
|
|
Required: true,
|
|
|
|
|
ValidateFunc: validation.IntAtLeast(1),
|
|
|
|
|
Description: "Unique ID of the account, which this resource group belongs to.",
|
|
|
|
|
Description: "Unique ID of the account, which this resource group belongs to.",
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
"def_net_type": {
|
|
|
|
|
Type: schema.TypeString,
|
|
|
|
|
Optional: true,
|
|
|
|
|
Default: "PRIVATE",
|
|
|
|
|
Type: schema.TypeString,
|
|
|
|
|
Optional: true,
|
|
|
|
|
Default: "PRIVATE",
|
|
|
|
|
ValidateFunc: validation.StringInSlice([]string{"PRIVATE", "PUBLIC", "NONE"}, false),
|
|
|
|
|
Description: "Type of the network, which this resource group will use as default for its computes - PRIVATE or PUBLIC or NONE.",
|
|
|
|
|
Description: "Type of the network, which this resource group will use as default for its computes - PRIVATE or PUBLIC or NONE.",
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
"def_net_id": {
|
|
|
|
@ -354,7 +367,7 @@ func resourceResgroup() *schema.Resource {
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* commented out, as in this version of provider we use default Grid ID
|
|
|
|
|
"grid_id": {
|
|
|
|
|
"grid_id": {
|
|
|
|
|
Type: schema.TypeInt,
|
|
|
|
|
Optional: true,
|
|
|
|
|
Default: 0, // if 0 is passed, default Grid ID will be used
|
|
|
|
@ -367,6 +380,7 @@ func resourceResgroup() *schema.Resource {
|
|
|
|
|
"quota": {
|
|
|
|
|
Type: schema.TypeList,
|
|
|
|
|
Optional: true,
|
|
|
|
|
Computed: true,
|
|
|
|
|
MaxItems: 1,
|
|
|
|
|
Elem: &schema.Resource{
|
|
|
|
|
Schema: quotaRgSubresourceSchemaMake(),
|
|
|
|
@ -387,30 +401,30 @@ func resourceResgroup() *schema.Resource {
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
"status": {
|
|
|
|
|
Type: schema.TypeString,
|
|
|
|
|
Computed: true,
|
|
|
|
|
Description: "Current status of this resource group.",
|
|
|
|
|
},
|
|
|
|
|
"status": {
|
|
|
|
|
Type: schema.TypeString,
|
|
|
|
|
Computed: true,
|
|
|
|
|
Description: "Current status of this resource group.",
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
"vins": {
|
|
|
|
|
Type: schema.TypeList, // this is a list of ints
|
|
|
|
|
Computed: true,
|
|
|
|
|
MaxItems: LimitMaxVinsPerResgroup,
|
|
|
|
|
Elem: &schema.Schema{
|
|
|
|
|
Type: schema.TypeInt,
|
|
|
|
|
"vins": {
|
|
|
|
|
Type: schema.TypeList, // this is a list of ints
|
|
|
|
|
Computed: true,
|
|
|
|
|
MaxItems: LimitMaxVinsPerResgroup,
|
|
|
|
|
Elem: &schema.Schema{
|
|
|
|
|
Type: schema.TypeInt,
|
|
|
|
|
},
|
|
|
|
|
Description: "List of VINs deployed in this resource group.",
|
|
|
|
|
},
|
|
|
|
|
Description: "List of VINs deployed in this resource group.",
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
"computes": {
|
|
|
|
|
Type: schema.TypeList, // this is a list of ints
|
|
|
|
|
Computed: true,
|
|
|
|
|
Elem: &schema.Schema{
|
|
|
|
|
Type: schema.TypeInt,
|
|
|
|
|
"computes": {
|
|
|
|
|
Type: schema.TypeList, // this is a list of ints
|
|
|
|
|
Computed: true,
|
|
|
|
|
Elem: &schema.Schema{
|
|
|
|
|
Type: schema.TypeInt,
|
|
|
|
|
},
|
|
|
|
|
Description: "List of computes deployed in this resource group.",
|
|
|
|
|
},
|
|
|
|
|
Description: "List of computes deployed in this resource group.",
|
|
|
|
|
},
|
|
|
|
|
*/
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|