4.12.0
This commit is contained in:
@@ -48,6 +48,7 @@ func flattenRgAcl(rgACLs rg.ListACL) []map[string]interface{} {
|
||||
res := make([]map[string]interface{}, 0, len(rgACLs))
|
||||
for _, acl := range rgACLs {
|
||||
temp := map[string]interface{}{
|
||||
"email": acl.Email,
|
||||
"explicit": acl.Explicit,
|
||||
"guid": acl.GUID,
|
||||
"right": acl.Right,
|
||||
|
||||
@@ -107,6 +107,9 @@ func resourceResgroupCreate(ctx context.Context, d *schema.ResourceData, m inter
|
||||
|
||||
if _, ok := d.GetOk("def_net"); !ok {
|
||||
if defNetType, ok := d.GetOk("def_net_type"); ok {
|
||||
if defNetType.(string) == "PRIVATE" {
|
||||
return diag.Errorf("resourceResgroupCreate: cannot create RG with def_net_type=\"PRIVATE\": no ViNSes exist in a newly created RG. Use def_net_type=\"PRIVATE\" only when updating an existing RG that already contains a ViNS")
|
||||
}
|
||||
req.DefNet = defNetType.(string)
|
||||
}
|
||||
} else {
|
||||
@@ -186,7 +189,14 @@ func resourceResgroupCreate(ctx context.Context, d *schema.ResourceData, m inter
|
||||
}
|
||||
}
|
||||
|
||||
if _, ok := d.GetOk("def_net"); ok {
|
||||
if defNet, ok := d.GetOk("def_net"); ok {
|
||||
if defNet.(*schema.Set).Len() > 0 {
|
||||
defNetList := defNet.(*schema.Set).List()
|
||||
defNetItem := defNetList[0].(map[string]interface{})
|
||||
if defNetItem["net_type"].(string) == "PRIVATE" {
|
||||
return diag.Errorf("resourceResgroupCreate: cannot create RG with def_net net_type=\"PRIVATE\": no ViNSes exist in a newly created RG. Use net_type=\"PRIVATE\" in def_net block only when updating an existing RG that already contains a ViNS")
|
||||
}
|
||||
}
|
||||
if err := resourceRGSetDefNet(ctx, d, m); err != nil {
|
||||
w.Add(err)
|
||||
}
|
||||
@@ -483,7 +493,32 @@ func resourceResgroupUpdate(ctx context.Context, d *schema.ResourceData, m inter
|
||||
}
|
||||
|
||||
if d.HasChange("def_net") {
|
||||
oldDefNet, _ := d.GetChange("def_net")
|
||||
oldDefNet, newDefNet := d.GetChange("def_net")
|
||||
if newDefNet.(*schema.Set).Len() > 0 {
|
||||
defNetList := newDefNet.(*schema.Set).List()
|
||||
defNetItem := defNetList[0].(map[string]interface{})
|
||||
netType := defNetItem["net_type"].(string)
|
||||
netID := uint64(defNetItem["net_id"].(int))
|
||||
|
||||
if netType == "PRIVATE" {
|
||||
if netID == 0 {
|
||||
if len(rgData.VINS) == 0 {
|
||||
return diag.Errorf("resourceResgroupUpdate: cannot set def_net net_type=\"PRIVATE\" for RG ID %d: no ViNSes exist in this RG", rgData.ID)
|
||||
}
|
||||
} else {
|
||||
found := false
|
||||
for _, vinsID := range rgData.VINS {
|
||||
if vinsID == netID {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
return diag.Errorf("resourceResgroupUpdate: cannot set def_net net_type=\"PRIVATE\" for RG ID %d: ViNS ID %d is not found in this RG", rgData.ID, netID)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if oldDefNet.(*schema.Set).Len() > 0 {
|
||||
_, err := c.CloudBroker().RG().RemoveDefNet(ctx, rg.RemoveDefNetRequest{RGID: rgData.ID})
|
||||
if err != nil {
|
||||
|
||||
@@ -25,6 +25,10 @@ func dataSourceRgSchemaMake() map[string]*schema.Schema {
|
||||
Computed: true,
|
||||
Elem: &schema.Resource{
|
||||
Schema: map[string]*schema.Schema{
|
||||
"email": {
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
"explicit": {
|
||||
Type: schema.TypeBool,
|
||||
Computed: true,
|
||||
@@ -2461,6 +2465,10 @@ func resourceRgSchemaMake() map[string]*schema.Schema {
|
||||
Computed: true,
|
||||
Elem: &schema.Resource{
|
||||
Schema: map[string]*schema.Schema{
|
||||
"email": {
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
},
|
||||
"explicit": {
|
||||
Type: schema.TypeBool,
|
||||
Computed: true,
|
||||
|
||||
Reference in New Issue
Block a user