package disks import ( "encoding/json" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/disks" ) func flattenDisk(d *schema.ResourceData, disk *disks.RecordDisk) { diskAcl, _ := json.Marshal(disk.ACL) d.Set("account_id", disk.AccountID) d.Set("account_name", disk.AccountName) d.Set("acl", string(diskAcl)) d.Set("boot_partition", disk.BootPartition) d.Set("created_time", disk.CreatedTime) d.Set("deleted_time", disk.DeletedTime) d.Set("desc", disk.Description) d.Set("destruction_time", disk.DestructionTime) d.Set("devicename", disk.DeviceName) d.Set("disk_path", disk.DiskPath) d.Set("gid", disk.GID) d.Set("guid", disk.GUID) d.Set("disk_id", disk.ID) d.Set("image_id", disk.ImageID) d.Set("images", disk.Images) d.Set("iotune", flattenIOTune(disk.IOTune)) d.Set("iqn", disk.IQN) d.Set("login", disk.Login) d.Set("milestones", disk.Milestones) d.Set("disk_name", disk.Name) d.Set("order", disk.Order) d.Set("params", disk.Params) d.Set("parent_id", disk.ParentID) d.Set("passwd", disk.Password) d.Set("pci_slot", disk.PCISlot) d.Set("pool", disk.Pool) d.Set("purge_attempts", disk.PurgeAttempts) d.Set("purge_time", disk.PurgeTime) d.Set("reality_device_number", disk.RealityDeviceNumber) d.Set("reference_id", disk.ReferenceID) d.Set("res_id", disk.ResID) d.Set("res_name", disk.ResName) d.Set("role", disk.Role) d.Set("sep_id", disk.SEPID) d.Set("sep_type", disk.SEPType) d.Set("size_max", disk.SizeMax) d.Set("size_used", disk.SizeUsed) d.Set("snapshots", flattendDiskSnapshotList(disk.Snapshots)) d.Set("status", disk.Status) d.Set("tech_status", disk.TechStatus) d.Set("type", disk.Type) d.Set("vmid", disk.VMID) } func flattenIOTune(iot disks.IOTune) []map[string]interface{} { res := make([]map[string]interface{}, 0) temp := map[string]interface{}{ "read_bytes_sec": iot.ReadBytesSec, "read_bytes_sec_max": iot.ReadBytesSecMax, "read_iops_sec": iot.ReadIOPSSec, "read_iops_sec_max": iot.ReadIOPSSecMax, "size_iops_sec": iot.SizeIOPSSec, "total_bytes_sec": iot.TotalBytesSec, "total_bytes_sec_max": iot.TotalBytesSecMax, "total_iops_sec": iot.TotalIOPSSec, "total_iops_sec_max": iot.TotalIOPSSecMax, "write_bytes_sec": iot.WriteBytesSec, "write_bytes_sec_max": iot.WriteBytesSecMax, "write_iops_sec": iot.WriteIOPSSec, "write_iops_sec_max": iot.WriteIOPSSecMax, } res = append(res, temp) return res } func flattenDiskList(dl disks.ListDisks) []map[string]interface{} { res := make([]map[string]interface{}, 0) for _, disk := range dl { diskAcl, _ := json.Marshal(disk.ACL) temp := map[string]interface{}{ "account_id": disk.AccountID, "account_name": disk.AccountName, "acl": string(diskAcl), "boot_partition": disk.BootPartition, // "compute_id": disk.MachineID, // "compute_name": disk.MachineName, "created_time": disk.CreatedTime, "deleted_time": disk.DeletedTime, "desc": disk.Description, "destruction_time": disk.DestructionTime, "devicename": disk.DeviceName, "disk_path": disk.DiskPath, "gid": disk.GID, "guid": disk.GUID, "disk_id": disk.ID, "image_id": disk.ImageID, "images": disk.Images, "iotune": flattenIOTune(disk.IOTune), "iqn": disk.IQN, "login": disk.Login, "machine_id": disk.MachineID, "machine_name": disk.MachineName, "milestones": disk.Milestones, "disk_name": disk.Name, "order": disk.Order, "params": disk.Params, "parent_id": disk.ParentID, "passwd": disk.Password, "pci_slot": disk.PCISlot, "pool": disk.Pool, "purge_attempts": disk.PurgeAttempts, "purge_time": disk.PurgeTime, "reality_device_number": disk.RealityDeviceNumber, "reference_id": disk.ReferenceID, "res_id": disk.ResID, "res_name": disk.ResName, "role": disk.Role, "sep_id": disk.SEPID, "sep_type": disk.SEPType, "size_max": disk.SizeMax, "size_used": disk.SizeUsed, "snapshots": flattendDiskSnapshotList(disk.Snapshots), "status": disk.Status, "tech_status": disk.TechStatus, "type": disk.Type, "vmid": disk.VMID, } res = append(res, temp) } return res } func flattendDiskSnapshotList(sl disks.ListSnapshots) []interface{} { res := make([]interface{}, 0) for _, snapshot := range sl { temp := map[string]interface{}{ "guid": snapshot.GUID, "label": snapshot.Label, "res_id": snapshot.ResID, "snap_set_guid": snapshot.SnapSetGUID, "snap_set_time": snapshot.SnapSetTime, "timestamp": snapshot.Timestamp, } res = append(res, temp) } return res }