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  }