You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
terraform-provider-decort/internal/service/cloudapi/stpolicy/flattens.go

64 lines
1.9 KiB

package stpolicy
import (
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/stpolicy"
)
func flattenStoragePolicyData(d *schema.ResourceData, storagePolicy *stpolicy.InfoStoragePolicy) {
d.Set("storage_policy_id", storagePolicy.ID)
d.Set("description", storagePolicy.Description)
d.Set("guid", storagePolicy.GUID)
d.Set("limit_iops", storagePolicy.LimitIOPS)
d.Set("name", storagePolicy.Name)
d.Set("status", storagePolicy.Status)
d.Set("access_seps_pools", flattenAccessSEPPools(storagePolicy.AccessSEPPools))
d.Set("usage", flattenUsage(storagePolicy.Usage))
}
func flattenAccessSEPPools(accessSEPPools stpolicy.ListAccessSEPPools) []map[string]interface{} {
res := make([]map[string]interface{}, 0, len(accessSEPPools))
for _, asp := range accessSEPPools {
temp := map[string]interface{}{
"sep_id": asp.SEPID,
//TODO
//"name": asp.Name,
"pool_names": asp.PoolNames,
}
res = append(res, temp)
}
return res
}
func flattenUsage(usage stpolicy.Usage) []map[string]interface{} {
res := make([]map[string]interface{}, 0)
temp := map[string]interface{}{
"accounts": usage.Accounts,
"resgroups": usage.Resgroups,
}
res = append(res, temp)
return res
}
func flattenStoragePolicyList(storagePolicyList *stpolicy.ListStoragePolicies) []map[string]interface{} {
res := make([]map[string]interface{}, 0, len(storagePolicyList.Data))
for _, v := range storagePolicyList.Data {
temp := map[string]interface{}{
"storage_policy_id": v.ID,
"description": v.Description,
"guid": v.GUID,
"limit_iops": v.LimitIOPS,
"name": v.Name,
"status": v.Status,
"access_seps_pools": flattenAccessSEPPools(v.AccessSEPPools),
"usage": flattenUsage(v.Usage),
}
res = append(res, temp)
}
return res
}