4.6.0
This commit is contained in:
@@ -34,7 +34,6 @@ package sep
|
||||
|
||||
import (
|
||||
"context"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/dc"
|
||||
"strconv"
|
||||
|
||||
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
|
||||
@@ -43,6 +42,7 @@ import (
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/sep"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/constants"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/dc"
|
||||
)
|
||||
|
||||
func resourceSepCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
|
||||
@@ -58,14 +58,12 @@ func resourceSepCreate(ctx context.Context, d *schema.ResourceData, m interface{
|
||||
GID: uint64(d.Get("gid").(int)),
|
||||
Name: d.Get("name").(string),
|
||||
SEPType: d.Get("type").(string),
|
||||
Config: d.Get("config").(string),
|
||||
}
|
||||
|
||||
if desc, ok := d.GetOk("desc"); ok {
|
||||
req.Description = desc.(string)
|
||||
}
|
||||
if configString, ok := d.GetOk("config"); ok {
|
||||
req.Config = configString.(string)
|
||||
}
|
||||
if enable, ok := d.GetOk("enable"); ok {
|
||||
req.Enable = enable.(bool)
|
||||
}
|
||||
@@ -119,6 +117,14 @@ func resourceSepCreate(ctx context.Context, d *schema.ResourceData, m interface{
|
||||
}
|
||||
}
|
||||
|
||||
if pools, ok := d.GetOk("pools"); ok {
|
||||
log.Debugf("resourceSepCreate, pools: pools=%v sep_id %d after completing its resource configuration", pools, sepId)
|
||||
err := resourceSepChangePools(ctx, d, m)
|
||||
if err != nil {
|
||||
warnings.Add(err)
|
||||
}
|
||||
}
|
||||
|
||||
return append(resourceSepRead(ctx, d, m), warnings.Get()...)
|
||||
}
|
||||
|
||||
@@ -236,6 +242,13 @@ func resourceSepUpdate(ctx context.Context, d *schema.ResourceData, m interface{
|
||||
}
|
||||
}
|
||||
|
||||
if d.HasChange("pools") {
|
||||
err := resourceSepChangePools(ctx, d, m)
|
||||
if err != nil {
|
||||
return diag.FromErr(err)
|
||||
}
|
||||
}
|
||||
|
||||
return resourceSepRead(ctx, d, m)
|
||||
}
|
||||
|
||||
@@ -337,6 +350,42 @@ func resourceSepChangeAccessToPool(ctx context.Context, d *schema.ResourceData,
|
||||
return nil
|
||||
}
|
||||
|
||||
func resourceSepChangePools(ctx context.Context, d *schema.ResourceData, m interface{}) error {
|
||||
log.Debugf("resourceSepChangePools: called for %s, id: %d", d.Get("name").(string), d.Get("sep_id").(int))
|
||||
c := m.(*controller.ControllerCfg)
|
||||
|
||||
oldPoolsInterface, newPoolsInterface := d.GetChange("pools")
|
||||
|
||||
oldPoolsList := oldPoolsInterface.(*schema.Set).Difference(newPoolsInterface.(*schema.Set)).List()
|
||||
for _, pool := range oldPoolsList {
|
||||
delPoolReq := sep.DelPoolRequest{
|
||||
SEPID: uint64(d.Get("sep_id").(int)),
|
||||
PoolName: pool.(string),
|
||||
}
|
||||
|
||||
_, err := c.CloudBroker().SEP().DelPool(ctx, delPoolReq)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
newPoolsList := newPoolsInterface.(*schema.Set).Difference(oldPoolsInterface.(*schema.Set)).List()
|
||||
for _, pool := range newPoolsList {
|
||||
addPoolReq := sep.AddPoolRequest{
|
||||
SEPID: uint64(d.Get("sep_id").(int)),
|
||||
Sync: true,
|
||||
Pool: pool.(string),
|
||||
}
|
||||
|
||||
_, err := c.CloudBroker().SEP().AddPool(ctx, addPoolReq)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func resourceSepDecommission(ctx context.Context, d *schema.ResourceData, m interface{}) error {
|
||||
c := m.(*controller.ControllerCfg)
|
||||
|
||||
|
||||
@@ -274,6 +274,11 @@ func dataSourceSepListSchemaMake() map[string]*schema.Schema {
|
||||
Optional: true,
|
||||
Description: "find by consumed physical node id",
|
||||
},
|
||||
"sort_by": {
|
||||
Type: schema.TypeString,
|
||||
Optional: true,
|
||||
Description: "sort by one of supported fields, format +|-(field)",
|
||||
},
|
||||
"page": {
|
||||
Type: schema.TypeInt,
|
||||
Optional: true,
|
||||
@@ -583,6 +588,14 @@ func resourceSepSchemaMake() map[string]*schema.Schema {
|
||||
Default: false,
|
||||
Description: "Update SEP capacity limit",
|
||||
},
|
||||
"pools": {
|
||||
Type: schema.TypeSet,
|
||||
Optional: true,
|
||||
Description: "add/delete pools to/from sep",
|
||||
Elem: &schema.Schema{
|
||||
Type: schema.TypeString,
|
||||
},
|
||||
},
|
||||
"ckey": {
|
||||
Type: schema.TypeString,
|
||||
Computed: true,
|
||||
@@ -598,8 +611,7 @@ func resourceSepSchemaMake() map[string]*schema.Schema {
|
||||
},
|
||||
"config": {
|
||||
Type: schema.TypeString,
|
||||
Optional: true,
|
||||
Computed: true,
|
||||
Required: true,
|
||||
Description: "sep config string",
|
||||
},
|
||||
"consumed_by": {
|
||||
|
||||
@@ -67,6 +67,9 @@ func utilitySepListCheckPresence(ctx context.Context, d *schema.ResourceData, m
|
||||
if consumed_by, ok := d.GetOk("consumed_by"); ok {
|
||||
req.ConsumedBy = uint64(consumed_by.(int))
|
||||
}
|
||||
if sortBy, ok := d.GetOk("sort_by"); ok {
|
||||
req.SortBy = sortBy.(string)
|
||||
}
|
||||
if page, ok := d.GetOk("page"); ok {
|
||||
req.Page = uint64(page.(int))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user