github.com/chnsz/golangsdk@v0.0.0-20240506093406-85a3fbfa605b/openstack/dms/v1/instances/results.go (about)

     1  package instances
     2  
     3  import (
     4  	"github.com/chnsz/golangsdk"
     5  	"github.com/chnsz/golangsdk/pagination"
     6  )
     7  
     8  // InstanceCreate response
     9  type InstanceCreate struct {
    10  	InstanceID string `json:"instance_id"`
    11  }
    12  
    13  // CreateResult is a struct that contains all the return parameters of creation
    14  type CreateResult struct {
    15  	golangsdk.Result
    16  }
    17  
    18  // Extract from CreateResult
    19  func (r CreateResult) Extract() (*InstanceCreate, error) {
    20  	var s InstanceCreate
    21  	err := r.Result.ExtractInto(&s)
    22  	return &s, err
    23  }
    24  
    25  // DeleteResult is a struct which contains the result of deletion
    26  type DeleteResult struct {
    27  	golangsdk.ErrResult
    28  }
    29  
    30  type ListDmsResponse struct {
    31  	Instances  []Instance `json:"instances"`
    32  	TotalCount int        `json:"instance_num"`
    33  }
    34  
    35  // Instance response
    36  type Instance struct {
    37  	Name              string   `json:"name"`
    38  	Engine            string   `json:"engine"`
    39  	EngineVersion     string   `json:"engine_version"`
    40  	Specification     string   `json:"specification"`
    41  	PartitionNum      string   `json:"partition_num"`
    42  	StorageSpecCode   string   `json:"storage_spec_code"`
    43  	StorageSpace      int      `json:"storage_space"`
    44  	UsedStorageSpace  int      `json:"used_storage_space"`
    45  	TotalStorageSpace int      `json:"total_storage_space"`
    46  	ConnectAddress    string   `json:"connect_address"`
    47  	Port              int      `json:"port"`
    48  	Nodeum            int      `json:"node_num"`
    49  	Status            string   `json:"status"`
    50  	SslEnable         bool     `json:"ssl_enable"`
    51  	Description       string   `json:"description"`
    52  	InstanceID        string   `json:"instance_id"`
    53  	ResourceSpecCode  string   `json:"resource_spec_code"`
    54  	Type              string   `json:"type"`
    55  	ChargingMode      int      `json:"charging_mode"`
    56  	VPCID             string   `json:"vpc_id"`
    57  	VPCName           string   `json:"vpc_name"`
    58  	CreatedAt         string   `json:"created_at"`
    59  	ErrorCode         string   `json:"error_code"`
    60  	ProductID         string   `json:"product_id"`
    61  	SecurityGroupID   string   `json:"security_group_id"`
    62  	SecurityGroupName string   `json:"security_group_name"`
    63  	SubnetID          string   `json:"subnet_id"`
    64  	SubnetName        string   `json:"subnet_name"`
    65  	SubnetCIDR        string   `json:"subnet_cidr"`
    66  	AvailableZones    []string `json:"available_zones"`
    67  	UserID            string   `json:"user_id"`
    68  	UserName          string   `json:"user_name"`
    69  	OrderID           string   `json:"order_id"`
    70  	MaintainBegin     string   `json:"maintain_begin"`
    71  	MaintainEnd       string   `json:"maintain_end"`
    72  	EnableAutoTopic   bool     `json:"enable_auto_topic"`
    73  	EnablePublicip    bool     `json:"enable_publicip"`
    74  	PublicBandwidth   int      `json:"public_bandwidth"`
    75  	PublicipId        string   `json:"publicip_id"`
    76  	RetentionPolicy   string   `json:"retention_policy"`
    77  }
    78  
    79  // UpdateResult is a struct from which can get the result of update method
    80  type UpdateResult struct {
    81  	golangsdk.Result
    82  }
    83  
    84  // GetResult contains the body of getting detailed
    85  type GetResult struct {
    86  	golangsdk.Result
    87  }
    88  
    89  // Extract from GetResult
    90  func (r GetResult) Extract() (*Instance, error) {
    91  	var s Instance
    92  	err := r.Result.ExtractInto(&s)
    93  	return &s, err
    94  }
    95  
    96  type DmsPage struct {
    97  	pagination.SinglePageBase
    98  }
    99  
   100  func (r DmsPage) IsEmpty() (bool, error) {
   101  	data, err := ExtractDmsInstances(r)
   102  	if err != nil {
   103  		return false, err
   104  	}
   105  	return len(data.Instances) == 0, err
   106  }
   107  
   108  // ExtractCloudServers is a function that takes a ListResult and returns the services' information.
   109  func ExtractDmsInstances(r pagination.Page) (ListDmsResponse, error) {
   110  	var s ListDmsResponse
   111  	err := (r.(DmsPage)).ExtractInto(&s)
   112  	return s, err
   113  }