govendor: add go-cloudstack depedency
This commit is contained in:
parent
0b0411bebd
commit
ba00afd4f1
|
@ -0,0 +1,201 @@
|
|||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "{}"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright {yyyy} {name of copyright owner}
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
96
vendor/github.com/xanzy/go-cloudstack/cloudstack/APIDiscoveryService.go
generated
vendored
Normal file
96
vendor/github.com/xanzy/go-cloudstack/cloudstack/APIDiscoveryService.go
generated
vendored
Normal file
|
@ -0,0 +1,96 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
type ListApisParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListApisParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListApisParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListApisParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *APIDiscoveryService) NewListApisParams() *ListApisParams {
|
||||
p := &ListApisParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// lists all available apis on the server, provided by the Api Discovery plugin
|
||||
func (s *APIDiscoveryService) ListApis(p *ListApisParams) (*ListApisResponse, error) {
|
||||
resp, err := s.cs.newRequest("listApis", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListApisResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListApisResponse struct {
|
||||
Count int `json:"count"`
|
||||
Apis []*Api `json:"api"`
|
||||
}
|
||||
|
||||
type Api struct {
|
||||
Description string `json:"description,omitempty"`
|
||||
Isasync bool `json:"isasync,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Params []struct {
|
||||
Description string `json:"description,omitempty"`
|
||||
Length int `json:"length,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Related string `json:"related,omitempty"`
|
||||
Required bool `json:"required,omitempty"`
|
||||
Since string `json:"since,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
} `json:"params,omitempty"`
|
||||
Related string `json:"related,omitempty"`
|
||||
Response []struct {
|
||||
Description string `json:"description,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Response []string `json:"response,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
} `json:"response,omitempty"`
|
||||
Since string `json:"since,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
}
|
1903
vendor/github.com/xanzy/go-cloudstack/cloudstack/AccountService.go
generated
vendored
Normal file
1903
vendor/github.com/xanzy/go-cloudstack/cloudstack/AccountService.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
811
vendor/github.com/xanzy/go-cloudstack/cloudstack/AddressService.go
generated
vendored
Normal file
811
vendor/github.com/xanzy/go-cloudstack/cloudstack/AddressService.go
generated
vendored
Normal file
|
@ -0,0 +1,811 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type AssociateIpAddressParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *AssociateIpAddressParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["fordisplay"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("fordisplay", vv)
|
||||
}
|
||||
if v, found := p.p["isportable"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("isportable", vv)
|
||||
}
|
||||
if v, found := p.p["networkid"]; found {
|
||||
u.Set("networkid", v.(string))
|
||||
}
|
||||
if v, found := p.p["projectid"]; found {
|
||||
u.Set("projectid", v.(string))
|
||||
}
|
||||
if v, found := p.p["regionid"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("regionid", vv)
|
||||
}
|
||||
if v, found := p.p["vpcid"]; found {
|
||||
u.Set("vpcid", v.(string))
|
||||
}
|
||||
if v, found := p.p["zoneid"]; found {
|
||||
u.Set("zoneid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *AssociateIpAddressParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AssociateIpAddressParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AssociateIpAddressParams) SetFordisplay(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["fordisplay"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AssociateIpAddressParams) SetIsportable(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["isportable"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AssociateIpAddressParams) SetNetworkid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["networkid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AssociateIpAddressParams) SetProjectid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["projectid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AssociateIpAddressParams) SetRegionid(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["regionid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AssociateIpAddressParams) SetVpcid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["vpcid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AssociateIpAddressParams) SetZoneid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["zoneid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new AssociateIpAddressParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *AddressService) NewAssociateIpAddressParams() *AssociateIpAddressParams {
|
||||
p := &AssociateIpAddressParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Acquires and associates a public IP to an account.
|
||||
func (s *AddressService) AssociateIpAddress(p *AssociateIpAddressParams) (*AssociateIpAddressResponse, error) {
|
||||
resp, err := s.cs.newRequest("associateIpAddress", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r AssociateIpAddressResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
b, err = getRawValue(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type AssociateIpAddressResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Account string `json:"account,omitempty"`
|
||||
Allocated string `json:"allocated,omitempty"`
|
||||
Associatednetworkid string `json:"associatednetworkid,omitempty"`
|
||||
Associatednetworkname string `json:"associatednetworkname,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Fordisplay bool `json:"fordisplay,omitempty"`
|
||||
Forvirtualnetwork bool `json:"forvirtualnetwork,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ipaddress string `json:"ipaddress,omitempty"`
|
||||
Isportable bool `json:"isportable,omitempty"`
|
||||
Issourcenat bool `json:"issourcenat,omitempty"`
|
||||
Isstaticnat bool `json:"isstaticnat,omitempty"`
|
||||
Issystem bool `json:"issystem,omitempty"`
|
||||
Networkid string `json:"networkid,omitempty"`
|
||||
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Purpose string `json:"purpose,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Tags []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Customer string `json:"customer,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Key string `json:"key,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Resourceid string `json:"resourceid,omitempty"`
|
||||
Resourcetype string `json:"resourcetype,omitempty"`
|
||||
Value string `json:"value,omitempty"`
|
||||
} `json:"tags,omitempty"`
|
||||
Virtualmachinedisplayname string `json:"virtualmachinedisplayname,omitempty"`
|
||||
Virtualmachineid string `json:"virtualmachineid,omitempty"`
|
||||
Virtualmachinename string `json:"virtualmachinename,omitempty"`
|
||||
Vlanid string `json:"vlanid,omitempty"`
|
||||
Vlanname string `json:"vlanname,omitempty"`
|
||||
Vmipaddress string `json:"vmipaddress,omitempty"`
|
||||
Vpcid string `json:"vpcid,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
Zonename string `json:"zonename,omitempty"`
|
||||
}
|
||||
|
||||
type DisassociateIpAddressParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *DisassociateIpAddressParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *DisassociateIpAddressParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new DisassociateIpAddressParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *AddressService) NewDisassociateIpAddressParams(id string) *DisassociateIpAddressParams {
|
||||
p := &DisassociateIpAddressParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Disassociates an IP address from the account.
|
||||
func (s *AddressService) DisassociateIpAddress(p *DisassociateIpAddressParams) (*DisassociateIpAddressResponse, error) {
|
||||
resp, err := s.cs.newRequest("disassociateIpAddress", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r DisassociateIpAddressResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type DisassociateIpAddressResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success bool `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type ListPublicIpAddressesParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListPublicIpAddressesParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["allocatedonly"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("allocatedonly", vv)
|
||||
}
|
||||
if v, found := p.p["associatednetworkid"]; found {
|
||||
u.Set("associatednetworkid", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["fordisplay"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("fordisplay", vv)
|
||||
}
|
||||
if v, found := p.p["forloadbalancing"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("forloadbalancing", vv)
|
||||
}
|
||||
if v, found := p.p["forvirtualnetwork"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("forvirtualnetwork", vv)
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["ipaddress"]; found {
|
||||
u.Set("ipaddress", v.(string))
|
||||
}
|
||||
if v, found := p.p["isrecursive"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("isrecursive", vv)
|
||||
}
|
||||
if v, found := p.p["issourcenat"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("issourcenat", vv)
|
||||
}
|
||||
if v, found := p.p["isstaticnat"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("isstaticnat", vv)
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["listall"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("listall", vv)
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["physicalnetworkid"]; found {
|
||||
u.Set("physicalnetworkid", v.(string))
|
||||
}
|
||||
if v, found := p.p["projectid"]; found {
|
||||
u.Set("projectid", v.(string))
|
||||
}
|
||||
if v, found := p.p["state"]; found {
|
||||
u.Set("state", v.(string))
|
||||
}
|
||||
if v, found := p.p["tags"]; found {
|
||||
i := 0
|
||||
for k, vv := range v.(map[string]string) {
|
||||
u.Set(fmt.Sprintf("tags[%d].key", i), k)
|
||||
u.Set(fmt.Sprintf("tags[%d].value", i), vv)
|
||||
i++
|
||||
}
|
||||
}
|
||||
if v, found := p.p["vlanid"]; found {
|
||||
u.Set("vlanid", v.(string))
|
||||
}
|
||||
if v, found := p.p["vpcid"]; found {
|
||||
u.Set("vpcid", v.(string))
|
||||
}
|
||||
if v, found := p.p["zoneid"]; found {
|
||||
u.Set("zoneid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListPublicIpAddressesParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPublicIpAddressesParams) SetAllocatedonly(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["allocatedonly"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPublicIpAddressesParams) SetAssociatednetworkid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["associatednetworkid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPublicIpAddressesParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPublicIpAddressesParams) SetFordisplay(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["fordisplay"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPublicIpAddressesParams) SetForloadbalancing(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["forloadbalancing"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPublicIpAddressesParams) SetForvirtualnetwork(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["forvirtualnetwork"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPublicIpAddressesParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPublicIpAddressesParams) SetIpaddress(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["ipaddress"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPublicIpAddressesParams) SetIsrecursive(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["isrecursive"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPublicIpAddressesParams) SetIssourcenat(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["issourcenat"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPublicIpAddressesParams) SetIsstaticnat(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["isstaticnat"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPublicIpAddressesParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPublicIpAddressesParams) SetListall(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["listall"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPublicIpAddressesParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPublicIpAddressesParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPublicIpAddressesParams) SetPhysicalnetworkid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["physicalnetworkid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPublicIpAddressesParams) SetProjectid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["projectid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPublicIpAddressesParams) SetState(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["state"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPublicIpAddressesParams) SetTags(v map[string]string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["tags"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPublicIpAddressesParams) SetVlanid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["vlanid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPublicIpAddressesParams) SetVpcid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["vpcid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPublicIpAddressesParams) SetZoneid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["zoneid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListPublicIpAddressesParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *AddressService) NewListPublicIpAddressesParams() *ListPublicIpAddressesParams {
|
||||
p := &ListPublicIpAddressesParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *AddressService) GetPublicIpAddressByID(id string, opts ...OptionFunc) (*PublicIpAddress, int, error) {
|
||||
p := &ListPublicIpAddressesParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["id"] = id
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return nil, -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListPublicIpAddresses(p)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), fmt.Sprintf(
|
||||
"Invalid parameter id value=%s due to incorrect long value format, "+
|
||||
"or entity does not exist", id)) {
|
||||
return nil, 0, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
return nil, -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return nil, l.Count, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.PublicIpAddresses[0], l.Count, nil
|
||||
}
|
||||
return nil, l.Count, fmt.Errorf("There is more then one result for PublicIpAddress UUID: %s!", id)
|
||||
}
|
||||
|
||||
// Lists all public ip addresses
|
||||
func (s *AddressService) ListPublicIpAddresses(p *ListPublicIpAddressesParams) (*ListPublicIpAddressesResponse, error) {
|
||||
resp, err := s.cs.newRequest("listPublicIpAddresses", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListPublicIpAddressesResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListPublicIpAddressesResponse struct {
|
||||
Count int `json:"count"`
|
||||
PublicIpAddresses []*PublicIpAddress `json:"publicipaddress"`
|
||||
}
|
||||
|
||||
type PublicIpAddress struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Allocated string `json:"allocated,omitempty"`
|
||||
Associatednetworkid string `json:"associatednetworkid,omitempty"`
|
||||
Associatednetworkname string `json:"associatednetworkname,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Fordisplay bool `json:"fordisplay,omitempty"`
|
||||
Forvirtualnetwork bool `json:"forvirtualnetwork,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ipaddress string `json:"ipaddress,omitempty"`
|
||||
Isportable bool `json:"isportable,omitempty"`
|
||||
Issourcenat bool `json:"issourcenat,omitempty"`
|
||||
Isstaticnat bool `json:"isstaticnat,omitempty"`
|
||||
Issystem bool `json:"issystem,omitempty"`
|
||||
Networkid string `json:"networkid,omitempty"`
|
||||
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Purpose string `json:"purpose,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Tags []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Customer string `json:"customer,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Key string `json:"key,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Resourceid string `json:"resourceid,omitempty"`
|
||||
Resourcetype string `json:"resourcetype,omitempty"`
|
||||
Value string `json:"value,omitempty"`
|
||||
} `json:"tags,omitempty"`
|
||||
Virtualmachinedisplayname string `json:"virtualmachinedisplayname,omitempty"`
|
||||
Virtualmachineid string `json:"virtualmachineid,omitempty"`
|
||||
Virtualmachinename string `json:"virtualmachinename,omitempty"`
|
||||
Vlanid string `json:"vlanid,omitempty"`
|
||||
Vlanname string `json:"vlanname,omitempty"`
|
||||
Vmipaddress string `json:"vmipaddress,omitempty"`
|
||||
Vpcid string `json:"vpcid,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
Zonename string `json:"zonename,omitempty"`
|
||||
}
|
||||
|
||||
type UpdateIpAddressParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *UpdateIpAddressParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["customid"]; found {
|
||||
u.Set("customid", v.(string))
|
||||
}
|
||||
if v, found := p.p["fordisplay"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("fordisplay", vv)
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *UpdateIpAddressParams) SetCustomid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["customid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateIpAddressParams) SetFordisplay(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["fordisplay"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateIpAddressParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new UpdateIpAddressParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *AddressService) NewUpdateIpAddressParams(id string) *UpdateIpAddressParams {
|
||||
p := &UpdateIpAddressParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Updates an IP address
|
||||
func (s *AddressService) UpdateIpAddress(p *UpdateIpAddressParams) (*UpdateIpAddressResponse, error) {
|
||||
resp, err := s.cs.newRequest("updateIpAddress", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r UpdateIpAddressResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
b, err = getRawValue(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type UpdateIpAddressResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Account string `json:"account,omitempty"`
|
||||
Allocated string `json:"allocated,omitempty"`
|
||||
Associatednetworkid string `json:"associatednetworkid,omitempty"`
|
||||
Associatednetworkname string `json:"associatednetworkname,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Fordisplay bool `json:"fordisplay,omitempty"`
|
||||
Forvirtualnetwork bool `json:"forvirtualnetwork,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ipaddress string `json:"ipaddress,omitempty"`
|
||||
Isportable bool `json:"isportable,omitempty"`
|
||||
Issourcenat bool `json:"issourcenat,omitempty"`
|
||||
Isstaticnat bool `json:"isstaticnat,omitempty"`
|
||||
Issystem bool `json:"issystem,omitempty"`
|
||||
Networkid string `json:"networkid,omitempty"`
|
||||
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Purpose string `json:"purpose,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Tags []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Customer string `json:"customer,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Key string `json:"key,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Resourceid string `json:"resourceid,omitempty"`
|
||||
Resourcetype string `json:"resourcetype,omitempty"`
|
||||
Value string `json:"value,omitempty"`
|
||||
} `json:"tags,omitempty"`
|
||||
Virtualmachinedisplayname string `json:"virtualmachinedisplayname,omitempty"`
|
||||
Virtualmachineid string `json:"virtualmachineid,omitempty"`
|
||||
Virtualmachinename string `json:"virtualmachinename,omitempty"`
|
||||
Vlanid string `json:"vlanid,omitempty"`
|
||||
Vlanname string `json:"vlanname,omitempty"`
|
||||
Vmipaddress string `json:"vmipaddress,omitempty"`
|
||||
Vpcid string `json:"vpcid,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
Zonename string `json:"zonename,omitempty"`
|
||||
}
|
895
vendor/github.com/xanzy/go-cloudstack/cloudstack/AffinityGroupService.go
generated
vendored
Normal file
895
vendor/github.com/xanzy/go-cloudstack/cloudstack/AffinityGroupService.go
generated
vendored
Normal file
|
@ -0,0 +1,895 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type CreateAffinityGroupParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *CreateAffinityGroupParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["description"]; found {
|
||||
u.Set("description", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["projectid"]; found {
|
||||
u.Set("projectid", v.(string))
|
||||
}
|
||||
if v, found := p.p["type"]; found {
|
||||
u.Set("type", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *CreateAffinityGroupParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateAffinityGroupParams) SetDescription(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["description"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateAffinityGroupParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateAffinityGroupParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateAffinityGroupParams) SetProjectid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["projectid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateAffinityGroupParams) SetType(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["type"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new CreateAffinityGroupParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *AffinityGroupService) NewCreateAffinityGroupParams(name string, affinityGroupType string) *CreateAffinityGroupParams {
|
||||
p := &CreateAffinityGroupParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["name"] = name
|
||||
p.p["type"] = affinityGroupType
|
||||
return p
|
||||
}
|
||||
|
||||
// Creates an affinity/anti-affinity group
|
||||
func (s *AffinityGroupService) CreateAffinityGroup(p *CreateAffinityGroupParams) (*CreateAffinityGroupResponse, error) {
|
||||
resp, err := s.cs.newRequest("createAffinityGroup", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r CreateAffinityGroupResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
b, err = getRawValue(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type CreateAffinityGroupResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Account string `json:"account,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
VirtualmachineIds []string `json:"virtualmachineIds,omitempty"`
|
||||
}
|
||||
|
||||
type DeleteAffinityGroupParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *DeleteAffinityGroupParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["projectid"]; found {
|
||||
u.Set("projectid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *DeleteAffinityGroupParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *DeleteAffinityGroupParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *DeleteAffinityGroupParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *DeleteAffinityGroupParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *DeleteAffinityGroupParams) SetProjectid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["projectid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new DeleteAffinityGroupParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *AffinityGroupService) NewDeleteAffinityGroupParams() *DeleteAffinityGroupParams {
|
||||
p := &DeleteAffinityGroupParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Deletes affinity group
|
||||
func (s *AffinityGroupService) DeleteAffinityGroup(p *DeleteAffinityGroupParams) (*DeleteAffinityGroupResponse, error) {
|
||||
resp, err := s.cs.newRequest("deleteAffinityGroup", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r DeleteAffinityGroupResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type DeleteAffinityGroupResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success bool `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type ListAffinityGroupsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListAffinityGroupsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["isrecursive"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("isrecursive", vv)
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["listall"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("listall", vv)
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["projectid"]; found {
|
||||
u.Set("projectid", v.(string))
|
||||
}
|
||||
if v, found := p.p["type"]; found {
|
||||
u.Set("type", v.(string))
|
||||
}
|
||||
if v, found := p.p["virtualmachineid"]; found {
|
||||
u.Set("virtualmachineid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListAffinityGroupsParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAffinityGroupsParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAffinityGroupsParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAffinityGroupsParams) SetIsrecursive(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["isrecursive"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAffinityGroupsParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAffinityGroupsParams) SetListall(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["listall"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAffinityGroupsParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAffinityGroupsParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAffinityGroupsParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAffinityGroupsParams) SetProjectid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["projectid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAffinityGroupsParams) SetType(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["type"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAffinityGroupsParams) SetVirtualmachineid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["virtualmachineid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListAffinityGroupsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *AffinityGroupService) NewListAffinityGroupsParams() *ListAffinityGroupsParams {
|
||||
p := &ListAffinityGroupsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *AffinityGroupService) GetAffinityGroupID(name string, opts ...OptionFunc) (string, int, error) {
|
||||
p := &ListAffinityGroupsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["name"] = name
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListAffinityGroups(p)
|
||||
if err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
|
||||
// This is needed because of a bug with the listAffinityGroup call. It reports the
|
||||
// number of VirtualMachines in the groups as being the number of groups found.
|
||||
l.Count = len(l.AffinityGroups)
|
||||
|
||||
if l.Count == 0 {
|
||||
return "", l.Count, fmt.Errorf("No match found for %s: %+v", name, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.AffinityGroups[0].Id, l.Count, nil
|
||||
}
|
||||
|
||||
if l.Count > 1 {
|
||||
for _, v := range l.AffinityGroups {
|
||||
if v.Name == name {
|
||||
return v.Id, l.Count, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
return "", l.Count, fmt.Errorf("Could not find an exact match for %s: %+v", name, l)
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *AffinityGroupService) GetAffinityGroupByName(name string, opts ...OptionFunc) (*AffinityGroup, int, error) {
|
||||
id, count, err := s.GetAffinityGroupID(name, opts...)
|
||||
if err != nil {
|
||||
return nil, count, err
|
||||
}
|
||||
|
||||
r, count, err := s.GetAffinityGroupByID(id, opts...)
|
||||
if err != nil {
|
||||
return nil, count, err
|
||||
}
|
||||
return r, count, nil
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *AffinityGroupService) GetAffinityGroupByID(id string, opts ...OptionFunc) (*AffinityGroup, int, error) {
|
||||
p := &ListAffinityGroupsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["id"] = id
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return nil, -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListAffinityGroups(p)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), fmt.Sprintf(
|
||||
"Invalid parameter id value=%s due to incorrect long value format, "+
|
||||
"or entity does not exist", id)) {
|
||||
return nil, 0, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
return nil, -1, err
|
||||
}
|
||||
|
||||
// This is needed because of a bug with the listAffinityGroup call. It reports the
|
||||
// number of VirtualMachines in the groups as being the number of groups found.
|
||||
l.Count = len(l.AffinityGroups)
|
||||
|
||||
if l.Count == 0 {
|
||||
return nil, l.Count, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.AffinityGroups[0], l.Count, nil
|
||||
}
|
||||
return nil, l.Count, fmt.Errorf("There is more then one result for AffinityGroup UUID: %s!", id)
|
||||
}
|
||||
|
||||
// Lists affinity groups
|
||||
func (s *AffinityGroupService) ListAffinityGroups(p *ListAffinityGroupsParams) (*ListAffinityGroupsResponse, error) {
|
||||
resp, err := s.cs.newRequest("listAffinityGroups", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListAffinityGroupsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListAffinityGroupsResponse struct {
|
||||
Count int `json:"count"`
|
||||
AffinityGroups []*AffinityGroup `json:"affinitygroup"`
|
||||
}
|
||||
|
||||
type AffinityGroup struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
VirtualmachineIds []string `json:"virtualmachineIds,omitempty"`
|
||||
}
|
||||
|
||||
type UpdateVMAffinityGroupParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *UpdateVMAffinityGroupParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["affinitygroupids"]; found {
|
||||
vv := strings.Join(v.([]string), ",")
|
||||
u.Set("affinitygroupids", vv)
|
||||
}
|
||||
if v, found := p.p["affinitygroupnames"]; found {
|
||||
vv := strings.Join(v.([]string), ",")
|
||||
u.Set("affinitygroupnames", vv)
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *UpdateVMAffinityGroupParams) SetAffinitygroupids(v []string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["affinitygroupids"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateVMAffinityGroupParams) SetAffinitygroupnames(v []string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["affinitygroupnames"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateVMAffinityGroupParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new UpdateVMAffinityGroupParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *AffinityGroupService) NewUpdateVMAffinityGroupParams(id string) *UpdateVMAffinityGroupParams {
|
||||
p := &UpdateVMAffinityGroupParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = 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 (s *AffinityGroupService) UpdateVMAffinityGroup(p *UpdateVMAffinityGroupParams) (*UpdateVMAffinityGroupResponse, error) {
|
||||
resp, err := s.cs.newRequest("updateVMAffinityGroup", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r UpdateVMAffinityGroupResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
b, err = getRawValue(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type UpdateVMAffinityGroupResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Account string `json:"account,omitempty"`
|
||||
Affinitygroup []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
VirtualmachineIds []string `json:"virtualmachineIds,omitempty"`
|
||||
} `json:"affinitygroup,omitempty"`
|
||||
Cpunumber int `json:"cpunumber,omitempty"`
|
||||
Cpuspeed int `json:"cpuspeed,omitempty"`
|
||||
Cpuused string `json:"cpuused,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
Details map[string]string `json:"details,omitempty"`
|
||||
Diskioread int64 `json:"diskioread,omitempty"`
|
||||
Diskiowrite int64 `json:"diskiowrite,omitempty"`
|
||||
Diskkbsread int64 `json:"diskkbsread,omitempty"`
|
||||
Diskkbswrite int64 `json:"diskkbswrite,omitempty"`
|
||||
Diskofferingid string `json:"diskofferingid,omitempty"`
|
||||
Diskofferingname string `json:"diskofferingname,omitempty"`
|
||||
Displayname string `json:"displayname,omitempty"`
|
||||
Displayvm bool `json:"displayvm,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Forvirtualnetwork bool `json:"forvirtualnetwork,omitempty"`
|
||||
Group string `json:"group,omitempty"`
|
||||
Groupid string `json:"groupid,omitempty"`
|
||||
Guestosid string `json:"guestosid,omitempty"`
|
||||
Haenable bool `json:"haenable,omitempty"`
|
||||
Hostid string `json:"hostid,omitempty"`
|
||||
Hostname string `json:"hostname,omitempty"`
|
||||
Hypervisor string `json:"hypervisor,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Instancename string `json:"instancename,omitempty"`
|
||||
Isdynamicallyscalable bool `json:"isdynamicallyscalable,omitempty"`
|
||||
Isodisplaytext string `json:"isodisplaytext,omitempty"`
|
||||
Isoid string `json:"isoid,omitempty"`
|
||||
Isoname string `json:"isoname,omitempty"`
|
||||
Keypair string `json:"keypair,omitempty"`
|
||||
Memory int `json:"memory,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Networkkbsread int64 `json:"networkkbsread,omitempty"`
|
||||
Networkkbswrite int64 `json:"networkkbswrite,omitempty"`
|
||||
Nic []struct {
|
||||
Broadcasturi string `json:"broadcasturi,omitempty"`
|
||||
Deviceid string `json:"deviceid,omitempty"`
|
||||
Gateway string `json:"gateway,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ip6address string `json:"ip6address,omitempty"`
|
||||
Ip6cidr string `json:"ip6cidr,omitempty"`
|
||||
Ip6gateway string `json:"ip6gateway,omitempty"`
|
||||
Ipaddress string `json:"ipaddress,omitempty"`
|
||||
Isdefault bool `json:"isdefault,omitempty"`
|
||||
Isolationuri string `json:"isolationuri,omitempty"`
|
||||
Macaddress string `json:"macaddress,omitempty"`
|
||||
Netmask string `json:"netmask,omitempty"`
|
||||
Networkid string `json:"networkid,omitempty"`
|
||||
Networkname string `json:"networkname,omitempty"`
|
||||
Secondaryip []struct {
|
||||
Id string `json:"id,omitempty"`
|
||||
Ipaddress string `json:"ipaddress,omitempty"`
|
||||
} `json:"secondaryip,omitempty"`
|
||||
Traffictype string `json:"traffictype,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
Virtualmachineid string `json:"virtualmachineid,omitempty"`
|
||||
} `json:"nic,omitempty"`
|
||||
Ostypeid int64 `json:"ostypeid,omitempty"`
|
||||
Password string `json:"password,omitempty"`
|
||||
Passwordenabled bool `json:"passwordenabled,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Publicip string `json:"publicip,omitempty"`
|
||||
Publicipid string `json:"publicipid,omitempty"`
|
||||
Rootdeviceid int64 `json:"rootdeviceid,omitempty"`
|
||||
Rootdevicetype string `json:"rootdevicetype,omitempty"`
|
||||
Securitygroup []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Egressrule []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Cidr string `json:"cidr,omitempty"`
|
||||
Endport int `json:"endport,omitempty"`
|
||||
Icmpcode int `json:"icmpcode,omitempty"`
|
||||
Icmptype int `json:"icmptype,omitempty"`
|
||||
Protocol string `json:"protocol,omitempty"`
|
||||
Ruleid string `json:"ruleid,omitempty"`
|
||||
Securitygroupname string `json:"securitygroupname,omitempty"`
|
||||
Startport int `json:"startport,omitempty"`
|
||||
Tags []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Customer string `json:"customer,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Key string `json:"key,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Resourceid string `json:"resourceid,omitempty"`
|
||||
Resourcetype string `json:"resourcetype,omitempty"`
|
||||
Value string `json:"value,omitempty"`
|
||||
} `json:"tags,omitempty"`
|
||||
} `json:"egressrule,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ingressrule []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Cidr string `json:"cidr,omitempty"`
|
||||
Endport int `json:"endport,omitempty"`
|
||||
Icmpcode int `json:"icmpcode,omitempty"`
|
||||
Icmptype int `json:"icmptype,omitempty"`
|
||||
Protocol string `json:"protocol,omitempty"`
|
||||
Ruleid string `json:"ruleid,omitempty"`
|
||||
Securitygroupname string `json:"securitygroupname,omitempty"`
|
||||
Startport int `json:"startport,omitempty"`
|
||||
Tags []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Customer string `json:"customer,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Key string `json:"key,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Resourceid string `json:"resourceid,omitempty"`
|
||||
Resourcetype string `json:"resourcetype,omitempty"`
|
||||
Value string `json:"value,omitempty"`
|
||||
} `json:"tags,omitempty"`
|
||||
} `json:"ingressrule,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Tags []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Customer string `json:"customer,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Key string `json:"key,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Resourceid string `json:"resourceid,omitempty"`
|
||||
Resourcetype string `json:"resourcetype,omitempty"`
|
||||
Value string `json:"value,omitempty"`
|
||||
} `json:"tags,omitempty"`
|
||||
Virtualmachinecount int `json:"virtualmachinecount,omitempty"`
|
||||
Virtualmachineids []string `json:"virtualmachineids,omitempty"`
|
||||
} `json:"securitygroup,omitempty"`
|
||||
Serviceofferingid string `json:"serviceofferingid,omitempty"`
|
||||
Serviceofferingname string `json:"serviceofferingname,omitempty"`
|
||||
Servicestate string `json:"servicestate,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Tags []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Customer string `json:"customer,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Key string `json:"key,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Resourceid string `json:"resourceid,omitempty"`
|
||||
Resourcetype string `json:"resourcetype,omitempty"`
|
||||
Value string `json:"value,omitempty"`
|
||||
} `json:"tags,omitempty"`
|
||||
Templatedisplaytext string `json:"templatedisplaytext,omitempty"`
|
||||
Templateid string `json:"templateid,omitempty"`
|
||||
Templatename string `json:"templatename,omitempty"`
|
||||
Userid string `json:"userid,omitempty"`
|
||||
Username string `json:"username,omitempty"`
|
||||
Vgpu string `json:"vgpu,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
Zonename string `json:"zonename,omitempty"`
|
||||
}
|
||||
|
||||
type ListAffinityGroupTypesParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListAffinityGroupTypesParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListAffinityGroupTypesParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAffinityGroupTypesParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAffinityGroupTypesParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListAffinityGroupTypesParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *AffinityGroupService) NewListAffinityGroupTypesParams() *ListAffinityGroupTypesParams {
|
||||
p := &ListAffinityGroupTypesParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Lists affinity group types available
|
||||
func (s *AffinityGroupService) ListAffinityGroupTypes(p *ListAffinityGroupTypesParams) (*ListAffinityGroupTypesResponse, error) {
|
||||
resp, err := s.cs.newRequest("listAffinityGroupTypes", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListAffinityGroupTypesResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListAffinityGroupTypesResponse struct {
|
||||
Count int `json:"count"`
|
||||
AffinityGroupTypes []*AffinityGroupType `json:"affinitygrouptype"`
|
||||
}
|
||||
|
||||
type AffinityGroupType struct {
|
||||
Type string `json:"type,omitempty"`
|
||||
}
|
|
@ -0,0 +1,505 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type ListAlertsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListAlertsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["type"]; found {
|
||||
u.Set("type", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListAlertsParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAlertsParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAlertsParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAlertsParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAlertsParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAlertsParams) SetType(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["type"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListAlertsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *AlertService) NewListAlertsParams() *ListAlertsParams {
|
||||
p := &ListAlertsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *AlertService) GetAlertID(name string, opts ...OptionFunc) (string, int, error) {
|
||||
p := &ListAlertsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["name"] = name
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListAlerts(p)
|
||||
if err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return "", l.Count, fmt.Errorf("No match found for %s: %+v", name, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.Alerts[0].Id, l.Count, nil
|
||||
}
|
||||
|
||||
if l.Count > 1 {
|
||||
for _, v := range l.Alerts {
|
||||
if v.Name == name {
|
||||
return v.Id, l.Count, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
return "", l.Count, fmt.Errorf("Could not find an exact match for %s: %+v", name, l)
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *AlertService) GetAlertByName(name string, opts ...OptionFunc) (*Alert, int, error) {
|
||||
id, count, err := s.GetAlertID(name, opts...)
|
||||
if err != nil {
|
||||
return nil, count, err
|
||||
}
|
||||
|
||||
r, count, err := s.GetAlertByID(id, opts...)
|
||||
if err != nil {
|
||||
return nil, count, err
|
||||
}
|
||||
return r, count, nil
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *AlertService) GetAlertByID(id string, opts ...OptionFunc) (*Alert, int, error) {
|
||||
p := &ListAlertsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["id"] = id
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return nil, -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListAlerts(p)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), fmt.Sprintf(
|
||||
"Invalid parameter id value=%s due to incorrect long value format, "+
|
||||
"or entity does not exist", id)) {
|
||||
return nil, 0, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
return nil, -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return nil, l.Count, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.Alerts[0], l.Count, nil
|
||||
}
|
||||
return nil, l.Count, fmt.Errorf("There is more then one result for Alert UUID: %s!", id)
|
||||
}
|
||||
|
||||
// Lists all alerts.
|
||||
func (s *AlertService) ListAlerts(p *ListAlertsParams) (*ListAlertsResponse, error) {
|
||||
resp, err := s.cs.newRequest("listAlerts", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListAlertsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListAlertsResponse struct {
|
||||
Count int `json:"count"`
|
||||
Alerts []*Alert `json:"alert"`
|
||||
}
|
||||
|
||||
type Alert struct {
|
||||
Description string `json:"description,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Sent string `json:"sent,omitempty"`
|
||||
Type int `json:"type,omitempty"`
|
||||
}
|
||||
|
||||
type ArchiveAlertsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ArchiveAlertsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["enddate"]; found {
|
||||
u.Set("enddate", v.(string))
|
||||
}
|
||||
if v, found := p.p["ids"]; found {
|
||||
vv := strings.Join(v.([]string), ",")
|
||||
u.Set("ids", vv)
|
||||
}
|
||||
if v, found := p.p["startdate"]; found {
|
||||
u.Set("startdate", v.(string))
|
||||
}
|
||||
if v, found := p.p["type"]; found {
|
||||
u.Set("type", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ArchiveAlertsParams) SetEnddate(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["enddate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ArchiveAlertsParams) SetIds(v []string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["ids"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ArchiveAlertsParams) SetStartdate(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["startdate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ArchiveAlertsParams) SetType(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["type"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ArchiveAlertsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *AlertService) NewArchiveAlertsParams() *ArchiveAlertsParams {
|
||||
p := &ArchiveAlertsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Archive one or more alerts.
|
||||
func (s *AlertService) ArchiveAlerts(p *ArchiveAlertsParams) (*ArchiveAlertsResponse, error) {
|
||||
resp, err := s.cs.newRequest("archiveAlerts", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ArchiveAlertsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ArchiveAlertsResponse struct {
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success string `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type DeleteAlertsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *DeleteAlertsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["enddate"]; found {
|
||||
u.Set("enddate", v.(string))
|
||||
}
|
||||
if v, found := p.p["ids"]; found {
|
||||
vv := strings.Join(v.([]string), ",")
|
||||
u.Set("ids", vv)
|
||||
}
|
||||
if v, found := p.p["startdate"]; found {
|
||||
u.Set("startdate", v.(string))
|
||||
}
|
||||
if v, found := p.p["type"]; found {
|
||||
u.Set("type", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *DeleteAlertsParams) SetEnddate(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["enddate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *DeleteAlertsParams) SetIds(v []string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["ids"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *DeleteAlertsParams) SetStartdate(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["startdate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *DeleteAlertsParams) SetType(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["type"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new DeleteAlertsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *AlertService) NewDeleteAlertsParams() *DeleteAlertsParams {
|
||||
p := &DeleteAlertsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Delete one or more alerts.
|
||||
func (s *AlertService) DeleteAlerts(p *DeleteAlertsParams) (*DeleteAlertsResponse, error) {
|
||||
resp, err := s.cs.newRequest("deleteAlerts", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r DeleteAlertsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type DeleteAlertsResponse struct {
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success string `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type GenerateAlertParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *GenerateAlertParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["description"]; found {
|
||||
u.Set("description", v.(string))
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["podid"]; found {
|
||||
u.Set("podid", v.(string))
|
||||
}
|
||||
if v, found := p.p["type"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("type", vv)
|
||||
}
|
||||
if v, found := p.p["zoneid"]; found {
|
||||
u.Set("zoneid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *GenerateAlertParams) SetDescription(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["description"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *GenerateAlertParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *GenerateAlertParams) SetPodid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["podid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *GenerateAlertParams) SetType(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["type"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *GenerateAlertParams) SetZoneid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["zoneid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new GenerateAlertParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *AlertService) NewGenerateAlertParams(description string, name string, alertType int) *GenerateAlertParams {
|
||||
p := &GenerateAlertParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["description"] = description
|
||||
p.p["name"] = name
|
||||
p.p["type"] = alertType
|
||||
return p
|
||||
}
|
||||
|
||||
// Generates an alert
|
||||
func (s *AlertService) GenerateAlert(p *GenerateAlertParams) (*GenerateAlertResponse, error) {
|
||||
resp, err := s.cs.newRequest("generateAlert", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r GenerateAlertResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type GenerateAlertResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success bool `json:"success,omitempty"`
|
||||
}
|
239
vendor/github.com/xanzy/go-cloudstack/cloudstack/AsyncjobService.go
generated
vendored
Normal file
239
vendor/github.com/xanzy/go-cloudstack/cloudstack/AsyncjobService.go
generated
vendored
Normal file
|
@ -0,0 +1,239 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
type QueryAsyncJobResultParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *QueryAsyncJobResultParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["jobid"]; found {
|
||||
u.Set("jobid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *QueryAsyncJobResultParams) SetJobid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["jobid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new QueryAsyncJobResultParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *AsyncjobService) NewQueryAsyncJobResultParams(jobid string) *QueryAsyncJobResultParams {
|
||||
p := &QueryAsyncJobResultParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["jobid"] = jobid
|
||||
return p
|
||||
}
|
||||
|
||||
// Retrieves the current status of asynchronous job.
|
||||
func (s *AsyncjobService) QueryAsyncJobResult(p *QueryAsyncJobResultParams) (*QueryAsyncJobResultResponse, error) {
|
||||
var resp json.RawMessage
|
||||
var err error
|
||||
|
||||
// We should be able to retry on failure as this call is idempotent
|
||||
for i := 0; i < 3; i++ {
|
||||
resp, err = s.cs.newRequest("queryAsyncJobResult", p.toURLValues())
|
||||
if err == nil {
|
||||
break
|
||||
}
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r QueryAsyncJobResultResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type QueryAsyncJobResultResponse struct {
|
||||
Accountid string `json:"accountid,omitempty"`
|
||||
Cmd string `json:"cmd,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
Jobinstanceid string `json:"jobinstanceid,omitempty"`
|
||||
Jobinstancetype string `json:"jobinstancetype,omitempty"`
|
||||
Jobprocstatus int `json:"jobprocstatus,omitempty"`
|
||||
Jobresult json.RawMessage `json:"jobresult,omitempty"`
|
||||
Jobresultcode int `json:"jobresultcode,omitempty"`
|
||||
Jobresulttype string `json:"jobresulttype,omitempty"`
|
||||
Jobstatus int `json:"jobstatus,omitempty"`
|
||||
Userid string `json:"userid,omitempty"`
|
||||
}
|
||||
|
||||
type ListAsyncJobsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListAsyncJobsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["isrecursive"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("isrecursive", vv)
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["listall"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("listall", vv)
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["startdate"]; found {
|
||||
u.Set("startdate", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListAsyncJobsParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAsyncJobsParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAsyncJobsParams) SetIsrecursive(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["isrecursive"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAsyncJobsParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAsyncJobsParams) SetListall(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["listall"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAsyncJobsParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAsyncJobsParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListAsyncJobsParams) SetStartdate(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["startdate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListAsyncJobsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *AsyncjobService) NewListAsyncJobsParams() *ListAsyncJobsParams {
|
||||
p := &ListAsyncJobsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Lists all pending asynchronous jobs for the account.
|
||||
func (s *AsyncjobService) ListAsyncJobs(p *ListAsyncJobsParams) (*ListAsyncJobsResponse, error) {
|
||||
resp, err := s.cs.newRequest("listAsyncJobs", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListAsyncJobsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListAsyncJobsResponse struct {
|
||||
Count int `json:"count"`
|
||||
AsyncJobs []*AsyncJob `json:"asyncjobs"`
|
||||
}
|
||||
|
||||
type AsyncJob struct {
|
||||
Accountid string `json:"accountid,omitempty"`
|
||||
Cmd string `json:"cmd,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
Jobinstanceid string `json:"jobinstanceid,omitempty"`
|
||||
Jobinstancetype string `json:"jobinstancetype,omitempty"`
|
||||
Jobprocstatus int `json:"jobprocstatus,omitempty"`
|
||||
Jobresult json.RawMessage `json:"jobresult,omitempty"`
|
||||
Jobresultcode int `json:"jobresultcode,omitempty"`
|
||||
Jobresulttype string `json:"jobresulttype,omitempty"`
|
||||
Jobstatus int `json:"jobstatus,omitempty"`
|
||||
Userid string `json:"userid,omitempty"`
|
||||
}
|
156
vendor/github.com/xanzy/go-cloudstack/cloudstack/AuthenticationService.go
generated
vendored
Normal file
156
vendor/github.com/xanzy/go-cloudstack/cloudstack/AuthenticationService.go
generated
vendored
Normal file
|
@ -0,0 +1,156 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/url"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type LoginParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *LoginParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["domain"]; found {
|
||||
u.Set("domain", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainId"]; found {
|
||||
vv := strconv.FormatInt(v.(int64), 10)
|
||||
u.Set("domainId", vv)
|
||||
}
|
||||
if v, found := p.p["password"]; found {
|
||||
u.Set("password", v.(string))
|
||||
}
|
||||
if v, found := p.p["username"]; found {
|
||||
u.Set("username", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *LoginParams) SetDomain(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domain"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *LoginParams) SetDomainId(v int64) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainId"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *LoginParams) SetPassword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["password"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *LoginParams) SetUsername(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["username"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new LoginParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *AuthenticationService) NewLoginParams(password string, username string) *LoginParams {
|
||||
p := &LoginParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["password"] = password
|
||||
p.p["username"] = username
|
||||
return p
|
||||
}
|
||||
|
||||
// Logs a user into the CloudStack. A successful login attempt will generate a JSESSIONID cookie value that can be passed in subsequent Query command calls until the "logout" command has been issued or the session has expired.
|
||||
func (s *AuthenticationService) Login(p *LoginParams) (*LoginResponse, error) {
|
||||
resp, err := s.cs.newRequest("login", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r LoginResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type LoginResponse struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Firstname string `json:"firstname,omitempty"`
|
||||
Lastname string `json:"lastname,omitempty"`
|
||||
Registered string `json:"registered,omitempty"`
|
||||
Sessionkey string `json:"sessionkey,omitempty"`
|
||||
Timeout int `json:"timeout,omitempty"`
|
||||
Timezone string `json:"timezone,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
Userid string `json:"userid,omitempty"`
|
||||
Username string `json:"username,omitempty"`
|
||||
}
|
||||
|
||||
type LogoutParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *LogoutParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
// You should always use this function to get a new LogoutParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *AuthenticationService) NewLogoutParams() *LogoutParams {
|
||||
p := &LogoutParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Logs out the user
|
||||
func (s *AuthenticationService) Logout(p *LogoutParams) (*LogoutResponse, error) {
|
||||
resp, err := s.cs.newRequest("logout", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r LogoutResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type LogoutResponse struct {
|
||||
Description string `json:"description,omitempty"`
|
||||
}
|
2759
vendor/github.com/xanzy/go-cloudstack/cloudstack/AutoScaleService.go
generated
vendored
Normal file
2759
vendor/github.com/xanzy/go-cloudstack/cloudstack/AutoScaleService.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
918
vendor/github.com/xanzy/go-cloudstack/cloudstack/BaremetalService.go
generated
vendored
Normal file
918
vendor/github.com/xanzy/go-cloudstack/cloudstack/BaremetalService.go
generated
vendored
Normal file
|
@ -0,0 +1,918 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/url"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type AddBaremetalPxeKickStartServerParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *AddBaremetalPxeKickStartServerParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["password"]; found {
|
||||
u.Set("password", v.(string))
|
||||
}
|
||||
if v, found := p.p["physicalnetworkid"]; found {
|
||||
u.Set("physicalnetworkid", v.(string))
|
||||
}
|
||||
if v, found := p.p["podid"]; found {
|
||||
u.Set("podid", v.(string))
|
||||
}
|
||||
if v, found := p.p["pxeservertype"]; found {
|
||||
u.Set("pxeservertype", v.(string))
|
||||
}
|
||||
if v, found := p.p["tftpdir"]; found {
|
||||
u.Set("tftpdir", v.(string))
|
||||
}
|
||||
if v, found := p.p["url"]; found {
|
||||
u.Set("url", v.(string))
|
||||
}
|
||||
if v, found := p.p["username"]; found {
|
||||
u.Set("username", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *AddBaremetalPxeKickStartServerParams) SetPassword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["password"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddBaremetalPxeKickStartServerParams) SetPhysicalnetworkid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["physicalnetworkid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddBaremetalPxeKickStartServerParams) SetPodid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["podid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddBaremetalPxeKickStartServerParams) SetPxeservertype(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pxeservertype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddBaremetalPxeKickStartServerParams) SetTftpdir(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["tftpdir"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddBaremetalPxeKickStartServerParams) SetUrl(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["url"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddBaremetalPxeKickStartServerParams) SetUsername(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["username"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new AddBaremetalPxeKickStartServerParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *BaremetalService) NewAddBaremetalPxeKickStartServerParams(password string, physicalnetworkid string, pxeservertype string, tftpdir string, url string, username string) *AddBaremetalPxeKickStartServerParams {
|
||||
p := &AddBaremetalPxeKickStartServerParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["password"] = password
|
||||
p.p["physicalnetworkid"] = physicalnetworkid
|
||||
p.p["pxeservertype"] = pxeservertype
|
||||
p.p["tftpdir"] = tftpdir
|
||||
p.p["url"] = url
|
||||
p.p["username"] = username
|
||||
return p
|
||||
}
|
||||
|
||||
// add a baremetal pxe server
|
||||
func (s *BaremetalService) AddBaremetalPxeKickStartServer(p *AddBaremetalPxeKickStartServerParams) (*AddBaremetalPxeKickStartServerResponse, error) {
|
||||
resp, err := s.cs.newRequest("addBaremetalPxeKickStartServer", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r AddBaremetalPxeKickStartServerResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
b, err = getRawValue(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type AddBaremetalPxeKickStartServerResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Tftpdir string `json:"tftpdir,omitempty"`
|
||||
}
|
||||
|
||||
type AddBaremetalPxePingServerParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *AddBaremetalPxePingServerParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["password"]; found {
|
||||
u.Set("password", v.(string))
|
||||
}
|
||||
if v, found := p.p["physicalnetworkid"]; found {
|
||||
u.Set("physicalnetworkid", v.(string))
|
||||
}
|
||||
if v, found := p.p["pingcifspassword"]; found {
|
||||
u.Set("pingcifspassword", v.(string))
|
||||
}
|
||||
if v, found := p.p["pingcifsusername"]; found {
|
||||
u.Set("pingcifsusername", v.(string))
|
||||
}
|
||||
if v, found := p.p["pingdir"]; found {
|
||||
u.Set("pingdir", v.(string))
|
||||
}
|
||||
if v, found := p.p["pingstorageserverip"]; found {
|
||||
u.Set("pingstorageserverip", v.(string))
|
||||
}
|
||||
if v, found := p.p["podid"]; found {
|
||||
u.Set("podid", v.(string))
|
||||
}
|
||||
if v, found := p.p["pxeservertype"]; found {
|
||||
u.Set("pxeservertype", v.(string))
|
||||
}
|
||||
if v, found := p.p["tftpdir"]; found {
|
||||
u.Set("tftpdir", v.(string))
|
||||
}
|
||||
if v, found := p.p["url"]; found {
|
||||
u.Set("url", v.(string))
|
||||
}
|
||||
if v, found := p.p["username"]; found {
|
||||
u.Set("username", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *AddBaremetalPxePingServerParams) SetPassword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["password"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddBaremetalPxePingServerParams) SetPhysicalnetworkid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["physicalnetworkid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddBaremetalPxePingServerParams) SetPingcifspassword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pingcifspassword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddBaremetalPxePingServerParams) SetPingcifsusername(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pingcifsusername"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddBaremetalPxePingServerParams) SetPingdir(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pingdir"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddBaremetalPxePingServerParams) SetPingstorageserverip(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pingstorageserverip"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddBaremetalPxePingServerParams) SetPodid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["podid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddBaremetalPxePingServerParams) SetPxeservertype(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pxeservertype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddBaremetalPxePingServerParams) SetTftpdir(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["tftpdir"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddBaremetalPxePingServerParams) SetUrl(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["url"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddBaremetalPxePingServerParams) SetUsername(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["username"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new AddBaremetalPxePingServerParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *BaremetalService) NewAddBaremetalPxePingServerParams(password string, physicalnetworkid string, pingdir string, pingstorageserverip string, pxeservertype string, tftpdir string, url string, username string) *AddBaremetalPxePingServerParams {
|
||||
p := &AddBaremetalPxePingServerParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["password"] = password
|
||||
p.p["physicalnetworkid"] = physicalnetworkid
|
||||
p.p["pingdir"] = pingdir
|
||||
p.p["pingstorageserverip"] = pingstorageserverip
|
||||
p.p["pxeservertype"] = pxeservertype
|
||||
p.p["tftpdir"] = tftpdir
|
||||
p.p["url"] = url
|
||||
p.p["username"] = username
|
||||
return p
|
||||
}
|
||||
|
||||
// add a baremetal ping pxe server
|
||||
func (s *BaremetalService) AddBaremetalPxePingServer(p *AddBaremetalPxePingServerParams) (*AddBaremetalPxePingServerResponse, error) {
|
||||
resp, err := s.cs.newRequest("addBaremetalPxePingServer", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r AddBaremetalPxePingServerResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
b, err = getRawValue(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type AddBaremetalPxePingServerResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Pingdir string `json:"pingdir,omitempty"`
|
||||
Pingstorageserverip string `json:"pingstorageserverip,omitempty"`
|
||||
Tftpdir string `json:"tftpdir,omitempty"`
|
||||
}
|
||||
|
||||
type AddBaremetalDhcpParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *AddBaremetalDhcpParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["dhcpservertype"]; found {
|
||||
u.Set("dhcpservertype", v.(string))
|
||||
}
|
||||
if v, found := p.p["password"]; found {
|
||||
u.Set("password", v.(string))
|
||||
}
|
||||
if v, found := p.p["physicalnetworkid"]; found {
|
||||
u.Set("physicalnetworkid", v.(string))
|
||||
}
|
||||
if v, found := p.p["url"]; found {
|
||||
u.Set("url", v.(string))
|
||||
}
|
||||
if v, found := p.p["username"]; found {
|
||||
u.Set("username", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *AddBaremetalDhcpParams) SetDhcpservertype(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["dhcpservertype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddBaremetalDhcpParams) SetPassword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["password"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddBaremetalDhcpParams) SetPhysicalnetworkid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["physicalnetworkid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddBaremetalDhcpParams) SetUrl(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["url"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddBaremetalDhcpParams) SetUsername(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["username"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new AddBaremetalDhcpParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *BaremetalService) NewAddBaremetalDhcpParams(dhcpservertype string, password string, physicalnetworkid string, url string, username string) *AddBaremetalDhcpParams {
|
||||
p := &AddBaremetalDhcpParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["dhcpservertype"] = dhcpservertype
|
||||
p.p["password"] = password
|
||||
p.p["physicalnetworkid"] = physicalnetworkid
|
||||
p.p["url"] = url
|
||||
p.p["username"] = username
|
||||
return p
|
||||
}
|
||||
|
||||
// adds a baremetal dhcp server
|
||||
func (s *BaremetalService) AddBaremetalDhcp(p *AddBaremetalDhcpParams) (*AddBaremetalDhcpResponse, error) {
|
||||
resp, err := s.cs.newRequest("addBaremetalDhcp", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r AddBaremetalDhcpResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
b, err = getRawValue(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type AddBaremetalDhcpResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Dhcpservertype string `json:"dhcpservertype,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
|
||||
Provider string `json:"provider,omitempty"`
|
||||
Url string `json:"url,omitempty"`
|
||||
}
|
||||
|
||||
type ListBaremetalDhcpParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListBaremetalDhcpParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["dhcpservertype"]; found {
|
||||
u.Set("dhcpservertype", v.(string))
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
vv := strconv.FormatInt(v.(int64), 10)
|
||||
u.Set("id", vv)
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["physicalnetworkid"]; found {
|
||||
u.Set("physicalnetworkid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListBaremetalDhcpParams) SetDhcpservertype(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["dhcpservertype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListBaremetalDhcpParams) SetId(v int64) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListBaremetalDhcpParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListBaremetalDhcpParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListBaremetalDhcpParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListBaremetalDhcpParams) SetPhysicalnetworkid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["physicalnetworkid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListBaremetalDhcpParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *BaremetalService) NewListBaremetalDhcpParams(physicalnetworkid string) *ListBaremetalDhcpParams {
|
||||
p := &ListBaremetalDhcpParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["physicalnetworkid"] = physicalnetworkid
|
||||
return p
|
||||
}
|
||||
|
||||
// list baremetal dhcp servers
|
||||
func (s *BaremetalService) ListBaremetalDhcp(p *ListBaremetalDhcpParams) (*ListBaremetalDhcpResponse, error) {
|
||||
resp, err := s.cs.newRequest("listBaremetalDhcp", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListBaremetalDhcpResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListBaremetalDhcpResponse struct {
|
||||
Count int `json:"count"`
|
||||
BaremetalDhcp []*BaremetalDhcp `json:"baremetaldhcp"`
|
||||
}
|
||||
|
||||
type BaremetalDhcp struct {
|
||||
Dhcpservertype string `json:"dhcpservertype,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
|
||||
Provider string `json:"provider,omitempty"`
|
||||
Url string `json:"url,omitempty"`
|
||||
}
|
||||
|
||||
type ListBaremetalPxeServersParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListBaremetalPxeServersParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
vv := strconv.FormatInt(v.(int64), 10)
|
||||
u.Set("id", vv)
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["physicalnetworkid"]; found {
|
||||
u.Set("physicalnetworkid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListBaremetalPxeServersParams) SetId(v int64) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListBaremetalPxeServersParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListBaremetalPxeServersParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListBaremetalPxeServersParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListBaremetalPxeServersParams) SetPhysicalnetworkid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["physicalnetworkid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListBaremetalPxeServersParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *BaremetalService) NewListBaremetalPxeServersParams(physicalnetworkid string) *ListBaremetalPxeServersParams {
|
||||
p := &ListBaremetalPxeServersParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["physicalnetworkid"] = physicalnetworkid
|
||||
return p
|
||||
}
|
||||
|
||||
// list baremetal pxe server
|
||||
func (s *BaremetalService) ListBaremetalPxeServers(p *ListBaremetalPxeServersParams) (*ListBaremetalPxeServersResponse, error) {
|
||||
resp, err := s.cs.newRequest("listBaremetalPxeServers", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListBaremetalPxeServersResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListBaremetalPxeServersResponse struct {
|
||||
Count int `json:"count"`
|
||||
BaremetalPxeServers []*BaremetalPxeServer `json:"baremetalpxeserver"`
|
||||
}
|
||||
|
||||
type BaremetalPxeServer struct {
|
||||
Id string `json:"id,omitempty"`
|
||||
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
|
||||
Provider string `json:"provider,omitempty"`
|
||||
Url string `json:"url,omitempty"`
|
||||
}
|
||||
|
||||
type AddBaremetalRctParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *AddBaremetalRctParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["baremetalrcturl"]; found {
|
||||
u.Set("baremetalrcturl", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *AddBaremetalRctParams) SetBaremetalrcturl(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["baremetalrcturl"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new AddBaremetalRctParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *BaremetalService) NewAddBaremetalRctParams(baremetalrcturl string) *AddBaremetalRctParams {
|
||||
p := &AddBaremetalRctParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["baremetalrcturl"] = baremetalrcturl
|
||||
return p
|
||||
}
|
||||
|
||||
// adds baremetal rack configuration text
|
||||
func (s *BaremetalService) AddBaremetalRct(p *AddBaremetalRctParams) (*AddBaremetalRctResponse, error) {
|
||||
resp, err := s.cs.newRequest("addBaremetalRct", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r AddBaremetalRctResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
b, err = getRawValue(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type AddBaremetalRctResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Url string `json:"url,omitempty"`
|
||||
}
|
||||
|
||||
type DeleteBaremetalRctParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *DeleteBaremetalRctParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *DeleteBaremetalRctParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new DeleteBaremetalRctParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *BaremetalService) NewDeleteBaremetalRctParams(id string) *DeleteBaremetalRctParams {
|
||||
p := &DeleteBaremetalRctParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// deletes baremetal rack configuration text
|
||||
func (s *BaremetalService) DeleteBaremetalRct(p *DeleteBaremetalRctParams) (*DeleteBaremetalRctResponse, error) {
|
||||
resp, err := s.cs.newRequest("deleteBaremetalRct", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r DeleteBaremetalRctResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type DeleteBaremetalRctResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success bool `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type ListBaremetalRctParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListBaremetalRctParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListBaremetalRctParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListBaremetalRctParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListBaremetalRctParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListBaremetalRctParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *BaremetalService) NewListBaremetalRctParams() *ListBaremetalRctParams {
|
||||
p := &ListBaremetalRctParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// list baremetal rack configuration
|
||||
func (s *BaremetalService) ListBaremetalRct(p *ListBaremetalRctParams) (*ListBaremetalRctResponse, error) {
|
||||
resp, err := s.cs.newRequest("listBaremetalRct", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListBaremetalRctResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListBaremetalRctResponse struct {
|
||||
Count int `json:"count"`
|
||||
BaremetalRct []*BaremetalRct `json:"baremetalrct"`
|
||||
}
|
||||
|
||||
type BaremetalRct struct {
|
||||
Id string `json:"id,omitempty"`
|
||||
Url string `json:"url,omitempty"`
|
||||
}
|
140
vendor/github.com/xanzy/go-cloudstack/cloudstack/CertificateService.go
generated
vendored
Normal file
140
vendor/github.com/xanzy/go-cloudstack/cloudstack/CertificateService.go
generated
vendored
Normal file
|
@ -0,0 +1,140 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/url"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type UploadCustomCertificateParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *UploadCustomCertificateParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["certificate"]; found {
|
||||
u.Set("certificate", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainsuffix"]; found {
|
||||
u.Set("domainsuffix", v.(string))
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("id", vv)
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["privatekey"]; found {
|
||||
u.Set("privatekey", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *UploadCustomCertificateParams) SetCertificate(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["certificate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UploadCustomCertificateParams) SetDomainsuffix(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainsuffix"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UploadCustomCertificateParams) SetId(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UploadCustomCertificateParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UploadCustomCertificateParams) SetPrivatekey(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["privatekey"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new UploadCustomCertificateParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *CertificateService) NewUploadCustomCertificateParams(certificate string, domainsuffix string) *UploadCustomCertificateParams {
|
||||
p := &UploadCustomCertificateParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["certificate"] = certificate
|
||||
p.p["domainsuffix"] = domainsuffix
|
||||
return p
|
||||
}
|
||||
|
||||
// Uploads a custom certificate for the console proxy VMs to use for SSL. Can be used to upload a single certificate signed by a known CA. Can also be used, through multiple calls, to upload a chain of certificates from CA to the custom certificate itself.
|
||||
func (s *CertificateService) UploadCustomCertificate(p *UploadCustomCertificateParams) (*UploadCustomCertificateResponse, error) {
|
||||
resp, err := s.cs.newRequest("uploadCustomCertificate", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r UploadCustomCertificateResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
b, err = getRawValue(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type UploadCustomCertificateResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Message string `json:"message,omitempty"`
|
||||
}
|
74
vendor/github.com/xanzy/go-cloudstack/cloudstack/CloudIdentifierService.go
generated
vendored
Normal file
74
vendor/github.com/xanzy/go-cloudstack/cloudstack/CloudIdentifierService.go
generated
vendored
Normal file
|
@ -0,0 +1,74 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
type GetCloudIdentifierParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *GetCloudIdentifierParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["userid"]; found {
|
||||
u.Set("userid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *GetCloudIdentifierParams) SetUserid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["userid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new GetCloudIdentifierParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *CloudIdentifierService) NewGetCloudIdentifierParams(userid string) *GetCloudIdentifierParams {
|
||||
p := &GetCloudIdentifierParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["userid"] = userid
|
||||
return p
|
||||
}
|
||||
|
||||
// Retrieves a cloud identifier.
|
||||
func (s *CloudIdentifierService) GetCloudIdentifier(p *GetCloudIdentifierParams) (*GetCloudIdentifierResponse, error) {
|
||||
resp, err := s.cs.newRequest("getCloudIdentifier", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r GetCloudIdentifierResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type GetCloudIdentifierResponse struct {
|
||||
Cloudidentifier string `json:"cloudidentifier,omitempty"`
|
||||
Signature string `json:"signature,omitempty"`
|
||||
Userid string `json:"userid,omitempty"`
|
||||
}
|
1059
vendor/github.com/xanzy/go-cloudstack/cloudstack/ClusterService.go
generated
vendored
Normal file
1059
vendor/github.com/xanzy/go-cloudstack/cloudstack/ClusterService.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
633
vendor/github.com/xanzy/go-cloudstack/cloudstack/ConfigurationService.go
generated
vendored
Normal file
633
vendor/github.com/xanzy/go-cloudstack/cloudstack/ConfigurationService.go
generated
vendored
Normal file
|
@ -0,0 +1,633 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/url"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type UpdateConfigurationParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *UpdateConfigurationParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["accountid"]; found {
|
||||
u.Set("accountid", v.(string))
|
||||
}
|
||||
if v, found := p.p["clusterid"]; found {
|
||||
u.Set("clusterid", v.(string))
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["storageid"]; found {
|
||||
u.Set("storageid", v.(string))
|
||||
}
|
||||
if v, found := p.p["value"]; found {
|
||||
u.Set("value", v.(string))
|
||||
}
|
||||
if v, found := p.p["zoneid"]; found {
|
||||
u.Set("zoneid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *UpdateConfigurationParams) SetAccountid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["accountid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateConfigurationParams) SetClusterid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["clusterid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateConfigurationParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateConfigurationParams) SetStorageid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["storageid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateConfigurationParams) SetValue(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["value"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateConfigurationParams) SetZoneid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["zoneid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new UpdateConfigurationParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *ConfigurationService) NewUpdateConfigurationParams(name string) *UpdateConfigurationParams {
|
||||
p := &UpdateConfigurationParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["name"] = name
|
||||
return p
|
||||
}
|
||||
|
||||
// Updates a configuration.
|
||||
func (s *ConfigurationService) UpdateConfiguration(p *UpdateConfigurationParams) (*UpdateConfigurationResponse, error) {
|
||||
resp, err := s.cs.newRequest("updateConfiguration", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r UpdateConfigurationResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type UpdateConfigurationResponse struct {
|
||||
Category string `json:"category,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Id int64 `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Scope string `json:"scope,omitempty"`
|
||||
Value string `json:"value,omitempty"`
|
||||
}
|
||||
|
||||
type ListConfigurationsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListConfigurationsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["accountid"]; found {
|
||||
u.Set("accountid", v.(string))
|
||||
}
|
||||
if v, found := p.p["category"]; found {
|
||||
u.Set("category", v.(string))
|
||||
}
|
||||
if v, found := p.p["clusterid"]; found {
|
||||
u.Set("clusterid", v.(string))
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["storageid"]; found {
|
||||
u.Set("storageid", v.(string))
|
||||
}
|
||||
if v, found := p.p["zoneid"]; found {
|
||||
u.Set("zoneid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListConfigurationsParams) SetAccountid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["accountid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListConfigurationsParams) SetCategory(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["category"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListConfigurationsParams) SetClusterid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["clusterid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListConfigurationsParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListConfigurationsParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListConfigurationsParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListConfigurationsParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListConfigurationsParams) SetStorageid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["storageid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListConfigurationsParams) SetZoneid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["zoneid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListConfigurationsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *ConfigurationService) NewListConfigurationsParams() *ListConfigurationsParams {
|
||||
p := &ListConfigurationsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Lists all configurations.
|
||||
func (s *ConfigurationService) ListConfigurations(p *ListConfigurationsParams) (*ListConfigurationsResponse, error) {
|
||||
resp, err := s.cs.newRequest("listConfigurations", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListConfigurationsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListConfigurationsResponse struct {
|
||||
Count int `json:"count"`
|
||||
Configurations []*Configuration `json:"configuration"`
|
||||
}
|
||||
|
||||
type Configuration struct {
|
||||
Category string `json:"category,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Id int64 `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Scope string `json:"scope,omitempty"`
|
||||
Value string `json:"value,omitempty"`
|
||||
}
|
||||
|
||||
type ListCapabilitiesParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListCapabilitiesParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListCapabilitiesParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *ConfigurationService) NewListCapabilitiesParams() *ListCapabilitiesParams {
|
||||
p := &ListCapabilitiesParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Lists capabilities
|
||||
func (s *ConfigurationService) ListCapabilities(p *ListCapabilitiesParams) (*ListCapabilitiesResponse, error) {
|
||||
resp, err := s.cs.newRequest("listCapabilities", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListCapabilitiesResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListCapabilitiesResponse struct {
|
||||
Count int `json:"count"`
|
||||
Capabilities []*Capability `json:"capability"`
|
||||
}
|
||||
|
||||
type Capability struct {
|
||||
Allowusercreateprojects bool `json:"allowusercreateprojects,omitempty"`
|
||||
Allowuserexpungerecovervm bool `json:"allowuserexpungerecovervm,omitempty"`
|
||||
Allowuserviewdestroyedvm bool `json:"allowuserviewdestroyedvm,omitempty"`
|
||||
Apilimitinterval int `json:"apilimitinterval,omitempty"`
|
||||
Apilimitmax int `json:"apilimitmax,omitempty"`
|
||||
Cloudstackversion string `json:"cloudstackversion,omitempty"`
|
||||
Customdiskofferingmaxsize int64 `json:"customdiskofferingmaxsize,omitempty"`
|
||||
Customdiskofferingminsize int64 `json:"customdiskofferingminsize,omitempty"`
|
||||
Kvmsnapshotenabled bool `json:"kvmsnapshotenabled,omitempty"`
|
||||
Projectinviterequired bool `json:"projectinviterequired,omitempty"`
|
||||
Regionsecondaryenabled bool `json:"regionsecondaryenabled,omitempty"`
|
||||
Securitygroupsenabled bool `json:"securitygroupsenabled,omitempty"`
|
||||
SupportELB string `json:"supportELB,omitempty"`
|
||||
Userpublictemplateenabled bool `json:"userpublictemplateenabled,omitempty"`
|
||||
}
|
||||
|
||||
type ListDeploymentPlannersParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListDeploymentPlannersParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListDeploymentPlannersParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDeploymentPlannersParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDeploymentPlannersParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListDeploymentPlannersParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *ConfigurationService) NewListDeploymentPlannersParams() *ListDeploymentPlannersParams {
|
||||
p := &ListDeploymentPlannersParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Lists all DeploymentPlanners available.
|
||||
func (s *ConfigurationService) ListDeploymentPlanners(p *ListDeploymentPlannersParams) (*ListDeploymentPlannersResponse, error) {
|
||||
resp, err := s.cs.newRequest("listDeploymentPlanners", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListDeploymentPlannersResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListDeploymentPlannersResponse struct {
|
||||
Count int `json:"count"`
|
||||
DeploymentPlanners []*DeploymentPlanner `json:"deploymentplanner"`
|
||||
}
|
||||
|
||||
type DeploymentPlanner struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
}
|
||||
|
||||
type ListLdapConfigurationsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListLdapConfigurationsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["hostname"]; found {
|
||||
u.Set("hostname", v.(string))
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["port"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("port", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListLdapConfigurationsParams) SetHostname(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["hostname"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListLdapConfigurationsParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListLdapConfigurationsParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListLdapConfigurationsParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListLdapConfigurationsParams) SetPort(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["port"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListLdapConfigurationsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *ConfigurationService) NewListLdapConfigurationsParams() *ListLdapConfigurationsParams {
|
||||
p := &ListLdapConfigurationsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Lists all LDAP configurations
|
||||
func (s *ConfigurationService) ListLdapConfigurations(p *ListLdapConfigurationsParams) (*ListLdapConfigurationsResponse, error) {
|
||||
resp, err := s.cs.newRequest("listLdapConfigurations", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListLdapConfigurationsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListLdapConfigurationsResponse struct {
|
||||
Count int `json:"count"`
|
||||
LdapConfigurations []*LdapConfiguration `json:"ldapconfiguration"`
|
||||
}
|
||||
|
||||
type LdapConfiguration struct {
|
||||
Hostname string `json:"hostname,omitempty"`
|
||||
Port int `json:"port,omitempty"`
|
||||
}
|
||||
|
||||
type AddLdapConfigurationParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *AddLdapConfigurationParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["hostname"]; found {
|
||||
u.Set("hostname", v.(string))
|
||||
}
|
||||
if v, found := p.p["port"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("port", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *AddLdapConfigurationParams) SetHostname(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["hostname"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddLdapConfigurationParams) SetPort(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["port"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new AddLdapConfigurationParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *ConfigurationService) NewAddLdapConfigurationParams(hostname string, port int) *AddLdapConfigurationParams {
|
||||
p := &AddLdapConfigurationParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["hostname"] = hostname
|
||||
p.p["port"] = port
|
||||
return p
|
||||
}
|
||||
|
||||
// Add a new Ldap Configuration
|
||||
func (s *ConfigurationService) AddLdapConfiguration(p *AddLdapConfigurationParams) (*AddLdapConfigurationResponse, error) {
|
||||
resp, err := s.cs.newRequest("addLdapConfiguration", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r AddLdapConfigurationResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type AddLdapConfigurationResponse struct {
|
||||
Hostname string `json:"hostname,omitempty"`
|
||||
Port int `json:"port,omitempty"`
|
||||
}
|
||||
|
||||
type DeleteLdapConfigurationParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *DeleteLdapConfigurationParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["hostname"]; found {
|
||||
u.Set("hostname", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *DeleteLdapConfigurationParams) SetHostname(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["hostname"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new DeleteLdapConfigurationParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *ConfigurationService) NewDeleteLdapConfigurationParams(hostname string) *DeleteLdapConfigurationParams {
|
||||
p := &DeleteLdapConfigurationParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["hostname"] = hostname
|
||||
return p
|
||||
}
|
||||
|
||||
// Remove an Ldap Configuration
|
||||
func (s *ConfigurationService) DeleteLdapConfiguration(p *DeleteLdapConfigurationParams) (*DeleteLdapConfigurationResponse, error) {
|
||||
resp, err := s.cs.newRequest("deleteLdapConfiguration", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r DeleteLdapConfigurationResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type DeleteLdapConfigurationResponse struct {
|
||||
Hostname string `json:"hostname,omitempty"`
|
||||
Port int `json:"port,omitempty"`
|
||||
}
|
688
vendor/github.com/xanzy/go-cloudstack/cloudstack/DiskOfferingService.go
generated
vendored
Normal file
688
vendor/github.com/xanzy/go-cloudstack/cloudstack/DiskOfferingService.go
generated
vendored
Normal file
|
@ -0,0 +1,688 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type CreateDiskOfferingParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *CreateDiskOfferingParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["bytesreadrate"]; found {
|
||||
vv := strconv.FormatInt(v.(int64), 10)
|
||||
u.Set("bytesreadrate", vv)
|
||||
}
|
||||
if v, found := p.p["byteswriterate"]; found {
|
||||
vv := strconv.FormatInt(v.(int64), 10)
|
||||
u.Set("byteswriterate", vv)
|
||||
}
|
||||
if v, found := p.p["customized"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("customized", vv)
|
||||
}
|
||||
if v, found := p.p["customizediops"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("customizediops", vv)
|
||||
}
|
||||
if v, found := p.p["disksize"]; found {
|
||||
vv := strconv.FormatInt(v.(int64), 10)
|
||||
u.Set("disksize", vv)
|
||||
}
|
||||
if v, found := p.p["displayoffering"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("displayoffering", vv)
|
||||
}
|
||||
if v, found := p.p["displaytext"]; found {
|
||||
u.Set("displaytext", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["hypervisorsnapshotreserve"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("hypervisorsnapshotreserve", vv)
|
||||
}
|
||||
if v, found := p.p["iopsreadrate"]; found {
|
||||
vv := strconv.FormatInt(v.(int64), 10)
|
||||
u.Set("iopsreadrate", vv)
|
||||
}
|
||||
if v, found := p.p["iopswriterate"]; found {
|
||||
vv := strconv.FormatInt(v.(int64), 10)
|
||||
u.Set("iopswriterate", vv)
|
||||
}
|
||||
if v, found := p.p["maxiops"]; found {
|
||||
vv := strconv.FormatInt(v.(int64), 10)
|
||||
u.Set("maxiops", vv)
|
||||
}
|
||||
if v, found := p.p["miniops"]; found {
|
||||
vv := strconv.FormatInt(v.(int64), 10)
|
||||
u.Set("miniops", vv)
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["provisioningtype"]; found {
|
||||
u.Set("provisioningtype", v.(string))
|
||||
}
|
||||
if v, found := p.p["storagetype"]; found {
|
||||
u.Set("storagetype", v.(string))
|
||||
}
|
||||
if v, found := p.p["tags"]; found {
|
||||
u.Set("tags", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *CreateDiskOfferingParams) SetBytesreadrate(v int64) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["bytesreadrate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateDiskOfferingParams) SetByteswriterate(v int64) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["byteswriterate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateDiskOfferingParams) SetCustomized(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["customized"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateDiskOfferingParams) SetCustomizediops(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["customizediops"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateDiskOfferingParams) SetDisksize(v int64) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["disksize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateDiskOfferingParams) SetDisplayoffering(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["displayoffering"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateDiskOfferingParams) SetDisplaytext(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["displaytext"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateDiskOfferingParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateDiskOfferingParams) SetHypervisorsnapshotreserve(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["hypervisorsnapshotreserve"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateDiskOfferingParams) SetIopsreadrate(v int64) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["iopsreadrate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateDiskOfferingParams) SetIopswriterate(v int64) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["iopswriterate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateDiskOfferingParams) SetMaxiops(v int64) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["maxiops"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateDiskOfferingParams) SetMiniops(v int64) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["miniops"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateDiskOfferingParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateDiskOfferingParams) SetProvisioningtype(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["provisioningtype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateDiskOfferingParams) SetStoragetype(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["storagetype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateDiskOfferingParams) SetTags(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["tags"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new CreateDiskOfferingParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *DiskOfferingService) NewCreateDiskOfferingParams(displaytext string, name string) *CreateDiskOfferingParams {
|
||||
p := &CreateDiskOfferingParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["displaytext"] = displaytext
|
||||
p.p["name"] = name
|
||||
return p
|
||||
}
|
||||
|
||||
// Creates a disk offering.
|
||||
func (s *DiskOfferingService) CreateDiskOffering(p *CreateDiskOfferingParams) (*CreateDiskOfferingResponse, error) {
|
||||
resp, err := s.cs.newRequest("createDiskOffering", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r CreateDiskOfferingResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type CreateDiskOfferingResponse struct {
|
||||
CacheMode string `json:"cacheMode,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
DiskBytesReadRate int64 `json:"diskBytesReadRate,omitempty"`
|
||||
DiskBytesWriteRate int64 `json:"diskBytesWriteRate,omitempty"`
|
||||
DiskIopsReadRate int64 `json:"diskIopsReadRate,omitempty"`
|
||||
DiskIopsWriteRate int64 `json:"diskIopsWriteRate,omitempty"`
|
||||
Disksize int64 `json:"disksize,omitempty"`
|
||||
Displayoffering bool `json:"displayoffering,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Hypervisorsnapshotreserve int `json:"hypervisorsnapshotreserve,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Iscustomized bool `json:"iscustomized,omitempty"`
|
||||
Iscustomizediops bool `json:"iscustomizediops,omitempty"`
|
||||
Maxiops int64 `json:"maxiops,omitempty"`
|
||||
Miniops int64 `json:"miniops,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Provisioningtype string `json:"provisioningtype,omitempty"`
|
||||
Storagetype string `json:"storagetype,omitempty"`
|
||||
Tags string `json:"tags,omitempty"`
|
||||
}
|
||||
|
||||
type UpdateDiskOfferingParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *UpdateDiskOfferingParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["displayoffering"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("displayoffering", vv)
|
||||
}
|
||||
if v, found := p.p["displaytext"]; found {
|
||||
u.Set("displaytext", v.(string))
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["sortkey"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("sortkey", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *UpdateDiskOfferingParams) SetDisplayoffering(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["displayoffering"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateDiskOfferingParams) SetDisplaytext(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["displaytext"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateDiskOfferingParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateDiskOfferingParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateDiskOfferingParams) SetSortkey(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["sortkey"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new UpdateDiskOfferingParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *DiskOfferingService) NewUpdateDiskOfferingParams(id string) *UpdateDiskOfferingParams {
|
||||
p := &UpdateDiskOfferingParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Updates a disk offering.
|
||||
func (s *DiskOfferingService) UpdateDiskOffering(p *UpdateDiskOfferingParams) (*UpdateDiskOfferingResponse, error) {
|
||||
resp, err := s.cs.newRequest("updateDiskOffering", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r UpdateDiskOfferingResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type UpdateDiskOfferingResponse struct {
|
||||
CacheMode string `json:"cacheMode,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
DiskBytesReadRate int64 `json:"diskBytesReadRate,omitempty"`
|
||||
DiskBytesWriteRate int64 `json:"diskBytesWriteRate,omitempty"`
|
||||
DiskIopsReadRate int64 `json:"diskIopsReadRate,omitempty"`
|
||||
DiskIopsWriteRate int64 `json:"diskIopsWriteRate,omitempty"`
|
||||
Disksize int64 `json:"disksize,omitempty"`
|
||||
Displayoffering bool `json:"displayoffering,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Hypervisorsnapshotreserve int `json:"hypervisorsnapshotreserve,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Iscustomized bool `json:"iscustomized,omitempty"`
|
||||
Iscustomizediops bool `json:"iscustomizediops,omitempty"`
|
||||
Maxiops int64 `json:"maxiops,omitempty"`
|
||||
Miniops int64 `json:"miniops,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Provisioningtype string `json:"provisioningtype,omitempty"`
|
||||
Storagetype string `json:"storagetype,omitempty"`
|
||||
Tags string `json:"tags,omitempty"`
|
||||
}
|
||||
|
||||
type DeleteDiskOfferingParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *DeleteDiskOfferingParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *DeleteDiskOfferingParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new DeleteDiskOfferingParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *DiskOfferingService) NewDeleteDiskOfferingParams(id string) *DeleteDiskOfferingParams {
|
||||
p := &DeleteDiskOfferingParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Updates a disk offering.
|
||||
func (s *DiskOfferingService) DeleteDiskOffering(p *DeleteDiskOfferingParams) (*DeleteDiskOfferingResponse, error) {
|
||||
resp, err := s.cs.newRequest("deleteDiskOffering", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r DeleteDiskOfferingResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type DeleteDiskOfferingResponse struct {
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success string `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type ListDiskOfferingsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListDiskOfferingsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["isrecursive"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("isrecursive", vv)
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["listall"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("listall", vv)
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListDiskOfferingsParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDiskOfferingsParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDiskOfferingsParams) SetIsrecursive(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["isrecursive"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDiskOfferingsParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDiskOfferingsParams) SetListall(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["listall"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDiskOfferingsParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDiskOfferingsParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDiskOfferingsParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListDiskOfferingsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *DiskOfferingService) NewListDiskOfferingsParams() *ListDiskOfferingsParams {
|
||||
p := &ListDiskOfferingsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *DiskOfferingService) GetDiskOfferingID(name string, opts ...OptionFunc) (string, int, error) {
|
||||
p := &ListDiskOfferingsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["name"] = name
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListDiskOfferings(p)
|
||||
if err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return "", l.Count, fmt.Errorf("No match found for %s: %+v", name, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.DiskOfferings[0].Id, l.Count, nil
|
||||
}
|
||||
|
||||
if l.Count > 1 {
|
||||
for _, v := range l.DiskOfferings {
|
||||
if v.Name == name {
|
||||
return v.Id, l.Count, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
return "", l.Count, fmt.Errorf("Could not find an exact match for %s: %+v", name, l)
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *DiskOfferingService) GetDiskOfferingByName(name string, opts ...OptionFunc) (*DiskOffering, int, error) {
|
||||
id, count, err := s.GetDiskOfferingID(name, opts...)
|
||||
if err != nil {
|
||||
return nil, count, err
|
||||
}
|
||||
|
||||
r, count, err := s.GetDiskOfferingByID(id, opts...)
|
||||
if err != nil {
|
||||
return nil, count, err
|
||||
}
|
||||
return r, count, nil
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *DiskOfferingService) GetDiskOfferingByID(id string, opts ...OptionFunc) (*DiskOffering, int, error) {
|
||||
p := &ListDiskOfferingsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["id"] = id
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return nil, -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListDiskOfferings(p)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), fmt.Sprintf(
|
||||
"Invalid parameter id value=%s due to incorrect long value format, "+
|
||||
"or entity does not exist", id)) {
|
||||
return nil, 0, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
return nil, -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return nil, l.Count, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.DiskOfferings[0], l.Count, nil
|
||||
}
|
||||
return nil, l.Count, fmt.Errorf("There is more then one result for DiskOffering UUID: %s!", id)
|
||||
}
|
||||
|
||||
// Lists all available disk offerings.
|
||||
func (s *DiskOfferingService) ListDiskOfferings(p *ListDiskOfferingsParams) (*ListDiskOfferingsResponse, error) {
|
||||
resp, err := s.cs.newRequest("listDiskOfferings", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListDiskOfferingsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListDiskOfferingsResponse struct {
|
||||
Count int `json:"count"`
|
||||
DiskOfferings []*DiskOffering `json:"diskoffering"`
|
||||
}
|
||||
|
||||
type DiskOffering struct {
|
||||
CacheMode string `json:"cacheMode,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
DiskBytesReadRate int64 `json:"diskBytesReadRate,omitempty"`
|
||||
DiskBytesWriteRate int64 `json:"diskBytesWriteRate,omitempty"`
|
||||
DiskIopsReadRate int64 `json:"diskIopsReadRate,omitempty"`
|
||||
DiskIopsWriteRate int64 `json:"diskIopsWriteRate,omitempty"`
|
||||
Disksize int64 `json:"disksize,omitempty"`
|
||||
Displayoffering bool `json:"displayoffering,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Hypervisorsnapshotreserve int `json:"hypervisorsnapshotreserve,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Iscustomized bool `json:"iscustomized,omitempty"`
|
||||
Iscustomizediops bool `json:"iscustomizediops,omitempty"`
|
||||
Maxiops int64 `json:"maxiops,omitempty"`
|
||||
Miniops int64 `json:"miniops,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Provisioningtype string `json:"provisioningtype,omitempty"`
|
||||
Storagetype string `json:"storagetype,omitempty"`
|
||||
Tags string `json:"tags,omitempty"`
|
||||
}
|
951
vendor/github.com/xanzy/go-cloudstack/cloudstack/DomainService.go
generated
vendored
Normal file
951
vendor/github.com/xanzy/go-cloudstack/cloudstack/DomainService.go
generated
vendored
Normal file
|
@ -0,0 +1,951 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type CreateDomainParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *CreateDomainParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["networkdomain"]; found {
|
||||
u.Set("networkdomain", v.(string))
|
||||
}
|
||||
if v, found := p.p["parentdomainid"]; found {
|
||||
u.Set("parentdomainid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *CreateDomainParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateDomainParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateDomainParams) SetNetworkdomain(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["networkdomain"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateDomainParams) SetParentdomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["parentdomainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new CreateDomainParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *DomainService) NewCreateDomainParams(name string) *CreateDomainParams {
|
||||
p := &CreateDomainParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["name"] = name
|
||||
return p
|
||||
}
|
||||
|
||||
// Creates a domain
|
||||
func (s *DomainService) CreateDomain(p *CreateDomainParams) (*CreateDomainResponse, error) {
|
||||
resp, err := s.cs.newRequest("createDomain", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r CreateDomainResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type CreateDomainResponse struct {
|
||||
Cpuavailable string `json:"cpuavailable,omitempty"`
|
||||
Cpulimit string `json:"cpulimit,omitempty"`
|
||||
Cputotal int64 `json:"cputotal,omitempty"`
|
||||
Haschild bool `json:"haschild,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ipavailable string `json:"ipavailable,omitempty"`
|
||||
Iplimit string `json:"iplimit,omitempty"`
|
||||
Iptotal int64 `json:"iptotal,omitempty"`
|
||||
Level int `json:"level,omitempty"`
|
||||
Memoryavailable string `json:"memoryavailable,omitempty"`
|
||||
Memorylimit string `json:"memorylimit,omitempty"`
|
||||
Memorytotal int64 `json:"memorytotal,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Networkavailable string `json:"networkavailable,omitempty"`
|
||||
Networkdomain string `json:"networkdomain,omitempty"`
|
||||
Networklimit string `json:"networklimit,omitempty"`
|
||||
Networktotal int64 `json:"networktotal,omitempty"`
|
||||
Parentdomainid string `json:"parentdomainid,omitempty"`
|
||||
Parentdomainname string `json:"parentdomainname,omitempty"`
|
||||
Path string `json:"path,omitempty"`
|
||||
Primarystorageavailable string `json:"primarystorageavailable,omitempty"`
|
||||
Primarystoragelimit string `json:"primarystoragelimit,omitempty"`
|
||||
Primarystoragetotal int64 `json:"primarystoragetotal,omitempty"`
|
||||
Projectavailable string `json:"projectavailable,omitempty"`
|
||||
Projectlimit string `json:"projectlimit,omitempty"`
|
||||
Projecttotal int64 `json:"projecttotal,omitempty"`
|
||||
Secondarystorageavailable string `json:"secondarystorageavailable,omitempty"`
|
||||
Secondarystoragelimit string `json:"secondarystoragelimit,omitempty"`
|
||||
Secondarystoragetotal int64 `json:"secondarystoragetotal,omitempty"`
|
||||
Snapshotavailable string `json:"snapshotavailable,omitempty"`
|
||||
Snapshotlimit string `json:"snapshotlimit,omitempty"`
|
||||
Snapshottotal int64 `json:"snapshottotal,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Templateavailable string `json:"templateavailable,omitempty"`
|
||||
Templatelimit string `json:"templatelimit,omitempty"`
|
||||
Templatetotal int64 `json:"templatetotal,omitempty"`
|
||||
Vmavailable string `json:"vmavailable,omitempty"`
|
||||
Vmlimit string `json:"vmlimit,omitempty"`
|
||||
Vmtotal int64 `json:"vmtotal,omitempty"`
|
||||
Volumeavailable string `json:"volumeavailable,omitempty"`
|
||||
Volumelimit string `json:"volumelimit,omitempty"`
|
||||
Volumetotal int64 `json:"volumetotal,omitempty"`
|
||||
Vpcavailable string `json:"vpcavailable,omitempty"`
|
||||
Vpclimit string `json:"vpclimit,omitempty"`
|
||||
Vpctotal int64 `json:"vpctotal,omitempty"`
|
||||
}
|
||||
|
||||
type UpdateDomainParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *UpdateDomainParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["networkdomain"]; found {
|
||||
u.Set("networkdomain", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *UpdateDomainParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateDomainParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateDomainParams) SetNetworkdomain(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["networkdomain"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new UpdateDomainParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *DomainService) NewUpdateDomainParams(id string) *UpdateDomainParams {
|
||||
p := &UpdateDomainParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Updates a domain with a new name
|
||||
func (s *DomainService) UpdateDomain(p *UpdateDomainParams) (*UpdateDomainResponse, error) {
|
||||
resp, err := s.cs.newRequest("updateDomain", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r UpdateDomainResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type UpdateDomainResponse struct {
|
||||
Cpuavailable string `json:"cpuavailable,omitempty"`
|
||||
Cpulimit string `json:"cpulimit,omitempty"`
|
||||
Cputotal int64 `json:"cputotal,omitempty"`
|
||||
Haschild bool `json:"haschild,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ipavailable string `json:"ipavailable,omitempty"`
|
||||
Iplimit string `json:"iplimit,omitempty"`
|
||||
Iptotal int64 `json:"iptotal,omitempty"`
|
||||
Level int `json:"level,omitempty"`
|
||||
Memoryavailable string `json:"memoryavailable,omitempty"`
|
||||
Memorylimit string `json:"memorylimit,omitempty"`
|
||||
Memorytotal int64 `json:"memorytotal,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Networkavailable string `json:"networkavailable,omitempty"`
|
||||
Networkdomain string `json:"networkdomain,omitempty"`
|
||||
Networklimit string `json:"networklimit,omitempty"`
|
||||
Networktotal int64 `json:"networktotal,omitempty"`
|
||||
Parentdomainid string `json:"parentdomainid,omitempty"`
|
||||
Parentdomainname string `json:"parentdomainname,omitempty"`
|
||||
Path string `json:"path,omitempty"`
|
||||
Primarystorageavailable string `json:"primarystorageavailable,omitempty"`
|
||||
Primarystoragelimit string `json:"primarystoragelimit,omitempty"`
|
||||
Primarystoragetotal int64 `json:"primarystoragetotal,omitempty"`
|
||||
Projectavailable string `json:"projectavailable,omitempty"`
|
||||
Projectlimit string `json:"projectlimit,omitempty"`
|
||||
Projecttotal int64 `json:"projecttotal,omitempty"`
|
||||
Secondarystorageavailable string `json:"secondarystorageavailable,omitempty"`
|
||||
Secondarystoragelimit string `json:"secondarystoragelimit,omitempty"`
|
||||
Secondarystoragetotal int64 `json:"secondarystoragetotal,omitempty"`
|
||||
Snapshotavailable string `json:"snapshotavailable,omitempty"`
|
||||
Snapshotlimit string `json:"snapshotlimit,omitempty"`
|
||||
Snapshottotal int64 `json:"snapshottotal,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Templateavailable string `json:"templateavailable,omitempty"`
|
||||
Templatelimit string `json:"templatelimit,omitempty"`
|
||||
Templatetotal int64 `json:"templatetotal,omitempty"`
|
||||
Vmavailable string `json:"vmavailable,omitempty"`
|
||||
Vmlimit string `json:"vmlimit,omitempty"`
|
||||
Vmtotal int64 `json:"vmtotal,omitempty"`
|
||||
Volumeavailable string `json:"volumeavailable,omitempty"`
|
||||
Volumelimit string `json:"volumelimit,omitempty"`
|
||||
Volumetotal int64 `json:"volumetotal,omitempty"`
|
||||
Vpcavailable string `json:"vpcavailable,omitempty"`
|
||||
Vpclimit string `json:"vpclimit,omitempty"`
|
||||
Vpctotal int64 `json:"vpctotal,omitempty"`
|
||||
}
|
||||
|
||||
type DeleteDomainParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *DeleteDomainParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["cleanup"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("cleanup", vv)
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *DeleteDomainParams) SetCleanup(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["cleanup"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *DeleteDomainParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new DeleteDomainParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *DomainService) NewDeleteDomainParams(id string) *DeleteDomainParams {
|
||||
p := &DeleteDomainParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Deletes a specified domain
|
||||
func (s *DomainService) DeleteDomain(p *DeleteDomainParams) (*DeleteDomainResponse, error) {
|
||||
resp, err := s.cs.newRequest("deleteDomain", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r DeleteDomainResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type DeleteDomainResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success bool `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type ListDomainsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListDomainsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["level"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("level", vv)
|
||||
}
|
||||
if v, found := p.p["listall"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("listall", vv)
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListDomainsParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDomainsParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDomainsParams) SetLevel(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["level"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDomainsParams) SetListall(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["listall"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDomainsParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDomainsParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDomainsParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListDomainsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *DomainService) NewListDomainsParams() *ListDomainsParams {
|
||||
p := &ListDomainsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *DomainService) GetDomainID(name string, opts ...OptionFunc) (string, int, error) {
|
||||
p := &ListDomainsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["name"] = name
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListDomains(p)
|
||||
if err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return "", l.Count, fmt.Errorf("No match found for %s: %+v", name, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.Domains[0].Id, l.Count, nil
|
||||
}
|
||||
|
||||
if l.Count > 1 {
|
||||
for _, v := range l.Domains {
|
||||
if v.Name == name {
|
||||
return v.Id, l.Count, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
return "", l.Count, fmt.Errorf("Could not find an exact match for %s: %+v", name, l)
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *DomainService) GetDomainByName(name string, opts ...OptionFunc) (*Domain, int, error) {
|
||||
id, count, err := s.GetDomainID(name, opts...)
|
||||
if err != nil {
|
||||
return nil, count, err
|
||||
}
|
||||
|
||||
r, count, err := s.GetDomainByID(id, opts...)
|
||||
if err != nil {
|
||||
return nil, count, err
|
||||
}
|
||||
return r, count, nil
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *DomainService) GetDomainByID(id string, opts ...OptionFunc) (*Domain, int, error) {
|
||||
p := &ListDomainsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["id"] = id
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return nil, -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListDomains(p)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), fmt.Sprintf(
|
||||
"Invalid parameter id value=%s due to incorrect long value format, "+
|
||||
"or entity does not exist", id)) {
|
||||
return nil, 0, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
return nil, -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return nil, l.Count, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.Domains[0], l.Count, nil
|
||||
}
|
||||
return nil, l.Count, fmt.Errorf("There is more then one result for Domain UUID: %s!", id)
|
||||
}
|
||||
|
||||
// Lists domains and provides detailed information for listed domains
|
||||
func (s *DomainService) ListDomains(p *ListDomainsParams) (*ListDomainsResponse, error) {
|
||||
resp, err := s.cs.newRequest("listDomains", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListDomainsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListDomainsResponse struct {
|
||||
Count int `json:"count"`
|
||||
Domains []*Domain `json:"domain"`
|
||||
}
|
||||
|
||||
type Domain struct {
|
||||
Cpuavailable string `json:"cpuavailable,omitempty"`
|
||||
Cpulimit string `json:"cpulimit,omitempty"`
|
||||
Cputotal int64 `json:"cputotal,omitempty"`
|
||||
Haschild bool `json:"haschild,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ipavailable string `json:"ipavailable,omitempty"`
|
||||
Iplimit string `json:"iplimit,omitempty"`
|
||||
Iptotal int64 `json:"iptotal,omitempty"`
|
||||
Level int `json:"level,omitempty"`
|
||||
Memoryavailable string `json:"memoryavailable,omitempty"`
|
||||
Memorylimit string `json:"memorylimit,omitempty"`
|
||||
Memorytotal int64 `json:"memorytotal,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Networkavailable string `json:"networkavailable,omitempty"`
|
||||
Networkdomain string `json:"networkdomain,omitempty"`
|
||||
Networklimit string `json:"networklimit,omitempty"`
|
||||
Networktotal int64 `json:"networktotal,omitempty"`
|
||||
Parentdomainid string `json:"parentdomainid,omitempty"`
|
||||
Parentdomainname string `json:"parentdomainname,omitempty"`
|
||||
Path string `json:"path,omitempty"`
|
||||
Primarystorageavailable string `json:"primarystorageavailable,omitempty"`
|
||||
Primarystoragelimit string `json:"primarystoragelimit,omitempty"`
|
||||
Primarystoragetotal int64 `json:"primarystoragetotal,omitempty"`
|
||||
Projectavailable string `json:"projectavailable,omitempty"`
|
||||
Projectlimit string `json:"projectlimit,omitempty"`
|
||||
Projecttotal int64 `json:"projecttotal,omitempty"`
|
||||
Secondarystorageavailable string `json:"secondarystorageavailable,omitempty"`
|
||||
Secondarystoragelimit string `json:"secondarystoragelimit,omitempty"`
|
||||
Secondarystoragetotal int64 `json:"secondarystoragetotal,omitempty"`
|
||||
Snapshotavailable string `json:"snapshotavailable,omitempty"`
|
||||
Snapshotlimit string `json:"snapshotlimit,omitempty"`
|
||||
Snapshottotal int64 `json:"snapshottotal,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Templateavailable string `json:"templateavailable,omitempty"`
|
||||
Templatelimit string `json:"templatelimit,omitempty"`
|
||||
Templatetotal int64 `json:"templatetotal,omitempty"`
|
||||
Vmavailable string `json:"vmavailable,omitempty"`
|
||||
Vmlimit string `json:"vmlimit,omitempty"`
|
||||
Vmtotal int64 `json:"vmtotal,omitempty"`
|
||||
Volumeavailable string `json:"volumeavailable,omitempty"`
|
||||
Volumelimit string `json:"volumelimit,omitempty"`
|
||||
Volumetotal int64 `json:"volumetotal,omitempty"`
|
||||
Vpcavailable string `json:"vpcavailable,omitempty"`
|
||||
Vpclimit string `json:"vpclimit,omitempty"`
|
||||
Vpctotal int64 `json:"vpctotal,omitempty"`
|
||||
}
|
||||
|
||||
type ListDomainChildrenParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListDomainChildrenParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["isrecursive"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("isrecursive", vv)
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["listall"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("listall", vv)
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListDomainChildrenParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDomainChildrenParams) SetIsrecursive(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["isrecursive"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDomainChildrenParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDomainChildrenParams) SetListall(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["listall"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDomainChildrenParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDomainChildrenParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDomainChildrenParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListDomainChildrenParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *DomainService) NewListDomainChildrenParams() *ListDomainChildrenParams {
|
||||
p := &ListDomainChildrenParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *DomainService) GetDomainChildrenID(name string, opts ...OptionFunc) (string, int, error) {
|
||||
p := &ListDomainChildrenParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["name"] = name
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListDomainChildren(p)
|
||||
if err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return "", l.Count, fmt.Errorf("No match found for %s: %+v", name, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.DomainChildren[0].Id, l.Count, nil
|
||||
}
|
||||
|
||||
if l.Count > 1 {
|
||||
for _, v := range l.DomainChildren {
|
||||
if v.Name == name {
|
||||
return v.Id, l.Count, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
return "", l.Count, fmt.Errorf("Could not find an exact match for %s: %+v", name, l)
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *DomainService) GetDomainChildrenByName(name string, opts ...OptionFunc) (*DomainChildren, int, error) {
|
||||
id, count, err := s.GetDomainChildrenID(name, opts...)
|
||||
if err != nil {
|
||||
return nil, count, err
|
||||
}
|
||||
|
||||
r, count, err := s.GetDomainChildrenByID(id, opts...)
|
||||
if err != nil {
|
||||
return nil, count, err
|
||||
}
|
||||
return r, count, nil
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *DomainService) GetDomainChildrenByID(id string, opts ...OptionFunc) (*DomainChildren, int, error) {
|
||||
p := &ListDomainChildrenParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["id"] = id
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return nil, -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListDomainChildren(p)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), fmt.Sprintf(
|
||||
"Invalid parameter id value=%s due to incorrect long value format, "+
|
||||
"or entity does not exist", id)) {
|
||||
return nil, 0, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
return nil, -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return nil, l.Count, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.DomainChildren[0], l.Count, nil
|
||||
}
|
||||
return nil, l.Count, fmt.Errorf("There is more then one result for DomainChildren UUID: %s!", id)
|
||||
}
|
||||
|
||||
// Lists all children domains belonging to a specified domain
|
||||
func (s *DomainService) ListDomainChildren(p *ListDomainChildrenParams) (*ListDomainChildrenResponse, error) {
|
||||
resp, err := s.cs.newRequest("listDomainChildren", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListDomainChildrenResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListDomainChildrenResponse struct {
|
||||
Count int `json:"count"`
|
||||
DomainChildren []*DomainChildren `json:"domainchildren"`
|
||||
}
|
||||
|
||||
type DomainChildren struct {
|
||||
Cpuavailable string `json:"cpuavailable,omitempty"`
|
||||
Cpulimit string `json:"cpulimit,omitempty"`
|
||||
Cputotal int64 `json:"cputotal,omitempty"`
|
||||
Haschild bool `json:"haschild,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ipavailable string `json:"ipavailable,omitempty"`
|
||||
Iplimit string `json:"iplimit,omitempty"`
|
||||
Iptotal int64 `json:"iptotal,omitempty"`
|
||||
Level int `json:"level,omitempty"`
|
||||
Memoryavailable string `json:"memoryavailable,omitempty"`
|
||||
Memorylimit string `json:"memorylimit,omitempty"`
|
||||
Memorytotal int64 `json:"memorytotal,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Networkavailable string `json:"networkavailable,omitempty"`
|
||||
Networkdomain string `json:"networkdomain,omitempty"`
|
||||
Networklimit string `json:"networklimit,omitempty"`
|
||||
Networktotal int64 `json:"networktotal,omitempty"`
|
||||
Parentdomainid string `json:"parentdomainid,omitempty"`
|
||||
Parentdomainname string `json:"parentdomainname,omitempty"`
|
||||
Path string `json:"path,omitempty"`
|
||||
Primarystorageavailable string `json:"primarystorageavailable,omitempty"`
|
||||
Primarystoragelimit string `json:"primarystoragelimit,omitempty"`
|
||||
Primarystoragetotal int64 `json:"primarystoragetotal,omitempty"`
|
||||
Projectavailable string `json:"projectavailable,omitempty"`
|
||||
Projectlimit string `json:"projectlimit,omitempty"`
|
||||
Projecttotal int64 `json:"projecttotal,omitempty"`
|
||||
Secondarystorageavailable string `json:"secondarystorageavailable,omitempty"`
|
||||
Secondarystoragelimit string `json:"secondarystoragelimit,omitempty"`
|
||||
Secondarystoragetotal int64 `json:"secondarystoragetotal,omitempty"`
|
||||
Snapshotavailable string `json:"snapshotavailable,omitempty"`
|
||||
Snapshotlimit string `json:"snapshotlimit,omitempty"`
|
||||
Snapshottotal int64 `json:"snapshottotal,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Templateavailable string `json:"templateavailable,omitempty"`
|
||||
Templatelimit string `json:"templatelimit,omitempty"`
|
||||
Templatetotal int64 `json:"templatetotal,omitempty"`
|
||||
Vmavailable string `json:"vmavailable,omitempty"`
|
||||
Vmlimit string `json:"vmlimit,omitempty"`
|
||||
Vmtotal int64 `json:"vmtotal,omitempty"`
|
||||
Volumeavailable string `json:"volumeavailable,omitempty"`
|
||||
Volumelimit string `json:"volumelimit,omitempty"`
|
||||
Volumetotal int64 `json:"volumetotal,omitempty"`
|
||||
Vpcavailable string `json:"vpcavailable,omitempty"`
|
||||
Vpclimit string `json:"vpclimit,omitempty"`
|
||||
Vpctotal int64 `json:"vpctotal,omitempty"`
|
||||
}
|
||||
|
||||
type LinkDomainToLdapParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *LinkDomainToLdapParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["accounttype"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("accounttype", vv)
|
||||
}
|
||||
if v, found := p.p["admin"]; found {
|
||||
u.Set("admin", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["type"]; found {
|
||||
u.Set("type", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *LinkDomainToLdapParams) SetAccounttype(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["accounttype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *LinkDomainToLdapParams) SetAdmin(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["admin"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *LinkDomainToLdapParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *LinkDomainToLdapParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *LinkDomainToLdapParams) SetType(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["type"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new LinkDomainToLdapParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *DomainService) NewLinkDomainToLdapParams(accounttype int, domainid string, name string, domainType string) *LinkDomainToLdapParams {
|
||||
p := &LinkDomainToLdapParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["accounttype"] = accounttype
|
||||
p.p["domainid"] = domainid
|
||||
p.p["name"] = name
|
||||
p.p["type"] = domainType
|
||||
return p
|
||||
}
|
||||
|
||||
// link an existing cloudstack domain to group or OU in ldap
|
||||
func (s *DomainService) LinkDomainToLdap(p *LinkDomainToLdapParams) (*LinkDomainToLdapResponse, error) {
|
||||
resp, err := s.cs.newRequest("linkDomainToLdap", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r LinkDomainToLdapResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type LinkDomainToLdapResponse struct {
|
||||
Accountid string `json:"accountid,omitempty"`
|
||||
Accounttype int `json:"accounttype,omitempty"`
|
||||
Domainid int64 `json:"domainid,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
}
|
|
@ -0,0 +1,495 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type ListEventsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListEventsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["duration"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("duration", vv)
|
||||
}
|
||||
if v, found := p.p["enddate"]; found {
|
||||
u.Set("enddate", v.(string))
|
||||
}
|
||||
if v, found := p.p["entrytime"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("entrytime", vv)
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["isrecursive"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("isrecursive", vv)
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["level"]; found {
|
||||
u.Set("level", v.(string))
|
||||
}
|
||||
if v, found := p.p["listall"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("listall", vv)
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["projectid"]; found {
|
||||
u.Set("projectid", v.(string))
|
||||
}
|
||||
if v, found := p.p["startdate"]; found {
|
||||
u.Set("startdate", v.(string))
|
||||
}
|
||||
if v, found := p.p["type"]; found {
|
||||
u.Set("type", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListEventsParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListEventsParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListEventsParams) SetDuration(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["duration"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListEventsParams) SetEnddate(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["enddate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListEventsParams) SetEntrytime(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["entrytime"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListEventsParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListEventsParams) SetIsrecursive(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["isrecursive"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListEventsParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListEventsParams) SetLevel(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["level"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListEventsParams) SetListall(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["listall"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListEventsParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListEventsParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListEventsParams) SetProjectid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["projectid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListEventsParams) SetStartdate(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["startdate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListEventsParams) SetType(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["type"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListEventsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *EventService) NewListEventsParams() *ListEventsParams {
|
||||
p := &ListEventsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *EventService) GetEventByID(id string, opts ...OptionFunc) (*Event, int, error) {
|
||||
p := &ListEventsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["id"] = id
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return nil, -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListEvents(p)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), fmt.Sprintf(
|
||||
"Invalid parameter id value=%s due to incorrect long value format, "+
|
||||
"or entity does not exist", id)) {
|
||||
return nil, 0, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
return nil, -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return nil, l.Count, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.Events[0], l.Count, nil
|
||||
}
|
||||
return nil, l.Count, fmt.Errorf("There is more then one result for Event UUID: %s!", id)
|
||||
}
|
||||
|
||||
// A command to list events.
|
||||
func (s *EventService) ListEvents(p *ListEventsParams) (*ListEventsResponse, error) {
|
||||
resp, err := s.cs.newRequest("listEvents", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListEventsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListEventsResponse struct {
|
||||
Count int `json:"count"`
|
||||
Events []*Event `json:"event"`
|
||||
}
|
||||
|
||||
type Event struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Level string `json:"level,omitempty"`
|
||||
Parentid string `json:"parentid,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
Username string `json:"username,omitempty"`
|
||||
}
|
||||
|
||||
type ListEventTypesParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListEventTypesParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListEventTypesParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *EventService) NewListEventTypesParams() *ListEventTypesParams {
|
||||
p := &ListEventTypesParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// List Event Types
|
||||
func (s *EventService) ListEventTypes(p *ListEventTypesParams) (*ListEventTypesResponse, error) {
|
||||
resp, err := s.cs.newRequest("listEventTypes", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListEventTypesResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListEventTypesResponse struct {
|
||||
Count int `json:"count"`
|
||||
EventTypes []*EventType `json:"eventtype"`
|
||||
}
|
||||
|
||||
type EventType struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
}
|
||||
|
||||
type ArchiveEventsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ArchiveEventsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["enddate"]; found {
|
||||
u.Set("enddate", v.(string))
|
||||
}
|
||||
if v, found := p.p["ids"]; found {
|
||||
vv := strings.Join(v.([]string), ",")
|
||||
u.Set("ids", vv)
|
||||
}
|
||||
if v, found := p.p["startdate"]; found {
|
||||
u.Set("startdate", v.(string))
|
||||
}
|
||||
if v, found := p.p["type"]; found {
|
||||
u.Set("type", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ArchiveEventsParams) SetEnddate(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["enddate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ArchiveEventsParams) SetIds(v []string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["ids"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ArchiveEventsParams) SetStartdate(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["startdate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ArchiveEventsParams) SetType(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["type"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ArchiveEventsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *EventService) NewArchiveEventsParams() *ArchiveEventsParams {
|
||||
p := &ArchiveEventsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Archive one or more events.
|
||||
func (s *EventService) ArchiveEvents(p *ArchiveEventsParams) (*ArchiveEventsResponse, error) {
|
||||
resp, err := s.cs.newRequest("archiveEvents", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ArchiveEventsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ArchiveEventsResponse struct {
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success string `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type DeleteEventsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *DeleteEventsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["enddate"]; found {
|
||||
u.Set("enddate", v.(string))
|
||||
}
|
||||
if v, found := p.p["ids"]; found {
|
||||
vv := strings.Join(v.([]string), ",")
|
||||
u.Set("ids", vv)
|
||||
}
|
||||
if v, found := p.p["startdate"]; found {
|
||||
u.Set("startdate", v.(string))
|
||||
}
|
||||
if v, found := p.p["type"]; found {
|
||||
u.Set("type", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *DeleteEventsParams) SetEnddate(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["enddate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *DeleteEventsParams) SetIds(v []string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["ids"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *DeleteEventsParams) SetStartdate(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["startdate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *DeleteEventsParams) SetType(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["type"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new DeleteEventsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *EventService) NewDeleteEventsParams() *DeleteEventsParams {
|
||||
p := &DeleteEventsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Delete one or more events.
|
||||
func (s *EventService) DeleteEvents(p *DeleteEventsParams) (*DeleteEventsResponse, error) {
|
||||
resp, err := s.cs.newRequest("deleteEvents", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r DeleteEventsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type DeleteEventsResponse struct {
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success string `json:"success,omitempty"`
|
||||
}
|
2587
vendor/github.com/xanzy/go-cloudstack/cloudstack/FirewallService.go
generated
vendored
Normal file
2587
vendor/github.com/xanzy/go-cloudstack/cloudstack/FirewallService.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1046
vendor/github.com/xanzy/go-cloudstack/cloudstack/GuestOSService.go
generated
vendored
Normal file
1046
vendor/github.com/xanzy/go-cloudstack/cloudstack/GuestOSService.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
299
vendor/github.com/xanzy/go-cloudstack/cloudstack/HypervisorService.go
generated
vendored
Normal file
299
vendor/github.com/xanzy/go-cloudstack/cloudstack/HypervisorService.go
generated
vendored
Normal file
|
@ -0,0 +1,299 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type ListHypervisorsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListHypervisorsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["zoneid"]; found {
|
||||
u.Set("zoneid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListHypervisorsParams) SetZoneid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["zoneid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListHypervisorsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *HypervisorService) NewListHypervisorsParams() *ListHypervisorsParams {
|
||||
p := &ListHypervisorsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// List hypervisors
|
||||
func (s *HypervisorService) ListHypervisors(p *ListHypervisorsParams) (*ListHypervisorsResponse, error) {
|
||||
resp, err := s.cs.newRequest("listHypervisors", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListHypervisorsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListHypervisorsResponse struct {
|
||||
Count int `json:"count"`
|
||||
Hypervisors []*Hypervisor `json:"hypervisor"`
|
||||
}
|
||||
|
||||
type Hypervisor struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
}
|
||||
|
||||
type UpdateHypervisorCapabilitiesParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *UpdateHypervisorCapabilitiesParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["maxguestslimit"]; found {
|
||||
vv := strconv.FormatInt(v.(int64), 10)
|
||||
u.Set("maxguestslimit", vv)
|
||||
}
|
||||
if v, found := p.p["securitygroupenabled"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("securitygroupenabled", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *UpdateHypervisorCapabilitiesParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateHypervisorCapabilitiesParams) SetMaxguestslimit(v int64) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["maxguestslimit"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateHypervisorCapabilitiesParams) SetSecuritygroupenabled(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["securitygroupenabled"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new UpdateHypervisorCapabilitiesParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *HypervisorService) NewUpdateHypervisorCapabilitiesParams() *UpdateHypervisorCapabilitiesParams {
|
||||
p := &UpdateHypervisorCapabilitiesParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Updates a hypervisor capabilities.
|
||||
func (s *HypervisorService) UpdateHypervisorCapabilities(p *UpdateHypervisorCapabilitiesParams) (*UpdateHypervisorCapabilitiesResponse, error) {
|
||||
resp, err := s.cs.newRequest("updateHypervisorCapabilities", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r UpdateHypervisorCapabilitiesResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type UpdateHypervisorCapabilitiesResponse struct {
|
||||
Hypervisor string `json:"hypervisor,omitempty"`
|
||||
Hypervisorversion string `json:"hypervisorversion,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Maxdatavolumeslimit int `json:"maxdatavolumeslimit,omitempty"`
|
||||
Maxguestslimit int64 `json:"maxguestslimit,omitempty"`
|
||||
Maxhostspercluster int `json:"maxhostspercluster,omitempty"`
|
||||
Securitygroupenabled bool `json:"securitygroupenabled,omitempty"`
|
||||
Storagemotionenabled bool `json:"storagemotionenabled,omitempty"`
|
||||
}
|
||||
|
||||
type ListHypervisorCapabilitiesParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListHypervisorCapabilitiesParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["hypervisor"]; found {
|
||||
u.Set("hypervisor", v.(string))
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListHypervisorCapabilitiesParams) SetHypervisor(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["hypervisor"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListHypervisorCapabilitiesParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListHypervisorCapabilitiesParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListHypervisorCapabilitiesParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListHypervisorCapabilitiesParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListHypervisorCapabilitiesParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *HypervisorService) NewListHypervisorCapabilitiesParams() *ListHypervisorCapabilitiesParams {
|
||||
p := &ListHypervisorCapabilitiesParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *HypervisorService) GetHypervisorCapabilityByID(id string, opts ...OptionFunc) (*HypervisorCapability, int, error) {
|
||||
p := &ListHypervisorCapabilitiesParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["id"] = id
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return nil, -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListHypervisorCapabilities(p)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), fmt.Sprintf(
|
||||
"Invalid parameter id value=%s due to incorrect long value format, "+
|
||||
"or entity does not exist", id)) {
|
||||
return nil, 0, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
return nil, -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return nil, l.Count, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.HypervisorCapabilities[0], l.Count, nil
|
||||
}
|
||||
return nil, l.Count, fmt.Errorf("There is more then one result for HypervisorCapability UUID: %s!", id)
|
||||
}
|
||||
|
||||
// Lists all hypervisor capabilities.
|
||||
func (s *HypervisorService) ListHypervisorCapabilities(p *ListHypervisorCapabilitiesParams) (*ListHypervisorCapabilitiesResponse, error) {
|
||||
resp, err := s.cs.newRequest("listHypervisorCapabilities", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListHypervisorCapabilitiesResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListHypervisorCapabilitiesResponse struct {
|
||||
Count int `json:"count"`
|
||||
HypervisorCapabilities []*HypervisorCapability `json:"hypervisorcapability"`
|
||||
}
|
||||
|
||||
type HypervisorCapability struct {
|
||||
Hypervisor string `json:"hypervisor,omitempty"`
|
||||
Hypervisorversion string `json:"hypervisorversion,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Maxdatavolumeslimit int `json:"maxdatavolumeslimit,omitempty"`
|
||||
Maxguestslimit int64 `json:"maxguestslimit,omitempty"`
|
||||
Maxhostspercluster int `json:"maxhostspercluster,omitempty"`
|
||||
Securitygroupenabled bool `json:"securitygroupenabled,omitempty"`
|
||||
Storagemotionenabled bool `json:"storagemotionenabled,omitempty"`
|
||||
}
|
File diff suppressed because it is too large
Load Diff
1062
vendor/github.com/xanzy/go-cloudstack/cloudstack/ImageStoreService.go
generated
vendored
Normal file
1062
vendor/github.com/xanzy/go-cloudstack/cloudstack/ImageStoreService.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1004
vendor/github.com/xanzy/go-cloudstack/cloudstack/InternalLBService.go
generated
vendored
Normal file
1004
vendor/github.com/xanzy/go-cloudstack/cloudstack/InternalLBService.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,239 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type LdapCreateAccountParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *LdapCreateAccountParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["accountdetails"]; found {
|
||||
i := 0
|
||||
for k, vv := range v.(map[string]string) {
|
||||
u.Set(fmt.Sprintf("accountdetails[%d].key", i), k)
|
||||
u.Set(fmt.Sprintf("accountdetails[%d].value", i), vv)
|
||||
i++
|
||||
}
|
||||
}
|
||||
if v, found := p.p["accountid"]; found {
|
||||
u.Set("accountid", v.(string))
|
||||
}
|
||||
if v, found := p.p["accounttype"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("accounttype", vv)
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["networkdomain"]; found {
|
||||
u.Set("networkdomain", v.(string))
|
||||
}
|
||||
if v, found := p.p["timezone"]; found {
|
||||
u.Set("timezone", v.(string))
|
||||
}
|
||||
if v, found := p.p["userid"]; found {
|
||||
u.Set("userid", v.(string))
|
||||
}
|
||||
if v, found := p.p["username"]; found {
|
||||
u.Set("username", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *LdapCreateAccountParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *LdapCreateAccountParams) SetAccountdetails(v map[string]string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["accountdetails"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *LdapCreateAccountParams) SetAccountid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["accountid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *LdapCreateAccountParams) SetAccounttype(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["accounttype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *LdapCreateAccountParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *LdapCreateAccountParams) SetNetworkdomain(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["networkdomain"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *LdapCreateAccountParams) SetTimezone(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["timezone"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *LdapCreateAccountParams) SetUserid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["userid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *LdapCreateAccountParams) SetUsername(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["username"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new LdapCreateAccountParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *LDAPService) NewLdapCreateAccountParams(accounttype int, username string) *LdapCreateAccountParams {
|
||||
p := &LdapCreateAccountParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["accounttype"] = accounttype
|
||||
p.p["username"] = username
|
||||
return p
|
||||
}
|
||||
|
||||
// Creates an account from an LDAP user
|
||||
func (s *LDAPService) LdapCreateAccount(p *LdapCreateAccountParams) (*LdapCreateAccountResponse, error) {
|
||||
resp, err := s.cs.newRequest("ldapCreateAccount", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r LdapCreateAccountResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type LdapCreateAccountResponse struct {
|
||||
Accountdetails map[string]string `json:"accountdetails,omitempty"`
|
||||
Accounttype int `json:"accounttype,omitempty"`
|
||||
Cpuavailable string `json:"cpuavailable,omitempty"`
|
||||
Cpulimit string `json:"cpulimit,omitempty"`
|
||||
Cputotal int64 `json:"cputotal,omitempty"`
|
||||
Defaultzoneid string `json:"defaultzoneid,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Groups []string `json:"groups,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ipavailable string `json:"ipavailable,omitempty"`
|
||||
Iplimit string `json:"iplimit,omitempty"`
|
||||
Iptotal int64 `json:"iptotal,omitempty"`
|
||||
Iscleanuprequired bool `json:"iscleanuprequired,omitempty"`
|
||||
Isdefault bool `json:"isdefault,omitempty"`
|
||||
Memoryavailable string `json:"memoryavailable,omitempty"`
|
||||
Memorylimit string `json:"memorylimit,omitempty"`
|
||||
Memorytotal int64 `json:"memorytotal,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Networkavailable string `json:"networkavailable,omitempty"`
|
||||
Networkdomain string `json:"networkdomain,omitempty"`
|
||||
Networklimit string `json:"networklimit,omitempty"`
|
||||
Networktotal int64 `json:"networktotal,omitempty"`
|
||||
Primarystorageavailable string `json:"primarystorageavailable,omitempty"`
|
||||
Primarystoragelimit string `json:"primarystoragelimit,omitempty"`
|
||||
Primarystoragetotal int64 `json:"primarystoragetotal,omitempty"`
|
||||
Projectavailable string `json:"projectavailable,omitempty"`
|
||||
Projectlimit string `json:"projectlimit,omitempty"`
|
||||
Projecttotal int64 `json:"projecttotal,omitempty"`
|
||||
Receivedbytes int64 `json:"receivedbytes,omitempty"`
|
||||
Secondarystorageavailable string `json:"secondarystorageavailable,omitempty"`
|
||||
Secondarystoragelimit string `json:"secondarystoragelimit,omitempty"`
|
||||
Secondarystoragetotal int64 `json:"secondarystoragetotal,omitempty"`
|
||||
Sentbytes int64 `json:"sentbytes,omitempty"`
|
||||
Snapshotavailable string `json:"snapshotavailable,omitempty"`
|
||||
Snapshotlimit string `json:"snapshotlimit,omitempty"`
|
||||
Snapshottotal int64 `json:"snapshottotal,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Templateavailable string `json:"templateavailable,omitempty"`
|
||||
Templatelimit string `json:"templatelimit,omitempty"`
|
||||
Templatetotal int64 `json:"templatetotal,omitempty"`
|
||||
User []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Accountid string `json:"accountid,omitempty"`
|
||||
Accounttype int `json:"accounttype,omitempty"`
|
||||
Apikey string `json:"apikey,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Email string `json:"email,omitempty"`
|
||||
Firstname string `json:"firstname,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Iscallerchilddomain bool `json:"iscallerchilddomain,omitempty"`
|
||||
Isdefault bool `json:"isdefault,omitempty"`
|
||||
Lastname string `json:"lastname,omitempty"`
|
||||
Secretkey string `json:"secretkey,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Timezone string `json:"timezone,omitempty"`
|
||||
Username string `json:"username,omitempty"`
|
||||
} `json:"user,omitempty"`
|
||||
Vmavailable string `json:"vmavailable,omitempty"`
|
||||
Vmlimit string `json:"vmlimit,omitempty"`
|
||||
Vmrunning int `json:"vmrunning,omitempty"`
|
||||
Vmstopped int `json:"vmstopped,omitempty"`
|
||||
Vmtotal int64 `json:"vmtotal,omitempty"`
|
||||
Volumeavailable string `json:"volumeavailable,omitempty"`
|
||||
Volumelimit string `json:"volumelimit,omitempty"`
|
||||
Volumetotal int64 `json:"volumetotal,omitempty"`
|
||||
Vpcavailable string `json:"vpcavailable,omitempty"`
|
||||
Vpclimit string `json:"vpclimit,omitempty"`
|
||||
Vpctotal int64 `json:"vpctotal,omitempty"`
|
||||
}
|
|
@ -0,0 +1,201 @@
|
|||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "{}"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright {yyyy} {name of copyright owner}
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
|
@ -0,0 +1,475 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/url"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type UpdateResourceLimitParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *UpdateResourceLimitParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["max"]; found {
|
||||
vv := strconv.FormatInt(v.(int64), 10)
|
||||
u.Set("max", vv)
|
||||
}
|
||||
if v, found := p.p["projectid"]; found {
|
||||
u.Set("projectid", v.(string))
|
||||
}
|
||||
if v, found := p.p["resourcetype"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("resourcetype", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *UpdateResourceLimitParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateResourceLimitParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateResourceLimitParams) SetMax(v int64) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["max"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateResourceLimitParams) SetProjectid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["projectid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateResourceLimitParams) SetResourcetype(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["resourcetype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new UpdateResourceLimitParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *LimitService) NewUpdateResourceLimitParams(resourcetype int) *UpdateResourceLimitParams {
|
||||
p := &UpdateResourceLimitParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["resourcetype"] = resourcetype
|
||||
return p
|
||||
}
|
||||
|
||||
// Updates resource limits for an account or domain.
|
||||
func (s *LimitService) UpdateResourceLimit(p *UpdateResourceLimitParams) (*UpdateResourceLimitResponse, error) {
|
||||
resp, err := s.cs.newRequest("updateResourceLimit", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r UpdateResourceLimitResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type UpdateResourceLimitResponse struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Max int64 `json:"max,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Resourcetype string `json:"resourcetype,omitempty"`
|
||||
}
|
||||
|
||||
type UpdateResourceCountParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *UpdateResourceCountParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["projectid"]; found {
|
||||
u.Set("projectid", v.(string))
|
||||
}
|
||||
if v, found := p.p["resourcetype"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("resourcetype", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *UpdateResourceCountParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateResourceCountParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateResourceCountParams) SetProjectid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["projectid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateResourceCountParams) SetResourcetype(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["resourcetype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new UpdateResourceCountParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *LimitService) NewUpdateResourceCountParams(domainid string) *UpdateResourceCountParams {
|
||||
p := &UpdateResourceCountParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["domainid"] = domainid
|
||||
return p
|
||||
}
|
||||
|
||||
// Recalculate and update resource count for an account or domain.
|
||||
func (s *LimitService) UpdateResourceCount(p *UpdateResourceCountParams) (*UpdateResourceCountResponse, error) {
|
||||
resp, err := s.cs.newRequest("updateResourceCount", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r UpdateResourceCountResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type UpdateResourceCountResponse struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Resourcecount int64 `json:"resourcecount,omitempty"`
|
||||
Resourcetype string `json:"resourcetype,omitempty"`
|
||||
}
|
||||
|
||||
type ListResourceLimitsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListResourceLimitsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
vv := strconv.FormatInt(v.(int64), 10)
|
||||
u.Set("id", vv)
|
||||
}
|
||||
if v, found := p.p["isrecursive"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("isrecursive", vv)
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["listall"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("listall", vv)
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["projectid"]; found {
|
||||
u.Set("projectid", v.(string))
|
||||
}
|
||||
if v, found := p.p["resourcetype"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("resourcetype", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListResourceLimitsParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListResourceLimitsParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListResourceLimitsParams) SetId(v int64) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListResourceLimitsParams) SetIsrecursive(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["isrecursive"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListResourceLimitsParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListResourceLimitsParams) SetListall(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["listall"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListResourceLimitsParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListResourceLimitsParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListResourceLimitsParams) SetProjectid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["projectid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListResourceLimitsParams) SetResourcetype(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["resourcetype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListResourceLimitsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *LimitService) NewListResourceLimitsParams() *ListResourceLimitsParams {
|
||||
p := &ListResourceLimitsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Lists resource limits.
|
||||
func (s *LimitService) ListResourceLimits(p *ListResourceLimitsParams) (*ListResourceLimitsResponse, error) {
|
||||
resp, err := s.cs.newRequest("listResourceLimits", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListResourceLimitsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListResourceLimitsResponse struct {
|
||||
Count int `json:"count"`
|
||||
ResourceLimits []*ResourceLimit `json:"resourcelimit"`
|
||||
}
|
||||
|
||||
type ResourceLimit struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Max int64 `json:"max,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Resourcetype string `json:"resourcetype,omitempty"`
|
||||
}
|
||||
|
||||
type GetApiLimitParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *GetApiLimitParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
// You should always use this function to get a new GetApiLimitParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *LimitService) NewGetApiLimitParams() *GetApiLimitParams {
|
||||
p := &GetApiLimitParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Get API limit count for the caller
|
||||
func (s *LimitService) GetApiLimit(p *GetApiLimitParams) (*GetApiLimitResponse, error) {
|
||||
resp, err := s.cs.newRequest("getApiLimit", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r GetApiLimitResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type GetApiLimitResponse struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Accountid string `json:"accountid,omitempty"`
|
||||
ApiAllowed int `json:"apiAllowed,omitempty"`
|
||||
ApiIssued int `json:"apiIssued,omitempty"`
|
||||
ExpireAfter int64 `json:"expireAfter,omitempty"`
|
||||
}
|
||||
|
||||
type ResetApiLimitParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ResetApiLimitParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ResetApiLimitParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ResetApiLimitParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *LimitService) NewResetApiLimitParams() *ResetApiLimitParams {
|
||||
p := &ResetApiLimitParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Reset api count
|
||||
func (s *LimitService) ResetApiLimit(p *ResetApiLimitParams) (*ResetApiLimitResponse, error) {
|
||||
resp, err := s.cs.newRequest("resetApiLimit", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ResetApiLimitResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ResetApiLimitResponse struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Accountid string `json:"accountid,omitempty"`
|
||||
ApiAllowed int `json:"apiAllowed,omitempty"`
|
||||
ApiIssued int `json:"apiIssued,omitempty"`
|
||||
ExpireAfter int64 `json:"expireAfter,omitempty"`
|
||||
}
|
4745
vendor/github.com/xanzy/go-cloudstack/cloudstack/LoadBalancerService.go
generated
vendored
Normal file
4745
vendor/github.com/xanzy/go-cloudstack/cloudstack/LoadBalancerService.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,631 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type EnableStaticNatParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *EnableStaticNatParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["ipaddressid"]; found {
|
||||
u.Set("ipaddressid", v.(string))
|
||||
}
|
||||
if v, found := p.p["networkid"]; found {
|
||||
u.Set("networkid", v.(string))
|
||||
}
|
||||
if v, found := p.p["virtualmachineid"]; found {
|
||||
u.Set("virtualmachineid", v.(string))
|
||||
}
|
||||
if v, found := p.p["vmguestip"]; found {
|
||||
u.Set("vmguestip", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *EnableStaticNatParams) SetIpaddressid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["ipaddressid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *EnableStaticNatParams) SetNetworkid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["networkid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *EnableStaticNatParams) SetVirtualmachineid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["virtualmachineid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *EnableStaticNatParams) SetVmguestip(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["vmguestip"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new EnableStaticNatParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *NATService) NewEnableStaticNatParams(ipaddressid string, virtualmachineid string) *EnableStaticNatParams {
|
||||
p := &EnableStaticNatParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["ipaddressid"] = ipaddressid
|
||||
p.p["virtualmachineid"] = virtualmachineid
|
||||
return p
|
||||
}
|
||||
|
||||
// Enables static NAT for given IP address
|
||||
func (s *NATService) EnableStaticNat(p *EnableStaticNatParams) (*EnableStaticNatResponse, error) {
|
||||
resp, err := s.cs.newRequest("enableStaticNat", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r EnableStaticNatResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type EnableStaticNatResponse struct {
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success string `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type CreateIpForwardingRuleParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *CreateIpForwardingRuleParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["cidrlist"]; found {
|
||||
vv := strings.Join(v.([]string), ",")
|
||||
u.Set("cidrlist", vv)
|
||||
}
|
||||
if v, found := p.p["endport"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("endport", vv)
|
||||
}
|
||||
if v, found := p.p["ipaddressid"]; found {
|
||||
u.Set("ipaddressid", v.(string))
|
||||
}
|
||||
if v, found := p.p["openfirewall"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("openfirewall", vv)
|
||||
}
|
||||
if v, found := p.p["protocol"]; found {
|
||||
u.Set("protocol", v.(string))
|
||||
}
|
||||
if v, found := p.p["startport"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("startport", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *CreateIpForwardingRuleParams) SetCidrlist(v []string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["cidrlist"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateIpForwardingRuleParams) SetEndport(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["endport"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateIpForwardingRuleParams) SetIpaddressid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["ipaddressid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateIpForwardingRuleParams) SetOpenfirewall(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["openfirewall"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateIpForwardingRuleParams) SetProtocol(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["protocol"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateIpForwardingRuleParams) SetStartport(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["startport"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new CreateIpForwardingRuleParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *NATService) NewCreateIpForwardingRuleParams(ipaddressid string, protocol string, startport int) *CreateIpForwardingRuleParams {
|
||||
p := &CreateIpForwardingRuleParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["ipaddressid"] = ipaddressid
|
||||
p.p["protocol"] = protocol
|
||||
p.p["startport"] = startport
|
||||
return p
|
||||
}
|
||||
|
||||
// Creates an IP forwarding rule
|
||||
func (s *NATService) CreateIpForwardingRule(p *CreateIpForwardingRuleParams) (*CreateIpForwardingRuleResponse, error) {
|
||||
resp, err := s.cs.newRequest("createIpForwardingRule", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r CreateIpForwardingRuleResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
b, err = getRawValue(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type CreateIpForwardingRuleResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Cidrlist string `json:"cidrlist,omitempty"`
|
||||
Fordisplay bool `json:"fordisplay,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ipaddress string `json:"ipaddress,omitempty"`
|
||||
Ipaddressid string `json:"ipaddressid,omitempty"`
|
||||
Networkid string `json:"networkid,omitempty"`
|
||||
Privateendport string `json:"privateendport,omitempty"`
|
||||
Privateport string `json:"privateport,omitempty"`
|
||||
Protocol string `json:"protocol,omitempty"`
|
||||
Publicendport string `json:"publicendport,omitempty"`
|
||||
Publicport string `json:"publicport,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Tags []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Customer string `json:"customer,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Key string `json:"key,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Resourceid string `json:"resourceid,omitempty"`
|
||||
Resourcetype string `json:"resourcetype,omitempty"`
|
||||
Value string `json:"value,omitempty"`
|
||||
} `json:"tags,omitempty"`
|
||||
Virtualmachinedisplayname string `json:"virtualmachinedisplayname,omitempty"`
|
||||
Virtualmachineid string `json:"virtualmachineid,omitempty"`
|
||||
Virtualmachinename string `json:"virtualmachinename,omitempty"`
|
||||
Vmguestip string `json:"vmguestip,omitempty"`
|
||||
}
|
||||
|
||||
type DeleteIpForwardingRuleParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *DeleteIpForwardingRuleParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *DeleteIpForwardingRuleParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new DeleteIpForwardingRuleParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *NATService) NewDeleteIpForwardingRuleParams(id string) *DeleteIpForwardingRuleParams {
|
||||
p := &DeleteIpForwardingRuleParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Deletes an IP forwarding rule
|
||||
func (s *NATService) DeleteIpForwardingRule(p *DeleteIpForwardingRuleParams) (*DeleteIpForwardingRuleResponse, error) {
|
||||
resp, err := s.cs.newRequest("deleteIpForwardingRule", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r DeleteIpForwardingRuleResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type DeleteIpForwardingRuleResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success bool `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type ListIpForwardingRulesParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListIpForwardingRulesParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["ipaddressid"]; found {
|
||||
u.Set("ipaddressid", v.(string))
|
||||
}
|
||||
if v, found := p.p["isrecursive"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("isrecursive", vv)
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["listall"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("listall", vv)
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["projectid"]; found {
|
||||
u.Set("projectid", v.(string))
|
||||
}
|
||||
if v, found := p.p["virtualmachineid"]; found {
|
||||
u.Set("virtualmachineid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListIpForwardingRulesParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListIpForwardingRulesParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListIpForwardingRulesParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListIpForwardingRulesParams) SetIpaddressid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["ipaddressid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListIpForwardingRulesParams) SetIsrecursive(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["isrecursive"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListIpForwardingRulesParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListIpForwardingRulesParams) SetListall(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["listall"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListIpForwardingRulesParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListIpForwardingRulesParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListIpForwardingRulesParams) SetProjectid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["projectid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListIpForwardingRulesParams) SetVirtualmachineid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["virtualmachineid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListIpForwardingRulesParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *NATService) NewListIpForwardingRulesParams() *ListIpForwardingRulesParams {
|
||||
p := &ListIpForwardingRulesParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *NATService) GetIpForwardingRuleByID(id string, opts ...OptionFunc) (*IpForwardingRule, int, error) {
|
||||
p := &ListIpForwardingRulesParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["id"] = id
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return nil, -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListIpForwardingRules(p)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), fmt.Sprintf(
|
||||
"Invalid parameter id value=%s due to incorrect long value format, "+
|
||||
"or entity does not exist", id)) {
|
||||
return nil, 0, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
return nil, -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return nil, l.Count, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.IpForwardingRules[0], l.Count, nil
|
||||
}
|
||||
return nil, l.Count, fmt.Errorf("There is more then one result for IpForwardingRule UUID: %s!", id)
|
||||
}
|
||||
|
||||
// List the IP forwarding rules
|
||||
func (s *NATService) ListIpForwardingRules(p *ListIpForwardingRulesParams) (*ListIpForwardingRulesResponse, error) {
|
||||
resp, err := s.cs.newRequest("listIpForwardingRules", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListIpForwardingRulesResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListIpForwardingRulesResponse struct {
|
||||
Count int `json:"count"`
|
||||
IpForwardingRules []*IpForwardingRule `json:"ipforwardingrule"`
|
||||
}
|
||||
|
||||
type IpForwardingRule struct {
|
||||
Cidrlist string `json:"cidrlist,omitempty"`
|
||||
Fordisplay bool `json:"fordisplay,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ipaddress string `json:"ipaddress,omitempty"`
|
||||
Ipaddressid string `json:"ipaddressid,omitempty"`
|
||||
Networkid string `json:"networkid,omitempty"`
|
||||
Privateendport string `json:"privateendport,omitempty"`
|
||||
Privateport string `json:"privateport,omitempty"`
|
||||
Protocol string `json:"protocol,omitempty"`
|
||||
Publicendport string `json:"publicendport,omitempty"`
|
||||
Publicport string `json:"publicport,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Tags []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Customer string `json:"customer,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Key string `json:"key,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Resourceid string `json:"resourceid,omitempty"`
|
||||
Resourcetype string `json:"resourcetype,omitempty"`
|
||||
Value string `json:"value,omitempty"`
|
||||
} `json:"tags,omitempty"`
|
||||
Virtualmachinedisplayname string `json:"virtualmachinedisplayname,omitempty"`
|
||||
Virtualmachineid string `json:"virtualmachineid,omitempty"`
|
||||
Virtualmachinename string `json:"virtualmachinename,omitempty"`
|
||||
Vmguestip string `json:"vmguestip,omitempty"`
|
||||
}
|
||||
|
||||
type DisableStaticNatParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *DisableStaticNatParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["ipaddressid"]; found {
|
||||
u.Set("ipaddressid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *DisableStaticNatParams) SetIpaddressid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["ipaddressid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new DisableStaticNatParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *NATService) NewDisableStaticNatParams(ipaddressid string) *DisableStaticNatParams {
|
||||
p := &DisableStaticNatParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["ipaddressid"] = ipaddressid
|
||||
return p
|
||||
}
|
||||
|
||||
// Disables static rule for given IP address
|
||||
func (s *NATService) DisableStaticNat(p *DisableStaticNatParams) (*DisableStaticNatResponse, error) {
|
||||
resp, err := s.cs.newRequest("disableStaticNat", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r DisableStaticNatResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type DisableStaticNatResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success bool `json:"success,omitempty"`
|
||||
}
|
1458
vendor/github.com/xanzy/go-cloudstack/cloudstack/NetworkACLService.go
generated
vendored
Normal file
1458
vendor/github.com/xanzy/go-cloudstack/cloudstack/NetworkACLService.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
245
vendor/github.com/xanzy/go-cloudstack/cloudstack/NetworkDeviceService.go
generated
vendored
Normal file
245
vendor/github.com/xanzy/go-cloudstack/cloudstack/NetworkDeviceService.go
generated
vendored
Normal file
|
@ -0,0 +1,245 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type AddNetworkDeviceParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *AddNetworkDeviceParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["networkdeviceparameterlist"]; found {
|
||||
i := 0
|
||||
for k, vv := range v.(map[string]string) {
|
||||
u.Set(fmt.Sprintf("networkdeviceparameterlist[%d].key", i), k)
|
||||
u.Set(fmt.Sprintf("networkdeviceparameterlist[%d].value", i), vv)
|
||||
i++
|
||||
}
|
||||
}
|
||||
if v, found := p.p["networkdevicetype"]; found {
|
||||
u.Set("networkdevicetype", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *AddNetworkDeviceParams) SetNetworkdeviceparameterlist(v map[string]string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["networkdeviceparameterlist"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddNetworkDeviceParams) SetNetworkdevicetype(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["networkdevicetype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new AddNetworkDeviceParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *NetworkDeviceService) NewAddNetworkDeviceParams() *AddNetworkDeviceParams {
|
||||
p := &AddNetworkDeviceParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Adds a network device of one of the following types: ExternalDhcp, ExternalFirewall, ExternalLoadBalancer, PxeServer
|
||||
func (s *NetworkDeviceService) AddNetworkDevice(p *AddNetworkDeviceParams) (*AddNetworkDeviceResponse, error) {
|
||||
resp, err := s.cs.newRequest("addNetworkDevice", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r AddNetworkDeviceResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type AddNetworkDeviceResponse struct {
|
||||
Id string `json:"id,omitempty"`
|
||||
}
|
||||
|
||||
type ListNetworkDeviceParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListNetworkDeviceParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["networkdeviceparameterlist"]; found {
|
||||
i := 0
|
||||
for k, vv := range v.(map[string]string) {
|
||||
u.Set(fmt.Sprintf("networkdeviceparameterlist[%d].key", i), k)
|
||||
u.Set(fmt.Sprintf("networkdeviceparameterlist[%d].value", i), vv)
|
||||
i++
|
||||
}
|
||||
}
|
||||
if v, found := p.p["networkdevicetype"]; found {
|
||||
u.Set("networkdevicetype", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListNetworkDeviceParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNetworkDeviceParams) SetNetworkdeviceparameterlist(v map[string]string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["networkdeviceparameterlist"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNetworkDeviceParams) SetNetworkdevicetype(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["networkdevicetype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNetworkDeviceParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNetworkDeviceParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListNetworkDeviceParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *NetworkDeviceService) NewListNetworkDeviceParams() *ListNetworkDeviceParams {
|
||||
p := &ListNetworkDeviceParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// List network devices
|
||||
func (s *NetworkDeviceService) ListNetworkDevice(p *ListNetworkDeviceParams) (*ListNetworkDeviceResponse, error) {
|
||||
resp, err := s.cs.newRequest("listNetworkDevice", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListNetworkDeviceResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListNetworkDeviceResponse struct {
|
||||
Count int `json:"count"`
|
||||
NetworkDevice []*NetworkDevice `json:"networkdevice"`
|
||||
}
|
||||
|
||||
type NetworkDevice struct {
|
||||
Id string `json:"id,omitempty"`
|
||||
}
|
||||
|
||||
type DeleteNetworkDeviceParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *DeleteNetworkDeviceParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *DeleteNetworkDeviceParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new DeleteNetworkDeviceParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *NetworkDeviceService) NewDeleteNetworkDeviceParams(id string) *DeleteNetworkDeviceParams {
|
||||
p := &DeleteNetworkDeviceParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Deletes network device.
|
||||
func (s *NetworkDeviceService) DeleteNetworkDevice(p *DeleteNetworkDeviceParams) (*DeleteNetworkDeviceResponse, error) {
|
||||
resp, err := s.cs.newRequest("deleteNetworkDevice", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r DeleteNetworkDeviceResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type DeleteNetworkDeviceResponse struct {
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success string `json:"success,omitempty"`
|
||||
}
|
951
vendor/github.com/xanzy/go-cloudstack/cloudstack/NetworkOfferingService.go
generated
vendored
Normal file
951
vendor/github.com/xanzy/go-cloudstack/cloudstack/NetworkOfferingService.go
generated
vendored
Normal file
|
@ -0,0 +1,951 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type CreateNetworkOfferingParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *CreateNetworkOfferingParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["availability"]; found {
|
||||
u.Set("availability", v.(string))
|
||||
}
|
||||
if v, found := p.p["conservemode"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("conservemode", vv)
|
||||
}
|
||||
if v, found := p.p["details"]; found {
|
||||
i := 0
|
||||
for k, vv := range v.(map[string]string) {
|
||||
u.Set(fmt.Sprintf("details[%d].key", i), k)
|
||||
u.Set(fmt.Sprintf("details[%d].value", i), vv)
|
||||
i++
|
||||
}
|
||||
}
|
||||
if v, found := p.p["displaytext"]; found {
|
||||
u.Set("displaytext", v.(string))
|
||||
}
|
||||
if v, found := p.p["egressdefaultpolicy"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("egressdefaultpolicy", vv)
|
||||
}
|
||||
if v, found := p.p["guestiptype"]; found {
|
||||
u.Set("guestiptype", v.(string))
|
||||
}
|
||||
if v, found := p.p["ispersistent"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("ispersistent", vv)
|
||||
}
|
||||
if v, found := p.p["keepaliveenabled"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("keepaliveenabled", vv)
|
||||
}
|
||||
if v, found := p.p["maxconnections"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("maxconnections", vv)
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["networkrate"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("networkrate", vv)
|
||||
}
|
||||
if v, found := p.p["servicecapabilitylist"]; found {
|
||||
i := 0
|
||||
for k, vv := range v.(map[string]string) {
|
||||
u.Set(fmt.Sprintf("servicecapabilitylist[%d].key", i), k)
|
||||
u.Set(fmt.Sprintf("servicecapabilitylist[%d].value", i), vv)
|
||||
i++
|
||||
}
|
||||
}
|
||||
if v, found := p.p["serviceofferingid"]; found {
|
||||
u.Set("serviceofferingid", v.(string))
|
||||
}
|
||||
if v, found := p.p["serviceproviderlist"]; found {
|
||||
i := 0
|
||||
for k, vv := range v.(map[string]string) {
|
||||
u.Set(fmt.Sprintf("serviceproviderlist[%d].service", i), k)
|
||||
u.Set(fmt.Sprintf("serviceproviderlist[%d].provider", i), vv)
|
||||
i++
|
||||
}
|
||||
}
|
||||
if v, found := p.p["specifyipranges"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("specifyipranges", vv)
|
||||
}
|
||||
if v, found := p.p["specifyvlan"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("specifyvlan", vv)
|
||||
}
|
||||
if v, found := p.p["supportedservices"]; found {
|
||||
vv := strings.Join(v.([]string), ",")
|
||||
u.Set("supportedservices", vv)
|
||||
}
|
||||
if v, found := p.p["tags"]; found {
|
||||
u.Set("tags", v.(string))
|
||||
}
|
||||
if v, found := p.p["traffictype"]; found {
|
||||
u.Set("traffictype", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *CreateNetworkOfferingParams) SetAvailability(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["availability"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateNetworkOfferingParams) SetConservemode(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["conservemode"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateNetworkOfferingParams) SetDetails(v map[string]string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["details"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateNetworkOfferingParams) SetDisplaytext(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["displaytext"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateNetworkOfferingParams) SetEgressdefaultpolicy(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["egressdefaultpolicy"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateNetworkOfferingParams) SetGuestiptype(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["guestiptype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateNetworkOfferingParams) SetIspersistent(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["ispersistent"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateNetworkOfferingParams) SetKeepaliveenabled(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keepaliveenabled"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateNetworkOfferingParams) SetMaxconnections(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["maxconnections"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateNetworkOfferingParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateNetworkOfferingParams) SetNetworkrate(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["networkrate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateNetworkOfferingParams) SetServicecapabilitylist(v map[string]string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["servicecapabilitylist"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateNetworkOfferingParams) SetServiceofferingid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["serviceofferingid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateNetworkOfferingParams) SetServiceproviderlist(v map[string]string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["serviceproviderlist"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateNetworkOfferingParams) SetSpecifyipranges(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["specifyipranges"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateNetworkOfferingParams) SetSpecifyvlan(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["specifyvlan"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateNetworkOfferingParams) SetSupportedservices(v []string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["supportedservices"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateNetworkOfferingParams) SetTags(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["tags"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateNetworkOfferingParams) SetTraffictype(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["traffictype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new CreateNetworkOfferingParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *NetworkOfferingService) NewCreateNetworkOfferingParams(displaytext string, guestiptype string, name string, supportedservices []string, traffictype string) *CreateNetworkOfferingParams {
|
||||
p := &CreateNetworkOfferingParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["displaytext"] = displaytext
|
||||
p.p["guestiptype"] = guestiptype
|
||||
p.p["name"] = name
|
||||
p.p["supportedservices"] = supportedservices
|
||||
p.p["traffictype"] = traffictype
|
||||
return p
|
||||
}
|
||||
|
||||
// Creates a network offering.
|
||||
func (s *NetworkOfferingService) CreateNetworkOffering(p *CreateNetworkOfferingParams) (*CreateNetworkOfferingResponse, error) {
|
||||
resp, err := s.cs.newRequest("createNetworkOffering", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if resp, err = getRawValue(resp); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r CreateNetworkOfferingResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type CreateNetworkOfferingResponse struct {
|
||||
Availability string `json:"availability,omitempty"`
|
||||
Conservemode bool `json:"conservemode,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
Details map[string]string `json:"details,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Egressdefaultpolicy bool `json:"egressdefaultpolicy,omitempty"`
|
||||
Forvpc bool `json:"forvpc,omitempty"`
|
||||
Guestiptype string `json:"guestiptype,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Isdefault bool `json:"isdefault,omitempty"`
|
||||
Ispersistent bool `json:"ispersistent,omitempty"`
|
||||
Maxconnections int `json:"maxconnections,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Networkrate int `json:"networkrate,omitempty"`
|
||||
Service []struct {
|
||||
Capability []struct {
|
||||
Canchooseservicecapability bool `json:"canchooseservicecapability,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Value string `json:"value,omitempty"`
|
||||
} `json:"capability,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Provider []struct {
|
||||
Canenableindividualservice bool `json:"canenableindividualservice,omitempty"`
|
||||
Destinationphysicalnetworkid string `json:"destinationphysicalnetworkid,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
|
||||
Servicelist []string `json:"servicelist,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
} `json:"provider,omitempty"`
|
||||
} `json:"service,omitempty"`
|
||||
Serviceofferingid string `json:"serviceofferingid,omitempty"`
|
||||
Specifyipranges bool `json:"specifyipranges,omitempty"`
|
||||
Specifyvlan bool `json:"specifyvlan,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Supportsstrechedl2subnet bool `json:"supportsstrechedl2subnet,omitempty"`
|
||||
Tags string `json:"tags,omitempty"`
|
||||
Traffictype string `json:"traffictype,omitempty"`
|
||||
}
|
||||
|
||||
type UpdateNetworkOfferingParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *UpdateNetworkOfferingParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["availability"]; found {
|
||||
u.Set("availability", v.(string))
|
||||
}
|
||||
if v, found := p.p["displaytext"]; found {
|
||||
u.Set("displaytext", v.(string))
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["keepaliveenabled"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("keepaliveenabled", vv)
|
||||
}
|
||||
if v, found := p.p["maxconnections"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("maxconnections", vv)
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["sortkey"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("sortkey", vv)
|
||||
}
|
||||
if v, found := p.p["state"]; found {
|
||||
u.Set("state", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *UpdateNetworkOfferingParams) SetAvailability(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["availability"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateNetworkOfferingParams) SetDisplaytext(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["displaytext"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateNetworkOfferingParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateNetworkOfferingParams) SetKeepaliveenabled(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keepaliveenabled"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateNetworkOfferingParams) SetMaxconnections(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["maxconnections"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateNetworkOfferingParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateNetworkOfferingParams) SetSortkey(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["sortkey"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateNetworkOfferingParams) SetState(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["state"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new UpdateNetworkOfferingParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *NetworkOfferingService) NewUpdateNetworkOfferingParams() *UpdateNetworkOfferingParams {
|
||||
p := &UpdateNetworkOfferingParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Updates a network offering.
|
||||
func (s *NetworkOfferingService) UpdateNetworkOffering(p *UpdateNetworkOfferingParams) (*UpdateNetworkOfferingResponse, error) {
|
||||
resp, err := s.cs.newRequest("updateNetworkOffering", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r UpdateNetworkOfferingResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type UpdateNetworkOfferingResponse struct {
|
||||
Availability string `json:"availability,omitempty"`
|
||||
Conservemode bool `json:"conservemode,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
Details map[string]string `json:"details,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Egressdefaultpolicy bool `json:"egressdefaultpolicy,omitempty"`
|
||||
Forvpc bool `json:"forvpc,omitempty"`
|
||||
Guestiptype string `json:"guestiptype,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Isdefault bool `json:"isdefault,omitempty"`
|
||||
Ispersistent bool `json:"ispersistent,omitempty"`
|
||||
Maxconnections int `json:"maxconnections,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Networkrate int `json:"networkrate,omitempty"`
|
||||
Service []struct {
|
||||
Capability []struct {
|
||||
Canchooseservicecapability bool `json:"canchooseservicecapability,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Value string `json:"value,omitempty"`
|
||||
} `json:"capability,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Provider []struct {
|
||||
Canenableindividualservice bool `json:"canenableindividualservice,omitempty"`
|
||||
Destinationphysicalnetworkid string `json:"destinationphysicalnetworkid,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
|
||||
Servicelist []string `json:"servicelist,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
} `json:"provider,omitempty"`
|
||||
} `json:"service,omitempty"`
|
||||
Serviceofferingid string `json:"serviceofferingid,omitempty"`
|
||||
Specifyipranges bool `json:"specifyipranges,omitempty"`
|
||||
Specifyvlan bool `json:"specifyvlan,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Supportsstrechedl2subnet bool `json:"supportsstrechedl2subnet,omitempty"`
|
||||
Tags string `json:"tags,omitempty"`
|
||||
Traffictype string `json:"traffictype,omitempty"`
|
||||
}
|
||||
|
||||
type DeleteNetworkOfferingParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *DeleteNetworkOfferingParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *DeleteNetworkOfferingParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new DeleteNetworkOfferingParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *NetworkOfferingService) NewDeleteNetworkOfferingParams(id string) *DeleteNetworkOfferingParams {
|
||||
p := &DeleteNetworkOfferingParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Deletes a network offering.
|
||||
func (s *NetworkOfferingService) DeleteNetworkOffering(p *DeleteNetworkOfferingParams) (*DeleteNetworkOfferingResponse, error) {
|
||||
resp, err := s.cs.newRequest("deleteNetworkOffering", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r DeleteNetworkOfferingResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type DeleteNetworkOfferingResponse struct {
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success string `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type ListNetworkOfferingsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListNetworkOfferingsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["availability"]; found {
|
||||
u.Set("availability", v.(string))
|
||||
}
|
||||
if v, found := p.p["displaytext"]; found {
|
||||
u.Set("displaytext", v.(string))
|
||||
}
|
||||
if v, found := p.p["forvpc"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("forvpc", vv)
|
||||
}
|
||||
if v, found := p.p["guestiptype"]; found {
|
||||
u.Set("guestiptype", v.(string))
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["isdefault"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("isdefault", vv)
|
||||
}
|
||||
if v, found := p.p["istagged"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("istagged", vv)
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["networkid"]; found {
|
||||
u.Set("networkid", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["sourcenatsupported"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("sourcenatsupported", vv)
|
||||
}
|
||||
if v, found := p.p["specifyipranges"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("specifyipranges", vv)
|
||||
}
|
||||
if v, found := p.p["specifyvlan"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("specifyvlan", vv)
|
||||
}
|
||||
if v, found := p.p["state"]; found {
|
||||
u.Set("state", v.(string))
|
||||
}
|
||||
if v, found := p.p["supportedservices"]; found {
|
||||
vv := strings.Join(v.([]string), ",")
|
||||
u.Set("supportedservices", vv)
|
||||
}
|
||||
if v, found := p.p["tags"]; found {
|
||||
u.Set("tags", v.(string))
|
||||
}
|
||||
if v, found := p.p["traffictype"]; found {
|
||||
u.Set("traffictype", v.(string))
|
||||
}
|
||||
if v, found := p.p["zoneid"]; found {
|
||||
u.Set("zoneid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListNetworkOfferingsParams) SetAvailability(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["availability"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNetworkOfferingsParams) SetDisplaytext(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["displaytext"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNetworkOfferingsParams) SetForvpc(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["forvpc"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNetworkOfferingsParams) SetGuestiptype(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["guestiptype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNetworkOfferingsParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNetworkOfferingsParams) SetIsdefault(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["isdefault"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNetworkOfferingsParams) SetIstagged(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["istagged"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNetworkOfferingsParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNetworkOfferingsParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNetworkOfferingsParams) SetNetworkid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["networkid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNetworkOfferingsParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNetworkOfferingsParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNetworkOfferingsParams) SetSourcenatsupported(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["sourcenatsupported"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNetworkOfferingsParams) SetSpecifyipranges(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["specifyipranges"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNetworkOfferingsParams) SetSpecifyvlan(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["specifyvlan"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNetworkOfferingsParams) SetState(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["state"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNetworkOfferingsParams) SetSupportedservices(v []string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["supportedservices"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNetworkOfferingsParams) SetTags(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["tags"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNetworkOfferingsParams) SetTraffictype(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["traffictype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNetworkOfferingsParams) SetZoneid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["zoneid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListNetworkOfferingsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *NetworkOfferingService) NewListNetworkOfferingsParams() *ListNetworkOfferingsParams {
|
||||
p := &ListNetworkOfferingsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *NetworkOfferingService) GetNetworkOfferingID(name string, opts ...OptionFunc) (string, int, error) {
|
||||
p := &ListNetworkOfferingsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["name"] = name
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListNetworkOfferings(p)
|
||||
if err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return "", l.Count, fmt.Errorf("No match found for %s: %+v", name, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.NetworkOfferings[0].Id, l.Count, nil
|
||||
}
|
||||
|
||||
if l.Count > 1 {
|
||||
for _, v := range l.NetworkOfferings {
|
||||
if v.Name == name {
|
||||
return v.Id, l.Count, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
return "", l.Count, fmt.Errorf("Could not find an exact match for %s: %+v", name, l)
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *NetworkOfferingService) GetNetworkOfferingByName(name string, opts ...OptionFunc) (*NetworkOffering, int, error) {
|
||||
id, count, err := s.GetNetworkOfferingID(name, opts...)
|
||||
if err != nil {
|
||||
return nil, count, err
|
||||
}
|
||||
|
||||
r, count, err := s.GetNetworkOfferingByID(id, opts...)
|
||||
if err != nil {
|
||||
return nil, count, err
|
||||
}
|
||||
return r, count, nil
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *NetworkOfferingService) GetNetworkOfferingByID(id string, opts ...OptionFunc) (*NetworkOffering, int, error) {
|
||||
p := &ListNetworkOfferingsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["id"] = id
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return nil, -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListNetworkOfferings(p)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), fmt.Sprintf(
|
||||
"Invalid parameter id value=%s due to incorrect long value format, "+
|
||||
"or entity does not exist", id)) {
|
||||
return nil, 0, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
return nil, -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return nil, l.Count, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.NetworkOfferings[0], l.Count, nil
|
||||
}
|
||||
return nil, l.Count, fmt.Errorf("There is more then one result for NetworkOffering UUID: %s!", id)
|
||||
}
|
||||
|
||||
// Lists all available network offerings.
|
||||
func (s *NetworkOfferingService) ListNetworkOfferings(p *ListNetworkOfferingsParams) (*ListNetworkOfferingsResponse, error) {
|
||||
resp, err := s.cs.newRequest("listNetworkOfferings", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListNetworkOfferingsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListNetworkOfferingsResponse struct {
|
||||
Count int `json:"count"`
|
||||
NetworkOfferings []*NetworkOffering `json:"networkoffering"`
|
||||
}
|
||||
|
||||
type NetworkOffering struct {
|
||||
Availability string `json:"availability,omitempty"`
|
||||
Conservemode bool `json:"conservemode,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
Details map[string]string `json:"details,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Egressdefaultpolicy bool `json:"egressdefaultpolicy,omitempty"`
|
||||
Forvpc bool `json:"forvpc,omitempty"`
|
||||
Guestiptype string `json:"guestiptype,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Isdefault bool `json:"isdefault,omitempty"`
|
||||
Ispersistent bool `json:"ispersistent,omitempty"`
|
||||
Maxconnections int `json:"maxconnections,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Networkrate int `json:"networkrate,omitempty"`
|
||||
Service []struct {
|
||||
Capability []struct {
|
||||
Canchooseservicecapability bool `json:"canchooseservicecapability,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Value string `json:"value,omitempty"`
|
||||
} `json:"capability,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Provider []struct {
|
||||
Canenableindividualservice bool `json:"canenableindividualservice,omitempty"`
|
||||
Destinationphysicalnetworkid string `json:"destinationphysicalnetworkid,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
|
||||
Servicelist []string `json:"servicelist,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
} `json:"provider,omitempty"`
|
||||
} `json:"service,omitempty"`
|
||||
Serviceofferingid string `json:"serviceofferingid,omitempty"`
|
||||
Specifyipranges bool `json:"specifyipranges,omitempty"`
|
||||
Specifyvlan bool `json:"specifyvlan,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Supportsstrechedl2subnet bool `json:"supportsstrechedl2subnet,omitempty"`
|
||||
Tags string `json:"tags,omitempty"`
|
||||
Traffictype string `json:"traffictype,omitempty"`
|
||||
}
|
4024
vendor/github.com/xanzy/go-cloudstack/cloudstack/NetworkService.go
generated
vendored
Normal file
4024
vendor/github.com/xanzy/go-cloudstack/cloudstack/NetworkService.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,574 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/url"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type AddIpToNicParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *AddIpToNicParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["ipaddress"]; found {
|
||||
u.Set("ipaddress", v.(string))
|
||||
}
|
||||
if v, found := p.p["nicid"]; found {
|
||||
u.Set("nicid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *AddIpToNicParams) SetIpaddress(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["ipaddress"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddIpToNicParams) SetNicid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["nicid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new AddIpToNicParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *NicService) NewAddIpToNicParams(nicid string) *AddIpToNicParams {
|
||||
p := &AddIpToNicParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["nicid"] = nicid
|
||||
return p
|
||||
}
|
||||
|
||||
// Assigns secondary IP to NIC
|
||||
func (s *NicService) AddIpToNic(p *AddIpToNicParams) (*AddIpToNicResponse, error) {
|
||||
resp, err := s.cs.newRequest("addIpToNic", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r AddIpToNicResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
b, err = getRawValue(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type AddIpToNicResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ipaddress string `json:"ipaddress,omitempty"`
|
||||
Networkid string `json:"networkid,omitempty"`
|
||||
Nicid string `json:"nicid,omitempty"`
|
||||
Virtualmachineid string `json:"virtualmachineid,omitempty"`
|
||||
}
|
||||
|
||||
type RemoveIpFromNicParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *RemoveIpFromNicParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *RemoveIpFromNicParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new RemoveIpFromNicParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *NicService) NewRemoveIpFromNicParams(id string) *RemoveIpFromNicParams {
|
||||
p := &RemoveIpFromNicParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Removes secondary IP from the NIC.
|
||||
func (s *NicService) RemoveIpFromNic(p *RemoveIpFromNicParams) (*RemoveIpFromNicResponse, error) {
|
||||
resp, err := s.cs.newRequest("removeIpFromNic", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r RemoveIpFromNicResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type RemoveIpFromNicResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success bool `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type UpdateVmNicIpParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *UpdateVmNicIpParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["ipaddress"]; found {
|
||||
u.Set("ipaddress", v.(string))
|
||||
}
|
||||
if v, found := p.p["nicid"]; found {
|
||||
u.Set("nicid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *UpdateVmNicIpParams) SetIpaddress(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["ipaddress"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateVmNicIpParams) SetNicid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["nicid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new UpdateVmNicIpParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *NicService) NewUpdateVmNicIpParams(nicid string) *UpdateVmNicIpParams {
|
||||
p := &UpdateVmNicIpParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["nicid"] = nicid
|
||||
return p
|
||||
}
|
||||
|
||||
// Update the default Ip of a VM Nic
|
||||
func (s *NicService) UpdateVmNicIp(p *UpdateVmNicIpParams) (*UpdateVmNicIpResponse, error) {
|
||||
resp, err := s.cs.newRequest("updateVmNicIp", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r UpdateVmNicIpResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
b, err = getRawValue(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type UpdateVmNicIpResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Account string `json:"account,omitempty"`
|
||||
Affinitygroup []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
VirtualmachineIds []string `json:"virtualmachineIds,omitempty"`
|
||||
} `json:"affinitygroup,omitempty"`
|
||||
Cpunumber int `json:"cpunumber,omitempty"`
|
||||
Cpuspeed int `json:"cpuspeed,omitempty"`
|
||||
Cpuused string `json:"cpuused,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
Details map[string]string `json:"details,omitempty"`
|
||||
Diskioread int64 `json:"diskioread,omitempty"`
|
||||
Diskiowrite int64 `json:"diskiowrite,omitempty"`
|
||||
Diskkbsread int64 `json:"diskkbsread,omitempty"`
|
||||
Diskkbswrite int64 `json:"diskkbswrite,omitempty"`
|
||||
Diskofferingid string `json:"diskofferingid,omitempty"`
|
||||
Diskofferingname string `json:"diskofferingname,omitempty"`
|
||||
Displayname string `json:"displayname,omitempty"`
|
||||
Displayvm bool `json:"displayvm,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Forvirtualnetwork bool `json:"forvirtualnetwork,omitempty"`
|
||||
Group string `json:"group,omitempty"`
|
||||
Groupid string `json:"groupid,omitempty"`
|
||||
Guestosid string `json:"guestosid,omitempty"`
|
||||
Haenable bool `json:"haenable,omitempty"`
|
||||
Hostid string `json:"hostid,omitempty"`
|
||||
Hostname string `json:"hostname,omitempty"`
|
||||
Hypervisor string `json:"hypervisor,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Instancename string `json:"instancename,omitempty"`
|
||||
Isdynamicallyscalable bool `json:"isdynamicallyscalable,omitempty"`
|
||||
Isodisplaytext string `json:"isodisplaytext,omitempty"`
|
||||
Isoid string `json:"isoid,omitempty"`
|
||||
Isoname string `json:"isoname,omitempty"`
|
||||
Keypair string `json:"keypair,omitempty"`
|
||||
Memory int `json:"memory,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Networkkbsread int64 `json:"networkkbsread,omitempty"`
|
||||
Networkkbswrite int64 `json:"networkkbswrite,omitempty"`
|
||||
Nic []struct {
|
||||
Broadcasturi string `json:"broadcasturi,omitempty"`
|
||||
Deviceid string `json:"deviceid,omitempty"`
|
||||
Gateway string `json:"gateway,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ip6address string `json:"ip6address,omitempty"`
|
||||
Ip6cidr string `json:"ip6cidr,omitempty"`
|
||||
Ip6gateway string `json:"ip6gateway,omitempty"`
|
||||
Ipaddress string `json:"ipaddress,omitempty"`
|
||||
Isdefault bool `json:"isdefault,omitempty"`
|
||||
Isolationuri string `json:"isolationuri,omitempty"`
|
||||
Macaddress string `json:"macaddress,omitempty"`
|
||||
Netmask string `json:"netmask,omitempty"`
|
||||
Networkid string `json:"networkid,omitempty"`
|
||||
Networkname string `json:"networkname,omitempty"`
|
||||
Secondaryip []struct {
|
||||
Id string `json:"id,omitempty"`
|
||||
Ipaddress string `json:"ipaddress,omitempty"`
|
||||
} `json:"secondaryip,omitempty"`
|
||||
Traffictype string `json:"traffictype,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
Virtualmachineid string `json:"virtualmachineid,omitempty"`
|
||||
} `json:"nic,omitempty"`
|
||||
Ostypeid int64 `json:"ostypeid,omitempty"`
|
||||
Password string `json:"password,omitempty"`
|
||||
Passwordenabled bool `json:"passwordenabled,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Publicip string `json:"publicip,omitempty"`
|
||||
Publicipid string `json:"publicipid,omitempty"`
|
||||
Rootdeviceid int64 `json:"rootdeviceid,omitempty"`
|
||||
Rootdevicetype string `json:"rootdevicetype,omitempty"`
|
||||
Securitygroup []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Egressrule []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Cidr string `json:"cidr,omitempty"`
|
||||
Endport int `json:"endport,omitempty"`
|
||||
Icmpcode int `json:"icmpcode,omitempty"`
|
||||
Icmptype int `json:"icmptype,omitempty"`
|
||||
Protocol string `json:"protocol,omitempty"`
|
||||
Ruleid string `json:"ruleid,omitempty"`
|
||||
Securitygroupname string `json:"securitygroupname,omitempty"`
|
||||
Startport int `json:"startport,omitempty"`
|
||||
Tags []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Customer string `json:"customer,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Key string `json:"key,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Resourceid string `json:"resourceid,omitempty"`
|
||||
Resourcetype string `json:"resourcetype,omitempty"`
|
||||
Value string `json:"value,omitempty"`
|
||||
} `json:"tags,omitempty"`
|
||||
} `json:"egressrule,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ingressrule []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Cidr string `json:"cidr,omitempty"`
|
||||
Endport int `json:"endport,omitempty"`
|
||||
Icmpcode int `json:"icmpcode,omitempty"`
|
||||
Icmptype int `json:"icmptype,omitempty"`
|
||||
Protocol string `json:"protocol,omitempty"`
|
||||
Ruleid string `json:"ruleid,omitempty"`
|
||||
Securitygroupname string `json:"securitygroupname,omitempty"`
|
||||
Startport int `json:"startport,omitempty"`
|
||||
Tags []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Customer string `json:"customer,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Key string `json:"key,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Resourceid string `json:"resourceid,omitempty"`
|
||||
Resourcetype string `json:"resourcetype,omitempty"`
|
||||
Value string `json:"value,omitempty"`
|
||||
} `json:"tags,omitempty"`
|
||||
} `json:"ingressrule,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Tags []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Customer string `json:"customer,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Key string `json:"key,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Resourceid string `json:"resourceid,omitempty"`
|
||||
Resourcetype string `json:"resourcetype,omitempty"`
|
||||
Value string `json:"value,omitempty"`
|
||||
} `json:"tags,omitempty"`
|
||||
Virtualmachinecount int `json:"virtualmachinecount,omitempty"`
|
||||
Virtualmachineids []string `json:"virtualmachineids,omitempty"`
|
||||
} `json:"securitygroup,omitempty"`
|
||||
Serviceofferingid string `json:"serviceofferingid,omitempty"`
|
||||
Serviceofferingname string `json:"serviceofferingname,omitempty"`
|
||||
Servicestate string `json:"servicestate,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Tags []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Customer string `json:"customer,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Key string `json:"key,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Resourceid string `json:"resourceid,omitempty"`
|
||||
Resourcetype string `json:"resourcetype,omitempty"`
|
||||
Value string `json:"value,omitempty"`
|
||||
} `json:"tags,omitempty"`
|
||||
Templatedisplaytext string `json:"templatedisplaytext,omitempty"`
|
||||
Templateid string `json:"templateid,omitempty"`
|
||||
Templatename string `json:"templatename,omitempty"`
|
||||
Userid string `json:"userid,omitempty"`
|
||||
Username string `json:"username,omitempty"`
|
||||
Vgpu string `json:"vgpu,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
Zonename string `json:"zonename,omitempty"`
|
||||
}
|
||||
|
||||
type ListNicsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListNicsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["fordisplay"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("fordisplay", vv)
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["networkid"]; found {
|
||||
u.Set("networkid", v.(string))
|
||||
}
|
||||
if v, found := p.p["nicid"]; found {
|
||||
u.Set("nicid", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["virtualmachineid"]; found {
|
||||
u.Set("virtualmachineid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListNicsParams) SetFordisplay(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["fordisplay"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNicsParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNicsParams) SetNetworkid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["networkid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNicsParams) SetNicid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["nicid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNicsParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNicsParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNicsParams) SetVirtualmachineid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["virtualmachineid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListNicsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *NicService) NewListNicsParams(virtualmachineid string) *ListNicsParams {
|
||||
p := &ListNicsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["virtualmachineid"] = virtualmachineid
|
||||
return p
|
||||
}
|
||||
|
||||
// list the vm nics IP to NIC
|
||||
func (s *NicService) ListNics(p *ListNicsParams) (*ListNicsResponse, error) {
|
||||
resp, err := s.cs.newRequest("listNics", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListNicsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListNicsResponse struct {
|
||||
Count int `json:"count"`
|
||||
Nics []*Nic `json:"nic"`
|
||||
}
|
||||
|
||||
type Nic struct {
|
||||
Broadcasturi string `json:"broadcasturi,omitempty"`
|
||||
Deviceid string `json:"deviceid,omitempty"`
|
||||
Gateway string `json:"gateway,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ip6address string `json:"ip6address,omitempty"`
|
||||
Ip6cidr string `json:"ip6cidr,omitempty"`
|
||||
Ip6gateway string `json:"ip6gateway,omitempty"`
|
||||
Ipaddress string `json:"ipaddress,omitempty"`
|
||||
Isdefault bool `json:"isdefault,omitempty"`
|
||||
Isolationuri string `json:"isolationuri,omitempty"`
|
||||
Macaddress string `json:"macaddress,omitempty"`
|
||||
Netmask string `json:"netmask,omitempty"`
|
||||
Networkid string `json:"networkid,omitempty"`
|
||||
Networkname string `json:"networkname,omitempty"`
|
||||
Secondaryip []struct {
|
||||
Id string `json:"id,omitempty"`
|
||||
Ipaddress string `json:"ipaddress,omitempty"`
|
||||
} `json:"secondaryip,omitempty"`
|
||||
Traffictype string `json:"traffictype,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
Virtualmachineid string `json:"virtualmachineid,omitempty"`
|
||||
}
|
332
vendor/github.com/xanzy/go-cloudstack/cloudstack/NiciraNVPService.go
generated
vendored
Normal file
332
vendor/github.com/xanzy/go-cloudstack/cloudstack/NiciraNVPService.go
generated
vendored
Normal file
|
@ -0,0 +1,332 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/url"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type AddNiciraNvpDeviceParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *AddNiciraNvpDeviceParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["hostname"]; found {
|
||||
u.Set("hostname", v.(string))
|
||||
}
|
||||
if v, found := p.p["l3gatewayserviceuuid"]; found {
|
||||
u.Set("l3gatewayserviceuuid", v.(string))
|
||||
}
|
||||
if v, found := p.p["password"]; found {
|
||||
u.Set("password", v.(string))
|
||||
}
|
||||
if v, found := p.p["physicalnetworkid"]; found {
|
||||
u.Set("physicalnetworkid", v.(string))
|
||||
}
|
||||
if v, found := p.p["transportzoneuuid"]; found {
|
||||
u.Set("transportzoneuuid", v.(string))
|
||||
}
|
||||
if v, found := p.p["username"]; found {
|
||||
u.Set("username", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *AddNiciraNvpDeviceParams) SetHostname(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["hostname"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddNiciraNvpDeviceParams) SetL3gatewayserviceuuid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["l3gatewayserviceuuid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddNiciraNvpDeviceParams) SetPassword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["password"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddNiciraNvpDeviceParams) SetPhysicalnetworkid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["physicalnetworkid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddNiciraNvpDeviceParams) SetTransportzoneuuid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["transportzoneuuid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddNiciraNvpDeviceParams) SetUsername(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["username"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new AddNiciraNvpDeviceParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *NiciraNVPService) NewAddNiciraNvpDeviceParams(hostname string, password string, physicalnetworkid string, transportzoneuuid string, username string) *AddNiciraNvpDeviceParams {
|
||||
p := &AddNiciraNvpDeviceParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["hostname"] = hostname
|
||||
p.p["password"] = password
|
||||
p.p["physicalnetworkid"] = physicalnetworkid
|
||||
p.p["transportzoneuuid"] = transportzoneuuid
|
||||
p.p["username"] = username
|
||||
return p
|
||||
}
|
||||
|
||||
// Adds a Nicira NVP device
|
||||
func (s *NiciraNVPService) AddNiciraNvpDevice(p *AddNiciraNvpDeviceParams) (*AddNiciraNvpDeviceResponse, error) {
|
||||
resp, err := s.cs.newRequest("addNiciraNvpDevice", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r AddNiciraNvpDeviceResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
b, err = getRawValue(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type AddNiciraNvpDeviceResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Hostname string `json:"hostname,omitempty"`
|
||||
L3gatewayserviceuuid string `json:"l3gatewayserviceuuid,omitempty"`
|
||||
Niciradevicename string `json:"niciradevicename,omitempty"`
|
||||
Nvpdeviceid string `json:"nvpdeviceid,omitempty"`
|
||||
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
|
||||
Provider string `json:"provider,omitempty"`
|
||||
Transportzoneuuid string `json:"transportzoneuuid,omitempty"`
|
||||
}
|
||||
|
||||
type DeleteNiciraNvpDeviceParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *DeleteNiciraNvpDeviceParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["nvpdeviceid"]; found {
|
||||
u.Set("nvpdeviceid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *DeleteNiciraNvpDeviceParams) SetNvpdeviceid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["nvpdeviceid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new DeleteNiciraNvpDeviceParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *NiciraNVPService) NewDeleteNiciraNvpDeviceParams(nvpdeviceid string) *DeleteNiciraNvpDeviceParams {
|
||||
p := &DeleteNiciraNvpDeviceParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["nvpdeviceid"] = nvpdeviceid
|
||||
return p
|
||||
}
|
||||
|
||||
// delete a nicira nvp device
|
||||
func (s *NiciraNVPService) DeleteNiciraNvpDevice(p *DeleteNiciraNvpDeviceParams) (*DeleteNiciraNvpDeviceResponse, error) {
|
||||
resp, err := s.cs.newRequest("deleteNiciraNvpDevice", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r DeleteNiciraNvpDeviceResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type DeleteNiciraNvpDeviceResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success bool `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type ListNiciraNvpDevicesParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListNiciraNvpDevicesParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["nvpdeviceid"]; found {
|
||||
u.Set("nvpdeviceid", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["physicalnetworkid"]; found {
|
||||
u.Set("physicalnetworkid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListNiciraNvpDevicesParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNiciraNvpDevicesParams) SetNvpdeviceid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["nvpdeviceid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNiciraNvpDevicesParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNiciraNvpDevicesParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListNiciraNvpDevicesParams) SetPhysicalnetworkid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["physicalnetworkid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListNiciraNvpDevicesParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *NiciraNVPService) NewListNiciraNvpDevicesParams() *ListNiciraNvpDevicesParams {
|
||||
p := &ListNiciraNvpDevicesParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Lists Nicira NVP devices
|
||||
func (s *NiciraNVPService) ListNiciraNvpDevices(p *ListNiciraNvpDevicesParams) (*ListNiciraNvpDevicesResponse, error) {
|
||||
resp, err := s.cs.newRequest("listNiciraNvpDevices", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListNiciraNvpDevicesResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListNiciraNvpDevicesResponse struct {
|
||||
Count int `json:"count"`
|
||||
NiciraNvpDevices []*NiciraNvpDevice `json:"niciranvpdevice"`
|
||||
}
|
||||
|
||||
type NiciraNvpDevice struct {
|
||||
Hostname string `json:"hostname,omitempty"`
|
||||
L3gatewayserviceuuid string `json:"l3gatewayserviceuuid,omitempty"`
|
||||
Niciradevicename string `json:"niciradevicename,omitempty"`
|
||||
Nvpdeviceid string `json:"nvpdeviceid,omitempty"`
|
||||
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
|
||||
Provider string `json:"provider,omitempty"`
|
||||
Transportzoneuuid string `json:"transportzoneuuid,omitempty"`
|
||||
}
|
268
vendor/github.com/xanzy/go-cloudstack/cloudstack/OvsElementService.go
generated
vendored
Normal file
268
vendor/github.com/xanzy/go-cloudstack/cloudstack/OvsElementService.go
generated
vendored
Normal file
|
@ -0,0 +1,268 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type ConfigureOvsElementParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ConfigureOvsElementParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["enabled"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("enabled", vv)
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ConfigureOvsElementParams) SetEnabled(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["enabled"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ConfigureOvsElementParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ConfigureOvsElementParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *OvsElementService) NewConfigureOvsElementParams(enabled bool, id string) *ConfigureOvsElementParams {
|
||||
p := &ConfigureOvsElementParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["enabled"] = enabled
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Configures an ovs element.
|
||||
func (s *OvsElementService) ConfigureOvsElement(p *ConfigureOvsElementParams) (*ConfigureOvsElementResponse, error) {
|
||||
resp, err := s.cs.newRequest("configureOvsElement", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ConfigureOvsElementResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
b, err = getRawValue(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ConfigureOvsElementResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Account string `json:"account,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Enabled bool `json:"enabled,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Nspid string `json:"nspid,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
}
|
||||
|
||||
type ListOvsElementsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListOvsElementsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["enabled"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("enabled", vv)
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["nspid"]; found {
|
||||
u.Set("nspid", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListOvsElementsParams) SetEnabled(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["enabled"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListOvsElementsParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListOvsElementsParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListOvsElementsParams) SetNspid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["nspid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListOvsElementsParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListOvsElementsParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListOvsElementsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *OvsElementService) NewListOvsElementsParams() *ListOvsElementsParams {
|
||||
p := &ListOvsElementsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *OvsElementService) GetOvsElementByID(id string, opts ...OptionFunc) (*OvsElement, int, error) {
|
||||
p := &ListOvsElementsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["id"] = id
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return nil, -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListOvsElements(p)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), fmt.Sprintf(
|
||||
"Invalid parameter id value=%s due to incorrect long value format, "+
|
||||
"or entity does not exist", id)) {
|
||||
return nil, 0, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
return nil, -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return nil, l.Count, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.OvsElements[0], l.Count, nil
|
||||
}
|
||||
return nil, l.Count, fmt.Errorf("There is more then one result for OvsElement UUID: %s!", id)
|
||||
}
|
||||
|
||||
// Lists all available ovs elements.
|
||||
func (s *OvsElementService) ListOvsElements(p *ListOvsElementsParams) (*ListOvsElementsResponse, error) {
|
||||
resp, err := s.cs.newRequest("listOvsElements", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListOvsElementsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListOvsElementsResponse struct {
|
||||
Count int `json:"count"`
|
||||
OvsElements []*OvsElement `json:"ovselement"`
|
||||
}
|
||||
|
||||
type OvsElement struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Enabled bool `json:"enabled,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Nspid string `json:"nspid,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
}
|
|
@ -0,0 +1,882 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type CreatePodParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *CreatePodParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["allocationstate"]; found {
|
||||
u.Set("allocationstate", v.(string))
|
||||
}
|
||||
if v, found := p.p["endip"]; found {
|
||||
u.Set("endip", v.(string))
|
||||
}
|
||||
if v, found := p.p["gateway"]; found {
|
||||
u.Set("gateway", v.(string))
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["netmask"]; found {
|
||||
u.Set("netmask", v.(string))
|
||||
}
|
||||
if v, found := p.p["startip"]; found {
|
||||
u.Set("startip", v.(string))
|
||||
}
|
||||
if v, found := p.p["zoneid"]; found {
|
||||
u.Set("zoneid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *CreatePodParams) SetAllocationstate(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["allocationstate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreatePodParams) SetEndip(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["endip"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreatePodParams) SetGateway(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["gateway"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreatePodParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreatePodParams) SetNetmask(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["netmask"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreatePodParams) SetStartip(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["startip"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreatePodParams) SetZoneid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["zoneid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new CreatePodParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *PodService) NewCreatePodParams(gateway string, name string, netmask string, startip string, zoneid string) *CreatePodParams {
|
||||
p := &CreatePodParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["gateway"] = gateway
|
||||
p.p["name"] = name
|
||||
p.p["netmask"] = netmask
|
||||
p.p["startip"] = startip
|
||||
p.p["zoneid"] = zoneid
|
||||
return p
|
||||
}
|
||||
|
||||
// Creates a new Pod.
|
||||
func (s *PodService) CreatePod(p *CreatePodParams) (*CreatePodResponse, error) {
|
||||
resp, err := s.cs.newRequest("createPod", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r CreatePodResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type CreatePodResponse struct {
|
||||
Allocationstate string `json:"allocationstate,omitempty"`
|
||||
Capacity []struct {
|
||||
Capacitytotal int64 `json:"capacitytotal,omitempty"`
|
||||
Capacityused int64 `json:"capacityused,omitempty"`
|
||||
Clusterid string `json:"clusterid,omitempty"`
|
||||
Clustername string `json:"clustername,omitempty"`
|
||||
Percentused string `json:"percentused,omitempty"`
|
||||
Podid string `json:"podid,omitempty"`
|
||||
Podname string `json:"podname,omitempty"`
|
||||
Type int `json:"type,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
Zonename string `json:"zonename,omitempty"`
|
||||
} `json:"capacity,omitempty"`
|
||||
Endip string `json:"endip,omitempty"`
|
||||
Gateway string `json:"gateway,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Netmask string `json:"netmask,omitempty"`
|
||||
Startip string `json:"startip,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
Zonename string `json:"zonename,omitempty"`
|
||||
}
|
||||
|
||||
type UpdatePodParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *UpdatePodParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["allocationstate"]; found {
|
||||
u.Set("allocationstate", v.(string))
|
||||
}
|
||||
if v, found := p.p["endip"]; found {
|
||||
u.Set("endip", v.(string))
|
||||
}
|
||||
if v, found := p.p["gateway"]; found {
|
||||
u.Set("gateway", v.(string))
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["netmask"]; found {
|
||||
u.Set("netmask", v.(string))
|
||||
}
|
||||
if v, found := p.p["startip"]; found {
|
||||
u.Set("startip", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *UpdatePodParams) SetAllocationstate(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["allocationstate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdatePodParams) SetEndip(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["endip"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdatePodParams) SetGateway(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["gateway"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdatePodParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdatePodParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdatePodParams) SetNetmask(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["netmask"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdatePodParams) SetStartip(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["startip"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new UpdatePodParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *PodService) NewUpdatePodParams(id string) *UpdatePodParams {
|
||||
p := &UpdatePodParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Updates a Pod.
|
||||
func (s *PodService) UpdatePod(p *UpdatePodParams) (*UpdatePodResponse, error) {
|
||||
resp, err := s.cs.newRequest("updatePod", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r UpdatePodResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type UpdatePodResponse struct {
|
||||
Allocationstate string `json:"allocationstate,omitempty"`
|
||||
Capacity []struct {
|
||||
Capacitytotal int64 `json:"capacitytotal,omitempty"`
|
||||
Capacityused int64 `json:"capacityused,omitempty"`
|
||||
Clusterid string `json:"clusterid,omitempty"`
|
||||
Clustername string `json:"clustername,omitempty"`
|
||||
Percentused string `json:"percentused,omitempty"`
|
||||
Podid string `json:"podid,omitempty"`
|
||||
Podname string `json:"podname,omitempty"`
|
||||
Type int `json:"type,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
Zonename string `json:"zonename,omitempty"`
|
||||
} `json:"capacity,omitempty"`
|
||||
Endip string `json:"endip,omitempty"`
|
||||
Gateway string `json:"gateway,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Netmask string `json:"netmask,omitempty"`
|
||||
Startip string `json:"startip,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
Zonename string `json:"zonename,omitempty"`
|
||||
}
|
||||
|
||||
type DeletePodParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *DeletePodParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *DeletePodParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new DeletePodParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *PodService) NewDeletePodParams(id string) *DeletePodParams {
|
||||
p := &DeletePodParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Deletes a Pod.
|
||||
func (s *PodService) DeletePod(p *DeletePodParams) (*DeletePodResponse, error) {
|
||||
resp, err := s.cs.newRequest("deletePod", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r DeletePodResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type DeletePodResponse struct {
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success string `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type ListPodsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListPodsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["allocationstate"]; found {
|
||||
u.Set("allocationstate", v.(string))
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["showcapacities"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("showcapacities", vv)
|
||||
}
|
||||
if v, found := p.p["zoneid"]; found {
|
||||
u.Set("zoneid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListPodsParams) SetAllocationstate(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["allocationstate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPodsParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPodsParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPodsParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPodsParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPodsParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPodsParams) SetShowcapacities(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["showcapacities"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPodsParams) SetZoneid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["zoneid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListPodsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *PodService) NewListPodsParams() *ListPodsParams {
|
||||
p := &ListPodsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *PodService) GetPodID(name string, opts ...OptionFunc) (string, int, error) {
|
||||
p := &ListPodsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["name"] = name
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListPods(p)
|
||||
if err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return "", l.Count, fmt.Errorf("No match found for %s: %+v", name, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.Pods[0].Id, l.Count, nil
|
||||
}
|
||||
|
||||
if l.Count > 1 {
|
||||
for _, v := range l.Pods {
|
||||
if v.Name == name {
|
||||
return v.Id, l.Count, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
return "", l.Count, fmt.Errorf("Could not find an exact match for %s: %+v", name, l)
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *PodService) GetPodByName(name string, opts ...OptionFunc) (*Pod, int, error) {
|
||||
id, count, err := s.GetPodID(name, opts...)
|
||||
if err != nil {
|
||||
return nil, count, err
|
||||
}
|
||||
|
||||
r, count, err := s.GetPodByID(id, opts...)
|
||||
if err != nil {
|
||||
return nil, count, err
|
||||
}
|
||||
return r, count, nil
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *PodService) GetPodByID(id string, opts ...OptionFunc) (*Pod, int, error) {
|
||||
p := &ListPodsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["id"] = id
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return nil, -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListPods(p)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), fmt.Sprintf(
|
||||
"Invalid parameter id value=%s due to incorrect long value format, "+
|
||||
"or entity does not exist", id)) {
|
||||
return nil, 0, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
return nil, -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return nil, l.Count, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.Pods[0], l.Count, nil
|
||||
}
|
||||
return nil, l.Count, fmt.Errorf("There is more then one result for Pod UUID: %s!", id)
|
||||
}
|
||||
|
||||
// Lists all Pods.
|
||||
func (s *PodService) ListPods(p *ListPodsParams) (*ListPodsResponse, error) {
|
||||
resp, err := s.cs.newRequest("listPods", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListPodsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListPodsResponse struct {
|
||||
Count int `json:"count"`
|
||||
Pods []*Pod `json:"pod"`
|
||||
}
|
||||
|
||||
type Pod struct {
|
||||
Allocationstate string `json:"allocationstate,omitempty"`
|
||||
Capacity []struct {
|
||||
Capacitytotal int64 `json:"capacitytotal,omitempty"`
|
||||
Capacityused int64 `json:"capacityused,omitempty"`
|
||||
Clusterid string `json:"clusterid,omitempty"`
|
||||
Clustername string `json:"clustername,omitempty"`
|
||||
Percentused string `json:"percentused,omitempty"`
|
||||
Podid string `json:"podid,omitempty"`
|
||||
Podname string `json:"podname,omitempty"`
|
||||
Type int `json:"type,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
Zonename string `json:"zonename,omitempty"`
|
||||
} `json:"capacity,omitempty"`
|
||||
Endip string `json:"endip,omitempty"`
|
||||
Gateway string `json:"gateway,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Netmask string `json:"netmask,omitempty"`
|
||||
Startip string `json:"startip,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
Zonename string `json:"zonename,omitempty"`
|
||||
}
|
||||
|
||||
type DedicatePodParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *DedicatePodParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["podid"]; found {
|
||||
u.Set("podid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *DedicatePodParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *DedicatePodParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *DedicatePodParams) SetPodid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["podid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new DedicatePodParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *PodService) NewDedicatePodParams(domainid string, podid string) *DedicatePodParams {
|
||||
p := &DedicatePodParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["domainid"] = domainid
|
||||
p.p["podid"] = podid
|
||||
return p
|
||||
}
|
||||
|
||||
// Dedicates a Pod.
|
||||
func (s *PodService) DedicatePod(p *DedicatePodParams) (*DedicatePodResponse, error) {
|
||||
resp, err := s.cs.newRequest("dedicatePod", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r DedicatePodResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
b, err = getRawValue(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type DedicatePodResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Accountid string `json:"accountid,omitempty"`
|
||||
Affinitygroupid string `json:"affinitygroupid,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Podid string `json:"podid,omitempty"`
|
||||
Podname string `json:"podname,omitempty"`
|
||||
}
|
||||
|
||||
type ReleaseDedicatedPodParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ReleaseDedicatedPodParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["podid"]; found {
|
||||
u.Set("podid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ReleaseDedicatedPodParams) SetPodid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["podid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ReleaseDedicatedPodParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *PodService) NewReleaseDedicatedPodParams(podid string) *ReleaseDedicatedPodParams {
|
||||
p := &ReleaseDedicatedPodParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["podid"] = podid
|
||||
return p
|
||||
}
|
||||
|
||||
// Release the dedication for the pod
|
||||
func (s *PodService) ReleaseDedicatedPod(p *ReleaseDedicatedPodParams) (*ReleaseDedicatedPodResponse, error) {
|
||||
resp, err := s.cs.newRequest("releaseDedicatedPod", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ReleaseDedicatedPodResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ReleaseDedicatedPodResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success bool `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type ListDedicatedPodsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListDedicatedPodsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["affinitygroupid"]; found {
|
||||
u.Set("affinitygroupid", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["podid"]; found {
|
||||
u.Set("podid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListDedicatedPodsParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDedicatedPodsParams) SetAffinitygroupid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["affinitygroupid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDedicatedPodsParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDedicatedPodsParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDedicatedPodsParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDedicatedPodsParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDedicatedPodsParams) SetPodid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["podid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListDedicatedPodsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *PodService) NewListDedicatedPodsParams() *ListDedicatedPodsParams {
|
||||
p := &ListDedicatedPodsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Lists dedicated pods.
|
||||
func (s *PodService) ListDedicatedPods(p *ListDedicatedPodsParams) (*ListDedicatedPodsResponse, error) {
|
||||
resp, err := s.cs.newRequest("listDedicatedPods", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListDedicatedPodsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListDedicatedPodsResponse struct {
|
||||
Count int `json:"count"`
|
||||
DedicatedPods []*DedicatedPod `json:"dedicatedpod"`
|
||||
}
|
||||
|
||||
type DedicatedPod struct {
|
||||
Accountid string `json:"accountid,omitempty"`
|
||||
Affinitygroupid string `json:"affinitygroupid,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Podid string `json:"podid,omitempty"`
|
||||
Podname string `json:"podname,omitempty"`
|
||||
}
|
|
@ -0,0 +1,800 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type ListStoragePoolsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListStoragePoolsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["clusterid"]; found {
|
||||
u.Set("clusterid", v.(string))
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["ipaddress"]; found {
|
||||
u.Set("ipaddress", v.(string))
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["path"]; found {
|
||||
u.Set("path", v.(string))
|
||||
}
|
||||
if v, found := p.p["podid"]; found {
|
||||
u.Set("podid", v.(string))
|
||||
}
|
||||
if v, found := p.p["scope"]; found {
|
||||
u.Set("scope", v.(string))
|
||||
}
|
||||
if v, found := p.p["zoneid"]; found {
|
||||
u.Set("zoneid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListStoragePoolsParams) SetClusterid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["clusterid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListStoragePoolsParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListStoragePoolsParams) SetIpaddress(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["ipaddress"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListStoragePoolsParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListStoragePoolsParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListStoragePoolsParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListStoragePoolsParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListStoragePoolsParams) SetPath(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["path"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListStoragePoolsParams) SetPodid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["podid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListStoragePoolsParams) SetScope(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["scope"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListStoragePoolsParams) SetZoneid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["zoneid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListStoragePoolsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *PoolService) NewListStoragePoolsParams() *ListStoragePoolsParams {
|
||||
p := &ListStoragePoolsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *PoolService) GetStoragePoolID(name string, opts ...OptionFunc) (string, int, error) {
|
||||
p := &ListStoragePoolsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["name"] = name
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListStoragePools(p)
|
||||
if err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return "", l.Count, fmt.Errorf("No match found for %s: %+v", name, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.StoragePools[0].Id, l.Count, nil
|
||||
}
|
||||
|
||||
if l.Count > 1 {
|
||||
for _, v := range l.StoragePools {
|
||||
if v.Name == name {
|
||||
return v.Id, l.Count, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
return "", l.Count, fmt.Errorf("Could not find an exact match for %s: %+v", name, l)
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *PoolService) GetStoragePoolByName(name string, opts ...OptionFunc) (*StoragePool, int, error) {
|
||||
id, count, err := s.GetStoragePoolID(name, opts...)
|
||||
if err != nil {
|
||||
return nil, count, err
|
||||
}
|
||||
|
||||
r, count, err := s.GetStoragePoolByID(id, opts...)
|
||||
if err != nil {
|
||||
return nil, count, err
|
||||
}
|
||||
return r, count, nil
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *PoolService) GetStoragePoolByID(id string, opts ...OptionFunc) (*StoragePool, int, error) {
|
||||
p := &ListStoragePoolsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["id"] = id
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return nil, -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListStoragePools(p)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), fmt.Sprintf(
|
||||
"Invalid parameter id value=%s due to incorrect long value format, "+
|
||||
"or entity does not exist", id)) {
|
||||
return nil, 0, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
return nil, -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return nil, l.Count, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.StoragePools[0], l.Count, nil
|
||||
}
|
||||
return nil, l.Count, fmt.Errorf("There is more then one result for StoragePool UUID: %s!", id)
|
||||
}
|
||||
|
||||
// Lists storage pools.
|
||||
func (s *PoolService) ListStoragePools(p *ListStoragePoolsParams) (*ListStoragePoolsResponse, error) {
|
||||
resp, err := s.cs.newRequest("listStoragePools", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListStoragePoolsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListStoragePoolsResponse struct {
|
||||
Count int `json:"count"`
|
||||
StoragePools []*StoragePool `json:"storagepool"`
|
||||
}
|
||||
|
||||
type StoragePool struct {
|
||||
Capacityiops int64 `json:"capacityiops,omitempty"`
|
||||
Clusterid string `json:"clusterid,omitempty"`
|
||||
Clustername string `json:"clustername,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
Disksizeallocated int64 `json:"disksizeallocated,omitempty"`
|
||||
Disksizetotal int64 `json:"disksizetotal,omitempty"`
|
||||
Disksizeused int64 `json:"disksizeused,omitempty"`
|
||||
Hypervisor string `json:"hypervisor,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ipaddress string `json:"ipaddress,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Overprovisionfactor string `json:"overprovisionfactor,omitempty"`
|
||||
Path string `json:"path,omitempty"`
|
||||
Podid string `json:"podid,omitempty"`
|
||||
Podname string `json:"podname,omitempty"`
|
||||
Scope string `json:"scope,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Storagecapabilities map[string]string `json:"storagecapabilities,omitempty"`
|
||||
Suitableformigration bool `json:"suitableformigration,omitempty"`
|
||||
Tags string `json:"tags,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
Zonename string `json:"zonename,omitempty"`
|
||||
}
|
||||
|
||||
type CreateStoragePoolParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *CreateStoragePoolParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["capacitybytes"]; found {
|
||||
vv := strconv.FormatInt(v.(int64), 10)
|
||||
u.Set("capacitybytes", vv)
|
||||
}
|
||||
if v, found := p.p["capacityiops"]; found {
|
||||
vv := strconv.FormatInt(v.(int64), 10)
|
||||
u.Set("capacityiops", vv)
|
||||
}
|
||||
if v, found := p.p["clusterid"]; found {
|
||||
u.Set("clusterid", v.(string))
|
||||
}
|
||||
if v, found := p.p["details"]; found {
|
||||
i := 0
|
||||
for k, vv := range v.(map[string]string) {
|
||||
u.Set(fmt.Sprintf("details[%d].key", i), k)
|
||||
u.Set(fmt.Sprintf("details[%d].value", i), vv)
|
||||
i++
|
||||
}
|
||||
}
|
||||
if v, found := p.p["hypervisor"]; found {
|
||||
u.Set("hypervisor", v.(string))
|
||||
}
|
||||
if v, found := p.p["managed"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("managed", vv)
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["podid"]; found {
|
||||
u.Set("podid", v.(string))
|
||||
}
|
||||
if v, found := p.p["provider"]; found {
|
||||
u.Set("provider", v.(string))
|
||||
}
|
||||
if v, found := p.p["scope"]; found {
|
||||
u.Set("scope", v.(string))
|
||||
}
|
||||
if v, found := p.p["tags"]; found {
|
||||
u.Set("tags", v.(string))
|
||||
}
|
||||
if v, found := p.p["url"]; found {
|
||||
u.Set("url", v.(string))
|
||||
}
|
||||
if v, found := p.p["zoneid"]; found {
|
||||
u.Set("zoneid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *CreateStoragePoolParams) SetCapacitybytes(v int64) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["capacitybytes"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateStoragePoolParams) SetCapacityiops(v int64) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["capacityiops"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateStoragePoolParams) SetClusterid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["clusterid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateStoragePoolParams) SetDetails(v map[string]string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["details"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateStoragePoolParams) SetHypervisor(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["hypervisor"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateStoragePoolParams) SetManaged(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["managed"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateStoragePoolParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateStoragePoolParams) SetPodid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["podid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateStoragePoolParams) SetProvider(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["provider"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateStoragePoolParams) SetScope(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["scope"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateStoragePoolParams) SetTags(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["tags"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateStoragePoolParams) SetUrl(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["url"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateStoragePoolParams) SetZoneid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["zoneid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new CreateStoragePoolParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *PoolService) NewCreateStoragePoolParams(name string, url string, zoneid string) *CreateStoragePoolParams {
|
||||
p := &CreateStoragePoolParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["name"] = name
|
||||
p.p["url"] = url
|
||||
p.p["zoneid"] = zoneid
|
||||
return p
|
||||
}
|
||||
|
||||
// Creates a storage pool.
|
||||
func (s *PoolService) CreateStoragePool(p *CreateStoragePoolParams) (*CreateStoragePoolResponse, error) {
|
||||
resp, err := s.cs.newRequest("createStoragePool", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r CreateStoragePoolResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type CreateStoragePoolResponse struct {
|
||||
Capacityiops int64 `json:"capacityiops,omitempty"`
|
||||
Clusterid string `json:"clusterid,omitempty"`
|
||||
Clustername string `json:"clustername,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
Disksizeallocated int64 `json:"disksizeallocated,omitempty"`
|
||||
Disksizetotal int64 `json:"disksizetotal,omitempty"`
|
||||
Disksizeused int64 `json:"disksizeused,omitempty"`
|
||||
Hypervisor string `json:"hypervisor,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ipaddress string `json:"ipaddress,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Overprovisionfactor string `json:"overprovisionfactor,omitempty"`
|
||||
Path string `json:"path,omitempty"`
|
||||
Podid string `json:"podid,omitempty"`
|
||||
Podname string `json:"podname,omitempty"`
|
||||
Scope string `json:"scope,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Storagecapabilities map[string]string `json:"storagecapabilities,omitempty"`
|
||||
Suitableformigration bool `json:"suitableformigration,omitempty"`
|
||||
Tags string `json:"tags,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
Zonename string `json:"zonename,omitempty"`
|
||||
}
|
||||
|
||||
type UpdateStoragePoolParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *UpdateStoragePoolParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["capacitybytes"]; found {
|
||||
vv := strconv.FormatInt(v.(int64), 10)
|
||||
u.Set("capacitybytes", vv)
|
||||
}
|
||||
if v, found := p.p["capacityiops"]; found {
|
||||
vv := strconv.FormatInt(v.(int64), 10)
|
||||
u.Set("capacityiops", vv)
|
||||
}
|
||||
if v, found := p.p["enabled"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("enabled", vv)
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["tags"]; found {
|
||||
vv := strings.Join(v.([]string), ",")
|
||||
u.Set("tags", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *UpdateStoragePoolParams) SetCapacitybytes(v int64) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["capacitybytes"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateStoragePoolParams) SetCapacityiops(v int64) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["capacityiops"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateStoragePoolParams) SetEnabled(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["enabled"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateStoragePoolParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateStoragePoolParams) SetTags(v []string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["tags"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new UpdateStoragePoolParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *PoolService) NewUpdateStoragePoolParams(id string) *UpdateStoragePoolParams {
|
||||
p := &UpdateStoragePoolParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Updates a storage pool.
|
||||
func (s *PoolService) UpdateStoragePool(p *UpdateStoragePoolParams) (*UpdateStoragePoolResponse, error) {
|
||||
resp, err := s.cs.newRequest("updateStoragePool", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r UpdateStoragePoolResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type UpdateStoragePoolResponse struct {
|
||||
Capacityiops int64 `json:"capacityiops,omitempty"`
|
||||
Clusterid string `json:"clusterid,omitempty"`
|
||||
Clustername string `json:"clustername,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
Disksizeallocated int64 `json:"disksizeallocated,omitempty"`
|
||||
Disksizetotal int64 `json:"disksizetotal,omitempty"`
|
||||
Disksizeused int64 `json:"disksizeused,omitempty"`
|
||||
Hypervisor string `json:"hypervisor,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ipaddress string `json:"ipaddress,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Overprovisionfactor string `json:"overprovisionfactor,omitempty"`
|
||||
Path string `json:"path,omitempty"`
|
||||
Podid string `json:"podid,omitempty"`
|
||||
Podname string `json:"podname,omitempty"`
|
||||
Scope string `json:"scope,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Storagecapabilities map[string]string `json:"storagecapabilities,omitempty"`
|
||||
Suitableformigration bool `json:"suitableformigration,omitempty"`
|
||||
Tags string `json:"tags,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
Zonename string `json:"zonename,omitempty"`
|
||||
}
|
||||
|
||||
type DeleteStoragePoolParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *DeleteStoragePoolParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["forced"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("forced", vv)
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *DeleteStoragePoolParams) SetForced(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["forced"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *DeleteStoragePoolParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new DeleteStoragePoolParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *PoolService) NewDeleteStoragePoolParams(id string) *DeleteStoragePoolParams {
|
||||
p := &DeleteStoragePoolParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Deletes a storage pool.
|
||||
func (s *PoolService) DeleteStoragePool(p *DeleteStoragePoolParams) (*DeleteStoragePoolResponse, error) {
|
||||
resp, err := s.cs.newRequest("deleteStoragePool", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r DeleteStoragePoolResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type DeleteStoragePoolResponse struct {
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success string `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type FindStoragePoolsForMigrationParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *FindStoragePoolsForMigrationParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *FindStoragePoolsForMigrationParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *FindStoragePoolsForMigrationParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *FindStoragePoolsForMigrationParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *FindStoragePoolsForMigrationParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new FindStoragePoolsForMigrationParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *PoolService) NewFindStoragePoolsForMigrationParams(id string) *FindStoragePoolsForMigrationParams {
|
||||
p := &FindStoragePoolsForMigrationParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Lists storage pools available for migration of a volume.
|
||||
func (s *PoolService) FindStoragePoolsForMigration(p *FindStoragePoolsForMigrationParams) (*FindStoragePoolsForMigrationResponse, error) {
|
||||
resp, err := s.cs.newRequest("findStoragePoolsForMigration", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r FindStoragePoolsForMigrationResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type FindStoragePoolsForMigrationResponse struct {
|
||||
Capacityiops int64 `json:"capacityiops,omitempty"`
|
||||
Clusterid string `json:"clusterid,omitempty"`
|
||||
Clustername string `json:"clustername,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
Disksizeallocated int64 `json:"disksizeallocated,omitempty"`
|
||||
Disksizetotal int64 `json:"disksizetotal,omitempty"`
|
||||
Disksizeused int64 `json:"disksizeused,omitempty"`
|
||||
Hypervisor string `json:"hypervisor,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ipaddress string `json:"ipaddress,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Overprovisionfactor string `json:"overprovisionfactor,omitempty"`
|
||||
Path string `json:"path,omitempty"`
|
||||
Podid string `json:"podid,omitempty"`
|
||||
Podname string `json:"podname,omitempty"`
|
||||
Scope string `json:"scope,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Storagecapabilities map[string]string `json:"storagecapabilities,omitempty"`
|
||||
Suitableformigration bool `json:"suitableformigration,omitempty"`
|
||||
Tags string `json:"tags,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
Zonename string `json:"zonename,omitempty"`
|
||||
}
|
393
vendor/github.com/xanzy/go-cloudstack/cloudstack/PortableIPService.go
generated
vendored
Normal file
393
vendor/github.com/xanzy/go-cloudstack/cloudstack/PortableIPService.go
generated
vendored
Normal file
|
@ -0,0 +1,393 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type CreatePortableIpRangeParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *CreatePortableIpRangeParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["endip"]; found {
|
||||
u.Set("endip", v.(string))
|
||||
}
|
||||
if v, found := p.p["gateway"]; found {
|
||||
u.Set("gateway", v.(string))
|
||||
}
|
||||
if v, found := p.p["netmask"]; found {
|
||||
u.Set("netmask", v.(string))
|
||||
}
|
||||
if v, found := p.p["regionid"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("regionid", vv)
|
||||
}
|
||||
if v, found := p.p["startip"]; found {
|
||||
u.Set("startip", v.(string))
|
||||
}
|
||||
if v, found := p.p["vlan"]; found {
|
||||
u.Set("vlan", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *CreatePortableIpRangeParams) SetEndip(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["endip"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreatePortableIpRangeParams) SetGateway(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["gateway"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreatePortableIpRangeParams) SetNetmask(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["netmask"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreatePortableIpRangeParams) SetRegionid(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["regionid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreatePortableIpRangeParams) SetStartip(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["startip"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreatePortableIpRangeParams) SetVlan(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["vlan"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new CreatePortableIpRangeParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *PortableIPService) NewCreatePortableIpRangeParams(endip string, gateway string, netmask string, regionid int, startip string) *CreatePortableIpRangeParams {
|
||||
p := &CreatePortableIpRangeParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["endip"] = endip
|
||||
p.p["gateway"] = gateway
|
||||
p.p["netmask"] = netmask
|
||||
p.p["regionid"] = regionid
|
||||
p.p["startip"] = startip
|
||||
return p
|
||||
}
|
||||
|
||||
// adds a range of portable public IP's to a region
|
||||
func (s *PortableIPService) CreatePortableIpRange(p *CreatePortableIpRangeParams) (*CreatePortableIpRangeResponse, error) {
|
||||
resp, err := s.cs.newRequest("createPortableIpRange", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r CreatePortableIpRangeResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
b, err = getRawValue(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type CreatePortableIpRangeResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Endip string `json:"endip,omitempty"`
|
||||
Gateway string `json:"gateway,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Netmask string `json:"netmask,omitempty"`
|
||||
Portableipaddress []struct {
|
||||
Accountid string `json:"accountid,omitempty"`
|
||||
Allocated string `json:"allocated,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Ipaddress string `json:"ipaddress,omitempty"`
|
||||
Networkid string `json:"networkid,omitempty"`
|
||||
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
|
||||
Regionid int `json:"regionid,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Vpcid string `json:"vpcid,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
} `json:"portableipaddress,omitempty"`
|
||||
Regionid int `json:"regionid,omitempty"`
|
||||
Startip string `json:"startip,omitempty"`
|
||||
Vlan string `json:"vlan,omitempty"`
|
||||
}
|
||||
|
||||
type DeletePortableIpRangeParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *DeletePortableIpRangeParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *DeletePortableIpRangeParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new DeletePortableIpRangeParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *PortableIPService) NewDeletePortableIpRangeParams(id string) *DeletePortableIpRangeParams {
|
||||
p := &DeletePortableIpRangeParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// deletes a range of portable public IP's associated with a region
|
||||
func (s *PortableIPService) DeletePortableIpRange(p *DeletePortableIpRangeParams) (*DeletePortableIpRangeResponse, error) {
|
||||
resp, err := s.cs.newRequest("deletePortableIpRange", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r DeletePortableIpRangeResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type DeletePortableIpRangeResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success bool `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type ListPortableIpRangesParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListPortableIpRangesParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["regionid"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("regionid", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListPortableIpRangesParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPortableIpRangesParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPortableIpRangesParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPortableIpRangesParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListPortableIpRangesParams) SetRegionid(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["regionid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListPortableIpRangesParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *PortableIPService) NewListPortableIpRangesParams() *ListPortableIpRangesParams {
|
||||
p := &ListPortableIpRangesParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *PortableIPService) GetPortableIpRangeByID(id string, opts ...OptionFunc) (*PortableIpRange, int, error) {
|
||||
p := &ListPortableIpRangesParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["id"] = id
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return nil, -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListPortableIpRanges(p)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), fmt.Sprintf(
|
||||
"Invalid parameter id value=%s due to incorrect long value format, "+
|
||||
"or entity does not exist", id)) {
|
||||
return nil, 0, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
return nil, -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return nil, l.Count, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.PortableIpRanges[0], l.Count, nil
|
||||
}
|
||||
return nil, l.Count, fmt.Errorf("There is more then one result for PortableIpRange UUID: %s!", id)
|
||||
}
|
||||
|
||||
// list portable IP ranges
|
||||
func (s *PortableIPService) ListPortableIpRanges(p *ListPortableIpRangesParams) (*ListPortableIpRangesResponse, error) {
|
||||
resp, err := s.cs.newRequest("listPortableIpRanges", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListPortableIpRangesResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListPortableIpRangesResponse struct {
|
||||
Count int `json:"count"`
|
||||
PortableIpRanges []*PortableIpRange `json:"portableiprange"`
|
||||
}
|
||||
|
||||
type PortableIpRange struct {
|
||||
Endip string `json:"endip,omitempty"`
|
||||
Gateway string `json:"gateway,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Netmask string `json:"netmask,omitempty"`
|
||||
Portableipaddress []struct {
|
||||
Accountid string `json:"accountid,omitempty"`
|
||||
Allocated string `json:"allocated,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Ipaddress string `json:"ipaddress,omitempty"`
|
||||
Networkid string `json:"networkid,omitempty"`
|
||||
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
|
||||
Regionid int `json:"regionid,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Vpcid string `json:"vpcid,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
} `json:"portableipaddress,omitempty"`
|
||||
Regionid int `json:"regionid,omitempty"`
|
||||
Startip string `json:"startip,omitempty"`
|
||||
Vlan string `json:"vlan,omitempty"`
|
||||
}
|
1341
vendor/github.com/xanzy/go-cloudstack/cloudstack/ProjectService.go
generated
vendored
Normal file
1341
vendor/github.com/xanzy/go-cloudstack/cloudstack/ProjectService.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,60 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
type QuotaIsEnabledParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *QuotaIsEnabledParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
// You should always use this function to get a new QuotaIsEnabledParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *QuotaService) NewQuotaIsEnabledParams() *QuotaIsEnabledParams {
|
||||
p := &QuotaIsEnabledParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Return true if the plugin is enabled
|
||||
func (s *QuotaService) QuotaIsEnabled(p *QuotaIsEnabledParams) (*QuotaIsEnabledResponse, error) {
|
||||
resp, err := s.cs.newRequest("quotaIsEnabled", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r QuotaIsEnabledResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type QuotaIsEnabledResponse struct {
|
||||
Isenabled bool `json:"isenabled,omitempty"`
|
||||
}
|
336
vendor/github.com/xanzy/go-cloudstack/cloudstack/RegionService.go
generated
vendored
Normal file
336
vendor/github.com/xanzy/go-cloudstack/cloudstack/RegionService.go
generated
vendored
Normal file
|
@ -0,0 +1,336 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/url"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type AddRegionParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *AddRegionParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["endpoint"]; found {
|
||||
u.Set("endpoint", v.(string))
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("id", vv)
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *AddRegionParams) SetEndpoint(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["endpoint"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddRegionParams) SetId(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddRegionParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new AddRegionParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *RegionService) NewAddRegionParams(endpoint string, id int, name string) *AddRegionParams {
|
||||
p := &AddRegionParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["endpoint"] = endpoint
|
||||
p.p["id"] = id
|
||||
p.p["name"] = name
|
||||
return p
|
||||
}
|
||||
|
||||
// Adds a Region
|
||||
func (s *RegionService) AddRegion(p *AddRegionParams) (*AddRegionResponse, error) {
|
||||
resp, err := s.cs.newRequest("addRegion", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r AddRegionResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type AddRegionResponse struct {
|
||||
Endpoint string `json:"endpoint,omitempty"`
|
||||
Gslbserviceenabled bool `json:"gslbserviceenabled,omitempty"`
|
||||
Id int `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Portableipserviceenabled bool `json:"portableipserviceenabled,omitempty"`
|
||||
}
|
||||
|
||||
type UpdateRegionParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *UpdateRegionParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["endpoint"]; found {
|
||||
u.Set("endpoint", v.(string))
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("id", vv)
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *UpdateRegionParams) SetEndpoint(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["endpoint"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateRegionParams) SetId(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateRegionParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new UpdateRegionParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *RegionService) NewUpdateRegionParams(id int) *UpdateRegionParams {
|
||||
p := &UpdateRegionParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Updates a region
|
||||
func (s *RegionService) UpdateRegion(p *UpdateRegionParams) (*UpdateRegionResponse, error) {
|
||||
resp, err := s.cs.newRequest("updateRegion", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r UpdateRegionResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type UpdateRegionResponse struct {
|
||||
Endpoint string `json:"endpoint,omitempty"`
|
||||
Gslbserviceenabled bool `json:"gslbserviceenabled,omitempty"`
|
||||
Id int `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Portableipserviceenabled bool `json:"portableipserviceenabled,omitempty"`
|
||||
}
|
||||
|
||||
type RemoveRegionParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *RemoveRegionParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("id", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *RemoveRegionParams) SetId(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new RemoveRegionParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *RegionService) NewRemoveRegionParams(id int) *RemoveRegionParams {
|
||||
p := &RemoveRegionParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Removes specified region
|
||||
func (s *RegionService) RemoveRegion(p *RemoveRegionParams) (*RemoveRegionResponse, error) {
|
||||
resp, err := s.cs.newRequest("removeRegion", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r RemoveRegionResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type RemoveRegionResponse struct {
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success string `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type ListRegionsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListRegionsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("id", vv)
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListRegionsParams) SetId(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListRegionsParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListRegionsParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListRegionsParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListRegionsParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListRegionsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *RegionService) NewListRegionsParams() *ListRegionsParams {
|
||||
p := &ListRegionsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Lists Regions
|
||||
func (s *RegionService) ListRegions(p *ListRegionsParams) (*ListRegionsResponse, error) {
|
||||
resp, err := s.cs.newRequest("listRegions", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListRegionsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListRegionsResponse struct {
|
||||
Count int `json:"count"`
|
||||
Regions []*Region `json:"region"`
|
||||
}
|
||||
|
||||
type Region struct {
|
||||
Endpoint string `json:"endpoint,omitempty"`
|
||||
Gslbserviceenabled bool `json:"gslbserviceenabled,omitempty"`
|
||||
Id int `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Portableipserviceenabled bool `json:"portableipserviceenabled,omitempty"`
|
||||
}
|
423
vendor/github.com/xanzy/go-cloudstack/cloudstack/ResourcemetadataService.go
generated
vendored
Normal file
423
vendor/github.com/xanzy/go-cloudstack/cloudstack/ResourcemetadataService.go
generated
vendored
Normal file
|
@ -0,0 +1,423 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type AddResourceDetailParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *AddResourceDetailParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["details"]; found {
|
||||
i := 0
|
||||
for k, vv := range v.(map[string]string) {
|
||||
u.Set(fmt.Sprintf("details[%d].key", i), k)
|
||||
u.Set(fmt.Sprintf("details[%d].value", i), vv)
|
||||
i++
|
||||
}
|
||||
}
|
||||
if v, found := p.p["fordisplay"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("fordisplay", vv)
|
||||
}
|
||||
if v, found := p.p["resourceid"]; found {
|
||||
u.Set("resourceid", v.(string))
|
||||
}
|
||||
if v, found := p.p["resourcetype"]; found {
|
||||
u.Set("resourcetype", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *AddResourceDetailParams) SetDetails(v map[string]string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["details"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddResourceDetailParams) SetFordisplay(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["fordisplay"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddResourceDetailParams) SetResourceid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["resourceid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddResourceDetailParams) SetResourcetype(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["resourcetype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new AddResourceDetailParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *ResourcemetadataService) NewAddResourceDetailParams(details map[string]string, resourceid string, resourcetype string) *AddResourceDetailParams {
|
||||
p := &AddResourceDetailParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["details"] = details
|
||||
p.p["resourceid"] = resourceid
|
||||
p.p["resourcetype"] = resourcetype
|
||||
return p
|
||||
}
|
||||
|
||||
// Adds detail for the Resource.
|
||||
func (s *ResourcemetadataService) AddResourceDetail(p *AddResourceDetailParams) (*AddResourceDetailResponse, error) {
|
||||
resp, err := s.cs.newRequest("addResourceDetail", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r AddResourceDetailResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type AddResourceDetailResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success bool `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type RemoveResourceDetailParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *RemoveResourceDetailParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["key"]; found {
|
||||
u.Set("key", v.(string))
|
||||
}
|
||||
if v, found := p.p["resourceid"]; found {
|
||||
u.Set("resourceid", v.(string))
|
||||
}
|
||||
if v, found := p.p["resourcetype"]; found {
|
||||
u.Set("resourcetype", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *RemoveResourceDetailParams) SetKey(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["key"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *RemoveResourceDetailParams) SetResourceid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["resourceid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *RemoveResourceDetailParams) SetResourcetype(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["resourcetype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new RemoveResourceDetailParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *ResourcemetadataService) NewRemoveResourceDetailParams(resourceid string, resourcetype string) *RemoveResourceDetailParams {
|
||||
p := &RemoveResourceDetailParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["resourceid"] = resourceid
|
||||
p.p["resourcetype"] = resourcetype
|
||||
return p
|
||||
}
|
||||
|
||||
// Removes detail for the Resource.
|
||||
func (s *ResourcemetadataService) RemoveResourceDetail(p *RemoveResourceDetailParams) (*RemoveResourceDetailResponse, error) {
|
||||
resp, err := s.cs.newRequest("removeResourceDetail", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r RemoveResourceDetailResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type RemoveResourceDetailResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success bool `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type ListResourceDetailsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListResourceDetailsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["fordisplay"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("fordisplay", vv)
|
||||
}
|
||||
if v, found := p.p["isrecursive"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("isrecursive", vv)
|
||||
}
|
||||
if v, found := p.p["key"]; found {
|
||||
u.Set("key", v.(string))
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["listall"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("listall", vv)
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["projectid"]; found {
|
||||
u.Set("projectid", v.(string))
|
||||
}
|
||||
if v, found := p.p["resourceid"]; found {
|
||||
u.Set("resourceid", v.(string))
|
||||
}
|
||||
if v, found := p.p["resourcetype"]; found {
|
||||
u.Set("resourcetype", v.(string))
|
||||
}
|
||||
if v, found := p.p["value"]; found {
|
||||
u.Set("value", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListResourceDetailsParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListResourceDetailsParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListResourceDetailsParams) SetFordisplay(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["fordisplay"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListResourceDetailsParams) SetIsrecursive(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["isrecursive"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListResourceDetailsParams) SetKey(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["key"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListResourceDetailsParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListResourceDetailsParams) SetListall(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["listall"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListResourceDetailsParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListResourceDetailsParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListResourceDetailsParams) SetProjectid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["projectid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListResourceDetailsParams) SetResourceid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["resourceid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListResourceDetailsParams) SetResourcetype(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["resourcetype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListResourceDetailsParams) SetValue(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["value"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListResourceDetailsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *ResourcemetadataService) NewListResourceDetailsParams(resourcetype string) *ListResourceDetailsParams {
|
||||
p := &ListResourceDetailsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["resourcetype"] = resourcetype
|
||||
return p
|
||||
}
|
||||
|
||||
// List resource detail(s)
|
||||
func (s *ResourcemetadataService) ListResourceDetails(p *ListResourceDetailsParams) (*ListResourceDetailsResponse, error) {
|
||||
resp, err := s.cs.newRequest("listResourceDetails", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListResourceDetailsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListResourceDetailsResponse struct {
|
||||
Count int `json:"count"`
|
||||
ResourceDetails []*ResourceDetail `json:"resourcedetail"`
|
||||
}
|
||||
|
||||
type ResourceDetail struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Customer string `json:"customer,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Key string `json:"key,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Resourceid string `json:"resourceid,omitempty"`
|
||||
Resourcetype string `json:"resourcetype,omitempty"`
|
||||
Value string `json:"value,omitempty"`
|
||||
}
|
544
vendor/github.com/xanzy/go-cloudstack/cloudstack/ResourcetagsService.go
generated
vendored
Normal file
544
vendor/github.com/xanzy/go-cloudstack/cloudstack/ResourcetagsService.go
generated
vendored
Normal file
|
@ -0,0 +1,544 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type ListStorageTagsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListStorageTagsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListStorageTagsParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListStorageTagsParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListStorageTagsParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListStorageTagsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *ResourcetagsService) NewListStorageTagsParams() *ListStorageTagsParams {
|
||||
p := &ListStorageTagsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *ResourcetagsService) GetStorageTagID(keyword string, opts ...OptionFunc) (string, int, error) {
|
||||
p := &ListStorageTagsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["keyword"] = keyword
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListStorageTags(p)
|
||||
if err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return "", l.Count, fmt.Errorf("No match found for %s: %+v", keyword, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.StorageTags[0].Id, l.Count, nil
|
||||
}
|
||||
|
||||
if l.Count > 1 {
|
||||
for _, v := range l.StorageTags {
|
||||
if v.Name == keyword {
|
||||
return v.Id, l.Count, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
return "", l.Count, fmt.Errorf("Could not find an exact match for %s: %+v", keyword, l)
|
||||
}
|
||||
|
||||
// Lists storage tags
|
||||
func (s *ResourcetagsService) ListStorageTags(p *ListStorageTagsParams) (*ListStorageTagsResponse, error) {
|
||||
resp, err := s.cs.newRequest("listStorageTags", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListStorageTagsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListStorageTagsResponse struct {
|
||||
Count int `json:"count"`
|
||||
StorageTags []*StorageTag `json:"storagetag"`
|
||||
}
|
||||
|
||||
type StorageTag struct {
|
||||
Id string `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Poolid int64 `json:"poolid,omitempty"`
|
||||
}
|
||||
|
||||
type CreateTagsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *CreateTagsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["customer"]; found {
|
||||
u.Set("customer", v.(string))
|
||||
}
|
||||
if v, found := p.p["resourceids"]; found {
|
||||
vv := strings.Join(v.([]string), ",")
|
||||
u.Set("resourceids", vv)
|
||||
}
|
||||
if v, found := p.p["resourcetype"]; found {
|
||||
u.Set("resourcetype", v.(string))
|
||||
}
|
||||
if v, found := p.p["tags"]; found {
|
||||
i := 0
|
||||
for k, vv := range v.(map[string]string) {
|
||||
u.Set(fmt.Sprintf("tags[%d].key", i), k)
|
||||
u.Set(fmt.Sprintf("tags[%d].value", i), vv)
|
||||
i++
|
||||
}
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *CreateTagsParams) SetCustomer(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["customer"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateTagsParams) SetResourceids(v []string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["resourceids"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateTagsParams) SetResourcetype(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["resourcetype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateTagsParams) SetTags(v map[string]string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["tags"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new CreateTagsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *ResourcetagsService) NewCreateTagsParams(resourceids []string, resourcetype string, tags map[string]string) *CreateTagsParams {
|
||||
p := &CreateTagsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["resourceids"] = resourceids
|
||||
p.p["resourcetype"] = resourcetype
|
||||
p.p["tags"] = tags
|
||||
return p
|
||||
}
|
||||
|
||||
// Creates resource tag(s)
|
||||
func (s *ResourcetagsService) CreateTags(p *CreateTagsParams) (*CreateTagsResponse, error) {
|
||||
resp, err := s.cs.newRequest("createTags", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r CreateTagsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type CreateTagsResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success bool `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type DeleteTagsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *DeleteTagsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["resourceids"]; found {
|
||||
vv := strings.Join(v.([]string), ",")
|
||||
u.Set("resourceids", vv)
|
||||
}
|
||||
if v, found := p.p["resourcetype"]; found {
|
||||
u.Set("resourcetype", v.(string))
|
||||
}
|
||||
if v, found := p.p["tags"]; found {
|
||||
i := 0
|
||||
for k, vv := range v.(map[string]string) {
|
||||
u.Set(fmt.Sprintf("tags[%d].key", i), k)
|
||||
u.Set(fmt.Sprintf("tags[%d].value", i), vv)
|
||||
i++
|
||||
}
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *DeleteTagsParams) SetResourceids(v []string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["resourceids"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *DeleteTagsParams) SetResourcetype(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["resourcetype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *DeleteTagsParams) SetTags(v map[string]string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["tags"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new DeleteTagsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *ResourcetagsService) NewDeleteTagsParams(resourceids []string, resourcetype string) *DeleteTagsParams {
|
||||
p := &DeleteTagsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["resourceids"] = resourceids
|
||||
p.p["resourcetype"] = resourcetype
|
||||
return p
|
||||
}
|
||||
|
||||
// Deleting resource tag(s)
|
||||
func (s *ResourcetagsService) DeleteTags(p *DeleteTagsParams) (*DeleteTagsResponse, error) {
|
||||
resp, err := s.cs.newRequest("deleteTags", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r DeleteTagsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type DeleteTagsResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success bool `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type ListTagsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListTagsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["customer"]; found {
|
||||
u.Set("customer", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["isrecursive"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("isrecursive", vv)
|
||||
}
|
||||
if v, found := p.p["key"]; found {
|
||||
u.Set("key", v.(string))
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["listall"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("listall", vv)
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["projectid"]; found {
|
||||
u.Set("projectid", v.(string))
|
||||
}
|
||||
if v, found := p.p["resourceid"]; found {
|
||||
u.Set("resourceid", v.(string))
|
||||
}
|
||||
if v, found := p.p["resourcetype"]; found {
|
||||
u.Set("resourcetype", v.(string))
|
||||
}
|
||||
if v, found := p.p["value"]; found {
|
||||
u.Set("value", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListTagsParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListTagsParams) SetCustomer(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["customer"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListTagsParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListTagsParams) SetIsrecursive(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["isrecursive"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListTagsParams) SetKey(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["key"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListTagsParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListTagsParams) SetListall(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["listall"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListTagsParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListTagsParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListTagsParams) SetProjectid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["projectid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListTagsParams) SetResourceid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["resourceid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListTagsParams) SetResourcetype(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["resourcetype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListTagsParams) SetValue(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["value"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListTagsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *ResourcetagsService) NewListTagsParams() *ListTagsParams {
|
||||
p := &ListTagsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// List resource tag(s)
|
||||
func (s *ResourcetagsService) ListTags(p *ListTagsParams) (*ListTagsResponse, error) {
|
||||
resp, err := s.cs.newRequest("listTags", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListTagsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListTagsResponse struct {
|
||||
Count int `json:"count"`
|
||||
Tags []*Tag `json:"tag"`
|
||||
}
|
||||
|
||||
type Tag struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Customer string `json:"customer,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Key string `json:"key,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Resourceid string `json:"resourceid,omitempty"`
|
||||
Resourcetype string `json:"resourcetype,omitempty"`
|
||||
Value string `json:"value,omitempty"`
|
||||
}
|
1457
vendor/github.com/xanzy/go-cloudstack/cloudstack/RouterService.go
generated
vendored
Normal file
1457
vendor/github.com/xanzy/go-cloudstack/cloudstack/RouterService.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,746 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/url"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type ResetSSHKeyForVirtualMachineParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ResetSSHKeyForVirtualMachineParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["keypair"]; found {
|
||||
u.Set("keypair", v.(string))
|
||||
}
|
||||
if v, found := p.p["projectid"]; found {
|
||||
u.Set("projectid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ResetSSHKeyForVirtualMachineParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ResetSSHKeyForVirtualMachineParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ResetSSHKeyForVirtualMachineParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ResetSSHKeyForVirtualMachineParams) SetKeypair(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keypair"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ResetSSHKeyForVirtualMachineParams) SetProjectid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["projectid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ResetSSHKeyForVirtualMachineParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *SSHService) NewResetSSHKeyForVirtualMachineParams(id string, keypair string) *ResetSSHKeyForVirtualMachineParams {
|
||||
p := &ResetSSHKeyForVirtualMachineParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
p.p["keypair"] = keypair
|
||||
return p
|
||||
}
|
||||
|
||||
// Resets the SSH Key for virtual machine. The virtual machine must be in a "Stopped" state. [async]
|
||||
func (s *SSHService) ResetSSHKeyForVirtualMachine(p *ResetSSHKeyForVirtualMachineParams) (*ResetSSHKeyForVirtualMachineResponse, error) {
|
||||
resp, err := s.cs.newRequest("resetSSHKeyForVirtualMachine", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ResetSSHKeyForVirtualMachineResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
b, err = getRawValue(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ResetSSHKeyForVirtualMachineResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Account string `json:"account,omitempty"`
|
||||
Affinitygroup []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
VirtualmachineIds []string `json:"virtualmachineIds,omitempty"`
|
||||
} `json:"affinitygroup,omitempty"`
|
||||
Cpunumber int `json:"cpunumber,omitempty"`
|
||||
Cpuspeed int `json:"cpuspeed,omitempty"`
|
||||
Cpuused string `json:"cpuused,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
Details map[string]string `json:"details,omitempty"`
|
||||
Diskioread int64 `json:"diskioread,omitempty"`
|
||||
Diskiowrite int64 `json:"diskiowrite,omitempty"`
|
||||
Diskkbsread int64 `json:"diskkbsread,omitempty"`
|
||||
Diskkbswrite int64 `json:"diskkbswrite,omitempty"`
|
||||
Diskofferingid string `json:"diskofferingid,omitempty"`
|
||||
Diskofferingname string `json:"diskofferingname,omitempty"`
|
||||
Displayname string `json:"displayname,omitempty"`
|
||||
Displayvm bool `json:"displayvm,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Forvirtualnetwork bool `json:"forvirtualnetwork,omitempty"`
|
||||
Group string `json:"group,omitempty"`
|
||||
Groupid string `json:"groupid,omitempty"`
|
||||
Guestosid string `json:"guestosid,omitempty"`
|
||||
Haenable bool `json:"haenable,omitempty"`
|
||||
Hostid string `json:"hostid,omitempty"`
|
||||
Hostname string `json:"hostname,omitempty"`
|
||||
Hypervisor string `json:"hypervisor,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Instancename string `json:"instancename,omitempty"`
|
||||
Isdynamicallyscalable bool `json:"isdynamicallyscalable,omitempty"`
|
||||
Isodisplaytext string `json:"isodisplaytext,omitempty"`
|
||||
Isoid string `json:"isoid,omitempty"`
|
||||
Isoname string `json:"isoname,omitempty"`
|
||||
Keypair string `json:"keypair,omitempty"`
|
||||
Memory int `json:"memory,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Networkkbsread int64 `json:"networkkbsread,omitempty"`
|
||||
Networkkbswrite int64 `json:"networkkbswrite,omitempty"`
|
||||
Nic []struct {
|
||||
Broadcasturi string `json:"broadcasturi,omitempty"`
|
||||
Deviceid string `json:"deviceid,omitempty"`
|
||||
Gateway string `json:"gateway,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ip6address string `json:"ip6address,omitempty"`
|
||||
Ip6cidr string `json:"ip6cidr,omitempty"`
|
||||
Ip6gateway string `json:"ip6gateway,omitempty"`
|
||||
Ipaddress string `json:"ipaddress,omitempty"`
|
||||
Isdefault bool `json:"isdefault,omitempty"`
|
||||
Isolationuri string `json:"isolationuri,omitempty"`
|
||||
Macaddress string `json:"macaddress,omitempty"`
|
||||
Netmask string `json:"netmask,omitempty"`
|
||||
Networkid string `json:"networkid,omitempty"`
|
||||
Networkname string `json:"networkname,omitempty"`
|
||||
Secondaryip []struct {
|
||||
Id string `json:"id,omitempty"`
|
||||
Ipaddress string `json:"ipaddress,omitempty"`
|
||||
} `json:"secondaryip,omitempty"`
|
||||
Traffictype string `json:"traffictype,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
Virtualmachineid string `json:"virtualmachineid,omitempty"`
|
||||
} `json:"nic,omitempty"`
|
||||
Ostypeid int64 `json:"ostypeid,omitempty"`
|
||||
Password string `json:"password,omitempty"`
|
||||
Passwordenabled bool `json:"passwordenabled,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Publicip string `json:"publicip,omitempty"`
|
||||
Publicipid string `json:"publicipid,omitempty"`
|
||||
Rootdeviceid int64 `json:"rootdeviceid,omitempty"`
|
||||
Rootdevicetype string `json:"rootdevicetype,omitempty"`
|
||||
Securitygroup []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Egressrule []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Cidr string `json:"cidr,omitempty"`
|
||||
Endport int `json:"endport,omitempty"`
|
||||
Icmpcode int `json:"icmpcode,omitempty"`
|
||||
Icmptype int `json:"icmptype,omitempty"`
|
||||
Protocol string `json:"protocol,omitempty"`
|
||||
Ruleid string `json:"ruleid,omitempty"`
|
||||
Securitygroupname string `json:"securitygroupname,omitempty"`
|
||||
Startport int `json:"startport,omitempty"`
|
||||
Tags []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Customer string `json:"customer,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Key string `json:"key,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Resourceid string `json:"resourceid,omitempty"`
|
||||
Resourcetype string `json:"resourcetype,omitempty"`
|
||||
Value string `json:"value,omitempty"`
|
||||
} `json:"tags,omitempty"`
|
||||
} `json:"egressrule,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ingressrule []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Cidr string `json:"cidr,omitempty"`
|
||||
Endport int `json:"endport,omitempty"`
|
||||
Icmpcode int `json:"icmpcode,omitempty"`
|
||||
Icmptype int `json:"icmptype,omitempty"`
|
||||
Protocol string `json:"protocol,omitempty"`
|
||||
Ruleid string `json:"ruleid,omitempty"`
|
||||
Securitygroupname string `json:"securitygroupname,omitempty"`
|
||||
Startport int `json:"startport,omitempty"`
|
||||
Tags []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Customer string `json:"customer,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Key string `json:"key,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Resourceid string `json:"resourceid,omitempty"`
|
||||
Resourcetype string `json:"resourcetype,omitempty"`
|
||||
Value string `json:"value,omitempty"`
|
||||
} `json:"tags,omitempty"`
|
||||
} `json:"ingressrule,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Tags []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Customer string `json:"customer,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Key string `json:"key,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Resourceid string `json:"resourceid,omitempty"`
|
||||
Resourcetype string `json:"resourcetype,omitempty"`
|
||||
Value string `json:"value,omitempty"`
|
||||
} `json:"tags,omitempty"`
|
||||
Virtualmachinecount int `json:"virtualmachinecount,omitempty"`
|
||||
Virtualmachineids []string `json:"virtualmachineids,omitempty"`
|
||||
} `json:"securitygroup,omitempty"`
|
||||
Serviceofferingid string `json:"serviceofferingid,omitempty"`
|
||||
Serviceofferingname string `json:"serviceofferingname,omitempty"`
|
||||
Servicestate string `json:"servicestate,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Tags []struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Customer string `json:"customer,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Key string `json:"key,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Resourceid string `json:"resourceid,omitempty"`
|
||||
Resourcetype string `json:"resourcetype,omitempty"`
|
||||
Value string `json:"value,omitempty"`
|
||||
} `json:"tags,omitempty"`
|
||||
Templatedisplaytext string `json:"templatedisplaytext,omitempty"`
|
||||
Templateid string `json:"templateid,omitempty"`
|
||||
Templatename string `json:"templatename,omitempty"`
|
||||
Userid string `json:"userid,omitempty"`
|
||||
Username string `json:"username,omitempty"`
|
||||
Vgpu string `json:"vgpu,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
Zonename string `json:"zonename,omitempty"`
|
||||
}
|
||||
|
||||
type RegisterSSHKeyPairParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *RegisterSSHKeyPairParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["projectid"]; found {
|
||||
u.Set("projectid", v.(string))
|
||||
}
|
||||
if v, found := p.p["publickey"]; found {
|
||||
u.Set("publickey", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *RegisterSSHKeyPairParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *RegisterSSHKeyPairParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *RegisterSSHKeyPairParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *RegisterSSHKeyPairParams) SetProjectid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["projectid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *RegisterSSHKeyPairParams) SetPublickey(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["publickey"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new RegisterSSHKeyPairParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *SSHService) NewRegisterSSHKeyPairParams(name string, publickey string) *RegisterSSHKeyPairParams {
|
||||
p := &RegisterSSHKeyPairParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["name"] = name
|
||||
p.p["publickey"] = publickey
|
||||
return p
|
||||
}
|
||||
|
||||
// Register a public key in a keypair under a certain name
|
||||
func (s *SSHService) RegisterSSHKeyPair(p *RegisterSSHKeyPairParams) (*RegisterSSHKeyPairResponse, error) {
|
||||
resp, err := s.cs.newRequest("registerSSHKeyPair", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if resp, err = getRawValue(resp); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r RegisterSSHKeyPairResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type RegisterSSHKeyPairResponse struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Fingerprint string `json:"fingerprint,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
}
|
||||
|
||||
type CreateSSHKeyPairParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *CreateSSHKeyPairParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["projectid"]; found {
|
||||
u.Set("projectid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *CreateSSHKeyPairParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateSSHKeyPairParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateSSHKeyPairParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateSSHKeyPairParams) SetProjectid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["projectid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new CreateSSHKeyPairParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *SSHService) NewCreateSSHKeyPairParams(name string) *CreateSSHKeyPairParams {
|
||||
p := &CreateSSHKeyPairParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["name"] = name
|
||||
return p
|
||||
}
|
||||
|
||||
// Create a new keypair and returns the private key
|
||||
func (s *SSHService) CreateSSHKeyPair(p *CreateSSHKeyPairParams) (*CreateSSHKeyPairResponse, error) {
|
||||
resp, err := s.cs.newRequest("createSSHKeyPair", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if resp, err = getRawValue(resp); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r CreateSSHKeyPairResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type CreateSSHKeyPairResponse struct {
|
||||
Privatekey string `json:"privatekey,omitempty"`
|
||||
}
|
||||
|
||||
type DeleteSSHKeyPairParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *DeleteSSHKeyPairParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["projectid"]; found {
|
||||
u.Set("projectid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *DeleteSSHKeyPairParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *DeleteSSHKeyPairParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *DeleteSSHKeyPairParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *DeleteSSHKeyPairParams) SetProjectid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["projectid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new DeleteSSHKeyPairParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *SSHService) NewDeleteSSHKeyPairParams(name string) *DeleteSSHKeyPairParams {
|
||||
p := &DeleteSSHKeyPairParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["name"] = name
|
||||
return p
|
||||
}
|
||||
|
||||
// Deletes a keypair by name
|
||||
func (s *SSHService) DeleteSSHKeyPair(p *DeleteSSHKeyPairParams) (*DeleteSSHKeyPairResponse, error) {
|
||||
resp, err := s.cs.newRequest("deleteSSHKeyPair", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r DeleteSSHKeyPairResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type DeleteSSHKeyPairResponse struct {
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success string `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type ListSSHKeyPairsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListSSHKeyPairsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["fingerprint"]; found {
|
||||
u.Set("fingerprint", v.(string))
|
||||
}
|
||||
if v, found := p.p["isrecursive"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("isrecursive", vv)
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["listall"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("listall", vv)
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["projectid"]; found {
|
||||
u.Set("projectid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListSSHKeyPairsParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListSSHKeyPairsParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListSSHKeyPairsParams) SetFingerprint(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["fingerprint"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListSSHKeyPairsParams) SetIsrecursive(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["isrecursive"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListSSHKeyPairsParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListSSHKeyPairsParams) SetListall(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["listall"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListSSHKeyPairsParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListSSHKeyPairsParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListSSHKeyPairsParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListSSHKeyPairsParams) SetProjectid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["projectid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListSSHKeyPairsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *SSHService) NewListSSHKeyPairsParams() *ListSSHKeyPairsParams {
|
||||
p := &ListSSHKeyPairsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// List registered keypairs
|
||||
func (s *SSHService) ListSSHKeyPairs(p *ListSSHKeyPairsParams) (*ListSSHKeyPairsResponse, error) {
|
||||
resp, err := s.cs.newRequest("listSSHKeyPairs", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListSSHKeyPairsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListSSHKeyPairsResponse struct {
|
||||
Count int `json:"count"`
|
||||
SSHKeyPairs []*SSHKeyPair `json:"sshkeypair"`
|
||||
}
|
||||
|
||||
type SSHKeyPair struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Fingerprint string `json:"fingerprint,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
}
|
1194
vendor/github.com/xanzy/go-cloudstack/cloudstack/SecurityGroupService.go
generated
vendored
Normal file
1194
vendor/github.com/xanzy/go-cloudstack/cloudstack/SecurityGroupService.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
853
vendor/github.com/xanzy/go-cloudstack/cloudstack/ServiceOfferingService.go
generated
vendored
Normal file
853
vendor/github.com/xanzy/go-cloudstack/cloudstack/ServiceOfferingService.go
generated
vendored
Normal file
|
@ -0,0 +1,853 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type CreateServiceOfferingParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["bytesreadrate"]; found {
|
||||
vv := strconv.FormatInt(v.(int64), 10)
|
||||
u.Set("bytesreadrate", vv)
|
||||
}
|
||||
if v, found := p.p["byteswriterate"]; found {
|
||||
vv := strconv.FormatInt(v.(int64), 10)
|
||||
u.Set("byteswriterate", vv)
|
||||
}
|
||||
if v, found := p.p["cpunumber"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("cpunumber", vv)
|
||||
}
|
||||
if v, found := p.p["cpuspeed"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("cpuspeed", vv)
|
||||
}
|
||||
if v, found := p.p["customizediops"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("customizediops", vv)
|
||||
}
|
||||
if v, found := p.p["deploymentplanner"]; found {
|
||||
u.Set("deploymentplanner", v.(string))
|
||||
}
|
||||
if v, found := p.p["displaytext"]; found {
|
||||
u.Set("displaytext", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["hosttags"]; found {
|
||||
u.Set("hosttags", v.(string))
|
||||
}
|
||||
if v, found := p.p["hypervisorsnapshotreserve"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("hypervisorsnapshotreserve", vv)
|
||||
}
|
||||
if v, found := p.p["iopsreadrate"]; found {
|
||||
vv := strconv.FormatInt(v.(int64), 10)
|
||||
u.Set("iopsreadrate", vv)
|
||||
}
|
||||
if v, found := p.p["iopswriterate"]; found {
|
||||
vv := strconv.FormatInt(v.(int64), 10)
|
||||
u.Set("iopswriterate", vv)
|
||||
}
|
||||
if v, found := p.p["issystem"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("issystem", vv)
|
||||
}
|
||||
if v, found := p.p["isvolatile"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("isvolatile", vv)
|
||||
}
|
||||
if v, found := p.p["limitcpuuse"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("limitcpuuse", vv)
|
||||
}
|
||||
if v, found := p.p["maxiops"]; found {
|
||||
vv := strconv.FormatInt(v.(int64), 10)
|
||||
u.Set("maxiops", vv)
|
||||
}
|
||||
if v, found := p.p["memory"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("memory", vv)
|
||||
}
|
||||
if v, found := p.p["miniops"]; found {
|
||||
vv := strconv.FormatInt(v.(int64), 10)
|
||||
u.Set("miniops", vv)
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["networkrate"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("networkrate", vv)
|
||||
}
|
||||
if v, found := p.p["offerha"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("offerha", vv)
|
||||
}
|
||||
if v, found := p.p["provisioningtype"]; found {
|
||||
u.Set("provisioningtype", v.(string))
|
||||
}
|
||||
if v, found := p.p["serviceofferingdetails"]; found {
|
||||
i := 0
|
||||
for k, vv := range v.(map[string]string) {
|
||||
u.Set(fmt.Sprintf("serviceofferingdetails[%d].key", i), k)
|
||||
u.Set(fmt.Sprintf("serviceofferingdetails[%d].value", i), vv)
|
||||
i++
|
||||
}
|
||||
}
|
||||
if v, found := p.p["storagetype"]; found {
|
||||
u.Set("storagetype", v.(string))
|
||||
}
|
||||
if v, found := p.p["systemvmtype"]; found {
|
||||
u.Set("systemvmtype", v.(string))
|
||||
}
|
||||
if v, found := p.p["tags"]; found {
|
||||
u.Set("tags", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetBytesreadrate(v int64) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["bytesreadrate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetByteswriterate(v int64) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["byteswriterate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetCpunumber(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["cpunumber"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetCpuspeed(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["cpuspeed"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetCustomizediops(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["customizediops"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetDeploymentplanner(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["deploymentplanner"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetDisplaytext(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["displaytext"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetHosttags(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["hosttags"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetHypervisorsnapshotreserve(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["hypervisorsnapshotreserve"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetIopsreadrate(v int64) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["iopsreadrate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetIopswriterate(v int64) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["iopswriterate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetIssystem(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["issystem"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetIsvolatile(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["isvolatile"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetLimitcpuuse(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["limitcpuuse"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetMaxiops(v int64) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["maxiops"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetMemory(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["memory"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetMiniops(v int64) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["miniops"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetNetworkrate(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["networkrate"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetOfferha(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["offerha"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetProvisioningtype(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["provisioningtype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetServiceofferingdetails(v map[string]string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["serviceofferingdetails"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetStoragetype(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["storagetype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetSystemvmtype(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["systemvmtype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateServiceOfferingParams) SetTags(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["tags"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new CreateServiceOfferingParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *ServiceOfferingService) NewCreateServiceOfferingParams(displaytext string, name string) *CreateServiceOfferingParams {
|
||||
p := &CreateServiceOfferingParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["displaytext"] = displaytext
|
||||
p.p["name"] = name
|
||||
return p
|
||||
}
|
||||
|
||||
// Creates a service offering.
|
||||
func (s *ServiceOfferingService) CreateServiceOffering(p *CreateServiceOfferingParams) (*CreateServiceOfferingResponse, error) {
|
||||
resp, err := s.cs.newRequest("createServiceOffering", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if resp, err = getRawValue(resp); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r CreateServiceOfferingResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type CreateServiceOfferingResponse struct {
|
||||
Cpunumber int `json:"cpunumber,omitempty"`
|
||||
Cpuspeed int `json:"cpuspeed,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
Defaultuse bool `json:"defaultuse,omitempty"`
|
||||
Deploymentplanner string `json:"deploymentplanner,omitempty"`
|
||||
DiskBytesReadRate int64 `json:"diskBytesReadRate,omitempty"`
|
||||
DiskBytesWriteRate int64 `json:"diskBytesWriteRate,omitempty"`
|
||||
DiskIopsReadRate int64 `json:"diskIopsReadRate,omitempty"`
|
||||
DiskIopsWriteRate int64 `json:"diskIopsWriteRate,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Hosttags string `json:"hosttags,omitempty"`
|
||||
Hypervisorsnapshotreserve int `json:"hypervisorsnapshotreserve,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Iscustomized bool `json:"iscustomized,omitempty"`
|
||||
Iscustomizediops bool `json:"iscustomizediops,omitempty"`
|
||||
Issystem bool `json:"issystem,omitempty"`
|
||||
Isvolatile bool `json:"isvolatile,omitempty"`
|
||||
Limitcpuuse bool `json:"limitcpuuse,omitempty"`
|
||||
Maxiops int64 `json:"maxiops,omitempty"`
|
||||
Memory int `json:"memory,omitempty"`
|
||||
Miniops int64 `json:"miniops,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Networkrate int `json:"networkrate,omitempty"`
|
||||
Offerha bool `json:"offerha,omitempty"`
|
||||
Provisioningtype string `json:"provisioningtype,omitempty"`
|
||||
Serviceofferingdetails map[string]string `json:"serviceofferingdetails,omitempty"`
|
||||
Storagetype string `json:"storagetype,omitempty"`
|
||||
Systemvmtype string `json:"systemvmtype,omitempty"`
|
||||
Tags string `json:"tags,omitempty"`
|
||||
}
|
||||
|
||||
type DeleteServiceOfferingParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *DeleteServiceOfferingParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *DeleteServiceOfferingParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new DeleteServiceOfferingParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *ServiceOfferingService) NewDeleteServiceOfferingParams(id string) *DeleteServiceOfferingParams {
|
||||
p := &DeleteServiceOfferingParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Deletes a service offering.
|
||||
func (s *ServiceOfferingService) DeleteServiceOffering(p *DeleteServiceOfferingParams) (*DeleteServiceOfferingResponse, error) {
|
||||
resp, err := s.cs.newRequest("deleteServiceOffering", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r DeleteServiceOfferingResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type DeleteServiceOfferingResponse struct {
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success string `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type UpdateServiceOfferingParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *UpdateServiceOfferingParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["displaytext"]; found {
|
||||
u.Set("displaytext", v.(string))
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["sortkey"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("sortkey", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *UpdateServiceOfferingParams) SetDisplaytext(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["displaytext"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateServiceOfferingParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateServiceOfferingParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateServiceOfferingParams) SetSortkey(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["sortkey"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new UpdateServiceOfferingParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *ServiceOfferingService) NewUpdateServiceOfferingParams(id string) *UpdateServiceOfferingParams {
|
||||
p := &UpdateServiceOfferingParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Updates a service offering.
|
||||
func (s *ServiceOfferingService) UpdateServiceOffering(p *UpdateServiceOfferingParams) (*UpdateServiceOfferingResponse, error) {
|
||||
resp, err := s.cs.newRequest("updateServiceOffering", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r UpdateServiceOfferingResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type UpdateServiceOfferingResponse struct {
|
||||
Cpunumber int `json:"cpunumber,omitempty"`
|
||||
Cpuspeed int `json:"cpuspeed,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
Defaultuse bool `json:"defaultuse,omitempty"`
|
||||
Deploymentplanner string `json:"deploymentplanner,omitempty"`
|
||||
DiskBytesReadRate int64 `json:"diskBytesReadRate,omitempty"`
|
||||
DiskBytesWriteRate int64 `json:"diskBytesWriteRate,omitempty"`
|
||||
DiskIopsReadRate int64 `json:"diskIopsReadRate,omitempty"`
|
||||
DiskIopsWriteRate int64 `json:"diskIopsWriteRate,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Hosttags string `json:"hosttags,omitempty"`
|
||||
Hypervisorsnapshotreserve int `json:"hypervisorsnapshotreserve,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Iscustomized bool `json:"iscustomized,omitempty"`
|
||||
Iscustomizediops bool `json:"iscustomizediops,omitempty"`
|
||||
Issystem bool `json:"issystem,omitempty"`
|
||||
Isvolatile bool `json:"isvolatile,omitempty"`
|
||||
Limitcpuuse bool `json:"limitcpuuse,omitempty"`
|
||||
Maxiops int64 `json:"maxiops,omitempty"`
|
||||
Memory int `json:"memory,omitempty"`
|
||||
Miniops int64 `json:"miniops,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Networkrate int `json:"networkrate,omitempty"`
|
||||
Offerha bool `json:"offerha,omitempty"`
|
||||
Provisioningtype string `json:"provisioningtype,omitempty"`
|
||||
Serviceofferingdetails map[string]string `json:"serviceofferingdetails,omitempty"`
|
||||
Storagetype string `json:"storagetype,omitempty"`
|
||||
Systemvmtype string `json:"systemvmtype,omitempty"`
|
||||
Tags string `json:"tags,omitempty"`
|
||||
}
|
||||
|
||||
type ListServiceOfferingsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListServiceOfferingsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["isrecursive"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("isrecursive", vv)
|
||||
}
|
||||
if v, found := p.p["issystem"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("issystem", vv)
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["listall"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("listall", vv)
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["systemvmtype"]; found {
|
||||
u.Set("systemvmtype", v.(string))
|
||||
}
|
||||
if v, found := p.p["virtualmachineid"]; found {
|
||||
u.Set("virtualmachineid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListServiceOfferingsParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListServiceOfferingsParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListServiceOfferingsParams) SetIsrecursive(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["isrecursive"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListServiceOfferingsParams) SetIssystem(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["issystem"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListServiceOfferingsParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListServiceOfferingsParams) SetListall(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["listall"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListServiceOfferingsParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListServiceOfferingsParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListServiceOfferingsParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListServiceOfferingsParams) SetSystemvmtype(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["systemvmtype"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListServiceOfferingsParams) SetVirtualmachineid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["virtualmachineid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListServiceOfferingsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *ServiceOfferingService) NewListServiceOfferingsParams() *ListServiceOfferingsParams {
|
||||
p := &ListServiceOfferingsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *ServiceOfferingService) GetServiceOfferingID(name string, opts ...OptionFunc) (string, int, error) {
|
||||
p := &ListServiceOfferingsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["name"] = name
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListServiceOfferings(p)
|
||||
if err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return "", l.Count, fmt.Errorf("No match found for %s: %+v", name, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.ServiceOfferings[0].Id, l.Count, nil
|
||||
}
|
||||
|
||||
if l.Count > 1 {
|
||||
for _, v := range l.ServiceOfferings {
|
||||
if v.Name == name {
|
||||
return v.Id, l.Count, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
return "", l.Count, fmt.Errorf("Could not find an exact match for %s: %+v", name, l)
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *ServiceOfferingService) GetServiceOfferingByName(name string, opts ...OptionFunc) (*ServiceOffering, int, error) {
|
||||
id, count, err := s.GetServiceOfferingID(name, opts...)
|
||||
if err != nil {
|
||||
return nil, count, err
|
||||
}
|
||||
|
||||
r, count, err := s.GetServiceOfferingByID(id, opts...)
|
||||
if err != nil {
|
||||
return nil, count, err
|
||||
}
|
||||
return r, count, nil
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *ServiceOfferingService) GetServiceOfferingByID(id string, opts ...OptionFunc) (*ServiceOffering, int, error) {
|
||||
p := &ListServiceOfferingsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["id"] = id
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return nil, -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListServiceOfferings(p)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), fmt.Sprintf(
|
||||
"Invalid parameter id value=%s due to incorrect long value format, "+
|
||||
"or entity does not exist", id)) {
|
||||
return nil, 0, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
return nil, -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return nil, l.Count, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.ServiceOfferings[0], l.Count, nil
|
||||
}
|
||||
return nil, l.Count, fmt.Errorf("There is more then one result for ServiceOffering UUID: %s!", id)
|
||||
}
|
||||
|
||||
// Lists all available service offerings.
|
||||
func (s *ServiceOfferingService) ListServiceOfferings(p *ListServiceOfferingsParams) (*ListServiceOfferingsResponse, error) {
|
||||
resp, err := s.cs.newRequest("listServiceOfferings", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListServiceOfferingsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListServiceOfferingsResponse struct {
|
||||
Count int `json:"count"`
|
||||
ServiceOfferings []*ServiceOffering `json:"serviceoffering"`
|
||||
}
|
||||
|
||||
type ServiceOffering struct {
|
||||
Cpunumber int `json:"cpunumber,omitempty"`
|
||||
Cpuspeed int `json:"cpuspeed,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
Defaultuse bool `json:"defaultuse,omitempty"`
|
||||
Deploymentplanner string `json:"deploymentplanner,omitempty"`
|
||||
DiskBytesReadRate int64 `json:"diskBytesReadRate,omitempty"`
|
||||
DiskBytesWriteRate int64 `json:"diskBytesWriteRate,omitempty"`
|
||||
DiskIopsReadRate int64 `json:"diskIopsReadRate,omitempty"`
|
||||
DiskIopsWriteRate int64 `json:"diskIopsWriteRate,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Hosttags string `json:"hosttags,omitempty"`
|
||||
Hypervisorsnapshotreserve int `json:"hypervisorsnapshotreserve,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Iscustomized bool `json:"iscustomized,omitempty"`
|
||||
Iscustomizediops bool `json:"iscustomizediops,omitempty"`
|
||||
Issystem bool `json:"issystem,omitempty"`
|
||||
Isvolatile bool `json:"isvolatile,omitempty"`
|
||||
Limitcpuuse bool `json:"limitcpuuse,omitempty"`
|
||||
Maxiops int64 `json:"maxiops,omitempty"`
|
||||
Memory int `json:"memory,omitempty"`
|
||||
Miniops int64 `json:"miniops,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Networkrate int `json:"networkrate,omitempty"`
|
||||
Offerha bool `json:"offerha,omitempty"`
|
||||
Provisioningtype string `json:"provisioningtype,omitempty"`
|
||||
Serviceofferingdetails map[string]string `json:"serviceofferingdetails,omitempty"`
|
||||
Storagetype string `json:"storagetype,omitempty"`
|
||||
Systemvmtype string `json:"systemvmtype,omitempty"`
|
||||
Tags string `json:"tags,omitempty"`
|
||||
}
|
1793
vendor/github.com/xanzy/go-cloudstack/cloudstack/SnapshotService.go
generated
vendored
Normal file
1793
vendor/github.com/xanzy/go-cloudstack/cloudstack/SnapshotService.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
300
vendor/github.com/xanzy/go-cloudstack/cloudstack/StoragePoolService.go
generated
vendored
Normal file
300
vendor/github.com/xanzy/go-cloudstack/cloudstack/StoragePoolService.go
generated
vendored
Normal file
|
@ -0,0 +1,300 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/url"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type ListStorageProvidersParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListStorageProvidersParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["type"]; found {
|
||||
u.Set("type", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListStorageProvidersParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListStorageProvidersParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListStorageProvidersParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListStorageProvidersParams) SetType(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["type"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListStorageProvidersParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *StoragePoolService) NewListStorageProvidersParams(storagePoolType string) *ListStorageProvidersParams {
|
||||
p := &ListStorageProvidersParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["type"] = storagePoolType
|
||||
return p
|
||||
}
|
||||
|
||||
// Lists storage providers.
|
||||
func (s *StoragePoolService) ListStorageProviders(p *ListStorageProvidersParams) (*ListStorageProvidersResponse, error) {
|
||||
resp, err := s.cs.newRequest("listStorageProviders", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListStorageProvidersResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListStorageProvidersResponse struct {
|
||||
Count int `json:"count"`
|
||||
StorageProviders []*StorageProvider `json:"storageprovider"`
|
||||
}
|
||||
|
||||
type StorageProvider struct {
|
||||
Name string `json:"name,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
}
|
||||
|
||||
type EnableStorageMaintenanceParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *EnableStorageMaintenanceParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *EnableStorageMaintenanceParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new EnableStorageMaintenanceParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *StoragePoolService) NewEnableStorageMaintenanceParams(id string) *EnableStorageMaintenanceParams {
|
||||
p := &EnableStorageMaintenanceParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Puts storage pool into maintenance state
|
||||
func (s *StoragePoolService) EnableStorageMaintenance(p *EnableStorageMaintenanceParams) (*EnableStorageMaintenanceResponse, error) {
|
||||
resp, err := s.cs.newRequest("enableStorageMaintenance", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r EnableStorageMaintenanceResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
b, err = getRawValue(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type EnableStorageMaintenanceResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Capacityiops int64 `json:"capacityiops,omitempty"`
|
||||
Clusterid string `json:"clusterid,omitempty"`
|
||||
Clustername string `json:"clustername,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
Disksizeallocated int64 `json:"disksizeallocated,omitempty"`
|
||||
Disksizetotal int64 `json:"disksizetotal,omitempty"`
|
||||
Disksizeused int64 `json:"disksizeused,omitempty"`
|
||||
Hypervisor string `json:"hypervisor,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ipaddress string `json:"ipaddress,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Overprovisionfactor string `json:"overprovisionfactor,omitempty"`
|
||||
Path string `json:"path,omitempty"`
|
||||
Podid string `json:"podid,omitempty"`
|
||||
Podname string `json:"podname,omitempty"`
|
||||
Scope string `json:"scope,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Storagecapabilities map[string]string `json:"storagecapabilities,omitempty"`
|
||||
Suitableformigration bool `json:"suitableformigration,omitempty"`
|
||||
Tags string `json:"tags,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
Zonename string `json:"zonename,omitempty"`
|
||||
}
|
||||
|
||||
type CancelStorageMaintenanceParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *CancelStorageMaintenanceParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *CancelStorageMaintenanceParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new CancelStorageMaintenanceParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *StoragePoolService) NewCancelStorageMaintenanceParams(id string) *CancelStorageMaintenanceParams {
|
||||
p := &CancelStorageMaintenanceParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Cancels maintenance for primary storage
|
||||
func (s *StoragePoolService) CancelStorageMaintenance(p *CancelStorageMaintenanceParams) (*CancelStorageMaintenanceResponse, error) {
|
||||
resp, err := s.cs.newRequest("cancelStorageMaintenance", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r CancelStorageMaintenanceResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
b, err = getRawValue(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type CancelStorageMaintenanceResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Capacityiops int64 `json:"capacityiops,omitempty"`
|
||||
Clusterid string `json:"clusterid,omitempty"`
|
||||
Clustername string `json:"clustername,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
Disksizeallocated int64 `json:"disksizeallocated,omitempty"`
|
||||
Disksizetotal int64 `json:"disksizetotal,omitempty"`
|
||||
Disksizeused int64 `json:"disksizeused,omitempty"`
|
||||
Hypervisor string `json:"hypervisor,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ipaddress string `json:"ipaddress,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Overprovisionfactor string `json:"overprovisionfactor,omitempty"`
|
||||
Path string `json:"path,omitempty"`
|
||||
Podid string `json:"podid,omitempty"`
|
||||
Podname string `json:"podname,omitempty"`
|
||||
Scope string `json:"scope,omitempty"`
|
||||
State string `json:"state,omitempty"`
|
||||
Storagecapabilities map[string]string `json:"storagecapabilities,omitempty"`
|
||||
Suitableformigration bool `json:"suitableformigration,omitempty"`
|
||||
Tags string `json:"tags,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
Zonename string `json:"zonename,omitempty"`
|
||||
}
|
132
vendor/github.com/xanzy/go-cloudstack/cloudstack/StratosphereSSPService.go
generated
vendored
Normal file
132
vendor/github.com/xanzy/go-cloudstack/cloudstack/StratosphereSSPService.go
generated
vendored
Normal file
|
@ -0,0 +1,132 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
type AddStratosphereSspParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *AddStratosphereSspParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["password"]; found {
|
||||
u.Set("password", v.(string))
|
||||
}
|
||||
if v, found := p.p["tenantuuid"]; found {
|
||||
u.Set("tenantuuid", v.(string))
|
||||
}
|
||||
if v, found := p.p["url"]; found {
|
||||
u.Set("url", v.(string))
|
||||
}
|
||||
if v, found := p.p["username"]; found {
|
||||
u.Set("username", v.(string))
|
||||
}
|
||||
if v, found := p.p["zoneid"]; found {
|
||||
u.Set("zoneid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *AddStratosphereSspParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddStratosphereSspParams) SetPassword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["password"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddStratosphereSspParams) SetTenantuuid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["tenantuuid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddStratosphereSspParams) SetUrl(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["url"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddStratosphereSspParams) SetUsername(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["username"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddStratosphereSspParams) SetZoneid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["zoneid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new AddStratosphereSspParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *StratosphereSSPService) NewAddStratosphereSspParams(name string, url string, zoneid string) *AddStratosphereSspParams {
|
||||
p := &AddStratosphereSspParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["name"] = name
|
||||
p.p["url"] = url
|
||||
p.p["zoneid"] = zoneid
|
||||
return p
|
||||
}
|
||||
|
||||
// Adds stratosphere ssp server
|
||||
func (s *StratosphereSSPService) AddStratosphereSsp(p *AddStratosphereSspParams) (*AddStratosphereSspResponse, error) {
|
||||
resp, err := s.cs.newRequest("addStratosphereSsp", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r AddStratosphereSspResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type AddStratosphereSspResponse struct {
|
||||
Hostid string `json:"hostid,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Url string `json:"url,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
}
|
|
@ -0,0 +1,249 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type AddSwiftParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *AddSwiftParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["key"]; found {
|
||||
u.Set("key", v.(string))
|
||||
}
|
||||
if v, found := p.p["url"]; found {
|
||||
u.Set("url", v.(string))
|
||||
}
|
||||
if v, found := p.p["username"]; found {
|
||||
u.Set("username", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *AddSwiftParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddSwiftParams) SetKey(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["key"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddSwiftParams) SetUrl(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["url"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddSwiftParams) SetUsername(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["username"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new AddSwiftParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *SwiftService) NewAddSwiftParams(url string) *AddSwiftParams {
|
||||
p := &AddSwiftParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["url"] = url
|
||||
return p
|
||||
}
|
||||
|
||||
// Adds Swift.
|
||||
func (s *SwiftService) AddSwift(p *AddSwiftParams) (*AddSwiftResponse, error) {
|
||||
resp, err := s.cs.newRequest("addSwift", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r AddSwiftResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type AddSwiftResponse struct {
|
||||
Details []string `json:"details,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Protocol string `json:"protocol,omitempty"`
|
||||
Providername string `json:"providername,omitempty"`
|
||||
Scope string `json:"scope,omitempty"`
|
||||
Url string `json:"url,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
Zonename string `json:"zonename,omitempty"`
|
||||
}
|
||||
|
||||
type ListSwiftsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListSwiftsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
vv := strconv.FormatInt(v.(int64), 10)
|
||||
u.Set("id", vv)
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListSwiftsParams) SetId(v int64) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListSwiftsParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListSwiftsParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListSwiftsParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListSwiftsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *SwiftService) NewListSwiftsParams() *ListSwiftsParams {
|
||||
p := &ListSwiftsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *SwiftService) GetSwiftID(keyword string, opts ...OptionFunc) (string, int, error) {
|
||||
p := &ListSwiftsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["keyword"] = keyword
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListSwifts(p)
|
||||
if err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return "", l.Count, fmt.Errorf("No match found for %s: %+v", keyword, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.Swifts[0].Id, l.Count, nil
|
||||
}
|
||||
|
||||
if l.Count > 1 {
|
||||
for _, v := range l.Swifts {
|
||||
if v.Name == keyword {
|
||||
return v.Id, l.Count, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
return "", l.Count, fmt.Errorf("Could not find an exact match for %s: %+v", keyword, l)
|
||||
}
|
||||
|
||||
// List Swift.
|
||||
func (s *SwiftService) ListSwifts(p *ListSwiftsParams) (*ListSwiftsResponse, error) {
|
||||
resp, err := s.cs.newRequest("listSwifts", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListSwiftsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListSwiftsResponse struct {
|
||||
Count int `json:"count"`
|
||||
Swifts []*Swift `json:"swift"`
|
||||
}
|
||||
|
||||
type Swift struct {
|
||||
Details []string `json:"details,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Protocol string `json:"protocol,omitempty"`
|
||||
Providername string `json:"providername,omitempty"`
|
||||
Scope string `json:"scope,omitempty"`
|
||||
Url string `json:"url,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
Zonename string `json:"zonename,omitempty"`
|
||||
}
|
178
vendor/github.com/xanzy/go-cloudstack/cloudstack/SystemCapacityService.go
generated
vendored
Normal file
178
vendor/github.com/xanzy/go-cloudstack/cloudstack/SystemCapacityService.go
generated
vendored
Normal file
|
@ -0,0 +1,178 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/url"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type ListCapacityParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListCapacityParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["clusterid"]; found {
|
||||
u.Set("clusterid", v.(string))
|
||||
}
|
||||
if v, found := p.p["fetchlatest"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("fetchlatest", vv)
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["podid"]; found {
|
||||
u.Set("podid", v.(string))
|
||||
}
|
||||
if v, found := p.p["sortby"]; found {
|
||||
u.Set("sortby", v.(string))
|
||||
}
|
||||
if v, found := p.p["type"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("type", vv)
|
||||
}
|
||||
if v, found := p.p["zoneid"]; found {
|
||||
u.Set("zoneid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListCapacityParams) SetClusterid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["clusterid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListCapacityParams) SetFetchlatest(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["fetchlatest"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListCapacityParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListCapacityParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListCapacityParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListCapacityParams) SetPodid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["podid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListCapacityParams) SetSortby(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["sortby"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListCapacityParams) SetType(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["type"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListCapacityParams) SetZoneid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["zoneid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListCapacityParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *SystemCapacityService) NewListCapacityParams() *ListCapacityParams {
|
||||
p := &ListCapacityParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Lists all the system wide capacities.
|
||||
func (s *SystemCapacityService) ListCapacity(p *ListCapacityParams) (*ListCapacityResponse, error) {
|
||||
resp, err := s.cs.newRequest("listCapacity", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListCapacityResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListCapacityResponse struct {
|
||||
Count int `json:"count"`
|
||||
Capacity []*Capacity `json:"capacity"`
|
||||
}
|
||||
|
||||
type Capacity struct {
|
||||
Capacitytotal int64 `json:"capacitytotal,omitempty"`
|
||||
Capacityused int64 `json:"capacityused,omitempty"`
|
||||
Clusterid string `json:"clusterid,omitempty"`
|
||||
Clustername string `json:"clustername,omitempty"`
|
||||
Percentused string `json:"percentused,omitempty"`
|
||||
Podid string `json:"podid,omitempty"`
|
||||
Podname string `json:"podname,omitempty"`
|
||||
Type int `json:"type,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
Zonename string `json:"zonename,omitempty"`
|
||||
}
|
1046
vendor/github.com/xanzy/go-cloudstack/cloudstack/SystemVMService.go
generated
vendored
Normal file
1046
vendor/github.com/xanzy/go-cloudstack/cloudstack/SystemVMService.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2318
vendor/github.com/xanzy/go-cloudstack/cloudstack/TemplateService.go
generated
vendored
Normal file
2318
vendor/github.com/xanzy/go-cloudstack/cloudstack/TemplateService.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,594 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type AddUcsManagerParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *AddUcsManagerParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["password"]; found {
|
||||
u.Set("password", v.(string))
|
||||
}
|
||||
if v, found := p.p["url"]; found {
|
||||
u.Set("url", v.(string))
|
||||
}
|
||||
if v, found := p.p["username"]; found {
|
||||
u.Set("username", v.(string))
|
||||
}
|
||||
if v, found := p.p["zoneid"]; found {
|
||||
u.Set("zoneid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *AddUcsManagerParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddUcsManagerParams) SetPassword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["password"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddUcsManagerParams) SetUrl(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["url"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddUcsManagerParams) SetUsername(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["username"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AddUcsManagerParams) SetZoneid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["zoneid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new AddUcsManagerParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *UCSService) NewAddUcsManagerParams(password string, url string, username string, zoneid string) *AddUcsManagerParams {
|
||||
p := &AddUcsManagerParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["password"] = password
|
||||
p.p["url"] = url
|
||||
p.p["username"] = username
|
||||
p.p["zoneid"] = zoneid
|
||||
return p
|
||||
}
|
||||
|
||||
// Adds a Ucs manager
|
||||
func (s *UCSService) AddUcsManager(p *AddUcsManagerParams) (*AddUcsManagerResponse, error) {
|
||||
resp, err := s.cs.newRequest("addUcsManager", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r AddUcsManagerResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type AddUcsManagerResponse struct {
|
||||
Id string `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Url string `json:"url,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
}
|
||||
|
||||
type ListUcsManagersParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListUcsManagersParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["zoneid"]; found {
|
||||
u.Set("zoneid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListUcsManagersParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListUcsManagersParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListUcsManagersParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListUcsManagersParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListUcsManagersParams) SetZoneid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["zoneid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListUcsManagersParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *UCSService) NewListUcsManagersParams() *ListUcsManagersParams {
|
||||
p := &ListUcsManagersParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *UCSService) GetUcsManagerID(keyword string, opts ...OptionFunc) (string, int, error) {
|
||||
p := &ListUcsManagersParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["keyword"] = keyword
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListUcsManagers(p)
|
||||
if err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return "", l.Count, fmt.Errorf("No match found for %s: %+v", keyword, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.UcsManagers[0].Id, l.Count, nil
|
||||
}
|
||||
|
||||
if l.Count > 1 {
|
||||
for _, v := range l.UcsManagers {
|
||||
if v.Name == keyword {
|
||||
return v.Id, l.Count, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
return "", l.Count, fmt.Errorf("Could not find an exact match for %s: %+v", keyword, l)
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *UCSService) GetUcsManagerByName(name string, opts ...OptionFunc) (*UcsManager, int, error) {
|
||||
id, count, err := s.GetUcsManagerID(name, opts...)
|
||||
if err != nil {
|
||||
return nil, count, err
|
||||
}
|
||||
|
||||
r, count, err := s.GetUcsManagerByID(id, opts...)
|
||||
if err != nil {
|
||||
return nil, count, err
|
||||
}
|
||||
return r, count, nil
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *UCSService) GetUcsManagerByID(id string, opts ...OptionFunc) (*UcsManager, int, error) {
|
||||
p := &ListUcsManagersParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["id"] = id
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return nil, -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListUcsManagers(p)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), fmt.Sprintf(
|
||||
"Invalid parameter id value=%s due to incorrect long value format, "+
|
||||
"or entity does not exist", id)) {
|
||||
return nil, 0, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
return nil, -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return nil, l.Count, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.UcsManagers[0], l.Count, nil
|
||||
}
|
||||
return nil, l.Count, fmt.Errorf("There is more then one result for UcsManager UUID: %s!", id)
|
||||
}
|
||||
|
||||
// List ucs manager
|
||||
func (s *UCSService) ListUcsManagers(p *ListUcsManagersParams) (*ListUcsManagersResponse, error) {
|
||||
resp, err := s.cs.newRequest("listUcsManagers", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListUcsManagersResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListUcsManagersResponse struct {
|
||||
Count int `json:"count"`
|
||||
UcsManagers []*UcsManager `json:"ucsmanager"`
|
||||
}
|
||||
|
||||
type UcsManager struct {
|
||||
Id string `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Url string `json:"url,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
}
|
||||
|
||||
type ListUcsProfilesParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListUcsProfilesParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["ucsmanagerid"]; found {
|
||||
u.Set("ucsmanagerid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListUcsProfilesParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListUcsProfilesParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListUcsProfilesParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListUcsProfilesParams) SetUcsmanagerid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["ucsmanagerid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListUcsProfilesParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *UCSService) NewListUcsProfilesParams(ucsmanagerid string) *ListUcsProfilesParams {
|
||||
p := &ListUcsProfilesParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["ucsmanagerid"] = ucsmanagerid
|
||||
return p
|
||||
}
|
||||
|
||||
// List profile in ucs manager
|
||||
func (s *UCSService) ListUcsProfiles(p *ListUcsProfilesParams) (*ListUcsProfilesResponse, error) {
|
||||
resp, err := s.cs.newRequest("listUcsProfiles", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListUcsProfilesResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListUcsProfilesResponse struct {
|
||||
Count int `json:"count"`
|
||||
UcsProfiles []*UcsProfile `json:"ucsprofile"`
|
||||
}
|
||||
|
||||
type UcsProfile struct {
|
||||
Ucsdn string `json:"ucsdn,omitempty"`
|
||||
}
|
||||
|
||||
type ListUcsBladesParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListUcsBladesParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["ucsmanagerid"]; found {
|
||||
u.Set("ucsmanagerid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListUcsBladesParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListUcsBladesParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListUcsBladesParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListUcsBladesParams) SetUcsmanagerid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["ucsmanagerid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListUcsBladesParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *UCSService) NewListUcsBladesParams(ucsmanagerid string) *ListUcsBladesParams {
|
||||
p := &ListUcsBladesParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["ucsmanagerid"] = ucsmanagerid
|
||||
return p
|
||||
}
|
||||
|
||||
// List ucs blades
|
||||
func (s *UCSService) ListUcsBlades(p *ListUcsBladesParams) (*ListUcsBladesResponse, error) {
|
||||
resp, err := s.cs.newRequest("listUcsBlades", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListUcsBladesResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListUcsBladesResponse struct {
|
||||
Count int `json:"count"`
|
||||
UcsBlades []*UcsBlade `json:"ucsblade"`
|
||||
}
|
||||
|
||||
type UcsBlade struct {
|
||||
Bladedn string `json:"bladedn,omitempty"`
|
||||
Hostid string `json:"hostid,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Profiledn string `json:"profiledn,omitempty"`
|
||||
Ucsmanagerid string `json:"ucsmanagerid,omitempty"`
|
||||
}
|
||||
|
||||
type AssociateUcsProfileToBladeParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *AssociateUcsProfileToBladeParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["bladeid"]; found {
|
||||
u.Set("bladeid", v.(string))
|
||||
}
|
||||
if v, found := p.p["profiledn"]; found {
|
||||
u.Set("profiledn", v.(string))
|
||||
}
|
||||
if v, found := p.p["ucsmanagerid"]; found {
|
||||
u.Set("ucsmanagerid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *AssociateUcsProfileToBladeParams) SetBladeid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["bladeid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AssociateUcsProfileToBladeParams) SetProfiledn(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["profiledn"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *AssociateUcsProfileToBladeParams) SetUcsmanagerid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["ucsmanagerid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new AssociateUcsProfileToBladeParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *UCSService) NewAssociateUcsProfileToBladeParams(bladeid string, profiledn string, ucsmanagerid string) *AssociateUcsProfileToBladeParams {
|
||||
p := &AssociateUcsProfileToBladeParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["bladeid"] = bladeid
|
||||
p.p["profiledn"] = profiledn
|
||||
p.p["ucsmanagerid"] = ucsmanagerid
|
||||
return p
|
||||
}
|
||||
|
||||
// associate a profile to a blade
|
||||
func (s *UCSService) AssociateUcsProfileToBlade(p *AssociateUcsProfileToBladeParams) (*AssociateUcsProfileToBladeResponse, error) {
|
||||
resp, err := s.cs.newRequest("associateUcsProfileToBlade", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r AssociateUcsProfileToBladeResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
b, err = getRawValue(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type AssociateUcsProfileToBladeResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Bladedn string `json:"bladedn,omitempty"`
|
||||
Hostid string `json:"hostid,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Profiledn string `json:"profiledn,omitempty"`
|
||||
Ucsmanagerid string `json:"ucsmanagerid,omitempty"`
|
||||
}
|
1213
vendor/github.com/xanzy/go-cloudstack/cloudstack/UsageService.go
generated
vendored
Normal file
1213
vendor/github.com/xanzy/go-cloudstack/cloudstack/UsageService.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,934 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type CreateVlanIpRangeParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *CreateVlanIpRangeParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["endip"]; found {
|
||||
u.Set("endip", v.(string))
|
||||
}
|
||||
if v, found := p.p["endipv6"]; found {
|
||||
u.Set("endipv6", v.(string))
|
||||
}
|
||||
if v, found := p.p["forvirtualnetwork"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("forvirtualnetwork", vv)
|
||||
}
|
||||
if v, found := p.p["gateway"]; found {
|
||||
u.Set("gateway", v.(string))
|
||||
}
|
||||
if v, found := p.p["ip6cidr"]; found {
|
||||
u.Set("ip6cidr", v.(string))
|
||||
}
|
||||
if v, found := p.p["ip6gateway"]; found {
|
||||
u.Set("ip6gateway", v.(string))
|
||||
}
|
||||
if v, found := p.p["netmask"]; found {
|
||||
u.Set("netmask", v.(string))
|
||||
}
|
||||
if v, found := p.p["networkid"]; found {
|
||||
u.Set("networkid", v.(string))
|
||||
}
|
||||
if v, found := p.p["physicalnetworkid"]; found {
|
||||
u.Set("physicalnetworkid", v.(string))
|
||||
}
|
||||
if v, found := p.p["podid"]; found {
|
||||
u.Set("podid", v.(string))
|
||||
}
|
||||
if v, found := p.p["projectid"]; found {
|
||||
u.Set("projectid", v.(string))
|
||||
}
|
||||
if v, found := p.p["startip"]; found {
|
||||
u.Set("startip", v.(string))
|
||||
}
|
||||
if v, found := p.p["startipv6"]; found {
|
||||
u.Set("startipv6", v.(string))
|
||||
}
|
||||
if v, found := p.p["vlan"]; found {
|
||||
u.Set("vlan", v.(string))
|
||||
}
|
||||
if v, found := p.p["zoneid"]; found {
|
||||
u.Set("zoneid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *CreateVlanIpRangeParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateVlanIpRangeParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateVlanIpRangeParams) SetEndip(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["endip"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateVlanIpRangeParams) SetEndipv6(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["endipv6"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateVlanIpRangeParams) SetForvirtualnetwork(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["forvirtualnetwork"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateVlanIpRangeParams) SetGateway(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["gateway"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateVlanIpRangeParams) SetIp6cidr(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["ip6cidr"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateVlanIpRangeParams) SetIp6gateway(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["ip6gateway"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateVlanIpRangeParams) SetNetmask(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["netmask"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateVlanIpRangeParams) SetNetworkid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["networkid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateVlanIpRangeParams) SetPhysicalnetworkid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["physicalnetworkid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateVlanIpRangeParams) SetPodid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["podid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateVlanIpRangeParams) SetProjectid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["projectid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateVlanIpRangeParams) SetStartip(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["startip"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateVlanIpRangeParams) SetStartipv6(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["startipv6"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateVlanIpRangeParams) SetVlan(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["vlan"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateVlanIpRangeParams) SetZoneid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["zoneid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new CreateVlanIpRangeParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *VLANService) NewCreateVlanIpRangeParams() *CreateVlanIpRangeParams {
|
||||
p := &CreateVlanIpRangeParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// Creates a VLAN IP range.
|
||||
func (s *VLANService) CreateVlanIpRange(p *CreateVlanIpRangeParams) (*CreateVlanIpRangeResponse, error) {
|
||||
resp, err := s.cs.newRequest("createVlanIpRange", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r CreateVlanIpRangeResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type CreateVlanIpRangeResponse struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Endip string `json:"endip,omitempty"`
|
||||
Endipv6 string `json:"endipv6,omitempty"`
|
||||
Forvirtualnetwork bool `json:"forvirtualnetwork,omitempty"`
|
||||
Gateway string `json:"gateway,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ip6cidr string `json:"ip6cidr,omitempty"`
|
||||
Ip6gateway string `json:"ip6gateway,omitempty"`
|
||||
Netmask string `json:"netmask,omitempty"`
|
||||
Networkid string `json:"networkid,omitempty"`
|
||||
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
|
||||
Podid string `json:"podid,omitempty"`
|
||||
Podname string `json:"podname,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Startip string `json:"startip,omitempty"`
|
||||
Startipv6 string `json:"startipv6,omitempty"`
|
||||
Vlan string `json:"vlan,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
}
|
||||
|
||||
type DeleteVlanIpRangeParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *DeleteVlanIpRangeParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *DeleteVlanIpRangeParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new DeleteVlanIpRangeParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *VLANService) NewDeleteVlanIpRangeParams(id string) *DeleteVlanIpRangeParams {
|
||||
p := &DeleteVlanIpRangeParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Creates a VLAN IP range.
|
||||
func (s *VLANService) DeleteVlanIpRange(p *DeleteVlanIpRangeParams) (*DeleteVlanIpRangeResponse, error) {
|
||||
resp, err := s.cs.newRequest("deleteVlanIpRange", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r DeleteVlanIpRangeResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type DeleteVlanIpRangeResponse struct {
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success string `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type ListVlanIpRangesParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListVlanIpRangesParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["forvirtualnetwork"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("forvirtualnetwork", vv)
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["networkid"]; found {
|
||||
u.Set("networkid", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["physicalnetworkid"]; found {
|
||||
u.Set("physicalnetworkid", v.(string))
|
||||
}
|
||||
if v, found := p.p["podid"]; found {
|
||||
u.Set("podid", v.(string))
|
||||
}
|
||||
if v, found := p.p["projectid"]; found {
|
||||
u.Set("projectid", v.(string))
|
||||
}
|
||||
if v, found := p.p["vlan"]; found {
|
||||
u.Set("vlan", v.(string))
|
||||
}
|
||||
if v, found := p.p["zoneid"]; found {
|
||||
u.Set("zoneid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListVlanIpRangesParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListVlanIpRangesParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListVlanIpRangesParams) SetForvirtualnetwork(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["forvirtualnetwork"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListVlanIpRangesParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListVlanIpRangesParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListVlanIpRangesParams) SetNetworkid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["networkid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListVlanIpRangesParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListVlanIpRangesParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListVlanIpRangesParams) SetPhysicalnetworkid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["physicalnetworkid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListVlanIpRangesParams) SetPodid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["podid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListVlanIpRangesParams) SetProjectid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["projectid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListVlanIpRangesParams) SetVlan(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["vlan"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListVlanIpRangesParams) SetZoneid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["zoneid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListVlanIpRangesParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *VLANService) NewListVlanIpRangesParams() *ListVlanIpRangesParams {
|
||||
p := &ListVlanIpRangesParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *VLANService) GetVlanIpRangeByID(id string, opts ...OptionFunc) (*VlanIpRange, int, error) {
|
||||
p := &ListVlanIpRangesParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["id"] = id
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return nil, -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListVlanIpRanges(p)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), fmt.Sprintf(
|
||||
"Invalid parameter id value=%s due to incorrect long value format, "+
|
||||
"or entity does not exist", id)) {
|
||||
return nil, 0, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
return nil, -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return nil, l.Count, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.VlanIpRanges[0], l.Count, nil
|
||||
}
|
||||
return nil, l.Count, fmt.Errorf("There is more then one result for VlanIpRange UUID: %s!", id)
|
||||
}
|
||||
|
||||
// Lists all VLAN IP ranges.
|
||||
func (s *VLANService) ListVlanIpRanges(p *ListVlanIpRangesParams) (*ListVlanIpRangesResponse, error) {
|
||||
resp, err := s.cs.newRequest("listVlanIpRanges", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListVlanIpRangesResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListVlanIpRangesResponse struct {
|
||||
Count int `json:"count"`
|
||||
VlanIpRanges []*VlanIpRange `json:"vlaniprange"`
|
||||
}
|
||||
|
||||
type VlanIpRange struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Endip string `json:"endip,omitempty"`
|
||||
Endipv6 string `json:"endipv6,omitempty"`
|
||||
Forvirtualnetwork bool `json:"forvirtualnetwork,omitempty"`
|
||||
Gateway string `json:"gateway,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Ip6cidr string `json:"ip6cidr,omitempty"`
|
||||
Ip6gateway string `json:"ip6gateway,omitempty"`
|
||||
Netmask string `json:"netmask,omitempty"`
|
||||
Networkid string `json:"networkid,omitempty"`
|
||||
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
|
||||
Podid string `json:"podid,omitempty"`
|
||||
Podname string `json:"podname,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Startip string `json:"startip,omitempty"`
|
||||
Startipv6 string `json:"startipv6,omitempty"`
|
||||
Vlan string `json:"vlan,omitempty"`
|
||||
Zoneid string `json:"zoneid,omitempty"`
|
||||
}
|
||||
|
||||
type DedicateGuestVlanRangeParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *DedicateGuestVlanRangeParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["physicalnetworkid"]; found {
|
||||
u.Set("physicalnetworkid", v.(string))
|
||||
}
|
||||
if v, found := p.p["projectid"]; found {
|
||||
u.Set("projectid", v.(string))
|
||||
}
|
||||
if v, found := p.p["vlanrange"]; found {
|
||||
u.Set("vlanrange", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *DedicateGuestVlanRangeParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *DedicateGuestVlanRangeParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *DedicateGuestVlanRangeParams) SetPhysicalnetworkid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["physicalnetworkid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *DedicateGuestVlanRangeParams) SetProjectid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["projectid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *DedicateGuestVlanRangeParams) SetVlanrange(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["vlanrange"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new DedicateGuestVlanRangeParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *VLANService) NewDedicateGuestVlanRangeParams(account string, domainid string, physicalnetworkid string, vlanrange string) *DedicateGuestVlanRangeParams {
|
||||
p := &DedicateGuestVlanRangeParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["account"] = account
|
||||
p.p["domainid"] = domainid
|
||||
p.p["physicalnetworkid"] = physicalnetworkid
|
||||
p.p["vlanrange"] = vlanrange
|
||||
return p
|
||||
}
|
||||
|
||||
// Dedicates a guest vlan range to an account
|
||||
func (s *VLANService) DedicateGuestVlanRange(p *DedicateGuestVlanRangeParams) (*DedicateGuestVlanRangeResponse, error) {
|
||||
resp, err := s.cs.newRequest("dedicateGuestVlanRange", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r DedicateGuestVlanRangeResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type DedicateGuestVlanRangeResponse struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Guestvlanrange string `json:"guestvlanrange,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Physicalnetworkid int64 `json:"physicalnetworkid,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Zoneid int64 `json:"zoneid,omitempty"`
|
||||
}
|
||||
|
||||
type ReleaseDedicatedGuestVlanRangeParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ReleaseDedicatedGuestVlanRangeParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ReleaseDedicatedGuestVlanRangeParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ReleaseDedicatedGuestVlanRangeParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *VLANService) NewReleaseDedicatedGuestVlanRangeParams(id string) *ReleaseDedicatedGuestVlanRangeParams {
|
||||
p := &ReleaseDedicatedGuestVlanRangeParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Releases a dedicated guest vlan range to the system
|
||||
func (s *VLANService) ReleaseDedicatedGuestVlanRange(p *ReleaseDedicatedGuestVlanRangeParams) (*ReleaseDedicatedGuestVlanRangeResponse, error) {
|
||||
resp, err := s.cs.newRequest("releaseDedicatedGuestVlanRange", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ReleaseDedicatedGuestVlanRangeResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If we have a async client, we need to wait for the async result
|
||||
if s.cs.async {
|
||||
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
|
||||
if err != nil {
|
||||
if err == AsyncTimeoutErr {
|
||||
return &r, err
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ReleaseDedicatedGuestVlanRangeResponse struct {
|
||||
JobID string `json:"jobid,omitempty"`
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success bool `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type ListDedicatedGuestVlanRangesParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListDedicatedGuestVlanRangesParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["guestvlanrange"]; found {
|
||||
u.Set("guestvlanrange", v.(string))
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["physicalnetworkid"]; found {
|
||||
u.Set("physicalnetworkid", v.(string))
|
||||
}
|
||||
if v, found := p.p["projectid"]; found {
|
||||
u.Set("projectid", v.(string))
|
||||
}
|
||||
if v, found := p.p["zoneid"]; found {
|
||||
u.Set("zoneid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListDedicatedGuestVlanRangesParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDedicatedGuestVlanRangesParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDedicatedGuestVlanRangesParams) SetGuestvlanrange(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["guestvlanrange"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDedicatedGuestVlanRangesParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDedicatedGuestVlanRangesParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDedicatedGuestVlanRangesParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDedicatedGuestVlanRangesParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDedicatedGuestVlanRangesParams) SetPhysicalnetworkid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["physicalnetworkid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDedicatedGuestVlanRangesParams) SetProjectid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["projectid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListDedicatedGuestVlanRangesParams) SetZoneid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["zoneid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListDedicatedGuestVlanRangesParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *VLANService) NewListDedicatedGuestVlanRangesParams() *ListDedicatedGuestVlanRangesParams {
|
||||
p := &ListDedicatedGuestVlanRangesParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *VLANService) GetDedicatedGuestVlanRangeByID(id string, opts ...OptionFunc) (*DedicatedGuestVlanRange, int, error) {
|
||||
p := &ListDedicatedGuestVlanRangesParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["id"] = id
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return nil, -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListDedicatedGuestVlanRanges(p)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), fmt.Sprintf(
|
||||
"Invalid parameter id value=%s due to incorrect long value format, "+
|
||||
"or entity does not exist", id)) {
|
||||
return nil, 0, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
return nil, -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return nil, l.Count, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.DedicatedGuestVlanRanges[0], l.Count, nil
|
||||
}
|
||||
return nil, l.Count, fmt.Errorf("There is more then one result for DedicatedGuestVlanRange UUID: %s!", id)
|
||||
}
|
||||
|
||||
// Lists dedicated guest vlan ranges
|
||||
func (s *VLANService) ListDedicatedGuestVlanRanges(p *ListDedicatedGuestVlanRangesParams) (*ListDedicatedGuestVlanRangesResponse, error) {
|
||||
resp, err := s.cs.newRequest("listDedicatedGuestVlanRanges", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListDedicatedGuestVlanRangesResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListDedicatedGuestVlanRangesResponse struct {
|
||||
Count int `json:"count"`
|
||||
DedicatedGuestVlanRanges []*DedicatedGuestVlanRange `json:"dedicatedguestvlanrange"`
|
||||
}
|
||||
|
||||
type DedicatedGuestVlanRange struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Guestvlanrange string `json:"guestvlanrange,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Physicalnetworkid int64 `json:"physicalnetworkid,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
Zoneid int64 `json:"zoneid,omitempty"`
|
||||
}
|
481
vendor/github.com/xanzy/go-cloudstack/cloudstack/VMGroupService.go
generated
vendored
Normal file
481
vendor/github.com/xanzy/go-cloudstack/cloudstack/VMGroupService.go
generated
vendored
Normal file
|
@ -0,0 +1,481 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type CreateInstanceGroupParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *CreateInstanceGroupParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["projectid"]; found {
|
||||
u.Set("projectid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *CreateInstanceGroupParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateInstanceGroupParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateInstanceGroupParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *CreateInstanceGroupParams) SetProjectid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["projectid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new CreateInstanceGroupParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *VMGroupService) NewCreateInstanceGroupParams(name string) *CreateInstanceGroupParams {
|
||||
p := &CreateInstanceGroupParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["name"] = name
|
||||
return p
|
||||
}
|
||||
|
||||
// Creates a vm group
|
||||
func (s *VMGroupService) CreateInstanceGroup(p *CreateInstanceGroupParams) (*CreateInstanceGroupResponse, error) {
|
||||
resp, err := s.cs.newRequest("createInstanceGroup", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r CreateInstanceGroupResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type CreateInstanceGroupResponse struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
}
|
||||
|
||||
type DeleteInstanceGroupParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *DeleteInstanceGroupParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *DeleteInstanceGroupParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new DeleteInstanceGroupParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *VMGroupService) NewDeleteInstanceGroupParams(id string) *DeleteInstanceGroupParams {
|
||||
p := &DeleteInstanceGroupParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Deletes a vm group
|
||||
func (s *VMGroupService) DeleteInstanceGroup(p *DeleteInstanceGroupParams) (*DeleteInstanceGroupResponse, error) {
|
||||
resp, err := s.cs.newRequest("deleteInstanceGroup", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r DeleteInstanceGroupResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type DeleteInstanceGroupResponse struct {
|
||||
Displaytext string `json:"displaytext,omitempty"`
|
||||
Success string `json:"success,omitempty"`
|
||||
}
|
||||
|
||||
type UpdateInstanceGroupParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *UpdateInstanceGroupParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *UpdateInstanceGroupParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *UpdateInstanceGroupParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new UpdateInstanceGroupParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *VMGroupService) NewUpdateInstanceGroupParams(id string) *UpdateInstanceGroupParams {
|
||||
p := &UpdateInstanceGroupParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
p.p["id"] = id
|
||||
return p
|
||||
}
|
||||
|
||||
// Updates a vm group
|
||||
func (s *VMGroupService) UpdateInstanceGroup(p *UpdateInstanceGroupParams) (*UpdateInstanceGroupResponse, error) {
|
||||
resp, err := s.cs.newRequest("updateInstanceGroup", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r UpdateInstanceGroupResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type UpdateInstanceGroupResponse struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
}
|
||||
|
||||
type ListInstanceGroupsParams struct {
|
||||
p map[string]interface{}
|
||||
}
|
||||
|
||||
func (p *ListInstanceGroupsParams) toURLValues() url.Values {
|
||||
u := url.Values{}
|
||||
if p.p == nil {
|
||||
return u
|
||||
}
|
||||
if v, found := p.p["account"]; found {
|
||||
u.Set("account", v.(string))
|
||||
}
|
||||
if v, found := p.p["domainid"]; found {
|
||||
u.Set("domainid", v.(string))
|
||||
}
|
||||
if v, found := p.p["id"]; found {
|
||||
u.Set("id", v.(string))
|
||||
}
|
||||
if v, found := p.p["isrecursive"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("isrecursive", vv)
|
||||
}
|
||||
if v, found := p.p["keyword"]; found {
|
||||
u.Set("keyword", v.(string))
|
||||
}
|
||||
if v, found := p.p["listall"]; found {
|
||||
vv := strconv.FormatBool(v.(bool))
|
||||
u.Set("listall", vv)
|
||||
}
|
||||
if v, found := p.p["name"]; found {
|
||||
u.Set("name", v.(string))
|
||||
}
|
||||
if v, found := p.p["page"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("page", vv)
|
||||
}
|
||||
if v, found := p.p["pagesize"]; found {
|
||||
vv := strconv.Itoa(v.(int))
|
||||
u.Set("pagesize", vv)
|
||||
}
|
||||
if v, found := p.p["projectid"]; found {
|
||||
u.Set("projectid", v.(string))
|
||||
}
|
||||
return u
|
||||
}
|
||||
|
||||
func (p *ListInstanceGroupsParams) SetAccount(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["account"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListInstanceGroupsParams) SetDomainid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["domainid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListInstanceGroupsParams) SetId(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["id"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListInstanceGroupsParams) SetIsrecursive(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["isrecursive"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListInstanceGroupsParams) SetKeyword(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["keyword"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListInstanceGroupsParams) SetListall(v bool) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["listall"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListInstanceGroupsParams) SetName(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["name"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListInstanceGroupsParams) SetPage(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["page"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListInstanceGroupsParams) SetPagesize(v int) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["pagesize"] = v
|
||||
return
|
||||
}
|
||||
|
||||
func (p *ListInstanceGroupsParams) SetProjectid(v string) {
|
||||
if p.p == nil {
|
||||
p.p = make(map[string]interface{})
|
||||
}
|
||||
p.p["projectid"] = v
|
||||
return
|
||||
}
|
||||
|
||||
// You should always use this function to get a new ListInstanceGroupsParams instance,
|
||||
// as then you are sure you have configured all required params
|
||||
func (s *VMGroupService) NewListInstanceGroupsParams() *ListInstanceGroupsParams {
|
||||
p := &ListInstanceGroupsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
return p
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *VMGroupService) GetInstanceGroupID(name string, opts ...OptionFunc) (string, int, error) {
|
||||
p := &ListInstanceGroupsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["name"] = name
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListInstanceGroups(p)
|
||||
if err != nil {
|
||||
return "", -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return "", l.Count, fmt.Errorf("No match found for %s: %+v", name, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.InstanceGroups[0].Id, l.Count, nil
|
||||
}
|
||||
|
||||
if l.Count > 1 {
|
||||
for _, v := range l.InstanceGroups {
|
||||
if v.Name == name {
|
||||
return v.Id, l.Count, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
return "", l.Count, fmt.Errorf("Could not find an exact match for %s: %+v", name, l)
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *VMGroupService) GetInstanceGroupByName(name string, opts ...OptionFunc) (*InstanceGroup, int, error) {
|
||||
id, count, err := s.GetInstanceGroupID(name, opts...)
|
||||
if err != nil {
|
||||
return nil, count, err
|
||||
}
|
||||
|
||||
r, count, err := s.GetInstanceGroupByID(id, opts...)
|
||||
if err != nil {
|
||||
return nil, count, err
|
||||
}
|
||||
return r, count, nil
|
||||
}
|
||||
|
||||
// This is a courtesy helper function, which in some cases may not work as expected!
|
||||
func (s *VMGroupService) GetInstanceGroupByID(id string, opts ...OptionFunc) (*InstanceGroup, int, error) {
|
||||
p := &ListInstanceGroupsParams{}
|
||||
p.p = make(map[string]interface{})
|
||||
|
||||
p.p["id"] = id
|
||||
|
||||
for _, fn := range opts {
|
||||
if err := fn(s.cs, p); err != nil {
|
||||
return nil, -1, err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := s.ListInstanceGroups(p)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), fmt.Sprintf(
|
||||
"Invalid parameter id value=%s due to incorrect long value format, "+
|
||||
"or entity does not exist", id)) {
|
||||
return nil, 0, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
return nil, -1, err
|
||||
}
|
||||
|
||||
if l.Count == 0 {
|
||||
return nil, l.Count, fmt.Errorf("No match found for %s: %+v", id, l)
|
||||
}
|
||||
|
||||
if l.Count == 1 {
|
||||
return l.InstanceGroups[0], l.Count, nil
|
||||
}
|
||||
return nil, l.Count, fmt.Errorf("There is more then one result for InstanceGroup UUID: %s!", id)
|
||||
}
|
||||
|
||||
// Lists vm groups
|
||||
func (s *VMGroupService) ListInstanceGroups(p *ListInstanceGroupsParams) (*ListInstanceGroupsResponse, error) {
|
||||
resp, err := s.cs.newRequest("listInstanceGroups", p.toURLValues())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var r ListInstanceGroupsResponse
|
||||
if err := json.Unmarshal(resp, &r); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &r, nil
|
||||
}
|
||||
|
||||
type ListInstanceGroupsResponse struct {
|
||||
Count int `json:"count"`
|
||||
InstanceGroups []*InstanceGroup `json:"instancegroup"`
|
||||
}
|
||||
|
||||
type InstanceGroup struct {
|
||||
Account string `json:"account,omitempty"`
|
||||
Created string `json:"created,omitempty"`
|
||||
Domain string `json:"domain,omitempty"`
|
||||
Domainid string `json:"domainid,omitempty"`
|
||||
Id string `json:"id,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
Projectid string `json:"projectid,omitempty"`
|
||||
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
5445
vendor/github.com/xanzy/go-cloudstack/cloudstack/VirtualMachineService.go
generated
vendored
Normal file
5445
vendor/github.com/xanzy/go-cloudstack/cloudstack/VirtualMachineService.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2275
vendor/github.com/xanzy/go-cloudstack/cloudstack/VolumeService.go
generated
vendored
Normal file
2275
vendor/github.com/xanzy/go-cloudstack/cloudstack/VolumeService.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,936 @@
|
|||
//
|
||||
// Copyright 2016, Sander van Harmelen
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
package cloudstack
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"crypto/hmac"
|
||||
"crypto/sha1"
|
||||
"crypto/tls"
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"regexp"
|
||||
"sort"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
// UnlimitedResourceID is a special ID to define an unlimited resource
|
||||
const UnlimitedResourceID = "-1"
|
||||
|
||||
var idRegex = regexp.MustCompile(`^([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|-1)$`)
|
||||
|
||||
// IsID return true if the passed ID is either a UUID or a UnlimitedResourceID
|
||||
func IsID(id string) bool {
|
||||
return idRegex.MatchString(id)
|
||||
}
|
||||
|
||||
// OptionFunc can be passed to the courtesy helper functions to set additional parameters
|
||||
type OptionFunc func(*CloudStackClient, interface{}) error
|
||||
|
||||
type CSError struct {
|
||||
ErrorCode int `json:"errorcode"`
|
||||
CSErrorCode int `json:"cserrorcode"`
|
||||
ErrorText string `json:"errortext"`
|
||||
}
|
||||
|
||||
func (e *CSError) Error() error {
|
||||
return fmt.Errorf("CloudStack API error %d (CSExceptionErrorCode: %d): %s", e.ErrorCode, e.CSErrorCode, e.ErrorText)
|
||||
}
|
||||
|
||||
type CloudStackClient struct {
|
||||
HTTPGETOnly bool // If `true` only use HTTP GET calls
|
||||
|
||||
client *http.Client // The http client for communicating
|
||||
baseURL string // The base URL of the API
|
||||
apiKey string // Api key
|
||||
secret string // Secret key
|
||||
async bool // Wait for async calls to finish
|
||||
timeout int64 // Max waiting timeout in seconds for async jobs to finish; defaults to 300 seconds
|
||||
|
||||
APIDiscovery *APIDiscoveryService
|
||||
Account *AccountService
|
||||
Address *AddressService
|
||||
AffinityGroup *AffinityGroupService
|
||||
Alert *AlertService
|
||||
Asyncjob *AsyncjobService
|
||||
Authentication *AuthenticationService
|
||||
AutoScale *AutoScaleService
|
||||
Baremetal *BaremetalService
|
||||
Certificate *CertificateService
|
||||
CloudIdentifier *CloudIdentifierService
|
||||
Cluster *ClusterService
|
||||
Configuration *ConfigurationService
|
||||
DiskOffering *DiskOfferingService
|
||||
Domain *DomainService
|
||||
Event *EventService
|
||||
Firewall *FirewallService
|
||||
GuestOS *GuestOSService
|
||||
Host *HostService
|
||||
Hypervisor *HypervisorService
|
||||
ISO *ISOService
|
||||
ImageStore *ImageStoreService
|
||||
InternalLB *InternalLBService
|
||||
LDAP *LDAPService
|
||||
Limit *LimitService
|
||||
LoadBalancer *LoadBalancerService
|
||||
NAT *NATService
|
||||
NetworkACL *NetworkACLService
|
||||
NetworkDevice *NetworkDeviceService
|
||||
NetworkOffering *NetworkOfferingService
|
||||
Network *NetworkService
|
||||
Nic *NicService
|
||||
NiciraNVP *NiciraNVPService
|
||||
OvsElement *OvsElementService
|
||||
Pod *PodService
|
||||
Pool *PoolService
|
||||
PortableIP *PortableIPService
|
||||
Project *ProjectService
|
||||
Quota *QuotaService
|
||||
Region *RegionService
|
||||
Resourcemetadata *ResourcemetadataService
|
||||
Resourcetags *ResourcetagsService
|
||||
Router *RouterService
|
||||
SSH *SSHService
|
||||
SecurityGroup *SecurityGroupService
|
||||
ServiceOffering *ServiceOfferingService
|
||||
Snapshot *SnapshotService
|
||||
StoragePool *StoragePoolService
|
||||
StratosphereSSP *StratosphereSSPService
|
||||
Swift *SwiftService
|
||||
SystemCapacity *SystemCapacityService
|
||||
SystemVM *SystemVMService
|
||||
Template *TemplateService
|
||||
UCS *UCSService
|
||||
Usage *UsageService
|
||||
User *UserService
|
||||
VLAN *VLANService
|
||||
VMGroup *VMGroupService
|
||||
VPC *VPCService
|
||||
VPN *VPNService
|
||||
VirtualMachine *VirtualMachineService
|
||||
Volume *VolumeService
|
||||
Zone *ZoneService
|
||||
}
|
||||
|
||||
// Creates a new client for communicating with CloudStack
|
||||
func newClient(apiurl string, apikey string, secret string, async bool, verifyssl bool) *CloudStackClient {
|
||||
cs := &CloudStackClient{
|
||||
client: &http.Client{
|
||||
Transport: &http.Transport{
|
||||
Proxy: http.ProxyFromEnvironment,
|
||||
TLSClientConfig: &tls.Config{InsecureSkipVerify: !verifyssl}, // If verifyssl is true, skipping the verify should be false and vice versa
|
||||
},
|
||||
Timeout: time.Duration(60 * time.Second),
|
||||
},
|
||||
baseURL: apiurl,
|
||||
apiKey: apikey,
|
||||
secret: secret,
|
||||
async: async,
|
||||
timeout: 300,
|
||||
}
|
||||
cs.APIDiscovery = NewAPIDiscoveryService(cs)
|
||||
cs.Account = NewAccountService(cs)
|
||||
cs.Address = NewAddressService(cs)
|
||||
cs.AffinityGroup = NewAffinityGroupService(cs)
|
||||
cs.Alert = NewAlertService(cs)
|
||||
cs.Asyncjob = NewAsyncjobService(cs)
|
||||
cs.Authentication = NewAuthenticationService(cs)
|
||||
cs.AutoScale = NewAutoScaleService(cs)
|
||||
cs.Baremetal = NewBaremetalService(cs)
|
||||
cs.Certificate = NewCertificateService(cs)
|
||||
cs.CloudIdentifier = NewCloudIdentifierService(cs)
|
||||
cs.Cluster = NewClusterService(cs)
|
||||
cs.Configuration = NewConfigurationService(cs)
|
||||
cs.DiskOffering = NewDiskOfferingService(cs)
|
||||
cs.Domain = NewDomainService(cs)
|
||||
cs.Event = NewEventService(cs)
|
||||
cs.Firewall = NewFirewallService(cs)
|
||||
cs.GuestOS = NewGuestOSService(cs)
|
||||
cs.Host = NewHostService(cs)
|
||||
cs.Hypervisor = NewHypervisorService(cs)
|
||||
cs.ISO = NewISOService(cs)
|
||||
cs.ImageStore = NewImageStoreService(cs)
|
||||
cs.InternalLB = NewInternalLBService(cs)
|
||||
cs.LDAP = NewLDAPService(cs)
|
||||
cs.Limit = NewLimitService(cs)
|
||||
cs.LoadBalancer = NewLoadBalancerService(cs)
|
||||
cs.NAT = NewNATService(cs)
|
||||
cs.NetworkACL = NewNetworkACLService(cs)
|
||||
cs.NetworkDevice = NewNetworkDeviceService(cs)
|
||||
cs.NetworkOffering = NewNetworkOfferingService(cs)
|
||||
cs.Network = NewNetworkService(cs)
|
||||
cs.Nic = NewNicService(cs)
|
||||
cs.NiciraNVP = NewNiciraNVPService(cs)
|
||||
cs.OvsElement = NewOvsElementService(cs)
|
||||
cs.Pod = NewPodService(cs)
|
||||
cs.Pool = NewPoolService(cs)
|
||||
cs.PortableIP = NewPortableIPService(cs)
|
||||
cs.Project = NewProjectService(cs)
|
||||
cs.Quota = NewQuotaService(cs)
|
||||
cs.Region = NewRegionService(cs)
|
||||
cs.Resourcemetadata = NewResourcemetadataService(cs)
|
||||
cs.Resourcetags = NewResourcetagsService(cs)
|
||||
cs.Router = NewRouterService(cs)
|
||||
cs.SSH = NewSSHService(cs)
|
||||
cs.SecurityGroup = NewSecurityGroupService(cs)
|
||||
cs.ServiceOffering = NewServiceOfferingService(cs)
|
||||
cs.Snapshot = NewSnapshotService(cs)
|
||||
cs.StoragePool = NewStoragePoolService(cs)
|
||||
cs.StratosphereSSP = NewStratosphereSSPService(cs)
|
||||
cs.Swift = NewSwiftService(cs)
|
||||
cs.SystemCapacity = NewSystemCapacityService(cs)
|
||||
cs.SystemVM = NewSystemVMService(cs)
|
||||
cs.Template = NewTemplateService(cs)
|
||||
cs.UCS = NewUCSService(cs)
|
||||
cs.Usage = NewUsageService(cs)
|
||||
cs.User = NewUserService(cs)
|
||||
cs.VLAN = NewVLANService(cs)
|
||||
cs.VMGroup = NewVMGroupService(cs)
|
||||
cs.VPC = NewVPCService(cs)
|
||||
cs.VPN = NewVPNService(cs)
|
||||
cs.VirtualMachine = NewVirtualMachineService(cs)
|
||||
cs.Volume = NewVolumeService(cs)
|
||||
cs.Zone = NewZoneService(cs)
|
||||
return cs
|
||||
}
|
||||
|
||||
// Default non-async client. So for async calls you need to implement and check the async job result yourself. When using
|
||||
// HTTPS with a self-signed certificate to connect to your CloudStack API, you would probably want to set 'verifyssl' to
|
||||
// false so the call ignores the SSL errors/warnings.
|
||||
func NewClient(apiurl string, apikey string, secret string, verifyssl bool) *CloudStackClient {
|
||||
cs := newClient(apiurl, apikey, secret, false, verifyssl)
|
||||
return cs
|
||||
}
|
||||
|
||||
// For sync API calls this client behaves exactly the same as a standard client call, but for async API calls
|
||||
// this client will wait until the async job is finished or until the configured AsyncTimeout is reached. When the async
|
||||
// job finishes successfully it will return actual object received from the API and nil, but when the timout is
|
||||
// reached it will return the initial object containing the async job ID for the running job and a warning.
|
||||
func NewAsyncClient(apiurl string, apikey string, secret string, verifyssl bool) *CloudStackClient {
|
||||
cs := newClient(apiurl, apikey, secret, true, verifyssl)
|
||||
return cs
|
||||
}
|
||||
|
||||
// When using the async client an api call will wait for the async call to finish before returning. The default is to poll for 300 seconds
|
||||
// seconds, to check if the async job is finished.
|
||||
func (cs *CloudStackClient) AsyncTimeout(timeoutInSeconds int64) {
|
||||
cs.timeout = timeoutInSeconds
|
||||
}
|
||||
|
||||
var AsyncTimeoutErr = errors.New("Timeout while waiting for async job to finish")
|
||||
|
||||
// A helper function that you can use to get the result of a running async job. If the job is not finished within the configured
|
||||
// timeout, the async job returns a AsyncTimeoutErr.
|
||||
func (cs *CloudStackClient) GetAsyncJobResult(jobid string, timeout int64) (json.RawMessage, error) {
|
||||
var timer time.Duration
|
||||
currentTime := time.Now().Unix()
|
||||
|
||||
for {
|
||||
p := cs.Asyncjob.NewQueryAsyncJobResultParams(jobid)
|
||||
r, err := cs.Asyncjob.QueryAsyncJobResult(p)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Status 1 means the job is finished successfully
|
||||
if r.Jobstatus == 1 {
|
||||
return r.Jobresult, nil
|
||||
}
|
||||
|
||||
// When the status is 2, the job has failed
|
||||
if r.Jobstatus == 2 {
|
||||
if r.Jobresulttype == "text" {
|
||||
return nil, fmt.Errorf(string(r.Jobresult))
|
||||
} else {
|
||||
return nil, fmt.Errorf("Undefined error: %s", string(r.Jobresult))
|
||||
}
|
||||
}
|
||||
|
||||
if time.Now().Unix()-currentTime > timeout {
|
||||
return nil, AsyncTimeoutErr
|
||||
}
|
||||
|
||||
// Add an (extremely simple) exponential backoff like feature to prevent
|
||||
// flooding the CloudStack API
|
||||
if timer < 15 {
|
||||
timer++
|
||||
}
|
||||
|
||||
time.Sleep(timer * time.Second)
|
||||
}
|
||||
}
|
||||
|
||||
// Execute the request against a CS API. Will return the raw JSON data returned by the API and nil if
|
||||
// no error occured. If the API returns an error the result will be nil and the HTTP error code and CS
|
||||
// error details. If a processing (code) error occurs the result will be nil and the generated error
|
||||
func (cs *CloudStackClient) newRequest(api string, params url.Values) (json.RawMessage, error) {
|
||||
params.Set("apiKey", cs.apiKey)
|
||||
params.Set("command", api)
|
||||
params.Set("response", "json")
|
||||
|
||||
// Generate signature for API call
|
||||
// * Serialize parameters, URL encoding only values and sort them by key, done by encodeValues
|
||||
// * Convert the entire argument string to lowercase
|
||||
// * Replace all instances of '+' to '%20'
|
||||
// * Calculate HMAC SHA1 of argument string with CloudStack secret
|
||||
// * URL encode the string and convert to base64
|
||||
s := encodeValues(params)
|
||||
s2 := strings.ToLower(s)
|
||||
s3 := strings.Replace(s2, "+", "%20", -1)
|
||||
mac := hmac.New(sha1.New, []byte(cs.secret))
|
||||
mac.Write([]byte(s3))
|
||||
signature := base64.StdEncoding.EncodeToString(mac.Sum(nil))
|
||||
|
||||
var err error
|
||||
var resp *http.Response
|
||||
if !cs.HTTPGETOnly && (api == "deployVirtualMachine" || api == "updateVirtualMachine") {
|
||||
// The deployVirtualMachine API should be called using a POST call
|
||||
// so we don't have to worry about the userdata size
|
||||
|
||||
// Add the unescaped signature to the POST params
|
||||
params.Set("signature", signature)
|
||||
|
||||
// Make a POST call
|
||||
resp, err = cs.client.PostForm(cs.baseURL, params)
|
||||
} else {
|
||||
// Create the final URL before we issue the request
|
||||
url := cs.baseURL + "?" + s + "&signature=" + url.QueryEscape(signature)
|
||||
|
||||
// Make a GET call
|
||||
resp, err = cs.client.Get(url)
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
b, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Need to get the raw value to make the result play nice
|
||||
b, err = getRawValue(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if resp.StatusCode != 200 {
|
||||
var e CSError
|
||||
if err := json.Unmarshal(b, &e); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return nil, e.Error()
|
||||
}
|
||||
return b, nil
|
||||
}
|
||||
|
||||
// Custom version of net/url Encode that only URL escapes values
|
||||
// Unmodified portions here remain under BSD license of The Go Authors: https://go.googlesource.com/go/+/master/LICENSE
|
||||
func encodeValues(v url.Values) string {
|
||||
if v == nil {
|
||||
return ""
|
||||
}
|
||||
var buf bytes.Buffer
|
||||
keys := make([]string, 0, len(v))
|
||||
for k := range v {
|
||||
keys = append(keys, k)
|
||||
}
|
||||
sort.Strings(keys)
|
||||
for _, k := range keys {
|
||||
vs := v[k]
|
||||
prefix := k + "="
|
||||
for _, v := range vs {
|
||||
if buf.Len() > 0 {
|
||||
buf.WriteByte('&')
|
||||
}
|
||||
buf.WriteString(prefix)
|
||||
buf.WriteString(url.QueryEscape(v))
|
||||
}
|
||||
}
|
||||
return buf.String()
|
||||
}
|
||||
|
||||
// Generic function to get the first raw value from a response as json.RawMessage
|
||||
func getRawValue(b json.RawMessage) (json.RawMessage, error) {
|
||||
var m map[string]json.RawMessage
|
||||
if err := json.Unmarshal(b, &m); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, v := range m {
|
||||
return v, nil
|
||||
}
|
||||
return nil, fmt.Errorf("Unable to extract the raw value from:\n\n%s\n\n", string(b))
|
||||
}
|
||||
|
||||
// ProjectIDSetter is an interface that every type that can set a project ID must implement
|
||||
type ProjectIDSetter interface {
|
||||
SetProjectid(string)
|
||||
}
|
||||
|
||||
// WithProject takes either a project name or ID and sets the `projectid` parameter
|
||||
func WithProject(project string) OptionFunc {
|
||||
return func(cs *CloudStackClient, p interface{}) error {
|
||||
ps, ok := p.(ProjectIDSetter)
|
||||
|
||||
if !ok || project == "" {
|
||||
return nil
|
||||
}
|
||||
|
||||
if !IsID(project) {
|
||||
id, _, err := cs.Project.GetProjectID(project)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
project = id
|
||||
}
|
||||
|
||||
ps.SetProjectid(project)
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// VPCIDSetter is an interface that every type that can set a vpc ID must implement
|
||||
type VPCIDSetter interface {
|
||||
SetVpcid(string)
|
||||
}
|
||||
|
||||
// WithVPCID takes a vpc ID and sets the `vpcid` parameter
|
||||
func WithVPCID(id string) OptionFunc {
|
||||
return func(cs *CloudStackClient, p interface{}) error {
|
||||
vs, ok := p.(VPCIDSetter)
|
||||
|
||||
if !ok || id == "" {
|
||||
return nil
|
||||
}
|
||||
|
||||
vs.SetVpcid(id)
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
type APIDiscoveryService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewAPIDiscoveryService(cs *CloudStackClient) *APIDiscoveryService {
|
||||
return &APIDiscoveryService{cs: cs}
|
||||
}
|
||||
|
||||
type AccountService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewAccountService(cs *CloudStackClient) *AccountService {
|
||||
return &AccountService{cs: cs}
|
||||
}
|
||||
|
||||
type AddressService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewAddressService(cs *CloudStackClient) *AddressService {
|
||||
return &AddressService{cs: cs}
|
||||
}
|
||||
|
||||
type AffinityGroupService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewAffinityGroupService(cs *CloudStackClient) *AffinityGroupService {
|
||||
return &AffinityGroupService{cs: cs}
|
||||
}
|
||||
|
||||
type AlertService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewAlertService(cs *CloudStackClient) *AlertService {
|
||||
return &AlertService{cs: cs}
|
||||
}
|
||||
|
||||
type AsyncjobService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewAsyncjobService(cs *CloudStackClient) *AsyncjobService {
|
||||
return &AsyncjobService{cs: cs}
|
||||
}
|
||||
|
||||
type AuthenticationService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewAuthenticationService(cs *CloudStackClient) *AuthenticationService {
|
||||
return &AuthenticationService{cs: cs}
|
||||
}
|
||||
|
||||
type AutoScaleService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewAutoScaleService(cs *CloudStackClient) *AutoScaleService {
|
||||
return &AutoScaleService{cs: cs}
|
||||
}
|
||||
|
||||
type BaremetalService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewBaremetalService(cs *CloudStackClient) *BaremetalService {
|
||||
return &BaremetalService{cs: cs}
|
||||
}
|
||||
|
||||
type CertificateService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewCertificateService(cs *CloudStackClient) *CertificateService {
|
||||
return &CertificateService{cs: cs}
|
||||
}
|
||||
|
||||
type CloudIdentifierService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewCloudIdentifierService(cs *CloudStackClient) *CloudIdentifierService {
|
||||
return &CloudIdentifierService{cs: cs}
|
||||
}
|
||||
|
||||
type ClusterService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewClusterService(cs *CloudStackClient) *ClusterService {
|
||||
return &ClusterService{cs: cs}
|
||||
}
|
||||
|
||||
type ConfigurationService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewConfigurationService(cs *CloudStackClient) *ConfigurationService {
|
||||
return &ConfigurationService{cs: cs}
|
||||
}
|
||||
|
||||
type DiskOfferingService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewDiskOfferingService(cs *CloudStackClient) *DiskOfferingService {
|
||||
return &DiskOfferingService{cs: cs}
|
||||
}
|
||||
|
||||
type DomainService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewDomainService(cs *CloudStackClient) *DomainService {
|
||||
return &DomainService{cs: cs}
|
||||
}
|
||||
|
||||
type EventService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewEventService(cs *CloudStackClient) *EventService {
|
||||
return &EventService{cs: cs}
|
||||
}
|
||||
|
||||
type FirewallService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewFirewallService(cs *CloudStackClient) *FirewallService {
|
||||
return &FirewallService{cs: cs}
|
||||
}
|
||||
|
||||
type GuestOSService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewGuestOSService(cs *CloudStackClient) *GuestOSService {
|
||||
return &GuestOSService{cs: cs}
|
||||
}
|
||||
|
||||
type HostService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewHostService(cs *CloudStackClient) *HostService {
|
||||
return &HostService{cs: cs}
|
||||
}
|
||||
|
||||
type HypervisorService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewHypervisorService(cs *CloudStackClient) *HypervisorService {
|
||||
return &HypervisorService{cs: cs}
|
||||
}
|
||||
|
||||
type ISOService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewISOService(cs *CloudStackClient) *ISOService {
|
||||
return &ISOService{cs: cs}
|
||||
}
|
||||
|
||||
type ImageStoreService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewImageStoreService(cs *CloudStackClient) *ImageStoreService {
|
||||
return &ImageStoreService{cs: cs}
|
||||
}
|
||||
|
||||
type InternalLBService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewInternalLBService(cs *CloudStackClient) *InternalLBService {
|
||||
return &InternalLBService{cs: cs}
|
||||
}
|
||||
|
||||
type LDAPService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewLDAPService(cs *CloudStackClient) *LDAPService {
|
||||
return &LDAPService{cs: cs}
|
||||
}
|
||||
|
||||
type LimitService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewLimitService(cs *CloudStackClient) *LimitService {
|
||||
return &LimitService{cs: cs}
|
||||
}
|
||||
|
||||
type LoadBalancerService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewLoadBalancerService(cs *CloudStackClient) *LoadBalancerService {
|
||||
return &LoadBalancerService{cs: cs}
|
||||
}
|
||||
|
||||
type NATService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewNATService(cs *CloudStackClient) *NATService {
|
||||
return &NATService{cs: cs}
|
||||
}
|
||||
|
||||
type NetworkACLService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewNetworkACLService(cs *CloudStackClient) *NetworkACLService {
|
||||
return &NetworkACLService{cs: cs}
|
||||
}
|
||||
|
||||
type NetworkDeviceService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewNetworkDeviceService(cs *CloudStackClient) *NetworkDeviceService {
|
||||
return &NetworkDeviceService{cs: cs}
|
||||
}
|
||||
|
||||
type NetworkOfferingService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewNetworkOfferingService(cs *CloudStackClient) *NetworkOfferingService {
|
||||
return &NetworkOfferingService{cs: cs}
|
||||
}
|
||||
|
||||
type NetworkService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewNetworkService(cs *CloudStackClient) *NetworkService {
|
||||
return &NetworkService{cs: cs}
|
||||
}
|
||||
|
||||
type NicService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewNicService(cs *CloudStackClient) *NicService {
|
||||
return &NicService{cs: cs}
|
||||
}
|
||||
|
||||
type NiciraNVPService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewNiciraNVPService(cs *CloudStackClient) *NiciraNVPService {
|
||||
return &NiciraNVPService{cs: cs}
|
||||
}
|
||||
|
||||
type OvsElementService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewOvsElementService(cs *CloudStackClient) *OvsElementService {
|
||||
return &OvsElementService{cs: cs}
|
||||
}
|
||||
|
||||
type PodService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewPodService(cs *CloudStackClient) *PodService {
|
||||
return &PodService{cs: cs}
|
||||
}
|
||||
|
||||
type PoolService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewPoolService(cs *CloudStackClient) *PoolService {
|
||||
return &PoolService{cs: cs}
|
||||
}
|
||||
|
||||
type PortableIPService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewPortableIPService(cs *CloudStackClient) *PortableIPService {
|
||||
return &PortableIPService{cs: cs}
|
||||
}
|
||||
|
||||
type ProjectService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewProjectService(cs *CloudStackClient) *ProjectService {
|
||||
return &ProjectService{cs: cs}
|
||||
}
|
||||
|
||||
type QuotaService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewQuotaService(cs *CloudStackClient) *QuotaService {
|
||||
return &QuotaService{cs: cs}
|
||||
}
|
||||
|
||||
type RegionService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewRegionService(cs *CloudStackClient) *RegionService {
|
||||
return &RegionService{cs: cs}
|
||||
}
|
||||
|
||||
type ResourcemetadataService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewResourcemetadataService(cs *CloudStackClient) *ResourcemetadataService {
|
||||
return &ResourcemetadataService{cs: cs}
|
||||
}
|
||||
|
||||
type ResourcetagsService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewResourcetagsService(cs *CloudStackClient) *ResourcetagsService {
|
||||
return &ResourcetagsService{cs: cs}
|
||||
}
|
||||
|
||||
type RouterService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewRouterService(cs *CloudStackClient) *RouterService {
|
||||
return &RouterService{cs: cs}
|
||||
}
|
||||
|
||||
type SSHService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewSSHService(cs *CloudStackClient) *SSHService {
|
||||
return &SSHService{cs: cs}
|
||||
}
|
||||
|
||||
type SecurityGroupService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewSecurityGroupService(cs *CloudStackClient) *SecurityGroupService {
|
||||
return &SecurityGroupService{cs: cs}
|
||||
}
|
||||
|
||||
type ServiceOfferingService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewServiceOfferingService(cs *CloudStackClient) *ServiceOfferingService {
|
||||
return &ServiceOfferingService{cs: cs}
|
||||
}
|
||||
|
||||
type SnapshotService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewSnapshotService(cs *CloudStackClient) *SnapshotService {
|
||||
return &SnapshotService{cs: cs}
|
||||
}
|
||||
|
||||
type StoragePoolService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewStoragePoolService(cs *CloudStackClient) *StoragePoolService {
|
||||
return &StoragePoolService{cs: cs}
|
||||
}
|
||||
|
||||
type StratosphereSSPService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewStratosphereSSPService(cs *CloudStackClient) *StratosphereSSPService {
|
||||
return &StratosphereSSPService{cs: cs}
|
||||
}
|
||||
|
||||
type SwiftService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewSwiftService(cs *CloudStackClient) *SwiftService {
|
||||
return &SwiftService{cs: cs}
|
||||
}
|
||||
|
||||
type SystemCapacityService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewSystemCapacityService(cs *CloudStackClient) *SystemCapacityService {
|
||||
return &SystemCapacityService{cs: cs}
|
||||
}
|
||||
|
||||
type SystemVMService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewSystemVMService(cs *CloudStackClient) *SystemVMService {
|
||||
return &SystemVMService{cs: cs}
|
||||
}
|
||||
|
||||
type TemplateService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewTemplateService(cs *CloudStackClient) *TemplateService {
|
||||
return &TemplateService{cs: cs}
|
||||
}
|
||||
|
||||
type UCSService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewUCSService(cs *CloudStackClient) *UCSService {
|
||||
return &UCSService{cs: cs}
|
||||
}
|
||||
|
||||
type UsageService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewUsageService(cs *CloudStackClient) *UsageService {
|
||||
return &UsageService{cs: cs}
|
||||
}
|
||||
|
||||
type UserService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewUserService(cs *CloudStackClient) *UserService {
|
||||
return &UserService{cs: cs}
|
||||
}
|
||||
|
||||
type VLANService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewVLANService(cs *CloudStackClient) *VLANService {
|
||||
return &VLANService{cs: cs}
|
||||
}
|
||||
|
||||
type VMGroupService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewVMGroupService(cs *CloudStackClient) *VMGroupService {
|
||||
return &VMGroupService{cs: cs}
|
||||
}
|
||||
|
||||
type VPCService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewVPCService(cs *CloudStackClient) *VPCService {
|
||||
return &VPCService{cs: cs}
|
||||
}
|
||||
|
||||
type VPNService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewVPNService(cs *CloudStackClient) *VPNService {
|
||||
return &VPNService{cs: cs}
|
||||
}
|
||||
|
||||
type VirtualMachineService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewVirtualMachineService(cs *CloudStackClient) *VirtualMachineService {
|
||||
return &VirtualMachineService{cs: cs}
|
||||
}
|
||||
|
||||
type VolumeService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewVolumeService(cs *CloudStackClient) *VolumeService {
|
||||
return &VolumeService{cs: cs}
|
||||
}
|
||||
|
||||
type ZoneService struct {
|
||||
cs *CloudStackClient
|
||||
}
|
||||
|
||||
func NewZoneService(cs *CloudStackClient) *ZoneService {
|
||||
return &ZoneService{cs: cs}
|
||||
}
|
|
@ -700,6 +700,12 @@
|
|||
"path": "github.com/ugorji/go/codec/codecgen",
|
||||
"revision": "646ae4a518c1c3be0739df898118d9bccf993858"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "mWcSPrZfr9TKc4aoQEPlZ7fBdp0=",
|
||||
"path": "github.com/xanzy/go-cloudstack/cloudstack",
|
||||
"revision": "7d6a4449b586546246087e96e5c97dbc450f4917",
|
||||
"revisionTime": "2016-09-28T15:38:44Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "h+pFYiRHBogczS8/F1NoN3Ata44=",
|
||||
"path": "golang.org/x/crypto/curve25519",
|
||||
|
|
Loading…
Reference in New Issue