This commit is contained in:
2024-05-31 14:05:21 +03:00
parent 84b7a80e1b
commit db1760cb72
815 changed files with 58194 additions and 11049 deletions

View File

@@ -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)

View File

@@ -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": {

View File

@@ -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))
}