This repository has been archived by the owner on Aug 31, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 34
/
results.go
137 lines (124 loc) · 5.99 KB
/
results.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
package instances
import (
"github.com/huaweicloud/golangsdk"
"github.com/huaweicloud/golangsdk/openstack/common/tags"
"github.com/huaweicloud/golangsdk/pagination"
)
// InstanceCreate response
type InstanceCreate struct {
InstanceID string `json:"instance_id"`
}
// CreateResult is a struct that contains all the return parameters of creation
type CreateResult struct {
golangsdk.Result
}
// Extract from CreateResult
func (r CreateResult) Extract() (*InstanceCreate, error) {
var s InstanceCreate
err := r.Result.ExtractInto(&s)
return &s, err
}
// DeleteResult is a struct which contains the result of deletion
type DeleteResult struct {
golangsdk.ErrResult
}
type ListResponse struct {
Instances []Instance `json:"instances"`
TotalCount int `json:"instance_num"`
}
// Instance response
type Instance struct {
Name string `json:"name"`
Description string `json:"description"`
Engine string `json:"engine"`
EngineVersion string `json:"engine_version"`
Specification string `json:"specification"`
StorageSpace int `json:"storage_space"`
PartitionNum string `json:"partition_num"`
UsedStorageSpace int `json:"used_storage_space"`
ConnectAddress string `json:"connect_address"`
Port int `json:"port"`
Status string `json:"status"`
InstanceID string `json:"instance_id"`
ResourceSpecCode string `json:"resource_spec_code"`
ChargingMode int `json:"charging_mode"`
VPCID string `json:"vpc_id"`
VPCName string `json:"vpc_name"`
CreatedAt string `json:"created_at"`
UserID string `json:"user_id"`
UserName string `json:"user_name"`
OrderID string `json:"order_id"`
MaintainBegin string `json:"maintain_begin"`
MaintainEnd string `json:"maintain_end"`
EnablePublicIP bool `json:"enable_publicip"`
ManagementConnectAddress string `json:"management_connect_address"`
SslEnable bool `json:"ssl_enable"`
EnterpriseProjectID string `json:"enterprise_project_id"`
IsLogicalVolume bool `json:"is_logical_volume"`
ExtendTimes int `json:"extend_times"`
EnableAutoTopic bool `json:"enable_auto_topic"`
Type string `json:"type"`
ProductID string `json:"product_id"`
SecurityGroupID string `json:"security_group_id"`
SecurityGroupName string `json:"security_group_name"`
SubnetID string `json:"subnet_id"`
AvailableZones []string `json:"available_zones"`
TotalStorageSpace int `json:"total_storage_space"`
PublicConnectionAddress string `json:"public_connect_address"`
StorageResourceID string `json:"storage_resource_id"`
StorageSpecCode string `json:"storage_spec_code"`
ServiceType string `json:"service_type"`
StorageType string `json:"storage_type"`
RetentionPolicy string `json:"retention_policy"`
KafkaPublicStatus string `json:"kafka_public_status"`
PublicBandWidth int `json:"public_bandwidth"`
KafkaManagerUser string `json:"kafka_manager_user" required:"true"`
EnableLogCollect bool `json:"enable_log_collection"`
CrossVpcInfo string `json:"cross_vpc_info"`
Ipv6Enable bool `json:"ipv6_enable"`
Ipv6ConnectAddresses []string `json:"ipv6_connect_addresses"`
ConnectorEnalbe bool `json:"connector_enable"`
ConnectorID string `json:"connector_id"`
RestEnable bool `json:"rest_enable"`
RestConnectAddress string `json:"rest_connect_address"`
MessageQueryInstEnable bool `json:"message_query_inst_enable"`
VpcClientPlain bool `json:"vpc_client_plain"`
SupportFeatures string `json:"support_features"`
TraceEnable bool `json:"trace_enable"`
PodConnectAddress string `json:"pod_connect_address"`
DiskEncrypted bool `json:"disk_encrypted"`
KafkaPrivateConnectAddress string `json:"kafka_private_connect_address"`
CesVersion string `json:"ces_version"`
AccessUser string `json:"access_user"`
Tags []tags.ResourceTag `json:"tags"`
}
// UpdateResult is a struct from which can get the result of update method
type UpdateResult struct {
golangsdk.Result
}
// GetResult contains the body of getting detailed
type GetResult struct {
golangsdk.Result
}
// Extract from GetResult
func (r GetResult) Extract() (*Instance, error) {
var s Instance
err := r.Result.ExtractInto(&s)
return &s, err
}
type Page struct {
pagination.SinglePageBase
}
func (r Page) IsEmpty() (bool, error) {
data, err := ExtractInstances(r)
if err != nil {
return false, err
}
return len(data.Instances) == 0, err
}
// ExtractCloudServers is a function that takes a ListResult and returns the services' information.
func ExtractInstances(r pagination.Page) (ListResponse, error) {
var s ListResponse
err := (r.(Page)).ExtractInto(&s)
return s, err
}