This commit is contained in:
2025-11-18 16:20:26 +03:00
parent 4b3f21d9be
commit e42fbcef39
397 changed files with 17560 additions and 1501 deletions

View File

@@ -127,6 +127,22 @@ func resourceLimitsSchemaMake() map[string]*schema.Schema {
Type: schema.TypeFloat,
Computed: true,
},
"storage_policy": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"id": {
Type: schema.TypeInt,
Computed: true,
},
"limit": {
Type: schema.TypeInt,
Computed: true,
},
},
},
},
}
return res
@@ -288,17 +304,6 @@ func dataSourceAccountSchemaMake() map[string]*schema.Schema {
// Schema: resourcesSchemaMake(),
// },
// },
"ckey": {
Type: schema.TypeString,
Computed: true,
},
"meta": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Schema{
Type: schema.TypeString,
},
},
"zone_ids": {
Type: schema.TypeList,
Computed: true,
@@ -388,10 +393,6 @@ func dataSourceAccountSchemaMake() map[string]*schema.Schema {
Type: schema.TypeBool,
Computed: true,
},
"service_account": {
Type: schema.TypeBool,
Computed: true,
},
"status": {
Type: schema.TypeString,
Computed: true,
@@ -437,6 +438,13 @@ func dataSourceAccountSchemaMake() map[string]*schema.Schema {
Type: schema.TypeFloat,
Computed: true,
},
"storage_policy_ids": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Schema{
Type: schema.TypeInt,
},
},
}
return res
}

View File

@@ -116,6 +116,22 @@ func dataSourceResourceLimitsSchemaMake() map[string]*schema.Schema {
Type: schema.TypeFloat,
Computed: true,
},
"storage_policy": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"id": {
Type: schema.TypeInt,
Computed: true,
},
"limit": {
Type: schema.TypeInt,
Computed: true,
},
},
},
},
}
return res

View File

@@ -55,6 +55,7 @@ func flattenAccountList(al *account.ListAccounts) []map[string]interface{} {
"account_name": acc.Name,
"status": acc.Status,
"updated_time": acc.UpdatedTime,
"zone_ids": acc.ZoneIDs,
}
res = append(res, temp)
}
@@ -129,6 +130,11 @@ func dataSourceAccountListSchemaMake() map[string]*schema.Schema {
Optional: true,
Description: "Page size",
},
"zone_id": {
Type: schema.TypeInt,
Optional: true,
Description: "Zone ID",
},
"items": {
Type: schema.TypeList,
Computed: true,
@@ -201,6 +207,13 @@ func dataSourceAccountListSchemaMake() map[string]*schema.Schema {
Type: schema.TypeInt,
Computed: true,
},
"zone_ids": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Schema{
Type: schema.TypeInt,
},
},
},
},
},

View File

@@ -139,6 +139,35 @@ func dataSourceAccResourceSchemaMake() map[string]*schema.Schema {
Type: schema.TypeInt,
Computed: true,
},
"policies": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"id": {
Type: schema.TypeString,
Computed: true,
},
"disk_size": {
Type: schema.TypeFloat,
Computed: true,
},
"disk_size_max": {
Type: schema.TypeFloat,
Computed: true,
},
"seps": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource{
Schema: dataSourceSepsSchemaMake(),
},
},
},
},
},
"ram": {
Type: schema.TypeInt,
Computed: true,

View File

@@ -8,8 +8,8 @@ import (
func flattenAccount(d *schema.ResourceData, acc account.RecordAccount) error {
d.Set("dc_location", acc.DCLocation)
d.Set("desc", acc.Description)
//TODO
// d.Set("resources", flattenAccResources(acc.Resources))
d.Set("ckey", acc.CKey)
d.Set("acl", flattenAccAcl(acc.ACL))
d.Set("company", acc.Company)
d.Set("companyurl", acc.CompanyURL)
@@ -37,6 +37,7 @@ func flattenAccount(d *schema.ResourceData, acc account.RecordAccount) error {
d.Set("cpu_allocation_parameter", acc.CPUAllocationParameter)
d.Set("cpu_allocation_ratio", acc.CPUAllocationRatio)
d.Set("default_zone_id", acc.DefaultZoneID)
d.Set("storage_policy_ids", acc.StoragePolicyIDs)
d.Set("zone_ids", flattenZones(acc.ZoneIDs))
if username, ok := d.GetOk("username"); ok {
@@ -48,6 +49,44 @@ func flattenAccount(d *schema.ResourceData, acc account.RecordAccount) error {
return nil
}
func flattenAccountResource(d *schema.ResourceData, acc account.RecordAccount) error {
d.Set("dc_location", acc.DCLocation)
d.Set("desc", acc.Description)
//TODO
// d.Set("resources", flattenAccResources(acc.Resources))
d.Set("acl", flattenAccAcl(acc.ACL))
d.Set("company", acc.Company)
d.Set("companyurl", acc.CompanyURL)
d.Set("compute_features", acc.ComputeFeatures)
d.Set("created_by", acc.CreatedBy)
d.Set("created_time", acc.CreatedTime)
d.Set("deactivation_time", acc.DeactivationTime)
d.Set("desc", acc.Description)
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)
d.Set("resource_limits", flattenAccResourceLimits(acc.ResourceLimits))
d.Set("send_access_emails", acc.SendAccessEmails)
d.Set("status", acc.Status)
d.Set("updated_time", acc.UpdatedTime)
d.Set("version", acc.Version)
d.Set("vins", acc.VINS)
d.Set("vinses", acc.VINSes)
d.Set("computes", flattenAccComputes(acc.Computes))
d.Set("machines", flattenAccMachines(acc.Machines))
d.Set("cpu_allocation_parameter", acc.CPUAllocationParameter)
d.Set("cpu_allocation_ratio", acc.CPUAllocationRatio)
d.Set("default_zone_id", acc.DefaultZoneID)
d.Set("storage_policy_ids", acc.StoragePolicyIDs)
d.Set("zone_ids", flattenZonesInResource(acc.ZoneIDs))
return nil
}
func flattenEnabled(status string) bool {
return status == "CONFIRMED"
}
@@ -100,20 +139,32 @@ func flattenResourceConsumption(d *schema.ResourceData, acc *account.RecordResou
func flattenAccResourceLimits(rl account.ResourceLimits) []map[string]interface{} {
res := make([]map[string]interface{}, 0)
temp := map[string]interface{}{
"cu_c": rl.CUC,
"cu_d": rl.CUD,
"cu_dm": rl.CUDM,
"cu_i": rl.CUI,
"cu_m": rl.CUM,
"cu_np": rl.CUNP,
"gpu_units": rl.GPUUnits,
"cu_c": rl.CUC,
"cu_d": rl.CUD,
"cu_dm": rl.CUDM,
"cu_i": rl.CUI,
"cu_m": rl.CUM,
"cu_np": rl.CUNP,
"gpu_units": rl.GPUUnits,
"storage_policy": flattenSTPolicy(rl.StoragePolicy),
}
res = append(res, temp)
return res
}
func flattenSTPolicy(ast []account.StoragePolicyItem) []map[string]interface{} {
res := make([]map[string]interface{}, 0, len(ast))
for _, item := range ast {
temp := map[string]interface{}{
"id": item.ID,
"limit": item.Limit,
}
res = append(res, temp)
}
return res
}
// func flattenAccResources(r account.Resources) []map[string]interface{} {
// res := make([]map[string]interface{}, 0)
// temp := map[string]interface{}{
@@ -151,11 +202,26 @@ func flattenAccResource(r account.Resource) []map[string]interface{} {
"gpu": r.GPU,
"ram": r.RAM,
"seps": flattenAccountSeps(r.SEPs),
"policies": flattenAccountPolicies(r.Policies),
}
res = append(res, temp)
return res
}
func flattenAccountPolicies(policies map[string]account.Policy) []map[string]interface{} {
res := make([]map[string]interface{}, 0)
for k, dataVal := range policies {
temp := map[string]interface{}{
"id": k,
"disk_size": dataVal.DiskSize,
"disk_size_max": dataVal.DiskSizeMax,
"seps": flattenAccountSeps(dataVal.SEPs),
}
res = append(res, temp)
}
return res
}
func flattenAccResourceConsumption(lrc *account.ListResourceConsumption) []map[string]interface{} {
res := make([]map[string]interface{}, 0, len(lrc.Data))
for _, rc := range lrc.Data {
@@ -180,3 +246,11 @@ func flattenZones(zones []account.ZoneID) []map[string]interface{} {
}
return res
}
func flattenZonesInResource(zones []account.ZoneID) []int64 {
res := make([]int64, 0)
for _, zone := range zones {
res = append(res, zone.ID)
}
return res
}

View File

@@ -100,7 +100,7 @@ func resourceAccountRead(ctx context.Context, d *schema.ResourceData, m interfac
}
}
flattenAccount(d, *acc)
flattenAccountResource(d, *acc)
return nil
}
@@ -495,7 +495,6 @@ func resourceAccountSchemaMake() map[string]*schema.Schema {
},
"zone_ids": {
Type: schema.TypeList,
Optional: true,
Computed: true,
Elem: &schema.Schema{
Type: schema.TypeInt,
@@ -535,6 +534,10 @@ func resourceAccountSchemaMake() map[string]*schema.Schema {
Optional: true,
Computed: true,
},
"cu_dm": {
Type: schema.TypeFloat,
Computed: true,
},
"cu_i": {
Type: schema.TypeFloat,
Optional: true,
@@ -555,6 +558,22 @@ func resourceAccountSchemaMake() map[string]*schema.Schema {
Optional: true,
Computed: true,
},
"storage_policy": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"id": {
Type: schema.TypeInt,
Computed: true,
},
"limit": {
Type: schema.TypeInt,
Computed: true,
},
},
},
},
},
},
},
@@ -573,17 +592,6 @@ func resourceAccountSchemaMake() map[string]*schema.Schema {
// Schema: resourcesSchemaMake(),
// },
// },
"ckey": {
Type: schema.TypeString,
Computed: true,
},
// "meta": {
// Type: schema.TypeList,
// Computed: true,
// Elem: &schema.Schema{
// Type: schema.TypeString,
// },
// },
"acl": {
Type: schema.TypeList,
Computed: true,
@@ -634,10 +642,6 @@ func resourceAccountSchemaMake() map[string]*schema.Schema {
Type: schema.TypeInt,
Computed: true,
},
"service_account": {
Type: schema.TypeBool,
Computed: true,
},
"status": {
Type: schema.TypeString,
Computed: true,
@@ -683,6 +687,13 @@ func resourceAccountSchemaMake() map[string]*schema.Schema {
Type: schema.TypeFloat,
Computed: true,
},
"storage_policy_ids": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Schema{
Type: schema.TypeInt,
},
},
}
}

View File

@@ -73,6 +73,10 @@ func utilityAccountListCheckPresence(ctx context.Context, d *schema.ResourceData
req.SortBy = sortBy.(string)
}
if zoneID, ok := d.GetOk("zone_id"); ok {
req.ZoneID = uint64(zoneID.(int))
}
log.Debugf("utilityAccountListCheckPresence: load account list")
accountList, err := c.CloudAPI().Account().List(ctx, req)
if err != nil {