github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/ecs/v1/cloudservers/results.go (about)

     1  package cloudservers
     2  
     3  import (
     4  	"time"
     5  
     6  	"github.com/opentelekomcloud/gophertelekomcloud"
     7  )
     8  
     9  type cloudServerResult struct {
    10  	golangsdk.Result
    11  }
    12  
    13  type Flavor struct {
    14  	Disk  string `json:"disk"`
    15  	Vcpus string `json:"vcpus"`
    16  	RAM   string `json:"ram"`
    17  	ID    string `json:"id"`
    18  	Name  string `json:"name"`
    19  }
    20  
    21  // Image defines a image struct in details of a server.
    22  type Image struct {
    23  	ID string `json:"id"`
    24  }
    25  
    26  type SysTags struct {
    27  	Key   string `json:"key"`
    28  	Value string `json:"value"`
    29  }
    30  
    31  type OsSchedulerHints struct {
    32  	Group           []string `json:"group"`
    33  	Tenancy         []string `json:"tenancy"`
    34  	DedicatedHostID []string `json:"dedicated_host_id"`
    35  }
    36  
    37  // Metadata is only used for method that requests details on a single server, by ID.
    38  // Because metadata struct must be a map.
    39  type Metadata struct {
    40  	ChargingMode      string `json:"charging_mode"`
    41  	VpcID             string `json:"vpc_id"`
    42  	EcmResStatus      string `json:"EcmResStatus"`
    43  	ImageID           string `json:"metering.image_id"`
    44  	ImageType         string `json:"metering.imagetype"`
    45  	ResourceSpecCode  string `json:"metering.resourcespeccode"`
    46  	ResourceType      string `json:"metering.resourcetype"`
    47  	CascadeExtraInfo  string `json:"cascaded.instance_extrainfo"`
    48  	ImageName         string `json:"image_name"`
    49  	AgencyName        string `json:"agency_name"`
    50  	OsBit             string `json:"os_bit"`
    51  	OsType            string `json:"os_type"`
    52  	LockCheckEndpoint string `json:"lockCheckEndpoint"`
    53  	LockSource        string `json:"lockSource"`
    54  	LockSourceID      string `json:"lockSourceId"`
    55  	LockScene         string `json:"lockScene"`
    56  	VirtualEnvType    string `json:"virtual_env_type"`
    57  }
    58  
    59  type Address struct {
    60  	Version string `json:"version"`
    61  	Addr    string `json:"addr"`
    62  	MacAddr string `json:"OS-EXT-IPS-MAC:mac_addr"`
    63  	PortID  string `json:"OS-EXT-IPS:port_id"`
    64  	Type    string `json:"OS-EXT-IPS:type"`
    65  }
    66  
    67  type VolumeAttached struct {
    68  	ID                  string `json:"id"`
    69  	DeleteOnTermination string `json:"delete_on_termination"`
    70  	BootIndex           string `json:"bootIndex"`
    71  	Device              string `json:"device"`
    72  }
    73  
    74  type SecurityGroups struct {
    75  	Name string `json:"name"`
    76  	ID   string `json:"id"`
    77  }
    78  
    79  // CloudServer is only used for method that requests details on a single server, by ID.
    80  // Because metadata struct must be a map.
    81  type CloudServer struct {
    82  	Status             string               `json:"status"`
    83  	Updated            time.Time            `json:"updated"`
    84  	HostID             string               `json:"hostId"`
    85  	Addresses          map[string][]Address `json:"addresses"`
    86  	ID                 string               `json:"id"`
    87  	Name               string               `json:"name"`
    88  	AccessIPv4         string               `json:"accessIPv4"`
    89  	AccessIPv6         string               `json:"accessIPv6"`
    90  	Created            time.Time            `json:"created"`
    91  	Tags               []string             `json:"tags"`
    92  	Description        string               `json:"description"`
    93  	Locked             bool                 `json:"locked"`
    94  	ConfigDrive        string               `json:"config_drive"`
    95  	TenantID           string               `json:"tenant_id"`
    96  	UserID             string               `json:"user_id"`
    97  	HostStatus         string               `json:"host_status"`
    98  	SysTags            []SysTags            `json:"sys_tags"`
    99  	Flavor             Flavor               `json:"flavor"`
   100  	Metadata           Metadata             `json:"metadata"`
   101  	SecurityGroups     []SecurityGroups     `json:"security_groups"`
   102  	KeyName            string               `json:"key_name"`
   103  	Image              Image                `json:"image"`
   104  	Progress           int                  `json:"progress"`
   105  	PowerState         int                  `json:"OS-EXT-STS:power_state"`
   106  	VMState            string               `json:"OS-EXT-STS:vm_state"`
   107  	TaskState          string               `json:"OS-EXT-STS:task_state"`
   108  	DiskConfig         string               `json:"OS-DCF:diskConfig"`
   109  	AvailabilityZone   string               `json:"OS-EXT-AZ:availability_zone"`
   110  	LaunchedAt         string               `json:"OS-SRV-USG:launched_at"`
   111  	TerminatedAt       string               `json:"OS-SRV-USG:terminated_at"`
   112  	RootDeviceName     string               `json:"OS-EXT-SRV-ATTR:root_device_name"`
   113  	RamdiskID          string               `json:"OS-EXT-SRV-ATTR:ramdisk_id"`
   114  	KernelID           string               `json:"OS-EXT-SRV-ATTR:kernel_id"`
   115  	LaunchIndex        int                  `json:"OS-EXT-SRV-ATTR:launch_index"`
   116  	ReservationID      string               `json:"OS-EXT-SRV-ATTR:reservation_id"`
   117  	Hostname           string               `json:"OS-EXT-SRV-ATTR:hostname"`
   118  	UserData           string               `json:"OS-EXT-SRV-ATTR:user_data"`
   119  	Host               string               `json:"OS-EXT-SRV-ATTR:host"`
   120  	InstanceName       string               `json:"OS-EXT-SRV-ATTR:instance_name"`
   121  	HypervisorHostname string               `json:"OS-EXT-SRV-ATTR:hypervisor_hostname"`
   122  	VolumeAttached     []VolumeAttached     `json:"os-extended-volumes:volumes_attached"`
   123  	OsSchedulerHints   OsSchedulerHints     `json:"os:scheduler_hints"`
   124  }
   125  
   126  // NewCloudServer defines the response from details on a single server, by ID.
   127  type NewCloudServer struct {
   128  	CloudServer
   129  	Metadata map[string]string `json:"metadata"`
   130  }
   131  
   132  // GetResult is the response from a Get operation. Call its Extract
   133  // method to interpret it as a Server.
   134  type GetResult struct {
   135  	cloudServerResult
   136  }
   137  
   138  func (r GetResult) Extract() (*CloudServer, error) {
   139  	var s struct {
   140  		Server *CloudServer `json:"server"`
   141  	}
   142  	err := r.ExtractInto(&s)
   143  	return s.Server, err
   144  }
   145  
   146  type DryRunResult struct {
   147  	golangsdk.ErrResult
   148  }