This commit is contained in:
asteam
2025-06-16 14:17:01 +03:00
parent 9e68edb2b9
commit e04dab77cb
4880 changed files with 97 additions and 535839 deletions

View File

@@ -21,6 +21,7 @@ func flattenAccount(d *schema.ResourceData, acc account.RecordAccount) error {
d.Set("deleted_by", acc.DeletedBy)
d.Set("deleted_time", acc.DeletedTime)
d.Set("displayname", acc.DisplayName)
d.Set("enable", flattenEnabled(acc.Status))
d.Set("guid", acc.GUID)
d.Set("account_id", acc.ID)
d.Set("account_name", acc.Name)
@@ -45,6 +46,10 @@ func flattenAccount(d *schema.ResourceData, acc account.RecordAccount) error {
return nil
}
func flattenEnabled(status string) bool {
return status == "CONFIRMED"
}
func flattenAccComputes(acs account.Computes) []map[string]interface{} {
res := make([]map[string]interface{}, 0)
temp := map[string]interface{}{

View File

@@ -432,7 +432,7 @@ func resourceAccountSchemaMake() map[string]*schema.Schema {
},
},
"reason": {
Type: schema.TypeBool,
Type: schema.TypeString,
Optional: true,
Description: "reason for deactivation",
},
@@ -450,6 +450,7 @@ func resourceAccountSchemaMake() map[string]*schema.Schema {
"enable": {
Type: schema.TypeBool,
Optional: true,
Computed: true,
Description: "enable/disable account",
},
"resource_limits": {

View File

@@ -2133,12 +2133,6 @@ func ResourceComputeSchemaMake() map[string]*schema.Schema {
Optional: true,
Computed: true,
},
"stateless": {
Type: schema.TypeBool,
Optional: true,
Default: false,
Description: "Compute will be stateless (SVA_KVM_X86) if set to True",
},
"boot_disk": {
Type: schema.TypeSet,
Computed: true,

View File

@@ -50,7 +50,7 @@ func utilityAvailableSEPAndPoolsListCheckPresence(ctx context.Context, d *schema
req.AccountID = uint64(AccountID.(int))
}
if RGID, ok := d.GetOk("rg_id"); ok {
req.RGID = RGID.(uint64)
req.RGID = uint64(RGID.(int))
}
log.Debugf("utilityAvailableSEPAndPoolsListCheckPresence: load sep and pools list")

View File

@@ -803,7 +803,6 @@ func resourceVinsSchemaMake() map[string]*schema.Schema {
rets["pre_reservations_num"] = &schema.Schema{
Type: schema.TypeInt,
Optional: true,
Default: 32,
}
rets["gid"] = &schema.Schema{
Type: schema.TypeInt,

View File

@@ -22,6 +22,7 @@ func flattenResourceAccount(d *schema.ResourceData, acc *account.RecordAccount)
d.Set("deleted_by", acc.DeletedBy)
d.Set("deleted_time", acc.DeletedTime)
d.Set("displayname", acc.DisplayName)
d.Set("enable", flattenEnabled(acc.Status))
d.Set("guid", acc.GUID)
d.Set("account_id", acc.ID)
d.Set("account_name", acc.Name)
@@ -422,3 +423,7 @@ func flattenAccResourceConsumption(lrc *account.ListResources) []map[string]inte
}
return res
}
func flattenEnabled(status string) bool {
return status == "CONFIRMED"
}

View File

@@ -78,7 +78,7 @@ func resourceAccountSchemaMake() map[string]*schema.Schema {
Description: "Share images with account",
},
"reason": {
Type: schema.TypeBool,
Type: schema.TypeString,
Optional: true,
Description: "reason for restore or deactivation",
},

View File

@@ -81,7 +81,7 @@ func utilityAccountEnableUpdate(ctx context.Context, d *schema.ResourceData, m i
if err != nil {
return err
}
} else if !enable && acc.Status == status.Enabled {
} else if !enable && acc.Status == status.Confirmed {
_, err := c.CloudBroker().Account().Disable(ctx, account.DisableRequest{
AccountID: acc.ID,
})

View File

@@ -7,7 +7,6 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
log "github.com/sirupsen/logrus"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/image"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/flattens"
)
func flattenImage(d *schema.ResourceData, img *image.RecordImage) {
@@ -163,8 +162,8 @@ func flattenImageListStacks(stack *image.ListStacks) []map[string]interface{} {
temp := make([]map[string]interface{}, 0, len(stack.Data))
for _, item := range stack.Data {
t := map[string]interface{}{
"ckey": item.CKey,
"meta": flattens.FlattenMeta(item.Meta),
"ckey": item.CKey,
//"meta": flattens.FlattenMeta(item.Meta),
"api_url": item.APIURL,
"api_key": item.APIKey,
"app_id": item.AppID,

View File

@@ -34,6 +34,7 @@ package image
import (
"context"
"strconv"
"time"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -96,8 +97,8 @@ func resourceImageCreate(ctx context.Context, d *schema.ResourceData, m interfac
var w dc.Warnings
if _, ok := d.GetOk("accounts"); ok {
if err := resourceImageSetAccess(ctx, d, m); err != nil {
if _, ok := d.GetOk("shared_with"); ok {
if err := resourceImageShare(ctx, d, m); err != nil {
w.Add(err)
}
}
@@ -203,13 +204,6 @@ func resourceImageUpdate(ctx context.Context, d *schema.ResourceData, m interfac
}
}
if d.HasChange("accounts") {
err := resourceImageChangeAccess(ctx, d, m)
if err != nil {
return diag.FromErr(err)
}
}
return nil
}
@@ -243,15 +237,44 @@ func resourceImageChangeEnabled(ctx context.Context, d *schema.ResourceData, m i
func resourceImageShare(ctx context.Context, d *schema.ResourceData, m interface{}) error {
log.Debugf("resourceImageShare: called for %s, id: %s", d.Get("name").(string), d.Id())
c := m.(*controller.ControllerCfg)
imageID, _ := strconv.ParseUint(d.Id(), 10, 64)
sharedWith := d.Get("shared_with").([]interface{})
if len(sharedWith) == 0 {
req := image.RevokeAccessRequest{
ImageID: imageID,
AccountIDs: []int64{-1},
}
_, err := c.CloudBroker().Image().RevokeAccess(ctx, req)
if err != nil {
return err
}
return nil
}
req := image.ShareRequest{
ImageId: uint64(d.Get("image_id").(int)),
ImageId: imageID,
}
accIds := []uint64{}
for _, accId := range d.Get("shared_with").([]interface{}) {
for _, accId := range sharedWith {
accIds = append(accIds, uint64(accId.(int)))
}
req.AccountIDs = accIds
getReq := image.GetRequest{ImageID: imageID}
for {
image, err := c.CloudBroker().Image().Get(ctx, getReq)
if err != nil {
return err
}
if image.Status != "CREATING" {
break
}
time.Sleep(time.Second * 10)
}
_, err := c.CloudBroker().Image().Share(ctx, req)
if err != nil {
return err
@@ -345,84 +368,6 @@ func resourceImageEdit(ctx context.Context, d *schema.ResourceData, m interface{
return nil
}
func resourceImageChangeAccess(ctx context.Context, d *schema.ResourceData, m interface{}) error {
log.Debugf("resourceImageChangeAccess: called for %s, id: %s", d.Get("name").(string), d.Id())
c := m.(*controller.ControllerCfg)
imageId, _ := strconv.ParseUint(d.Id(), 10, 64)
oldSet, newSet := d.GetChange("accounts")
revokeAccess := (oldSet.(*schema.Set).Difference(newSet.(*schema.Set))).List()
revokeAccounts := make([]int64, 0, len(revokeAccess))
if newSet.(*schema.Set).Len() == 0 {
revokeAccounts = append(revokeAccounts, -1)
} else if len(revokeAccess) > 0 {
for _, accountId := range revokeAccess {
revokeAccounts = append(revokeAccounts, accountId.(int64))
}
}
req := image.RevokeAccessRequest{
ImageID: imageId,
AccountIDs: revokeAccounts,
}
_, err := c.CloudBroker().Image().RevokeAccess(ctx, req)
if err != nil {
return err
}
addedAccess := (newSet.(*schema.Set).Difference(oldSet.(*schema.Set))).List()
grantAccounts := make([]int64, 0, len(addedAccess))
if newSet.(*schema.Set).Len() == 0 {
grantAccounts = append(grantAccounts, -1)
} else if len(addedAccess) > 0 {
for _, accountId := range addedAccess {
grantAccounts = append(grantAccounts, accountId.(int64))
}
}
// req := image.GrantAccessRequest{
// ImageID: imageId,
// AccountIDs: grantAccounts,
// }
// _, err := c.CloudBroker().Image().GrantAccess(ctx, req)
// if err != nil {
// return err
// }
return nil
}
func resourceImageSetAccess(ctx context.Context, d *schema.ResourceData, m interface{}) error {
log.Debugf("resourceImageSetAccess: called for %s, id: %s", d.Get("name").(string), d.Id())
c := m.(*controller.ControllerCfg)
imageId, _ := strconv.ParseUint(d.Id(), 10, 64)
accounts := d.Get("accounts").([]interface{})
accountIDs := make([]int64, 0, len(accounts))
for _, accountId := range accounts {
accountIDs = append(accountIDs, accountId.(int64))
}
req := image.GrantAccessRequest{
ImageID: imageId,
AccountIDs: accountIDs,
}
_, err := c.CloudBroker().Image().GrantAccess(ctx, req)
if err != nil {
return err
}
return nil
}
func ResourceImage() *schema.Resource {
return &schema.Resource{
SchemaVersion: 1,

View File

@@ -131,8 +131,8 @@ func resourceImageFromBlankComputeCreate(ctx context.Context, d *schema.Resource
var w dc.Warnings
if _, ok := d.GetOk("accounts"); ok {
if err := resourceImageSetAccess(ctx, d, m); err != nil {
if _, ok := d.GetOk("shared_with"); ok {
if err := resourceImageShare(ctx, d, m); err != nil {
w.Add(err)
}
}
@@ -249,8 +249,8 @@ func resourceImageFromBlankComputeUpdate(ctx context.Context, d *schema.Resource
}
}
if d.HasChange("accounts") {
err := resourceImageChangeAccess(ctx, d, m)
if d.HasChange("shared_with") {
err := resourceImageShare(ctx, d, m)
if err != nil {
return diag.FromErr(err)
}

View File

@@ -138,8 +138,8 @@ func resourceImageFromPlatformDiskCreate(ctx context.Context, d *schema.Resource
var w dc.Warnings
if _, ok := d.GetOk("accounts"); ok {
if err := resourceImageSetAccess(ctx, d, m); err != nil {
if _, ok := d.GetOk("shared_with"); ok {
if err := resourceImageShare(ctx, d, m); err != nil {
w.Add(err)
}
}
@@ -256,8 +256,8 @@ func resourceImageFromPlatformDiskUpdate(ctx context.Context, d *schema.Resource
}
}
if d.HasChange("accounts") {
err := resourceImageChangeAccess(ctx, d, m)
if d.HasChange("shared_with") {
err := resourceImageShare(ctx, d, m)
if err != nil {
return diag.FromErr(err)
}

View File

@@ -83,14 +83,6 @@ func dataSourceImageListStacksSchemaMake() map[string]*schema.Schema {
Type: schema.TypeString,
Computed: true,
},
"meta": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Schema{
Type: schema.TypeString,
},
Description: "meta",
},
"api_url": {
Type: schema.TypeString,
Computed: true,
@@ -1020,14 +1012,6 @@ func resourceCDROMImageSchemaMake() map[string]*schema.Schema {
Type: schema.TypeString,
Computed: true,
},
"meta": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Schema{
Type: schema.TypeString,
},
Description: "meta",
},
"acl": {
Type: schema.TypeList,
Computed: true,
@@ -1316,14 +1300,6 @@ func resourceImageSchemaMake() map[string]*schema.Schema {
Type: schema.TypeInt,
},
},
"accounts": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Schema{
Type: schema.TypeInt,
},
},
"unc_path": {
Type: schema.TypeString,
Computed: true,
@@ -1553,14 +1529,6 @@ func resourceVirtualImageSchemaMake() map[string]*schema.Schema {
Type: schema.TypeString,
Computed: true,
},
"meta": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Schema{
Type: schema.TypeString,
},
Description: "meta",
},
"acl": {
Type: schema.TypeList,
Computed: true,
@@ -1837,14 +1805,6 @@ func resourceImageFromBlankComputeSchemaMake() map[string]*schema.Schema {
Type: schema.TypeInt,
},
},
"accounts": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Schema{
Type: schema.TypeInt,
},
},
"network_interface_naming": {
Type: schema.TypeString,
Optional: true,
@@ -2126,14 +2086,6 @@ func resourceImageFromPlatformDiskSchemaMake() map[string]*schema.Schema {
Type: schema.TypeInt,
},
},
"accounts": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Schema{
Type: schema.TypeInt,
},
},
"network_interface_naming": {
Type: schema.TypeString,
Optional: true,

View File

@@ -272,7 +272,7 @@ func resourceK8sCPRead(ctx context.Context, d *schema.ResourceData, m interface{
}
}
k8sList, err := utilityK8sListCheckPresence(ctx, d, m)
k8sList, err := utilityResourceK8sListCheckPresence(ctx, d, m)
if err != nil {
d.SetId("")
return diag.FromErr(err)

View File

@@ -73,3 +73,19 @@ func utilityComputeCheckPresence(ctx context.Context, d *schema.ResourceData, m
return compute, nil
}
func utilityResourceK8sListCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*k8s.ListK8S, error) {
c := m.(*controller.ControllerCfg)
req := k8s.ListRequest{}
if byID, ok := d.GetOk("k8s_id"); ok {
req.ByID = uint64(byID.(int))
}
k8sList, err := c.CloudBroker().K8S().List(ctx, req)
if err != nil {
return nil, err
}
return k8sList, nil
}

View File

@@ -50,7 +50,7 @@ func utilityAvailableSEPAndPoolsListCheckPresence(ctx context.Context, d *schema
req.AccountID = uint64(AccountID.(int))
}
if RGID, ok := d.GetOk("rg_id"); ok {
req.RGID = RGID.(uint64)
req.RGID = uint64(RGID.(int))
}
log.Debugf("utilityAvailableSEPAndPoolsListCheckPresence: load sep and pools list")

View File

@@ -1966,7 +1966,6 @@ func resourceVinsSchemaMake() map[string]*schema.Schema {
"pre_reservations_num": {
Type: schema.TypeInt,
Optional: true,
Default: 32,
},
"routes": {
Type: schema.TypeList,