-
Notifications
You must be signed in to change notification settings - Fork 3
/
AffinityGroupApi.go
159 lines (138 loc) · 4.92 KB
/
AffinityGroupApi.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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
package cloudstack
// CreateAffinityGroup represents the paramter of CreateAffinityGroup
type CreateAffinityGroupParameter struct {
// an account for the affinity group. Must be used with domainId.
Account NullString
// optional description of the affinity group
Description NullString
// domainId of the account owning the affinity group
DomainId ID
// name of the affinity group
Name NullString
// Type of the affinity group from the available affinity/anti-affinity group
// types
Type NullString
}
func NewCreateAffinityGroupParameter(name string, typ string) (p *CreateAffinityGroupParameter) {
p = new(CreateAffinityGroupParameter)
p.Name.Set(name)
p.Type.Set(typ)
return p
}
// Creates an affinity/anti-affinity group
func (c *Client) CreateAffinityGroup(p *CreateAffinityGroupParameter) (*AffinityGroup, error) {
obj, err := c.Request("createAffinityGroup", convertParamToMap(p))
if err != nil {
return nil, err
}
return obj.(*AffinityGroup), err
}
// ListAffinityGroupTypes represents the paramter of ListAffinityGroupTypes
type ListAffinityGroupTypesParameter struct {
// List by keyword
Keyword NullString
Page NullNumber
PageSize NullNumber
}
func NewListAffinityGroupTypesParameter() (p *ListAffinityGroupTypesParameter) {
p = new(ListAffinityGroupTypesParameter)
return p
}
// Lists affinity group types available
func (c *Client) ListAffinityGroupTypes(p *ListAffinityGroupTypesParameter) ([]*AffinityGroupType, error) {
obj, err := c.Request("listAffinityGroupTypes", convertParamToMap(p))
if err != nil {
return nil, err
}
return obj.([]*AffinityGroupType), err
}
// UpdateVMAffinityGroup represents the paramter of UpdateVMAffinityGroup
type UpdateVMAffinityGroupParameter struct {
// comma separated list of affinity groups id that are going to be applied to
// the virtual machine. Should be passed only when vm is created from a zone
// with Basic Network support. Mutually exclusive with securitygroupnames
// parameter
AffinityGroupIds []string
// comma separated list of affinity groups names that are going to be applied to
// the virtual machine. Should be passed only when vm is created from a zone
// with Basic Network support. Mutually exclusive with securitygroupids
// parameter
AffinityGroupNames []string
// The ID of the virtual machine
Id ID
}
func NewUpdateVMAffinityGroupParameter(id string) (p *UpdateVMAffinityGroupParameter) {
p = new(UpdateVMAffinityGroupParameter)
p.Id.Set(id)
return p
}
// Updates the affinity/anti-affinity group associations of a virtual machine.
// The VM has to be stopped and restarted for the new properties to take effect.
func (c *Client) UpdateVMAffinityGroup(p *UpdateVMAffinityGroupParameter) (*VirtualMachine, error) {
obj, err := c.Request("updateVMAffinityGroup", convertParamToMap(p))
if err != nil {
return nil, err
}
return obj.(*VirtualMachine), err
}
// ListAffinityGroups represents the paramter of ListAffinityGroups
type ListAffinityGroupsParameter struct {
// list resources by account. Must be used with the domainId parameter.
Account NullString
// list only resources belonging to the domain specified
DomainId ID
// list the affinity group by the id provided
Id ID
// defaults to false, but if true, lists all resources from the parent specified
// by the domainId till leaves.
IsRecursive NullBool
// List by keyword
Keyword NullString
// If set to false, list only resources belonging to the command's caller; if
// set to true - list resources that the caller is authorized to see. Default
// value is false
ListAll NullBool
// lists affinity groups by name
Name NullString
Page NullNumber
PageSize NullNumber
// lists affinity groups by type
Type NullString
// lists affinity groups by virtual machine id
VirtualMachineId ID
}
func NewListAffinityGroupsParameter() (p *ListAffinityGroupsParameter) {
p = new(ListAffinityGroupsParameter)
return p
}
// Lists affinity groups
func (c *Client) ListAffinityGroups(p *ListAffinityGroupsParameter) ([]*AffinityGroup, error) {
obj, err := c.Request("listAffinityGroups", convertParamToMap(p))
if err != nil {
return nil, err
}
return obj.([]*AffinityGroup), err
}
// DeleteAffinityGroup represents the paramter of DeleteAffinityGroup
type DeleteAffinityGroupParameter struct {
// the account of the affinity group. Must be specified with domain ID
Account NullString
// the domain ID of account owning the affinity group
DomainId ID
// The ID of the affinity group. Mutually exclusive with name parameter
Id ID
// The name of the affinity group. Mutually exclusive with id parameter
Name NullString
}
func NewDeleteAffinityGroupParameter() (p *DeleteAffinityGroupParameter) {
p = new(DeleteAffinityGroupParameter)
return p
}
// Deletes affinity group
func (c *Client) DeleteAffinityGroup(p *DeleteAffinityGroupParameter) (*Result, error) {
obj, err := c.Request("deleteAffinityGroup", convertParamToMap(p))
if err != nil {
return nil, err
}
return obj.(*Result), err
}