-
Notifications
You must be signed in to change notification settings - Fork 3
/
SecurityGroupApi.go
242 lines (213 loc) · 7.51 KB
/
SecurityGroupApi.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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
package cloudstack
// AuthorizeSecurityGroupIngress represents the paramter of AuthorizeSecurityGroupIngress
type AuthorizeSecurityGroupIngressParameter struct {
// an optional account for the security group. Must be used with domainId.
Account NullString
// the cidr list associated
CidrList []string
// an optional domainId for the security group. If the account parameter is
// used, domainId must also be used.
DomainId ID
// end port for this ingress rule
EndPort NullNumber
// error code for this icmp message
IcmpCode NullNumber
// type of the icmp message being sent
IcmpType NullNumber
// an optional project of the security group
ProjectId ID
// TCP is default. UDP is the other supported protocol
Protocol NullString
// The ID of the security group. Mutually exclusive with securityGroupName
// parameter
SecurityGroupId ID
// The name of the security group. Mutually exclusive with securityGroupName
// parameter
SecurityGroupName NullString
// start port for this ingress rule
StartPort NullNumber
// user to security group mapping
UserSecurityGroupList map[string]string
}
func NewAuthorizeSecurityGroupIngressParameter() (p *AuthorizeSecurityGroupIngressParameter) {
p = new(AuthorizeSecurityGroupIngressParameter)
return p
}
// Authorizes a particular ingress rule for this security group
func (c *Client) AuthorizeSecurityGroupIngress(p *AuthorizeSecurityGroupIngressParameter) (*SecurityGroupIngress, error) {
obj, err := c.Request("authorizeSecurityGroupIngress", convertParamToMap(p))
if err != nil {
return nil, err
}
return obj.(*SecurityGroupIngress), err
}
// CreateSecurityGroup represents the paramter of CreateSecurityGroup
type CreateSecurityGroupParameter struct {
// an optional account for the security group. Must be used with domainId.
Account NullString
// the description of the security group
Description NullString
// an optional domainId for the security group. If the account parameter is
// used, domainId must also be used.
DomainId ID
// name of the security group
Name NullString
// Create security group for project
ProjectId ID
}
func NewCreateSecurityGroupParameter(name string) (p *CreateSecurityGroupParameter) {
p = new(CreateSecurityGroupParameter)
p.Name.Set(name)
return p
}
// Creates a security group
func (c *Client) CreateSecurityGroup(p *CreateSecurityGroupParameter) (*SecurityGroup, error) {
obj, err := c.Request("createSecurityGroup", convertParamToMap(p))
if err != nil {
return nil, err
}
return obj.(*SecurityGroup), err
}
// RevokeSecurityGroupEgress represents the paramter of RevokeSecurityGroupEgress
type RevokeSecurityGroupEgressParameter struct {
// The ID of the egress rule
Id ID
}
func NewRevokeSecurityGroupEgressParameter(id string) (p *RevokeSecurityGroupEgressParameter) {
p = new(RevokeSecurityGroupEgressParameter)
p.Id.Set(id)
return p
}
// Deletes a particular egress rule from this security group
func (c *Client) RevokeSecurityGroupEgress(p *RevokeSecurityGroupEgressParameter) (*Result, error) {
obj, err := c.Request("revokeSecurityGroupEgress", convertParamToMap(p))
if err != nil {
return nil, err
}
return obj.(*Result), err
}
// DeleteSecurityGroup represents the paramter of DeleteSecurityGroup
type DeleteSecurityGroupParameter struct {
// the account of the security group. Must be specified with domain ID
Account NullString
// the domain ID of account owning the security group
DomainId ID
// The ID of the security group. Mutually exclusive with name parameter
Id ID
// The ID of the security group. Mutually exclusive with id parameter
Name NullString
// the project of the security group
ProjectId ID
}
func NewDeleteSecurityGroupParameter() (p *DeleteSecurityGroupParameter) {
p = new(DeleteSecurityGroupParameter)
return p
}
// Deletes security group
func (c *Client) DeleteSecurityGroup(p *DeleteSecurityGroupParameter) (*Result, error) {
obj, err := c.Request("deleteSecurityGroup", convertParamToMap(p))
if err != nil {
return nil, err
}
return obj.(*Result), err
}
// AuthorizeSecurityGroupEgress represents the paramter of AuthorizeSecurityGroupEgress
type AuthorizeSecurityGroupEgressParameter struct {
// an optional account for the security group. Must be used with domainId.
Account NullString
// the cidr list associated
CidrList []string
// an optional domainId for the security group. If the account parameter is
// used, domainId must also be used.
DomainId ID
// end port for this egress rule
EndPort NullNumber
// error code for this icmp message
IcmpCode NullNumber
// type of the icmp message being sent
IcmpType NullNumber
// an optional project of the security group
ProjectId ID
// TCP is default. UDP is the other supported protocol
Protocol NullString
// The ID of the security group. Mutually exclusive with securityGroupName
// parameter
SecurityGroupId ID
// The name of the security group. Mutually exclusive with securityGroupName
// parameter
SecurityGroupName NullString
// start port for this egress rule
StartPort NullNumber
// user to security group mapping
UserSecurityGroupList map[string]string
}
func NewAuthorizeSecurityGroupEgressParameter() (p *AuthorizeSecurityGroupEgressParameter) {
p = new(AuthorizeSecurityGroupEgressParameter)
return p
}
// Authorizes a particular egress rule for this security group
func (c *Client) AuthorizeSecurityGroupEgress(p *AuthorizeSecurityGroupEgressParameter) (*SecurityGroupEgress, error) {
obj, err := c.Request("authorizeSecurityGroupEgress", convertParamToMap(p))
if err != nil {
return nil, err
}
return obj.(*SecurityGroupEgress), err
}
// ListSecurityGroups represents the paramter of ListSecurityGroups
type ListSecurityGroupsParameter 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 security 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
Page NullNumber
PageSize NullNumber
// list objects by project
ProjectId ID
// lists security groups by name
SecurityGroupName NullString
// List resources by tags (key/value pairs)
Tags map[string]string
// lists security groups by virtual machine id
VirtualMachineId ID
}
func NewListSecurityGroupsParameter() (p *ListSecurityGroupsParameter) {
p = new(ListSecurityGroupsParameter)
return p
}
// Lists security groups
func (c *Client) ListSecurityGroups(p *ListSecurityGroupsParameter) ([]*SecurityGroup, error) {
obj, err := c.Request("listSecurityGroups", convertParamToMap(p))
if err != nil {
return nil, err
}
return obj.([]*SecurityGroup), err
}
// RevokeSecurityGroupIngress represents the paramter of RevokeSecurityGroupIngress
type RevokeSecurityGroupIngressParameter struct {
// The ID of the ingress rule
Id ID
}
func NewRevokeSecurityGroupIngressParameter(id string) (p *RevokeSecurityGroupIngressParameter) {
p = new(RevokeSecurityGroupIngressParameter)
p.Id.Set(id)
return p
}
// Deletes a particular ingress rule from this security group
func (c *Client) RevokeSecurityGroupIngress(p *RevokeSecurityGroupIngressParameter) (*Result, error) {
obj, err := c.Request("revokeSecurityGroupIngress", convertParamToMap(p))
if err != nil {
return nil, err
}
return obj.(*Result), err
}