github.com/chnsz/golangsdk@v0.0.0-20240506093406-85a3fbfa605b/openstack/autoscaling/v1/configurations/results.go (about) 1 package configurations 2 3 import ( 4 "github.com/chnsz/golangsdk" 5 "github.com/chnsz/golangsdk/pagination" 6 ) 7 8 // CreateResult is a struct that contains all the return parameters of creation 9 type CreateResult struct { 10 golangsdk.Result 11 } 12 13 func (r CreateResult) Extract() (string, error) { 14 var a struct { 15 ID string `json:"scaling_configuration_id"` 16 } 17 18 err := r.Result.ExtractInto(&a) 19 return a.ID, err 20 } 21 22 type GetResult struct { 23 golangsdk.Result 24 } 25 26 func (r GetResult) Extract() (Configuration, error) { 27 var a Configuration 28 err := r.Result.ExtractIntoStructPtr(&a, "scaling_configuration") 29 return a, err 30 } 31 32 type Configuration struct { 33 ID string `json:"scaling_configuration_id"` 34 Name string `json:"scaling_configuration_name"` 35 InstanceConfig InstanceConfig `json:"instance_config"` 36 ScalingGroupID string `json:"scaling_group_id"` 37 Tenant string `json:"tenant"` 38 CreateTime string `json:"create_time"` 39 } 40 41 type InstanceConfig struct { 42 FlavorRef string `json:"flavorRef"` 43 ImageRef string `json:"imageRef"` 44 SSHKey string `json:"key_name"` 45 InstanceName string `json:"instance_name"` 46 InstanceID string `json:"instance_id"` 47 AdminPass string `json:"adminPass"` 48 ServerGroupID string `json:"server_group_id"` 49 Tenancy string `json:"tenancy"` 50 DedicatedHostID string `json:"dedicated_host_id"` 51 MarketType string `json:"market_type"` 52 FlavorPriorityPolicy string `json:"multi_flavor_priority_policy"` 53 54 Disk []Disk `json:"disk"` 55 PublicIp PublicIp `json:"public_ip"` 56 SecurityGroups []SecurityGroup `json:"security_groups"` 57 Personality []Personality `json:"personality"` 58 59 UserData string `json:"user_data"` 60 Metadata map[string]interface{} `json:"metadata"` 61 } 62 63 type Disk struct { 64 Size int `json:"size"` 65 VolumeType string `json:"volume_type"` 66 DiskType string `json:"disk_type"` 67 DedicatedStorageID string `json:"dedicated_storage_id"` 68 DataDiskImageID string `json:"data_disk_image_id"` 69 SnapshotID string `json:"snapshot_id"` 70 Metadata map[string]string `json:"metadata"` 71 } 72 73 type Personality struct { 74 Path string `json:"path"` 75 Content string `json:"content"` 76 } 77 78 type PublicIp struct { 79 Eip Eip `json:"eip"` 80 } 81 82 type Eip struct { 83 Type string `json:"ip_type"` 84 Bandwidth Bandwidth `json:"bandwidth"` 85 } 86 87 type Bandwidth struct { 88 Size int `json:"size"` 89 ShareType string `json:"share_type"` 90 ChargingMode string `json:"charging_mode"` 91 } 92 93 type SecurityGroup struct { 94 ID string `json:"id"` 95 } 96 type DeleteResult struct { 97 golangsdk.ErrResult 98 } 99 100 type ConfigurationPage struct { 101 pagination.SinglePageBase 102 } 103 104 // IsEmpty returns true if a ListResult contains no Volumes. 105 func (r ConfigurationPage) IsEmpty() (bool, error) { 106 configs, err := r.Extract() 107 return len(configs) == 0, err 108 } 109 110 func (r ConfigurationPage) Extract() ([]Configuration, error) { 111 var cs []Configuration 112 err := r.Result.ExtractIntoSlicePtr(&cs, "scaling_configurations") 113 return cs, err 114 }