Merge pull request #7264 from rhtyd/go-cloudstack-vendor-update

vendor: update go-cloudstack v2.4.1
This commit is contained in:
Megan Marsh 2019-02-04 14:02:01 -08:00 committed by GitHub
commit 9f93fb2748
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
76 changed files with 41699 additions and 38402 deletions

2
go.mod
View File

@ -160,7 +160,7 @@ require (
github.com/ugorji/go v0.0.0-20151218193438-646ae4a518c1 github.com/ugorji/go v0.0.0-20151218193438-646ae4a518c1
github.com/ulikunitz/xz v0.0.0-20180703112113-636d36a76670 github.com/ulikunitz/xz v0.0.0-20180703112113-636d36a76670
github.com/vmware/govmomi v0.0.0-20170707011325-c2105a174311 github.com/vmware/govmomi v0.0.0-20170707011325-c2105a174311
github.com/xanzy/go-cloudstack v2.1.4+incompatible github.com/xanzy/go-cloudstack v2.4.1+incompatible
golang.org/x/crypto v0.0.0-20180322175230-88942b9c40a4 golang.org/x/crypto v0.0.0-20180322175230-88942b9c40a4
golang.org/x/net v0.0.0-20181201002055-351d144fa1fc golang.org/x/net v0.0.0-20181201002055-351d144fa1fc
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be

4
go.sum
View File

@ -356,8 +356,8 @@ github.com/ulikunitz/xz v0.0.0-20180703112113-636d36a76670 h1:HQWT4ta3wW5GZ790Ga
github.com/ulikunitz/xz v0.0.0-20180703112113-636d36a76670/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= github.com/ulikunitz/xz v0.0.0-20180703112113-636d36a76670/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=
github.com/vmware/govmomi v0.0.0-20170707011325-c2105a174311 h1:s5pyxd5S6wRs2WpEE0xRfWUF46Wbz44h203KnbX0ecI= github.com/vmware/govmomi v0.0.0-20170707011325-c2105a174311 h1:s5pyxd5S6wRs2WpEE0xRfWUF46Wbz44h203KnbX0ecI=
github.com/vmware/govmomi v0.0.0-20170707011325-c2105a174311/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= github.com/vmware/govmomi v0.0.0-20170707011325-c2105a174311/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU=
github.com/xanzy/go-cloudstack v2.1.4+incompatible h1:5c72sRFakVv8wH/HsQFg+xr37CmNQU2UbJfaBjW5f0c= github.com/xanzy/go-cloudstack v2.4.1+incompatible h1:Oc4xa2+I94h1g/QJ+nHoq597nJz2KXzxuQx/weOx0AU=
github.com/xanzy/go-cloudstack v2.1.4+incompatible/go.mod h1:s3eL3z5pNXF5FVybcT+LIVdId8pYn709yv6v5mrkrQE= github.com/xanzy/go-cloudstack v2.4.1+incompatible/go.mod h1:s3eL3z5pNXF5FVybcT+LIVdId8pYn709yv6v5mrkrQE=
golang.org/x/crypto v0.0.0-20180322175230-88942b9c40a4 h1:AJCW0rhPjFKEAoValWpqnRKxX8YV0Xvqfw+dOexCTPc= golang.org/x/crypto v0.0.0-20180322175230-88942b9c40a4 h1:AJCW0rhPjFKEAoValWpqnRKxX8YV0Xvqfw+dOexCTPc=
golang.org/x/crypto v0.0.0-20180322175230-88942b9c40a4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180322175230-88942b9c40a4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -63,6 +63,7 @@ func (s *APIDiscoveryService) ListApis(p *ListApisParams) (*ListApisResponse, er
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -72,25 +73,29 @@ type ListApisResponse struct {
} }
type Api struct { type Api struct {
Description string `json:"description,omitempty"` Description string `json:"description"`
Isasync bool `json:"isasync,omitempty"` Isasync bool `json:"isasync"`
Name string `json:"name,omitempty"` Name string `json:"name"`
Params []struct { Params []ApiParams `json:"params"`
Description string `json:"description,omitempty"` Related string `json:"related"`
Length int `json:"length,omitempty"` Response []ApiResponse `json:"response"`
Name string `json:"name,omitempty"` Since string `json:"since"`
Related string `json:"related,omitempty"` Type string `json:"type"`
Required bool `json:"required,omitempty"` }
Since string `json:"since,omitempty"`
Type string `json:"type,omitempty"` type ApiResponse struct {
} `json:"params,omitempty"` Description string `json:"description"`
Related string `json:"related,omitempty"` Name string `json:"name"`
Response []struct { Response []interface{} `json:"response"`
Description string `json:"description,omitempty"` Type string `json:"type"`
Name string `json:"name,omitempty"` }
Response []string `json:"response,omitempty"`
Type string `json:"type,omitempty"` type ApiParams struct {
} `json:"response,omitempty"` Description string `json:"description"`
Since string `json:"since,omitempty"` Length int `json:"length"`
Type string `json:"type,omitempty"` Name string `json:"name"`
Related string `json:"related"`
Required bool `json:"required"`
Since string `json:"since"`
Type string `json:"type"`
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -177,52 +177,42 @@ func (s *AddressService) AssociateIpAddress(p *AssociateIpAddressParams) (*Assoc
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type AssociateIpAddressResponse struct { type AssociateIpAddressResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Account string `json:"account,omitempty"` Account string `json:"account"`
Allocated string `json:"allocated,omitempty"` Allocated string `json:"allocated"`
Associatednetworkid string `json:"associatednetworkid,omitempty"` Associatednetworkid string `json:"associatednetworkid"`
Associatednetworkname string `json:"associatednetworkname,omitempty"` Associatednetworkname string `json:"associatednetworkname"`
Domain string `json:"domain,omitempty"` Domain string `json:"domain"`
Domainid string `json:"domainid,omitempty"` Domainid string `json:"domainid"`
Fordisplay bool `json:"fordisplay,omitempty"` Fordisplay bool `json:"fordisplay"`
Forvirtualnetwork bool `json:"forvirtualnetwork,omitempty"` Forvirtualnetwork bool `json:"forvirtualnetwork"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Ipaddress string `json:"ipaddress,omitempty"` Ipaddress string `json:"ipaddress"`
Isportable bool `json:"isportable,omitempty"` Isportable bool `json:"isportable"`
Issourcenat bool `json:"issourcenat,omitempty"` Issourcenat bool `json:"issourcenat"`
Isstaticnat bool `json:"isstaticnat,omitempty"` Isstaticnat bool `json:"isstaticnat"`
Issystem bool `json:"issystem,omitempty"` Issystem bool `json:"issystem"`
Networkid string `json:"networkid,omitempty"` Networkid string `json:"networkid"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"` Physicalnetworkid string `json:"physicalnetworkid"`
Project string `json:"project,omitempty"` Project string `json:"project"`
Projectid string `json:"projectid,omitempty"` Projectid string `json:"projectid"`
Purpose string `json:"purpose,omitempty"` Purpose string `json:"purpose"`
State string `json:"state,omitempty"` State string `json:"state"`
Tags []struct { Tags []Tags `json:"tags"`
Account string `json:"account,omitempty"` Virtualmachinedisplayname string `json:"virtualmachinedisplayname"`
Customer string `json:"customer,omitempty"` Virtualmachineid string `json:"virtualmachineid"`
Domain string `json:"domain,omitempty"` Virtualmachinename string `json:"virtualmachinename"`
Domainid string `json:"domainid,omitempty"` Vlanid string `json:"vlanid"`
Key string `json:"key,omitempty"` Vlanname string `json:"vlanname"`
Project string `json:"project,omitempty"` Vmipaddress string `json:"vmipaddress"`
Projectid string `json:"projectid,omitempty"` Vpcid string `json:"vpcid"`
Resourceid string `json:"resourceid,omitempty"` Zoneid string `json:"zoneid"`
Resourcetype string `json:"resourcetype,omitempty"` Zonename string `json:"zonename"`
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 { type DisassociateIpAddressParams struct {
@ -283,13 +273,14 @@ func (s *AddressService) DisassociateIpAddress(p *DisassociateIpAddressParams) (
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type DisassociateIpAddressResponse struct { type DisassociateIpAddressResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Success bool `json:"success,omitempty"` Success bool `json:"success"`
} }
type ListPublicIpAddressesParams struct { type ListPublicIpAddressesParams struct {
@ -587,7 +578,7 @@ func (s *AddressService) GetPublicIpAddressByID(id string, opts ...OptionFunc) (
p.p["id"] = id p.p["id"] = id
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return nil, -1, err return nil, -1, err
} }
@ -624,6 +615,7 @@ func (s *AddressService) ListPublicIpAddresses(p *ListPublicIpAddressesParams) (
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -633,47 +625,36 @@ type ListPublicIpAddressesResponse struct {
} }
type PublicIpAddress struct { type PublicIpAddress struct {
Account string `json:"account,omitempty"` Account string `json:"account"`
Allocated string `json:"allocated,omitempty"` Allocated string `json:"allocated"`
Associatednetworkid string `json:"associatednetworkid,omitempty"` Associatednetworkid string `json:"associatednetworkid"`
Associatednetworkname string `json:"associatednetworkname,omitempty"` Associatednetworkname string `json:"associatednetworkname"`
Domain string `json:"domain,omitempty"` Domain string `json:"domain"`
Domainid string `json:"domainid,omitempty"` Domainid string `json:"domainid"`
Fordisplay bool `json:"fordisplay,omitempty"` Fordisplay bool `json:"fordisplay"`
Forvirtualnetwork bool `json:"forvirtualnetwork,omitempty"` Forvirtualnetwork bool `json:"forvirtualnetwork"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Ipaddress string `json:"ipaddress,omitempty"` Ipaddress string `json:"ipaddress"`
Isportable bool `json:"isportable,omitempty"` Isportable bool `json:"isportable"`
Issourcenat bool `json:"issourcenat,omitempty"` Issourcenat bool `json:"issourcenat"`
Isstaticnat bool `json:"isstaticnat,omitempty"` Isstaticnat bool `json:"isstaticnat"`
Issystem bool `json:"issystem,omitempty"` Issystem bool `json:"issystem"`
Networkid string `json:"networkid,omitempty"` Networkid string `json:"networkid"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"` Physicalnetworkid string `json:"physicalnetworkid"`
Project string `json:"project,omitempty"` Project string `json:"project"`
Projectid string `json:"projectid,omitempty"` Projectid string `json:"projectid"`
Purpose string `json:"purpose,omitempty"` Purpose string `json:"purpose"`
State string `json:"state,omitempty"` State string `json:"state"`
Tags []struct { Tags []Tags `json:"tags"`
Account string `json:"account,omitempty"` Virtualmachinedisplayname string `json:"virtualmachinedisplayname"`
Customer string `json:"customer,omitempty"` Virtualmachineid string `json:"virtualmachineid"`
Domain string `json:"domain,omitempty"` Virtualmachinename string `json:"virtualmachinename"`
Domainid string `json:"domainid,omitempty"` Vlanid string `json:"vlanid"`
Key string `json:"key,omitempty"` Vlanname string `json:"vlanname"`
Project string `json:"project,omitempty"` Vmipaddress string `json:"vmipaddress"`
Projectid string `json:"projectid,omitempty"` Vpcid string `json:"vpcid"`
Resourceid string `json:"resourceid,omitempty"` Zoneid string `json:"zoneid"`
Resourcetype string `json:"resourcetype,omitempty"` Zonename string `json:"zonename"`
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 { type UpdateIpAddressParams struct {
@ -762,50 +743,40 @@ func (s *AddressService) UpdateIpAddress(p *UpdateIpAddressParams) (*UpdateIpAdd
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type UpdateIpAddressResponse struct { type UpdateIpAddressResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Account string `json:"account,omitempty"` Account string `json:"account"`
Allocated string `json:"allocated,omitempty"` Allocated string `json:"allocated"`
Associatednetworkid string `json:"associatednetworkid,omitempty"` Associatednetworkid string `json:"associatednetworkid"`
Associatednetworkname string `json:"associatednetworkname,omitempty"` Associatednetworkname string `json:"associatednetworkname"`
Domain string `json:"domain,omitempty"` Domain string `json:"domain"`
Domainid string `json:"domainid,omitempty"` Domainid string `json:"domainid"`
Fordisplay bool `json:"fordisplay,omitempty"` Fordisplay bool `json:"fordisplay"`
Forvirtualnetwork bool `json:"forvirtualnetwork,omitempty"` Forvirtualnetwork bool `json:"forvirtualnetwork"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Ipaddress string `json:"ipaddress,omitempty"` Ipaddress string `json:"ipaddress"`
Isportable bool `json:"isportable,omitempty"` Isportable bool `json:"isportable"`
Issourcenat bool `json:"issourcenat,omitempty"` Issourcenat bool `json:"issourcenat"`
Isstaticnat bool `json:"isstaticnat,omitempty"` Isstaticnat bool `json:"isstaticnat"`
Issystem bool `json:"issystem,omitempty"` Issystem bool `json:"issystem"`
Networkid string `json:"networkid,omitempty"` Networkid string `json:"networkid"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"` Physicalnetworkid string `json:"physicalnetworkid"`
Project string `json:"project,omitempty"` Project string `json:"project"`
Projectid string `json:"projectid,omitempty"` Projectid string `json:"projectid"`
Purpose string `json:"purpose,omitempty"` Purpose string `json:"purpose"`
State string `json:"state,omitempty"` State string `json:"state"`
Tags []struct { Tags []Tags `json:"tags"`
Account string `json:"account,omitempty"` Virtualmachinedisplayname string `json:"virtualmachinedisplayname"`
Customer string `json:"customer,omitempty"` Virtualmachineid string `json:"virtualmachineid"`
Domain string `json:"domain,omitempty"` Virtualmachinename string `json:"virtualmachinename"`
Domainid string `json:"domainid,omitempty"` Vlanid string `json:"vlanid"`
Key string `json:"key,omitempty"` Vlanname string `json:"vlanname"`
Project string `json:"project,omitempty"` Vmipaddress string `json:"vmipaddress"`
Projectid string `json:"projectid,omitempty"` Vpcid string `json:"vpcid"`
Resourceid string `json:"resourceid,omitempty"` Zoneid string `json:"zoneid"`
Resourcetype string `json:"resourcetype,omitempty"` Zonename string `json:"zonename"`
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"`
} }

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -143,21 +143,22 @@ func (s *AffinityGroupService) CreateAffinityGroup(p *CreateAffinityGroupParams)
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type CreateAffinityGroupResponse struct { type CreateAffinityGroupResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Account string `json:"account,omitempty"` Account string `json:"account"`
Description string `json:"description,omitempty"` Description string `json:"description"`
Domain string `json:"domain,omitempty"` Domain string `json:"domain"`
Domainid string `json:"domainid,omitempty"` Domainid string `json:"domainid"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Name string `json:"name,omitempty"` Name string `json:"name"`
Project string `json:"project,omitempty"` Project string `json:"project"`
Projectid string `json:"projectid,omitempty"` Projectid string `json:"projectid"`
Type string `json:"type,omitempty"` Type string `json:"type"`
VirtualmachineIds []string `json:"virtualmachineIds,omitempty"` VirtualmachineIds []string `json:"virtualmachineIds"`
} }
type DeleteAffinityGroupParams struct { type DeleteAffinityGroupParams struct {
@ -261,13 +262,93 @@ func (s *AffinityGroupService) DeleteAffinityGroup(p *DeleteAffinityGroupParams)
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type DeleteAffinityGroupResponse struct { type DeleteAffinityGroupResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Success bool `json:"success,omitempty"` Success bool `json:"success"`
}
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"`
} }
type ListAffinityGroupsParams struct { type ListAffinityGroupsParams struct {
@ -433,7 +514,7 @@ func (s *AffinityGroupService) GetAffinityGroupID(name string, opts ...OptionFun
p.p["name"] = name p.p["name"] = name
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return "", -1, err return "", -1, err
} }
@ -487,7 +568,7 @@ func (s *AffinityGroupService) GetAffinityGroupByID(id string, opts ...OptionFun
p.p["id"] = id p.p["id"] = id
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return nil, -1, err return nil, -1, err
} }
@ -528,6 +609,7 @@ func (s *AffinityGroupService) ListAffinityGroups(p *ListAffinityGroupsParams) (
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -537,16 +619,16 @@ type ListAffinityGroupsResponse struct {
} }
type AffinityGroup struct { type AffinityGroup struct {
Account string `json:"account,omitempty"` Account string `json:"account"`
Description string `json:"description,omitempty"` Description string `json:"description"`
Domain string `json:"domain,omitempty"` Domain string `json:"domain"`
Domainid string `json:"domainid,omitempty"` Domainid string `json:"domainid"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Name string `json:"name,omitempty"` Name string `json:"name"`
Project string `json:"project,omitempty"` Project string `json:"project"`
Projectid string `json:"projectid,omitempty"` Projectid string `json:"projectid"`
Type string `json:"type,omitempty"` Type string `json:"type"`
VirtualmachineIds []string `json:"virtualmachineIds,omitempty"` VirtualmachineIds []string `json:"virtualmachineIds"`
} }
type UpdateVMAffinityGroupParams struct { type UpdateVMAffinityGroupParams struct {
@ -636,260 +718,114 @@ func (s *AffinityGroupService) UpdateVMAffinityGroup(p *UpdateVMAffinityGroupPar
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type UpdateVMAffinityGroupResponse struct { type UpdateVMAffinityGroupResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Account string `json:"account,omitempty"` Account string `json:"account"`
Affinitygroup []struct { Affinitygroup []UpdateVMAffinityGroupResponseAffinitygroup `json:"affinitygroup"`
Account string `json:"account,omitempty"` Cpunumber int `json:"cpunumber"`
Description string `json:"description,omitempty"` Cpuspeed int `json:"cpuspeed"`
Domain string `json:"domain,omitempty"` Cpuused string `json:"cpuused"`
Domainid string `json:"domainid,omitempty"` Created string `json:"created"`
Id string `json:"id,omitempty"` Details map[string]string `json:"details"`
Name string `json:"name,omitempty"` Diskioread int64 `json:"diskioread"`
Project string `json:"project,omitempty"` Diskiowrite int64 `json:"diskiowrite"`
Projectid string `json:"projectid,omitempty"` Diskkbsread int64 `json:"diskkbsread"`
Type string `json:"type,omitempty"` Diskkbswrite int64 `json:"diskkbswrite"`
VirtualmachineIds []string `json:"virtualmachineIds,omitempty"` Diskofferingid string `json:"diskofferingid"`
} `json:"affinitygroup,omitempty"` Diskofferingname string `json:"diskofferingname"`
Cpunumber int `json:"cpunumber,omitempty"` Displayname string `json:"displayname"`
Cpuspeed int `json:"cpuspeed,omitempty"` Displayvm bool `json:"displayvm"`
Cpuused string `json:"cpuused,omitempty"` Domain string `json:"domain"`
Created string `json:"created,omitempty"` Domainid string `json:"domainid"`
Details map[string]string `json:"details,omitempty"` Forvirtualnetwork bool `json:"forvirtualnetwork"`
Diskioread int64 `json:"diskioread,omitempty"` Group string `json:"group"`
Diskiowrite int64 `json:"diskiowrite,omitempty"` Groupid string `json:"groupid"`
Diskkbsread int64 `json:"diskkbsread,omitempty"` Guestosid string `json:"guestosid"`
Diskkbswrite int64 `json:"diskkbswrite,omitempty"` Haenable bool `json:"haenable"`
Diskofferingid string `json:"diskofferingid,omitempty"` Hostid string `json:"hostid"`
Diskofferingname string `json:"diskofferingname,omitempty"` Hostname string `json:"hostname"`
Displayname string `json:"displayname,omitempty"` Hypervisor string `json:"hypervisor"`
Displayvm bool `json:"displayvm,omitempty"` Id string `json:"id"`
Domain string `json:"domain,omitempty"` Instancename string `json:"instancename"`
Domainid string `json:"domainid,omitempty"` Isdynamicallyscalable bool `json:"isdynamicallyscalable"`
Forvirtualnetwork bool `json:"forvirtualnetwork,omitempty"` Isodisplaytext string `json:"isodisplaytext"`
Group string `json:"group,omitempty"` Isoid string `json:"isoid"`
Groupid string `json:"groupid,omitempty"` Isoname string `json:"isoname"`
Guestosid string `json:"guestosid,omitempty"` Keypair string `json:"keypair"`
Haenable bool `json:"haenable,omitempty"` Memory int `json:"memory"`
Hostid string `json:"hostid,omitempty"` Memoryintfreekbs int64 `json:"memoryintfreekbs"`
Hostname string `json:"hostname,omitempty"` Memorykbs int64 `json:"memorykbs"`
Hypervisor string `json:"hypervisor,omitempty"` Memorytargetkbs int64 `json:"memorytargetkbs"`
Id string `json:"id,omitempty"` Name string `json:"name"`
Instancename string `json:"instancename,omitempty"` Networkkbsread int64 `json:"networkkbsread"`
Isdynamicallyscalable bool `json:"isdynamicallyscalable,omitempty"` Networkkbswrite int64 `json:"networkkbswrite"`
Isodisplaytext string `json:"isodisplaytext,omitempty"` Nic []Nic `json:"nic"`
Isoid string `json:"isoid,omitempty"` Ostypeid int64 `json:"ostypeid"`
Isoname string `json:"isoname,omitempty"` Password string `json:"password"`
Keypair string `json:"keypair,omitempty"` Passwordenabled bool `json:"passwordenabled"`
Memory int `json:"memory,omitempty"` Project string `json:"project"`
Name string `json:"name,omitempty"` Projectid string `json:"projectid"`
Networkkbsread int64 `json:"networkkbsread,omitempty"` Publicip string `json:"publicip"`
Networkkbswrite int64 `json:"networkkbswrite,omitempty"` Publicipid string `json:"publicipid"`
Nic []struct { Rootdeviceid int64 `json:"rootdeviceid"`
Broadcasturi string `json:"broadcasturi,omitempty"` Rootdevicetype string `json:"rootdevicetype"`
Deviceid string `json:"deviceid,omitempty"` Securitygroup []UpdateVMAffinityGroupResponseSecuritygroup `json:"securitygroup"`
Gateway string `json:"gateway,omitempty"` Serviceofferingid string `json:"serviceofferingid"`
Id string `json:"id,omitempty"` Serviceofferingname string `json:"serviceofferingname"`
Ip6address string `json:"ip6address,omitempty"` Servicestate string `json:"servicestate"`
Ip6cidr string `json:"ip6cidr,omitempty"` State string `json:"state"`
Ip6gateway string `json:"ip6gateway,omitempty"` Templatedisplaytext string `json:"templatedisplaytext"`
Ipaddress string `json:"ipaddress,omitempty"` Templateid string `json:"templateid"`
Isdefault bool `json:"isdefault,omitempty"` Templatename string `json:"templatename"`
Isolationuri string `json:"isolationuri,omitempty"` Userid string `json:"userid"`
Macaddress string `json:"macaddress,omitempty"` Username string `json:"username"`
Netmask string `json:"netmask,omitempty"` Vgpu string `json:"vgpu"`
Networkid string `json:"networkid,omitempty"` Zoneid string `json:"zoneid"`
Networkname string `json:"networkname,omitempty"` Zonename string `json:"zonename"`
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 { type UpdateVMAffinityGroupResponseSecuritygroup struct {
p map[string]interface{} Account string `json:"account"`
Description string `json:"description"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Egressrule []UpdateVMAffinityGroupResponseSecuritygroupRule `json:"egressrule"`
Id string `json:"id"`
Ingressrule []UpdateVMAffinityGroupResponseSecuritygroupRule `json:"ingressrule"`
Name string `json:"name"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Tags []Tags `json:"tags"`
Virtualmachinecount int `json:"virtualmachinecount"`
Virtualmachineids []interface{} `json:"virtualmachineids"`
} }
func (p *ListAffinityGroupTypesParams) toURLValues() url.Values { type UpdateVMAffinityGroupResponseSecuritygroupRule struct {
u := url.Values{} Account string `json:"account"`
if p.p == nil { Cidr string `json:"cidr"`
return u Endport int `json:"endport"`
} Icmpcode int `json:"icmpcode"`
if v, found := p.p["keyword"]; found { Icmptype int `json:"icmptype"`
u.Set("keyword", v.(string)) Protocol string `json:"protocol"`
} Ruleid string `json:"ruleid"`
if v, found := p.p["page"]; found { Securitygroupname string `json:"securitygroupname"`
vv := strconv.Itoa(v.(int)) Startport int `json:"startport"`
u.Set("page", vv) Tags []Tags `json:"tags"`
}
if v, found := p.p["pagesize"]; found {
vv := strconv.Itoa(v.(int))
u.Set("pagesize", vv)
}
return u
} }
func (p *ListAffinityGroupTypesParams) SetKeyword(v string) { type UpdateVMAffinityGroupResponseAffinitygroup struct {
if p.p == nil { Account string `json:"account"`
p.p = make(map[string]interface{}) Description string `json:"description"`
} Domain string `json:"domain"`
p.p["keyword"] = v Domainid string `json:"domainid"`
return Id string `json:"id"`
} Name string `json:"name"`
Project string `json:"project"`
func (p *ListAffinityGroupTypesParams) SetPage(v int) { Projectid string `json:"projectid"`
if p.p == nil { Type string `json:"type"`
p.p = make(map[string]interface{}) VirtualmachineIds []string `json:"virtualmachineIds"`
}
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"`
} }

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -24,204 +24,6 @@ import (
"strings" "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 { type ArchiveAlertsParams struct {
p map[string]interface{} p map[string]interface{}
} }
@ -298,12 +100,32 @@ func (s *AlertService) ArchiveAlerts(p *ArchiveAlertsParams) (*ArchiveAlertsResp
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type ArchiveAlertsResponse struct { type ArchiveAlertsResponse struct {
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Success string `json:"success,omitempty"` Success bool `json:"success"`
}
func (r *ArchiveAlertsResponse) UnmarshalJSON(b []byte) error {
var m map[string]interface{}
err := json.Unmarshal(b, &m)
if err != nil {
return err
}
if success, ok := m["success"].(string); ok {
m["success"] = success == "true"
b, err = json.Marshal(m)
if err != nil {
return err
}
}
type alias ArchiveAlertsResponse
return json.Unmarshal(b, (*alias)(r))
} }
type DeleteAlertsParams struct { type DeleteAlertsParams struct {
@ -382,12 +204,32 @@ func (s *AlertService) DeleteAlerts(p *DeleteAlertsParams) (*DeleteAlertsRespons
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type DeleteAlertsResponse struct { type DeleteAlertsResponse struct {
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Success string `json:"success,omitempty"` Success bool `json:"success"`
}
func (r *DeleteAlertsResponse) UnmarshalJSON(b []byte) error {
var m map[string]interface{}
err := json.Unmarshal(b, &m)
if err != nil {
return err
}
if success, ok := m["success"].(string); ok {
m["success"] = success == "true"
b, err = json.Marshal(m)
if err != nil {
return err
}
}
type alias DeleteAlertsResponse
return json.Unmarshal(b, (*alias)(r))
} }
type GenerateAlertParams struct { type GenerateAlertParams struct {
@ -495,11 +337,211 @@ func (s *AlertService) GenerateAlert(p *GenerateAlertParams) (*GenerateAlertResp
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type GenerateAlertResponse struct { type GenerateAlertResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Success bool `json:"success,omitempty"` Success bool `json:"success"`
}
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 append(s.cs.options, 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 append(s.cs.options, 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"`
Id string `json:"id"`
Name string `json:"name"`
Sent string `json:"sent"`
Type int `json:"type"`
} }

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -23,76 +23,6 @@ import (
"time" "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 { type ListAsyncJobsParams struct {
p map[string]interface{} p map[string]interface{}
} }
@ -216,6 +146,7 @@ func (s *AsyncjobService) ListAsyncJobs(p *ListAsyncJobsParams) (*ListAsyncJobsR
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -225,15 +156,86 @@ type ListAsyncJobsResponse struct {
} }
type AsyncJob struct { type AsyncJob struct {
Accountid string `json:"accountid,omitempty"` Accountid string `json:"accountid"`
Cmd string `json:"cmd,omitempty"` Cmd string `json:"cmd"`
Created string `json:"created,omitempty"` Created string `json:"created"`
Jobinstanceid string `json:"jobinstanceid,omitempty"` Jobinstanceid string `json:"jobinstanceid"`
Jobinstancetype string `json:"jobinstancetype,omitempty"` Jobinstancetype string `json:"jobinstancetype"`
Jobprocstatus int `json:"jobprocstatus,omitempty"` Jobprocstatus int `json:"jobprocstatus"`
Jobresult json.RawMessage `json:"jobresult,omitempty"` Jobresult json.RawMessage `json:"jobresult"`
Jobresultcode int `json:"jobresultcode,omitempty"` Jobresultcode int `json:"jobresultcode"`
Jobresulttype string `json:"jobresulttype,omitempty"` Jobresulttype string `json:"jobresulttype"`
Jobstatus int `json:"jobstatus,omitempty"` Jobstatus int `json:"jobstatus"`
Userid string `json:"userid,omitempty"` Userid string `json:"userid"`
}
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"`
Cmd string `json:"cmd"`
Created string `json:"created"`
Jobinstanceid string `json:"jobinstanceid"`
Jobinstancetype string `json:"jobinstancetype"`
Jobprocstatus int `json:"jobprocstatus"`
Jobresult json.RawMessage `json:"jobresult"`
Jobresultcode int `json:"jobresultcode"`
Jobresulttype string `json:"jobresulttype"`
Jobstatus int `json:"jobstatus"`
Userid string `json:"userid"`
} }

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -100,21 +100,23 @@ func (s *AuthenticationService) Login(p *LoginParams) (*LoginResponse, error) {
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type LoginResponse struct { type LoginResponse struct {
Account string `json:"account,omitempty"` Account string `json:"account"`
Domainid string `json:"domainid,omitempty"` Domainid string `json:"domainid"`
Firstname string `json:"firstname,omitempty"` Firstname string `json:"firstname"`
Lastname string `json:"lastname,omitempty"` Lastname string `json:"lastname"`
Registered string `json:"registered,omitempty"` Registered string `json:"registered"`
Sessionkey string `json:"sessionkey,omitempty"` Sessionkey string `json:"sessionkey"`
Timeout int `json:"timeout,omitempty"` Timeout int `json:"timeout"`
Timezone string `json:"timezone,omitempty"` Timezone string `json:"timezone"`
Type string `json:"type,omitempty"` Timezoneoffset string `json:"timezoneoffset"`
Userid string `json:"userid,omitempty"` Type string `json:"type"`
Username string `json:"username,omitempty"` Userid string `json:"userid"`
Username string `json:"username"`
} }
type LogoutParams struct { type LogoutParams struct {
@ -148,9 +150,10 @@ func (s *AuthenticationService) Logout(p *LogoutParams) (*LogoutResponse, error)
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type LogoutResponse struct { type LogoutResponse struct {
Description string `json:"description,omitempty"` Description string `json:"description"`
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -22,6 +22,130 @@ import (
"strconv" "strconv"
) )
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"`
Dhcpservertype string `json:"dhcpservertype"`
Id string `json:"id"`
Physicalnetworkid string `json:"physicalnetworkid"`
Provider string `json:"provider"`
Url string `json:"url"`
}
type AddBaremetalPxeKickStartServerParams struct { type AddBaremetalPxeKickStartServerParams struct {
p map[string]interface{} p map[string]interface{}
} }
@ -156,12 +280,13 @@ func (s *BaremetalService) AddBaremetalPxeKickStartServer(p *AddBaremetalPxeKick
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type AddBaremetalPxeKickStartServerResponse struct { type AddBaremetalPxeKickStartServerResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Tftpdir string `json:"tftpdir,omitempty"` Tftpdir string `json:"tftpdir"`
} }
type AddBaremetalPxePingServerParams struct { type AddBaremetalPxePingServerParams struct {
@ -344,104 +469,57 @@ func (s *BaremetalService) AddBaremetalPxePingServer(p *AddBaremetalPxePingServe
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type AddBaremetalPxePingServerResponse struct { type AddBaremetalPxePingServerResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Pingdir string `json:"pingdir,omitempty"` Pingdir string `json:"pingdir"`
Pingstorageserverip string `json:"pingstorageserverip,omitempty"` Pingstorageserverip string `json:"pingstorageserverip"`
Tftpdir string `json:"tftpdir,omitempty"` Tftpdir string `json:"tftpdir"`
} }
type AddBaremetalDhcpParams struct { type AddBaremetalRctParams struct {
p map[string]interface{} p map[string]interface{}
} }
func (p *AddBaremetalDhcpParams) toURLValues() url.Values { func (p *AddBaremetalRctParams) toURLValues() url.Values {
u := url.Values{} u := url.Values{}
if p.p == nil { if p.p == nil {
return u return u
} }
if v, found := p.p["dhcpservertype"]; found { if v, found := p.p["baremetalrcturl"]; found {
u.Set("dhcpservertype", v.(string)) u.Set("baremetalrcturl", 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 return u
} }
func (p *AddBaremetalDhcpParams) SetDhcpservertype(v string) { func (p *AddBaremetalRctParams) SetBaremetalrcturl(v string) {
if p.p == nil { if p.p == nil {
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
} }
p.p["dhcpservertype"] = v p.p["baremetalrcturl"] = v
return return
} }
func (p *AddBaremetalDhcpParams) SetPassword(v string) { // You should always use this function to get a new AddBaremetalRctParams instance,
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 // 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 { func (s *BaremetalService) NewAddBaremetalRctParams(baremetalrcturl string) *AddBaremetalRctParams {
p := &AddBaremetalDhcpParams{} p := &AddBaremetalRctParams{}
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
p.p["dhcpservertype"] = dhcpservertype p.p["baremetalrcturl"] = baremetalrcturl
p.p["password"] = password
p.p["physicalnetworkid"] = physicalnetworkid
p.p["url"] = url
p.p["username"] = username
return p return p
} }
// adds a baremetal dhcp server // adds baremetal rack configuration text
func (s *BaremetalService) AddBaremetalDhcp(p *AddBaremetalDhcpParams) (*AddBaremetalDhcpResponse, error) { func (s *BaremetalService) AddBaremetalRct(p *AddBaremetalRctParams) (*AddBaremetalRctResponse, error) {
resp, err := s.cs.newRequest("addBaremetalDhcp", p.toURLValues()) resp, err := s.cs.newRequest("addBaremetalRct", p.toURLValues())
if err != nil { if err != nil {
return nil, err return nil, err
} }
var r AddBaremetalDhcpResponse var r AddBaremetalRctResponse
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
@ -465,16 +543,82 @@ func (s *BaremetalService) AddBaremetalDhcp(p *AddBaremetalDhcpParams) (*AddBare
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type AddBaremetalDhcpResponse struct { type AddBaremetalRctResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Dhcpservertype string `json:"dhcpservertype,omitempty"` Id string `json:"id"`
Id string `json:"id,omitempty"` Url string `json:"url"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"` }
Provider string `json:"provider,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"`
Displaytext string `json:"displaytext"`
Success bool `json:"success"`
} }
type ListBaremetalDhcpParams struct { type ListBaremetalDhcpParams struct {
@ -578,6 +722,7 @@ func (s *BaremetalService) ListBaremetalDhcp(p *ListBaremetalDhcpParams) (*ListB
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -587,11 +732,11 @@ type ListBaremetalDhcpResponse struct {
} }
type BaremetalDhcp struct { type BaremetalDhcp struct {
Dhcpservertype string `json:"dhcpservertype,omitempty"` Dhcpservertype string `json:"dhcpservertype"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"` Physicalnetworkid string `json:"physicalnetworkid"`
Provider string `json:"provider,omitempty"` Provider string `json:"provider"`
Url string `json:"url,omitempty"` Url string `json:"url"`
} }
type ListBaremetalPxeServersParams struct { type ListBaremetalPxeServersParams struct {
@ -684,6 +829,7 @@ func (s *BaremetalService) ListBaremetalPxeServers(p *ListBaremetalPxeServersPar
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -693,149 +839,10 @@ type ListBaremetalPxeServersResponse struct {
} }
type BaremetalPxeServer struct { type BaremetalPxeServer struct {
Id string `json:"id,omitempty"` Id string `json:"id"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"` Physicalnetworkid string `json:"physicalnetworkid"`
Provider string `json:"provider,omitempty"` Provider string `json:"provider"`
Url string `json:"url,omitempty"` Url string `json:"url"`
}
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 { type ListBaremetalRctParams struct {
@ -904,6 +911,7 @@ func (s *BaremetalService) ListBaremetalRct(p *ListBaremetalRctParams) (*ListBar
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -913,6 +921,74 @@ type ListBaremetalRctResponse struct {
} }
type BaremetalRct struct { type BaremetalRct struct {
Id string `json:"id,omitempty"` Id string `json:"id"`
Url string `json:"url,omitempty"` Url string `json:"url"`
}
type NotifyBaremetalProvisionDoneParams struct {
p map[string]interface{}
}
func (p *NotifyBaremetalProvisionDoneParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["mac"]; found {
u.Set("mac", v.(string))
}
return u
}
func (p *NotifyBaremetalProvisionDoneParams) SetMac(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["mac"] = v
return
}
// You should always use this function to get a new NotifyBaremetalProvisionDoneParams instance,
// as then you are sure you have configured all required params
func (s *BaremetalService) NewNotifyBaremetalProvisionDoneParams(mac string) *NotifyBaremetalProvisionDoneParams {
p := &NotifyBaremetalProvisionDoneParams{}
p.p = make(map[string]interface{})
p.p["mac"] = mac
return p
}
// Notify provision has been done on a host. This api is for baremetal virtual router service, not for end user
func (s *BaremetalService) NotifyBaremetalProvisionDone(p *NotifyBaremetalProvisionDoneParams) (*NotifyBaremetalProvisionDoneResponse, error) {
resp, err := s.cs.newRequest("notifyBaremetalProvisionDone", p.toURLValues())
if err != nil {
return nil, err
}
var r NotifyBaremetalProvisionDoneResponse
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 NotifyBaremetalProvisionDoneResponse struct {
JobID string `json:"jobid"`
Displaytext string `json:"displaytext"`
Success bool `json:"success"`
} }

View File

@ -0,0 +1,327 @@
//
// Copyright 2018, 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 AddBigSwitchBcfDeviceParams struct {
p map[string]interface{}
}
func (p *AddBigSwitchBcfDeviceParams) 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["nat"]; found {
vv := strconv.FormatBool(v.(bool))
u.Set("nat", vv)
}
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["username"]; found {
u.Set("username", v.(string))
}
return u
}
func (p *AddBigSwitchBcfDeviceParams) SetHostname(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["hostname"] = v
return
}
func (p *AddBigSwitchBcfDeviceParams) SetNat(v bool) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["nat"] = v
return
}
func (p *AddBigSwitchBcfDeviceParams) SetPassword(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["password"] = v
return
}
func (p *AddBigSwitchBcfDeviceParams) SetPhysicalnetworkid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["physicalnetworkid"] = v
return
}
func (p *AddBigSwitchBcfDeviceParams) 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 AddBigSwitchBcfDeviceParams instance,
// as then you are sure you have configured all required params
func (s *BigSwitchBCFService) NewAddBigSwitchBcfDeviceParams(hostname string, nat bool, password string, physicalnetworkid string, username string) *AddBigSwitchBcfDeviceParams {
p := &AddBigSwitchBcfDeviceParams{}
p.p = make(map[string]interface{})
p.p["hostname"] = hostname
p.p["nat"] = nat
p.p["password"] = password
p.p["physicalnetworkid"] = physicalnetworkid
p.p["username"] = username
return p
}
// Adds a BigSwitch BCF Controller device
func (s *BigSwitchBCFService) AddBigSwitchBcfDevice(p *AddBigSwitchBcfDeviceParams) (*AddBigSwitchBcfDeviceResponse, error) {
resp, err := s.cs.newRequest("addBigSwitchBcfDevice", p.toURLValues())
if err != nil {
return nil, err
}
var r AddBigSwitchBcfDeviceResponse
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 AddBigSwitchBcfDeviceResponse struct {
JobID string `json:"jobid"`
Bcfdeviceid string `json:"bcfdeviceid"`
Bigswitchdevicename string `json:"bigswitchdevicename"`
Hostname string `json:"hostname"`
Nat bool `json:"nat"`
Password string `json:"password"`
Physicalnetworkid string `json:"physicalnetworkid"`
Provider string `json:"provider"`
Username string `json:"username"`
}
type DeleteBigSwitchBcfDeviceParams struct {
p map[string]interface{}
}
func (p *DeleteBigSwitchBcfDeviceParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["bcfdeviceid"]; found {
u.Set("bcfdeviceid", v.(string))
}
return u
}
func (p *DeleteBigSwitchBcfDeviceParams) SetBcfdeviceid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["bcfdeviceid"] = v
return
}
// You should always use this function to get a new DeleteBigSwitchBcfDeviceParams instance,
// as then you are sure you have configured all required params
func (s *BigSwitchBCFService) NewDeleteBigSwitchBcfDeviceParams(bcfdeviceid string) *DeleteBigSwitchBcfDeviceParams {
p := &DeleteBigSwitchBcfDeviceParams{}
p.p = make(map[string]interface{})
p.p["bcfdeviceid"] = bcfdeviceid
return p
}
// delete a BigSwitch BCF Controller device
func (s *BigSwitchBCFService) DeleteBigSwitchBcfDevice(p *DeleteBigSwitchBcfDeviceParams) (*DeleteBigSwitchBcfDeviceResponse, error) {
resp, err := s.cs.newRequest("deleteBigSwitchBcfDevice", p.toURLValues())
if err != nil {
return nil, err
}
var r DeleteBigSwitchBcfDeviceResponse
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 DeleteBigSwitchBcfDeviceResponse struct {
JobID string `json:"jobid"`
Displaytext string `json:"displaytext"`
Success bool `json:"success"`
}
type ListBigSwitchBcfDevicesParams struct {
p map[string]interface{}
}
func (p *ListBigSwitchBcfDevicesParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["bcfdeviceid"]; found {
u.Set("bcfdeviceid", 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))
}
return u
}
func (p *ListBigSwitchBcfDevicesParams) SetBcfdeviceid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["bcfdeviceid"] = v
return
}
func (p *ListBigSwitchBcfDevicesParams) SetKeyword(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["keyword"] = v
return
}
func (p *ListBigSwitchBcfDevicesParams) SetPage(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["page"] = v
return
}
func (p *ListBigSwitchBcfDevicesParams) SetPagesize(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["pagesize"] = v
return
}
func (p *ListBigSwitchBcfDevicesParams) 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 ListBigSwitchBcfDevicesParams instance,
// as then you are sure you have configured all required params
func (s *BigSwitchBCFService) NewListBigSwitchBcfDevicesParams() *ListBigSwitchBcfDevicesParams {
p := &ListBigSwitchBcfDevicesParams{}
p.p = make(map[string]interface{})
return p
}
// Lists BigSwitch BCF Controller devices
func (s *BigSwitchBCFService) ListBigSwitchBcfDevices(p *ListBigSwitchBcfDevicesParams) (*ListBigSwitchBcfDevicesResponse, error) {
resp, err := s.cs.newRequest("listBigSwitchBcfDevices", p.toURLValues())
if err != nil {
return nil, err
}
var r ListBigSwitchBcfDevicesResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type ListBigSwitchBcfDevicesResponse struct {
Count int `json:"count"`
BigSwitchBcfDevices []*BigSwitchBcfDevice `json:"bigswitchbcfdevice"`
}
type BigSwitchBcfDevice struct {
Bcfdeviceid string `json:"bcfdeviceid"`
Bigswitchdevicename string `json:"bigswitchdevicename"`
Hostname string `json:"hostname"`
Nat bool `json:"nat"`
Password string `json:"password"`
Physicalnetworkid string `json:"physicalnetworkid"`
Provider string `json:"provider"`
Username string `json:"username"`
}

View File

@ -0,0 +1,508 @@
//
// Copyright 2018, 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 AddBrocadeVcsDeviceParams struct {
p map[string]interface{}
}
func (p *AddBrocadeVcsDeviceParams) 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["password"]; found {
u.Set("password", v.(string))
}
if v, found := p.p["physicalnetworkid"]; found {
u.Set("physicalnetworkid", v.(string))
}
if v, found := p.p["username"]; found {
u.Set("username", v.(string))
}
return u
}
func (p *AddBrocadeVcsDeviceParams) SetHostname(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["hostname"] = v
return
}
func (p *AddBrocadeVcsDeviceParams) SetPassword(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["password"] = v
return
}
func (p *AddBrocadeVcsDeviceParams) SetPhysicalnetworkid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["physicalnetworkid"] = v
return
}
func (p *AddBrocadeVcsDeviceParams) 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 AddBrocadeVcsDeviceParams instance,
// as then you are sure you have configured all required params
func (s *BrocadeVCSService) NewAddBrocadeVcsDeviceParams(hostname string, password string, physicalnetworkid string, username string) *AddBrocadeVcsDeviceParams {
p := &AddBrocadeVcsDeviceParams{}
p.p = make(map[string]interface{})
p.p["hostname"] = hostname
p.p["password"] = password
p.p["physicalnetworkid"] = physicalnetworkid
p.p["username"] = username
return p
}
// Adds a Brocade VCS Switch
func (s *BrocadeVCSService) AddBrocadeVcsDevice(p *AddBrocadeVcsDeviceParams) (*AddBrocadeVcsDeviceResponse, error) {
resp, err := s.cs.newRequest("addBrocadeVcsDevice", p.toURLValues())
if err != nil {
return nil, err
}
var r AddBrocadeVcsDeviceResponse
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 AddBrocadeVcsDeviceResponse struct {
JobID string `json:"jobid"`
Brocadedevicename string `json:"brocadedevicename"`
Hostname string `json:"hostname"`
Physicalnetworkid string `json:"physicalnetworkid"`
Provider string `json:"provider"`
Vcsdeviceid string `json:"vcsdeviceid"`
}
type DeleteBrocadeVcsDeviceParams struct {
p map[string]interface{}
}
func (p *DeleteBrocadeVcsDeviceParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["vcsdeviceid"]; found {
u.Set("vcsdeviceid", v.(string))
}
return u
}
func (p *DeleteBrocadeVcsDeviceParams) SetVcsdeviceid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["vcsdeviceid"] = v
return
}
// You should always use this function to get a new DeleteBrocadeVcsDeviceParams instance,
// as then you are sure you have configured all required params
func (s *BrocadeVCSService) NewDeleteBrocadeVcsDeviceParams(vcsdeviceid string) *DeleteBrocadeVcsDeviceParams {
p := &DeleteBrocadeVcsDeviceParams{}
p.p = make(map[string]interface{})
p.p["vcsdeviceid"] = vcsdeviceid
return p
}
// delete a Brocade VCS Switch
func (s *BrocadeVCSService) DeleteBrocadeVcsDevice(p *DeleteBrocadeVcsDeviceParams) (*DeleteBrocadeVcsDeviceResponse, error) {
resp, err := s.cs.newRequest("deleteBrocadeVcsDevice", p.toURLValues())
if err != nil {
return nil, err
}
var r DeleteBrocadeVcsDeviceResponse
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 DeleteBrocadeVcsDeviceResponse struct {
JobID string `json:"jobid"`
Displaytext string `json:"displaytext"`
Success bool `json:"success"`
}
type ListBrocadeVcsDeviceNetworksParams struct {
p map[string]interface{}
}
func (p *ListBrocadeVcsDeviceNetworksParams) 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["vcsdeviceid"]; found {
u.Set("vcsdeviceid", v.(string))
}
return u
}
func (p *ListBrocadeVcsDeviceNetworksParams) SetKeyword(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["keyword"] = v
return
}
func (p *ListBrocadeVcsDeviceNetworksParams) SetPage(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["page"] = v
return
}
func (p *ListBrocadeVcsDeviceNetworksParams) SetPagesize(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["pagesize"] = v
return
}
func (p *ListBrocadeVcsDeviceNetworksParams) SetVcsdeviceid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["vcsdeviceid"] = v
return
}
// You should always use this function to get a new ListBrocadeVcsDeviceNetworksParams instance,
// as then you are sure you have configured all required params
func (s *BrocadeVCSService) NewListBrocadeVcsDeviceNetworksParams(vcsdeviceid string) *ListBrocadeVcsDeviceNetworksParams {
p := &ListBrocadeVcsDeviceNetworksParams{}
p.p = make(map[string]interface{})
p.p["vcsdeviceid"] = vcsdeviceid
return p
}
// This is a courtesy helper function, which in some cases may not work as expected!
func (s *BrocadeVCSService) GetBrocadeVcsDeviceNetworkID(keyword string, vcsdeviceid string, opts ...OptionFunc) (string, int, error) {
p := &ListBrocadeVcsDeviceNetworksParams{}
p.p = make(map[string]interface{})
p.p["keyword"] = keyword
p.p["vcsdeviceid"] = vcsdeviceid
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return "", -1, err
}
}
l, err := s.ListBrocadeVcsDeviceNetworks(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.BrocadeVcsDeviceNetworks[0].Id, l.Count, nil
}
if l.Count > 1 {
for _, v := range l.BrocadeVcsDeviceNetworks {
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 network that are using a brocade vcs switch
func (s *BrocadeVCSService) ListBrocadeVcsDeviceNetworks(p *ListBrocadeVcsDeviceNetworksParams) (*ListBrocadeVcsDeviceNetworksResponse, error) {
resp, err := s.cs.newRequest("listBrocadeVcsDeviceNetworks", p.toURLValues())
if err != nil {
return nil, err
}
var r ListBrocadeVcsDeviceNetworksResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type ListBrocadeVcsDeviceNetworksResponse struct {
Count int `json:"count"`
BrocadeVcsDeviceNetworks []*BrocadeVcsDeviceNetwork `json:"brocadevcsdevicenetwork"`
}
type BrocadeVcsDeviceNetwork struct {
Account string `json:"account"`
Aclid string `json:"aclid"`
Acltype string `json:"acltype"`
Broadcastdomaintype string `json:"broadcastdomaintype"`
Broadcasturi string `json:"broadcasturi"`
Canusefordeploy bool `json:"canusefordeploy"`
Cidr string `json:"cidr"`
Displaynetwork bool `json:"displaynetwork"`
Displaytext string `json:"displaytext"`
Dns1 string `json:"dns1"`
Dns2 string `json:"dns2"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Externalid string `json:"externalid"`
Gateway string `json:"gateway"`
Id string `json:"id"`
Ip6cidr string `json:"ip6cidr"`
Ip6gateway string `json:"ip6gateway"`
Isdefault bool `json:"isdefault"`
Ispersistent bool `json:"ispersistent"`
Issystem bool `json:"issystem"`
Name string `json:"name"`
Netmask string `json:"netmask"`
Networkcidr string `json:"networkcidr"`
Networkdomain string `json:"networkdomain"`
Networkofferingavailability string `json:"networkofferingavailability"`
Networkofferingconservemode bool `json:"networkofferingconservemode"`
Networkofferingdisplaytext string `json:"networkofferingdisplaytext"`
Networkofferingid string `json:"networkofferingid"`
Networkofferingname string `json:"networkofferingname"`
Physicalnetworkid string `json:"physicalnetworkid"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Redundantrouter bool `json:"redundantrouter"`
Related string `json:"related"`
Reservediprange string `json:"reservediprange"`
Restartrequired bool `json:"restartrequired"`
Service []BrocadeVcsDeviceNetworkService `json:"service"`
Specifyipranges bool `json:"specifyipranges"`
State string `json:"state"`
Strechedl2subnet bool `json:"strechedl2subnet"`
Subdomainaccess bool `json:"subdomainaccess"`
Tags []Tags `json:"tags"`
Traffictype string `json:"traffictype"`
Type string `json:"type"`
Vlan string `json:"vlan"`
Vpcid string `json:"vpcid"`
Zoneid string `json:"zoneid"`
Zonename string `json:"zonename"`
Zonesnetworkspans []interface{} `json:"zonesnetworkspans"`
}
type BrocadeVcsDeviceNetworkService struct {
Capability []BrocadeVcsDeviceNetworkServiceCapability `json:"capability"`
Name string `json:"name"`
Provider []BrocadeVcsDeviceNetworkServiceProvider `json:"provider"`
}
type BrocadeVcsDeviceNetworkServiceProvider struct {
Canenableindividualservice bool `json:"canenableindividualservice"`
Destinationphysicalnetworkid string `json:"destinationphysicalnetworkid"`
Id string `json:"id"`
Name string `json:"name"`
Physicalnetworkid string `json:"physicalnetworkid"`
Servicelist []string `json:"servicelist"`
State string `json:"state"`
}
type BrocadeVcsDeviceNetworkServiceCapability struct {
Canchooseservicecapability bool `json:"canchooseservicecapability"`
Name string `json:"name"`
Value string `json:"value"`
}
type ListBrocadeVcsDevicesParams struct {
p map[string]interface{}
}
func (p *ListBrocadeVcsDevicesParams) 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["physicalnetworkid"]; found {
u.Set("physicalnetworkid", v.(string))
}
if v, found := p.p["vcsdeviceid"]; found {
u.Set("vcsdeviceid", v.(string))
}
return u
}
func (p *ListBrocadeVcsDevicesParams) SetKeyword(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["keyword"] = v
return
}
func (p *ListBrocadeVcsDevicesParams) SetPage(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["page"] = v
return
}
func (p *ListBrocadeVcsDevicesParams) SetPagesize(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["pagesize"] = v
return
}
func (p *ListBrocadeVcsDevicesParams) SetPhysicalnetworkid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["physicalnetworkid"] = v
return
}
func (p *ListBrocadeVcsDevicesParams) SetVcsdeviceid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["vcsdeviceid"] = v
return
}
// You should always use this function to get a new ListBrocadeVcsDevicesParams instance,
// as then you are sure you have configured all required params
func (s *BrocadeVCSService) NewListBrocadeVcsDevicesParams() *ListBrocadeVcsDevicesParams {
p := &ListBrocadeVcsDevicesParams{}
p.p = make(map[string]interface{})
return p
}
// Lists Brocade VCS Switches
func (s *BrocadeVCSService) ListBrocadeVcsDevices(p *ListBrocadeVcsDevicesParams) (*ListBrocadeVcsDevicesResponse, error) {
resp, err := s.cs.newRequest("listBrocadeVcsDevices", p.toURLValues())
if err != nil {
return nil, err
}
var r ListBrocadeVcsDevicesResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type ListBrocadeVcsDevicesResponse struct {
Count int `json:"count"`
BrocadeVcsDevices []*BrocadeVcsDevice `json:"brocadevcsdevice"`
}
type BrocadeVcsDevice struct {
Brocadedevicename string `json:"brocadedevicename"`
Hostname string `json:"hostname"`
Physicalnetworkid string `json:"physicalnetworkid"`
Provider string `json:"provider"`
Vcsdeviceid string `json:"vcsdeviceid"`
}

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -131,10 +131,11 @@ func (s *CertificateService) UploadCustomCertificate(p *UploadCustomCertificateP
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type UploadCustomCertificateResponse struct { type UploadCustomCertificateResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Message string `json:"message,omitempty"` Message string `json:"message"`
} }

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -64,11 +64,12 @@ func (s *CloudIdentifierService) GetCloudIdentifier(p *GetCloudIdentifierParams)
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type GetCloudIdentifierResponse struct { type GetCloudIdentifierResponse struct {
Cloudidentifier string `json:"cloudidentifier,omitempty"` Cloudidentifier string `json:"cloudidentifier"`
Signature string `json:"signature,omitempty"` Signature string `json:"signature"`
Userid string `json:"userid,omitempty"` Userid string `json:"userid"`
} }

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -269,35 +269,141 @@ func (s *ClusterService) AddCluster(p *AddClusterParams) (*AddClusterResponse, e
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type AddClusterResponse struct { type AddClusterResponse struct {
Allocationstate string `json:"allocationstate,omitempty"` Allocationstate string `json:"allocationstate"`
Capacity []struct { Capacity []AddClusterResponseCapacity `json:"capacity"`
Capacitytotal int64 `json:"capacitytotal,omitempty"` Clustertype string `json:"clustertype"`
Capacityused int64 `json:"capacityused,omitempty"` Cpuovercommitratio string `json:"cpuovercommitratio"`
Clusterid string `json:"clusterid,omitempty"` Hypervisortype string `json:"hypervisortype"`
Clustername string `json:"clustername,omitempty"` Id string `json:"id"`
Percentused string `json:"percentused,omitempty"` Managedstate string `json:"managedstate"`
Podid string `json:"podid,omitempty"` Memoryovercommitratio string `json:"memoryovercommitratio"`
Podname string `json:"podname,omitempty"` Name string `json:"name"`
Type int `json:"type,omitempty"` Ovm3vip string `json:"ovm3vip"`
Zoneid string `json:"zoneid,omitempty"` Podid string `json:"podid"`
Zonename string `json:"zonename,omitempty"` Podname string `json:"podname"`
} `json:"capacity,omitempty"` Resourcedetails map[string]string `json:"resourcedetails"`
Clustertype string `json:"clustertype,omitempty"` Zoneid string `json:"zoneid"`
Cpuovercommitratio string `json:"cpuovercommitratio,omitempty"` Zonename string `json:"zonename"`
Hypervisortype string `json:"hypervisortype,omitempty"` }
Id string `json:"id,omitempty"`
Managedstate string `json:"managedstate,omitempty"` type AddClusterResponseCapacity struct {
Memoryovercommitratio string `json:"memoryovercommitratio,omitempty"` Capacityallocated int64 `json:"capacityallocated"`
Name string `json:"name,omitempty"` Capacitytotal int64 `json:"capacitytotal"`
Ovm3vip string `json:"ovm3vip,omitempty"` Capacityused int64 `json:"capacityused"`
Podid string `json:"podid,omitempty"` Clusterid string `json:"clusterid"`
Podname string `json:"podname,omitempty"` Clustername string `json:"clustername"`
Zoneid string `json:"zoneid,omitempty"` Name string `json:"name"`
Zonename string `json:"zonename,omitempty"` Percentused string `json:"percentused"`
Podid string `json:"podid"`
Podname string `json:"podname"`
Type int `json:"type"`
Zoneid string `json:"zoneid"`
Zonename string `json:"zonename"`
}
type DedicateClusterParams struct {
p map[string]interface{}
}
func (p *DedicateClusterParams) 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["clusterid"]; found {
u.Set("clusterid", v.(string))
}
if v, found := p.p["domainid"]; found {
u.Set("domainid", v.(string))
}
return u
}
func (p *DedicateClusterParams) SetAccount(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["account"] = v
return
}
func (p *DedicateClusterParams) SetClusterid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["clusterid"] = v
return
}
func (p *DedicateClusterParams) SetDomainid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["domainid"] = v
return
}
// You should always use this function to get a new DedicateClusterParams instance,
// as then you are sure you have configured all required params
func (s *ClusterService) NewDedicateClusterParams(clusterid string, domainid string) *DedicateClusterParams {
p := &DedicateClusterParams{}
p.p = make(map[string]interface{})
p.p["clusterid"] = clusterid
p.p["domainid"] = domainid
return p
}
// Dedicate an existing cluster
func (s *ClusterService) DedicateCluster(p *DedicateClusterParams) (*DedicateClusterResponse, error) {
resp, err := s.cs.newRequest("dedicateCluster", p.toURLValues())
if err != nil {
return nil, err
}
var r DedicateClusterResponse
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 DedicateClusterResponse struct {
JobID string `json:"jobid"`
Accountid string `json:"accountid"`
Affinitygroupid string `json:"affinitygroupid"`
Clusterid string `json:"clusterid"`
Clustername string `json:"clustername"`
Domainid string `json:"domainid"`
Id string `json:"id"`
} }
type DeleteClusterParams struct { type DeleteClusterParams struct {
@ -343,141 +449,196 @@ func (s *ClusterService) DeleteCluster(p *DeleteClusterParams) (*DeleteClusterRe
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type DeleteClusterResponse struct { type DeleteClusterResponse struct {
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Success string `json:"success,omitempty"` Success bool `json:"success"`
} }
type UpdateClusterParams struct { func (r *DeleteClusterResponse) UnmarshalJSON(b []byte) error {
var m map[string]interface{}
err := json.Unmarshal(b, &m)
if err != nil {
return err
}
if success, ok := m["success"].(string); ok {
m["success"] = success == "true"
b, err = json.Marshal(m)
if err != nil {
return err
}
}
type alias DeleteClusterResponse
return json.Unmarshal(b, (*alias)(r))
}
type DisableOutOfBandManagementForClusterParams struct {
p map[string]interface{} p map[string]interface{}
} }
func (p *UpdateClusterParams) toURLValues() url.Values { func (p *DisableOutOfBandManagementForClusterParams) toURLValues() url.Values {
u := url.Values{} u := url.Values{}
if p.p == nil { if p.p == nil {
return u return u
} }
if v, found := p.p["allocationstate"]; found { if v, found := p.p["clusterid"]; found {
u.Set("allocationstate", v.(string)) u.Set("clusterid", v.(string))
}
if v, found := p.p["clustername"]; found {
u.Set("clustername", v.(string))
}
if v, found := p.p["clustertype"]; found {
u.Set("clustertype", v.(string))
}
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["managedstate"]; found {
u.Set("managedstate", v.(string))
} }
return u return u
} }
func (p *UpdateClusterParams) SetAllocationstate(v string) { func (p *DisableOutOfBandManagementForClusterParams) SetClusterid(v string) {
if p.p == nil { if p.p == nil {
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
} }
p.p["allocationstate"] = v p.p["clusterid"] = v
return return
} }
func (p *UpdateClusterParams) SetClustername(v string) { // You should always use this function to get a new DisableOutOfBandManagementForClusterParams instance,
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["clustername"] = v
return
}
func (p *UpdateClusterParams) SetClustertype(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["clustertype"] = v
return
}
func (p *UpdateClusterParams) SetHypervisor(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["hypervisor"] = v
return
}
func (p *UpdateClusterParams) SetId(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["id"] = v
return
}
func (p *UpdateClusterParams) SetManagedstate(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["managedstate"] = v
return
}
// You should always use this function to get a new UpdateClusterParams instance,
// as then you are sure you have configured all required params // as then you are sure you have configured all required params
func (s *ClusterService) NewUpdateClusterParams(id string) *UpdateClusterParams { func (s *ClusterService) NewDisableOutOfBandManagementForClusterParams(clusterid string) *DisableOutOfBandManagementForClusterParams {
p := &UpdateClusterParams{} p := &DisableOutOfBandManagementForClusterParams{}
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
p.p["id"] = id p.p["clusterid"] = clusterid
return p return p
} }
// Updates an existing cluster // Disables out-of-band management for a cluster
func (s *ClusterService) UpdateCluster(p *UpdateClusterParams) (*UpdateClusterResponse, error) { func (s *ClusterService) DisableOutOfBandManagementForCluster(p *DisableOutOfBandManagementForClusterParams) (*DisableOutOfBandManagementForClusterResponse, error) {
resp, err := s.cs.newRequest("updateCluster", p.toURLValues()) resp, err := s.cs.newRequest("disableOutOfBandManagementForCluster", p.toURLValues())
if err != nil { if err != nil {
return nil, err return nil, err
} }
var r UpdateClusterResponse var r DisableOutOfBandManagementForClusterResponse
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err 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 return &r, nil
} }
type UpdateClusterResponse struct { type DisableOutOfBandManagementForClusterResponse struct {
Allocationstate string `json:"allocationstate,omitempty"` JobID string `json:"jobid"`
Capacity []struct { Action string `json:"action"`
Capacitytotal int64 `json:"capacitytotal,omitempty"` Address string `json:"address"`
Capacityused int64 `json:"capacityused,omitempty"` Description string `json:"description"`
Clusterid string `json:"clusterid,omitempty"` Driver string `json:"driver"`
Clustername string `json:"clustername,omitempty"` Enabled bool `json:"enabled"`
Percentused string `json:"percentused,omitempty"` Hostid string `json:"hostid"`
Podid string `json:"podid,omitempty"` Password string `json:"password"`
Podname string `json:"podname,omitempty"` Port string `json:"port"`
Type int `json:"type,omitempty"` Powerstate string `json:"powerstate"`
Zoneid string `json:"zoneid,omitempty"` Status bool `json:"status"`
Zonename string `json:"zonename,omitempty"` Username string `json:"username"`
} `json:"capacity,omitempty"` }
Clustertype string `json:"clustertype,omitempty"`
Cpuovercommitratio string `json:"cpuovercommitratio,omitempty"` type EnableOutOfBandManagementForClusterParams struct {
Hypervisortype string `json:"hypervisortype,omitempty"` p map[string]interface{}
Id string `json:"id,omitempty"` }
Managedstate string `json:"managedstate,omitempty"`
Memoryovercommitratio string `json:"memoryovercommitratio,omitempty"` func (p *EnableOutOfBandManagementForClusterParams) toURLValues() url.Values {
Name string `json:"name,omitempty"` u := url.Values{}
Ovm3vip string `json:"ovm3vip,omitempty"` if p.p == nil {
Podid string `json:"podid,omitempty"` return u
Podname string `json:"podname,omitempty"` }
Zoneid string `json:"zoneid,omitempty"` if v, found := p.p["clusterid"]; found {
Zonename string `json:"zonename,omitempty"` u.Set("clusterid", v.(string))
}
return u
}
func (p *EnableOutOfBandManagementForClusterParams) SetClusterid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["clusterid"] = v
return
}
// You should always use this function to get a new EnableOutOfBandManagementForClusterParams instance,
// as then you are sure you have configured all required params
func (s *ClusterService) NewEnableOutOfBandManagementForClusterParams(clusterid string) *EnableOutOfBandManagementForClusterParams {
p := &EnableOutOfBandManagementForClusterParams{}
p.p = make(map[string]interface{})
p.p["clusterid"] = clusterid
return p
}
// Enables out-of-band management for a cluster
func (s *ClusterService) EnableOutOfBandManagementForCluster(p *EnableOutOfBandManagementForClusterParams) (*EnableOutOfBandManagementForClusterResponse, error) {
resp, err := s.cs.newRequest("enableOutOfBandManagementForCluster", p.toURLValues())
if err != nil {
return nil, err
}
var r EnableOutOfBandManagementForClusterResponse
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 EnableOutOfBandManagementForClusterResponse struct {
JobID string `json:"jobid"`
Action string `json:"action"`
Address string `json:"address"`
Description string `json:"description"`
Driver string `json:"driver"`
Enabled bool `json:"enabled"`
Hostid string `json:"hostid"`
Password string `json:"password"`
Port string `json:"port"`
Powerstate string `json:"powerstate"`
Status bool `json:"status"`
Username string `json:"username"`
} }
type ListClustersParams struct { type ListClustersParams struct {
@ -642,7 +803,7 @@ func (s *ClusterService) GetClusterID(name string, opts ...OptionFunc) (string,
p.p["name"] = name p.p["name"] = name
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return "", -1, err return "", -1, err
} }
@ -692,7 +853,7 @@ func (s *ClusterService) GetClusterByID(id string, opts ...OptionFunc) (*Cluster
p.p["id"] = id p.p["id"] = id
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return nil, -1, err return nil, -1, err
} }
@ -729,6 +890,7 @@ func (s *ClusterService) ListClusters(p *ListClustersParams) (*ListClustersRespo
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -738,197 +900,36 @@ type ListClustersResponse struct {
} }
type Cluster struct { type Cluster struct {
Allocationstate string `json:"allocationstate,omitempty"` Allocationstate string `json:"allocationstate"`
Capacity []struct { Capacity []ClusterCapacity `json:"capacity"`
Capacitytotal int64 `json:"capacitytotal,omitempty"` Clustertype string `json:"clustertype"`
Capacityused int64 `json:"capacityused,omitempty"` Cpuovercommitratio string `json:"cpuovercommitratio"`
Clusterid string `json:"clusterid,omitempty"` Hypervisortype string `json:"hypervisortype"`
Clustername string `json:"clustername,omitempty"` Id string `json:"id"`
Percentused string `json:"percentused,omitempty"` Managedstate string `json:"managedstate"`
Podid string `json:"podid,omitempty"` Memoryovercommitratio string `json:"memoryovercommitratio"`
Podname string `json:"podname,omitempty"` Name string `json:"name"`
Type int `json:"type,omitempty"` Ovm3vip string `json:"ovm3vip"`
Zoneid string `json:"zoneid,omitempty"` Podid string `json:"podid"`
Zonename string `json:"zonename,omitempty"` Podname string `json:"podname"`
} `json:"capacity,omitempty"` Resourcedetails map[string]string `json:"resourcedetails"`
Clustertype string `json:"clustertype,omitempty"` Zoneid string `json:"zoneid"`
Cpuovercommitratio string `json:"cpuovercommitratio,omitempty"` Zonename string `json:"zonename"`
Hypervisortype string `json:"hypervisortype,omitempty"`
Id string `json:"id,omitempty"`
Managedstate string `json:"managedstate,omitempty"`
Memoryovercommitratio string `json:"memoryovercommitratio,omitempty"`
Name string `json:"name,omitempty"`
Ovm3vip string `json:"ovm3vip,omitempty"`
Podid string `json:"podid,omitempty"`
Podname string `json:"podname,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
Zonename string `json:"zonename,omitempty"`
} }
type DedicateClusterParams struct { type ClusterCapacity struct {
p map[string]interface{} Capacityallocated int64 `json:"capacityallocated"`
} Capacitytotal int64 `json:"capacitytotal"`
Capacityused int64 `json:"capacityused"`
func (p *DedicateClusterParams) toURLValues() url.Values { Clusterid string `json:"clusterid"`
u := url.Values{} Clustername string `json:"clustername"`
if p.p == nil { Name string `json:"name"`
return u Percentused string `json:"percentused"`
} Podid string `json:"podid"`
if v, found := p.p["account"]; found { Podname string `json:"podname"`
u.Set("account", v.(string)) Type int `json:"type"`
} Zoneid string `json:"zoneid"`
if v, found := p.p["clusterid"]; found { Zonename string `json:"zonename"`
u.Set("clusterid", v.(string))
}
if v, found := p.p["domainid"]; found {
u.Set("domainid", v.(string))
}
return u
}
func (p *DedicateClusterParams) SetAccount(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["account"] = v
return
}
func (p *DedicateClusterParams) SetClusterid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["clusterid"] = v
return
}
func (p *DedicateClusterParams) SetDomainid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["domainid"] = v
return
}
// You should always use this function to get a new DedicateClusterParams instance,
// as then you are sure you have configured all required params
func (s *ClusterService) NewDedicateClusterParams(clusterid string, domainid string) *DedicateClusterParams {
p := &DedicateClusterParams{}
p.p = make(map[string]interface{})
p.p["clusterid"] = clusterid
p.p["domainid"] = domainid
return p
}
// Dedicate an existing cluster
func (s *ClusterService) DedicateCluster(p *DedicateClusterParams) (*DedicateClusterResponse, error) {
resp, err := s.cs.newRequest("dedicateCluster", p.toURLValues())
if err != nil {
return nil, err
}
var r DedicateClusterResponse
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 DedicateClusterResponse struct {
JobID string `json:"jobid,omitempty"`
Accountid string `json:"accountid,omitempty"`
Affinitygroupid string `json:"affinitygroupid,omitempty"`
Clusterid string `json:"clusterid,omitempty"`
Clustername string `json:"clustername,omitempty"`
Domainid string `json:"domainid,omitempty"`
Id string `json:"id,omitempty"`
}
type ReleaseDedicatedClusterParams struct {
p map[string]interface{}
}
func (p *ReleaseDedicatedClusterParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["clusterid"]; found {
u.Set("clusterid", v.(string))
}
return u
}
func (p *ReleaseDedicatedClusterParams) SetClusterid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["clusterid"] = v
return
}
// You should always use this function to get a new ReleaseDedicatedClusterParams instance,
// as then you are sure you have configured all required params
func (s *ClusterService) NewReleaseDedicatedClusterParams(clusterid string) *ReleaseDedicatedClusterParams {
p := &ReleaseDedicatedClusterParams{}
p.p = make(map[string]interface{})
p.p["clusterid"] = clusterid
return p
}
// Release the dedication for cluster
func (s *ClusterService) ReleaseDedicatedCluster(p *ReleaseDedicatedClusterParams) (*ReleaseDedicatedClusterResponse, error) {
resp, err := s.cs.newRequest("releaseDedicatedCluster", p.toURLValues())
if err != nil {
return nil, err
}
var r ReleaseDedicatedClusterResponse
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 ReleaseDedicatedClusterResponse struct {
JobID string `json:"jobid,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Success bool `json:"success,omitempty"`
} }
type ListDedicatedClustersParams struct { type ListDedicatedClustersParams struct {
@ -1041,6 +1042,7 @@ func (s *ClusterService) ListDedicatedClusters(p *ListDedicatedClustersParams) (
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -1050,10 +1052,213 @@ type ListDedicatedClustersResponse struct {
} }
type DedicatedCluster struct { type DedicatedCluster struct {
Accountid string `json:"accountid,omitempty"` Accountid string `json:"accountid"`
Affinitygroupid string `json:"affinitygroupid,omitempty"` Affinitygroupid string `json:"affinitygroupid"`
Clusterid string `json:"clusterid,omitempty"` Clusterid string `json:"clusterid"`
Clustername string `json:"clustername,omitempty"` Clustername string `json:"clustername"`
Domainid string `json:"domainid,omitempty"` Domainid string `json:"domainid"`
Id string `json:"id,omitempty"` Id string `json:"id"`
}
type ReleaseDedicatedClusterParams struct {
p map[string]interface{}
}
func (p *ReleaseDedicatedClusterParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["clusterid"]; found {
u.Set("clusterid", v.(string))
}
return u
}
func (p *ReleaseDedicatedClusterParams) SetClusterid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["clusterid"] = v
return
}
// You should always use this function to get a new ReleaseDedicatedClusterParams instance,
// as then you are sure you have configured all required params
func (s *ClusterService) NewReleaseDedicatedClusterParams(clusterid string) *ReleaseDedicatedClusterParams {
p := &ReleaseDedicatedClusterParams{}
p.p = make(map[string]interface{})
p.p["clusterid"] = clusterid
return p
}
// Release the dedication for cluster
func (s *ClusterService) ReleaseDedicatedCluster(p *ReleaseDedicatedClusterParams) (*ReleaseDedicatedClusterResponse, error) {
resp, err := s.cs.newRequest("releaseDedicatedCluster", p.toURLValues())
if err != nil {
return nil, err
}
var r ReleaseDedicatedClusterResponse
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 ReleaseDedicatedClusterResponse struct {
JobID string `json:"jobid"`
Displaytext string `json:"displaytext"`
Success bool `json:"success"`
}
type UpdateClusterParams struct {
p map[string]interface{}
}
func (p *UpdateClusterParams) 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["clustername"]; found {
u.Set("clustername", v.(string))
}
if v, found := p.p["clustertype"]; found {
u.Set("clustertype", v.(string))
}
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["managedstate"]; found {
u.Set("managedstate", v.(string))
}
return u
}
func (p *UpdateClusterParams) SetAllocationstate(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["allocationstate"] = v
return
}
func (p *UpdateClusterParams) SetClustername(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["clustername"] = v
return
}
func (p *UpdateClusterParams) SetClustertype(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["clustertype"] = v
return
}
func (p *UpdateClusterParams) SetHypervisor(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["hypervisor"] = v
return
}
func (p *UpdateClusterParams) SetId(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["id"] = v
return
}
func (p *UpdateClusterParams) SetManagedstate(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["managedstate"] = v
return
}
// You should always use this function to get a new UpdateClusterParams instance,
// as then you are sure you have configured all required params
func (s *ClusterService) NewUpdateClusterParams(id string) *UpdateClusterParams {
p := &UpdateClusterParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
return p
}
// Updates an existing cluster
func (s *ClusterService) UpdateCluster(p *UpdateClusterParams) (*UpdateClusterResponse, error) {
resp, err := s.cs.newRequest("updateCluster", p.toURLValues())
if err != nil {
return nil, err
}
var r UpdateClusterResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type UpdateClusterResponse struct {
Allocationstate string `json:"allocationstate"`
Capacity []UpdateClusterResponseCapacity `json:"capacity"`
Clustertype string `json:"clustertype"`
Cpuovercommitratio string `json:"cpuovercommitratio"`
Hypervisortype string `json:"hypervisortype"`
Id string `json:"id"`
Managedstate string `json:"managedstate"`
Memoryovercommitratio string `json:"memoryovercommitratio"`
Name string `json:"name"`
Ovm3vip string `json:"ovm3vip"`
Podid string `json:"podid"`
Podname string `json:"podname"`
Resourcedetails map[string]string `json:"resourcedetails"`
Zoneid string `json:"zoneid"`
Zonename string `json:"zonename"`
}
type UpdateClusterResponseCapacity struct {
Capacityallocated int64 `json:"capacityallocated"`
Capacitytotal int64 `json:"capacitytotal"`
Capacityused int64 `json:"capacityused"`
Clusterid string `json:"clusterid"`
Clustername string `json:"clustername"`
Name string `json:"name"`
Percentused string `json:"percentused"`
Podid string `json:"podid"`
Podname string `json:"podname"`
Type int `json:"type"`
Zoneid string `json:"zoneid"`
Zonename string `json:"zonename"`
} }

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -22,114 +22,62 @@ import (
"strconv" "strconv"
) )
type UpdateConfigurationParams struct { type ListCapabilitiesParams struct {
p map[string]interface{} p map[string]interface{}
} }
func (p *UpdateConfigurationParams) toURLValues() url.Values { func (p *ListCapabilitiesParams) toURLValues() url.Values {
u := url.Values{} u := url.Values{}
if p.p == nil { if p.p == nil {
return u 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 return u
} }
func (p *UpdateConfigurationParams) SetAccountid(v string) { // You should always use this function to get a new ListCapabilitiesParams instance,
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 // as then you are sure you have configured all required params
func (s *ConfigurationService) NewUpdateConfigurationParams(name string) *UpdateConfigurationParams { func (s *ConfigurationService) NewListCapabilitiesParams() *ListCapabilitiesParams {
p := &UpdateConfigurationParams{} p := &ListCapabilitiesParams{}
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
p.p["name"] = name
return p return p
} }
// Updates a configuration. // Lists capabilities
func (s *ConfigurationService) UpdateConfiguration(p *UpdateConfigurationParams) (*UpdateConfigurationResponse, error) { func (s *ConfigurationService) ListCapabilities(p *ListCapabilitiesParams) (*ListCapabilitiesResponse, error) {
resp, err := s.cs.newRequest("updateConfiguration", p.toURLValues()) resp, err := s.cs.newRequest("listCapabilities", p.toURLValues())
if err != nil { if err != nil {
return nil, err return nil, err
} }
var r UpdateConfigurationResponse var r ListCapabilitiesResponse
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type UpdateConfigurationResponse struct { type ListCapabilitiesResponse struct {
Category string `json:"category,omitempty"` Count int `json:"count"`
Description string `json:"description,omitempty"` Capabilities []*Capability `json:"capability"`
Id int64 `json:"id,omitempty"` }
Name string `json:"name,omitempty"`
Scope string `json:"scope,omitempty"` type Capability struct {
Value string `json:"value,omitempty"` Allowusercreateprojects bool `json:"allowusercreateprojects"`
Allowuserexpungerecovervm bool `json:"allowuserexpungerecovervm"`
Allowuserviewdestroyedvm bool `json:"allowuserviewdestroyedvm"`
Apilimitinterval int `json:"apilimitinterval"`
Apilimitmax int `json:"apilimitmax"`
Cloudstackversion string `json:"cloudstackversion"`
Customdiskofferingmaxsize int64 `json:"customdiskofferingmaxsize"`
Customdiskofferingminsize int64 `json:"customdiskofferingminsize"`
Dynamicrolesenabled bool `json:"dynamicrolesenabled"`
Kvmsnapshotenabled bool `json:"kvmsnapshotenabled"`
Projectinviterequired bool `json:"projectinviterequired"`
Regionsecondaryenabled bool `json:"regionsecondaryenabled"`
Securitygroupsenabled bool `json:"securitygroupsenabled"`
SupportELB string `json:"supportELB"`
Userpublictemplateenabled bool `json:"userpublictemplateenabled"`
} }
type ListConfigurationsParams struct { type ListConfigurationsParams struct {
@ -150,6 +98,12 @@ func (p *ListConfigurationsParams) toURLValues() url.Values {
if v, found := p.p["clusterid"]; found { if v, found := p.p["clusterid"]; found {
u.Set("clusterid", v.(string)) u.Set("clusterid", v.(string))
} }
if v, found := p.p["domainid"]; found {
u.Set("domainid", v.(string))
}
if v, found := p.p["imagestoreuuid"]; found {
u.Set("imagestoreuuid", v.(string))
}
if v, found := p.p["keyword"]; found { if v, found := p.p["keyword"]; found {
u.Set("keyword", v.(string)) u.Set("keyword", v.(string))
} }
@ -197,6 +151,22 @@ func (p *ListConfigurationsParams) SetClusterid(v string) {
return return
} }
func (p *ListConfigurationsParams) SetDomainid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["domainid"] = v
return
}
func (p *ListConfigurationsParams) SetImagestoreuuid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["imagestoreuuid"] = v
return
}
func (p *ListConfigurationsParams) SetKeyword(v string) { func (p *ListConfigurationsParams) SetKeyword(v string) {
if p.p == nil { if p.p == nil {
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
@ -264,6 +234,7 @@ func (s *ConfigurationService) ListConfigurations(p *ListConfigurationsParams) (
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -273,68 +244,12 @@ type ListConfigurationsResponse struct {
} }
type Configuration struct { type Configuration struct {
Category string `json:"category,omitempty"` Category string `json:"category"`
Description string `json:"description,omitempty"` Description string `json:"description"`
Id int64 `json:"id,omitempty"` Id int64 `json:"id"`
Name string `json:"name,omitempty"` Name string `json:"name"`
Scope string `json:"scope,omitempty"` Scope string `json:"scope"`
Value string `json:"value,omitempty"` Value string `json:"value"`
}
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 { type ListDeploymentPlannersParams struct {
@ -403,6 +318,7 @@ func (s *ConfigurationService) ListDeploymentPlanners(p *ListDeploymentPlannersP
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -412,222 +328,138 @@ type ListDeploymentPlannersResponse struct {
} }
type DeploymentPlanner struct { type DeploymentPlanner struct {
Name string `json:"name,omitempty"` Name string `json:"name"`
} }
type ListLdapConfigurationsParams struct { type UpdateConfigurationParams struct {
p map[string]interface{} p map[string]interface{}
} }
func (p *ListLdapConfigurationsParams) toURLValues() url.Values { func (p *UpdateConfigurationParams) toURLValues() url.Values {
u := url.Values{} u := url.Values{}
if p.p == nil { if p.p == nil {
return u return u
} }
if v, found := p.p["hostname"]; found { if v, found := p.p["accountid"]; found {
u.Set("hostname", v.(string)) u.Set("accountid", v.(string))
} }
if v, found := p.p["keyword"]; found { if v, found := p.p["clusterid"]; found {
u.Set("keyword", v.(string)) u.Set("clusterid", v.(string))
} }
if v, found := p.p["page"]; found { if v, found := p.p["domainid"]; found {
vv := strconv.Itoa(v.(int)) u.Set("domainid", v.(string))
u.Set("page", vv)
} }
if v, found := p.p["pagesize"]; found { if v, found := p.p["imagestoreuuid"]; found {
vv := strconv.Itoa(v.(int)) u.Set("imagestoreuuid", v.(string))
u.Set("pagesize", vv)
} }
if v, found := p.p["port"]; found { if v, found := p.p["name"]; found {
vv := strconv.Itoa(v.(int)) u.Set("name", v.(string))
u.Set("port", vv) }
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 return u
} }
func (p *ListLdapConfigurationsParams) SetHostname(v string) { func (p *UpdateConfigurationParams) SetAccountid(v string) {
if p.p == nil { if p.p == nil {
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
} }
p.p["hostname"] = v p.p["accountid"] = v
return return
} }
func (p *ListLdapConfigurationsParams) SetKeyword(v string) { func (p *UpdateConfigurationParams) SetClusterid(v string) {
if p.p == nil { if p.p == nil {
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
} }
p.p["keyword"] = v p.p["clusterid"] = v
return return
} }
func (p *ListLdapConfigurationsParams) SetPage(v int) { func (p *UpdateConfigurationParams) SetDomainid(v string) {
if p.p == nil { if p.p == nil {
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
} }
p.p["page"] = v p.p["domainid"] = v
return return
} }
func (p *ListLdapConfigurationsParams) SetPagesize(v int) { func (p *UpdateConfigurationParams) SetImagestoreuuid(v string) {
if p.p == nil { if p.p == nil {
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
} }
p.p["pagesize"] = v p.p["imagestoreuuid"] = v
return return
} }
func (p *ListLdapConfigurationsParams) SetPort(v int) { func (p *UpdateConfigurationParams) SetName(v string) {
if p.p == nil { if p.p == nil {
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
} }
p.p["port"] = v p.p["name"] = v
return return
} }
// You should always use this function to get a new ListLdapConfigurationsParams instance, 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 // as then you are sure you have configured all required params
func (s *ConfigurationService) NewListLdapConfigurationsParams() *ListLdapConfigurationsParams { func (s *ConfigurationService) NewUpdateConfigurationParams(name string) *UpdateConfigurationParams {
p := &ListLdapConfigurationsParams{} p := &UpdateConfigurationParams{}
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
p.p["name"] = name
return p return p
} }
// Lists all LDAP configurations // Updates a configuration.
func (s *ConfigurationService) ListLdapConfigurations(p *ListLdapConfigurationsParams) (*ListLdapConfigurationsResponse, error) { func (s *ConfigurationService) UpdateConfiguration(p *UpdateConfigurationParams) (*UpdateConfigurationResponse, error) {
resp, err := s.cs.newRequest("listLdapConfigurations", p.toURLValues()) resp, err := s.cs.newRequest("updateConfiguration", p.toURLValues())
if err != nil { if err != nil {
return nil, err return nil, err
} }
var r ListLdapConfigurationsResponse var r UpdateConfigurationResponse
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type ListLdapConfigurationsResponse struct { type UpdateConfigurationResponse struct {
Count int `json:"count"` Category string `json:"category"`
LdapConfigurations []*LdapConfiguration `json:"ldapconfiguration"` Description string `json:"description"`
} Id int64 `json:"id"`
Name string `json:"name"`
type LdapConfiguration struct { Scope string `json:"scope"`
Hostname string `json:"hostname,omitempty"` Value string `json:"value"`
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"`
} }

View File

@ -0,0 +1,77 @@
//
// Copyright 2018, 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 CustomServiceParams struct {
p map[string]interface{}
}
func (p *CustomServiceParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
for k, v := range p.p {
switch t := v.(type) {
case bool:
u.Set(k, strconv.FormatBool(t))
case int:
u.Set(k, strconv.Itoa(t))
case int64:
vv := strconv.FormatInt(t, 10)
u.Set(k, vv)
case string:
u.Set(k, t)
case []string:
u.Set(k, strings.Join(t, ", "))
case map[string]string:
i := 0
for kk, vv := range t {
u.Set(fmt.Sprintf("%s[%d].%s", k, i, kk), vv)
i++
}
}
}
return u
}
func (p *CustomServiceParams) SetParam(param string, v interface{}) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p[param] = v
return
}
func (s *CustomService) CustomRequest(api string, p *CustomServiceParams, result interface{}) error {
resp, err := s.cs.newRequest(api, p.toURLValues())
if err != nil {
return err
}
return json.Unmarshal(resp, result)
}

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -255,147 +255,32 @@ func (s *DiskOfferingService) CreateDiskOffering(p *CreateDiskOfferingParams) (*
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type CreateDiskOfferingResponse struct { type CreateDiskOfferingResponse struct {
CacheMode string `json:"cacheMode,omitempty"` CacheMode string `json:"cacheMode"`
Created string `json:"created,omitempty"` Created string `json:"created"`
DiskBytesReadRate int64 `json:"diskBytesReadRate,omitempty"` DiskBytesReadRate int64 `json:"diskBytesReadRate"`
DiskBytesWriteRate int64 `json:"diskBytesWriteRate,omitempty"` DiskBytesWriteRate int64 `json:"diskBytesWriteRate"`
DiskIopsReadRate int64 `json:"diskIopsReadRate,omitempty"` DiskIopsReadRate int64 `json:"diskIopsReadRate"`
DiskIopsWriteRate int64 `json:"diskIopsWriteRate,omitempty"` DiskIopsWriteRate int64 `json:"diskIopsWriteRate"`
Disksize int64 `json:"disksize,omitempty"` Disksize int64 `json:"disksize"`
Displayoffering bool `json:"displayoffering,omitempty"` Displayoffering bool `json:"displayoffering"`
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Domain string `json:"domain,omitempty"` Domain string `json:"domain"`
Domainid string `json:"domainid,omitempty"` Domainid string `json:"domainid"`
Hypervisorsnapshotreserve int `json:"hypervisorsnapshotreserve,omitempty"` Hypervisorsnapshotreserve int `json:"hypervisorsnapshotreserve"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Iscustomized bool `json:"iscustomized,omitempty"` Iscustomized bool `json:"iscustomized"`
Iscustomizediops bool `json:"iscustomizediops,omitempty"` Iscustomizediops bool `json:"iscustomizediops"`
Maxiops int64 `json:"maxiops,omitempty"` Maxiops int64 `json:"maxiops"`
Miniops int64 `json:"miniops,omitempty"` Miniops int64 `json:"miniops"`
Name string `json:"name,omitempty"` Name string `json:"name"`
Provisioningtype string `json:"provisioningtype,omitempty"` Provisioningtype string `json:"provisioningtype"`
Storagetype string `json:"storagetype,omitempty"` Storagetype string `json:"storagetype"`
Tags string `json:"tags,omitempty"` Tags string `json:"tags"`
}
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 { type DeleteDiskOfferingParams struct {
@ -441,12 +326,32 @@ func (s *DiskOfferingService) DeleteDiskOffering(p *DeleteDiskOfferingParams) (*
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type DeleteDiskOfferingResponse struct { type DeleteDiskOfferingResponse struct {
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Success string `json:"success,omitempty"` Success bool `json:"success"`
}
func (r *DeleteDiskOfferingResponse) UnmarshalJSON(b []byte) error {
var m map[string]interface{}
err := json.Unmarshal(b, &m)
if err != nil {
return err
}
if success, ok := m["success"].(string); ok {
m["success"] = success == "true"
b, err = json.Marshal(m)
if err != nil {
return err
}
}
type alias DeleteDiskOfferingResponse
return json.Unmarshal(b, (*alias)(r))
} }
type ListDiskOfferingsParams struct { type ListDiskOfferingsParams struct {
@ -568,7 +473,7 @@ func (s *DiskOfferingService) GetDiskOfferingID(name string, opts ...OptionFunc)
p.p["name"] = name p.p["name"] = name
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return "", -1, err return "", -1, err
} }
@ -618,7 +523,7 @@ func (s *DiskOfferingService) GetDiskOfferingByID(id string, opts ...OptionFunc)
p.p["id"] = id p.p["id"] = id
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return nil, -1, err return nil, -1, err
} }
@ -655,6 +560,7 @@ func (s *DiskOfferingService) ListDiskOfferings(p *ListDiskOfferingsParams) (*Li
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -664,25 +570,142 @@ type ListDiskOfferingsResponse struct {
} }
type DiskOffering struct { type DiskOffering struct {
CacheMode string `json:"cacheMode,omitempty"` CacheMode string `json:"cacheMode"`
Created string `json:"created,omitempty"` Created string `json:"created"`
DiskBytesReadRate int64 `json:"diskBytesReadRate,omitempty"` DiskBytesReadRate int64 `json:"diskBytesReadRate"`
DiskBytesWriteRate int64 `json:"diskBytesWriteRate,omitempty"` DiskBytesWriteRate int64 `json:"diskBytesWriteRate"`
DiskIopsReadRate int64 `json:"diskIopsReadRate,omitempty"` DiskIopsReadRate int64 `json:"diskIopsReadRate"`
DiskIopsWriteRate int64 `json:"diskIopsWriteRate,omitempty"` DiskIopsWriteRate int64 `json:"diskIopsWriteRate"`
Disksize int64 `json:"disksize,omitempty"` Disksize int64 `json:"disksize"`
Displayoffering bool `json:"displayoffering,omitempty"` Displayoffering bool `json:"displayoffering"`
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Domain string `json:"domain,omitempty"` Domain string `json:"domain"`
Domainid string `json:"domainid,omitempty"` Domainid string `json:"domainid"`
Hypervisorsnapshotreserve int `json:"hypervisorsnapshotreserve,omitempty"` Hypervisorsnapshotreserve int `json:"hypervisorsnapshotreserve"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Iscustomized bool `json:"iscustomized,omitempty"` Iscustomized bool `json:"iscustomized"`
Iscustomizediops bool `json:"iscustomizediops,omitempty"` Iscustomizediops bool `json:"iscustomizediops"`
Maxiops int64 `json:"maxiops,omitempty"` Maxiops int64 `json:"maxiops"`
Miniops int64 `json:"miniops,omitempty"` Miniops int64 `json:"miniops"`
Name string `json:"name,omitempty"` Name string `json:"name"`
Provisioningtype string `json:"provisioningtype,omitempty"` Provisioningtype string `json:"provisioningtype"`
Storagetype string `json:"storagetype,omitempty"` Storagetype string `json:"storagetype"`
Tags string `json:"tags,omitempty"` Tags string `json:"tags"`
}
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"`
Created string `json:"created"`
DiskBytesReadRate int64 `json:"diskBytesReadRate"`
DiskBytesWriteRate int64 `json:"diskBytesWriteRate"`
DiskIopsReadRate int64 `json:"diskIopsReadRate"`
DiskIopsWriteRate int64 `json:"diskIopsWriteRate"`
Disksize int64 `json:"disksize"`
Displayoffering bool `json:"displayoffering"`
Displaytext string `json:"displaytext"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Hypervisorsnapshotreserve int `json:"hypervisorsnapshotreserve"`
Id string `json:"id"`
Iscustomized bool `json:"iscustomized"`
Iscustomizediops bool `json:"iscustomizediops"`
Maxiops int64 `json:"maxiops"`
Miniops int64 `json:"miniops"`
Name string `json:"name"`
Provisioningtype string `json:"provisioningtype"`
Storagetype string `json:"storagetype"`
Tags string `json:"tags"`
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -24,6 +24,258 @@ import (
"strings" "strings"
) )
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"`
Success bool `json:"success"`
}
func (r *ArchiveEventsResponse) UnmarshalJSON(b []byte) error {
var m map[string]interface{}
err := json.Unmarshal(b, &m)
if err != nil {
return err
}
if success, ok := m["success"].(string); ok {
m["success"] = success == "true"
b, err = json.Marshal(m)
if err != nil {
return err
}
}
type alias ArchiveEventsResponse
return json.Unmarshal(b, (*alias)(r))
}
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"`
Success bool `json:"success"`
}
func (r *DeleteEventsResponse) UnmarshalJSON(b []byte) error {
var m map[string]interface{}
err := json.Unmarshal(b, &m)
if err != nil {
return err
}
if success, ok := m["success"].(string); ok {
m["success"] = success == "true"
b, err = json.Marshal(m)
if err != nil {
return err
}
}
type alias DeleteEventsResponse
return json.Unmarshal(b, (*alias)(r))
}
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"`
}
type ListEventsParams struct { type ListEventsParams struct {
p map[string]interface{} p map[string]interface{}
} }
@ -81,6 +333,9 @@ func (p *ListEventsParams) toURLValues() url.Values {
if v, found := p.p["startdate"]; found { if v, found := p.p["startdate"]; found {
u.Set("startdate", v.(string)) u.Set("startdate", v.(string))
} }
if v, found := p.p["startid"]; found {
u.Set("startid", v.(string))
}
if v, found := p.p["type"]; found { if v, found := p.p["type"]; found {
u.Set("type", v.(string)) u.Set("type", v.(string))
} }
@ -199,6 +454,14 @@ func (p *ListEventsParams) SetStartdate(v string) {
return return
} }
func (p *ListEventsParams) SetStartid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["startid"] = v
return
}
func (p *ListEventsParams) SetType(v string) { func (p *ListEventsParams) SetType(v string) {
if p.p == nil { if p.p == nil {
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
@ -222,7 +485,7 @@ func (s *EventService) GetEventByID(id string, opts ...OptionFunc) (*Event, int,
p.p["id"] = id p.p["id"] = id
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return nil, -1, err return nil, -1, err
} }
@ -259,6 +522,7 @@ func (s *EventService) ListEvents(p *ListEventsParams) (*ListEventsResponse, err
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -268,228 +532,17 @@ type ListEventsResponse struct {
} }
type Event struct { type Event struct {
Account string `json:"account,omitempty"` Account string `json:"account"`
Created string `json:"created,omitempty"` Created string `json:"created"`
Description string `json:"description,omitempty"` Description string `json:"description"`
Domain string `json:"domain,omitempty"` Domain string `json:"domain"`
Domainid string `json:"domainid,omitempty"` Domainid string `json:"domainid"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Level string `json:"level,omitempty"` Level string `json:"level"`
Parentid string `json:"parentid,omitempty"` Parentid string `json:"parentid"`
Project string `json:"project,omitempty"` Project string `json:"project"`
Projectid string `json:"projectid,omitempty"` Projectid string `json:"projectid"`
State string `json:"state,omitempty"` State string `json:"state"`
Type string `json:"type,omitempty"` Type string `json:"type"`
Username string `json:"username,omitempty"` Username string `json:"username"`
}
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"`
} }

View File

@ -0,0 +1,17 @@
//
// Copyright 2018, 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

View File

@ -0,0 +1,17 @@
//
// Copyright 2018, 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

View File

@ -0,0 +1,17 @@
//
// Copyright 2018, 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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -24,140 +24,6 @@ import (
"strings" "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 { type ListHypervisorCapabilitiesParams struct {
p map[string]interface{} p map[string]interface{}
} }
@ -242,7 +108,7 @@ func (s *HypervisorService) GetHypervisorCapabilityByID(id string, opts ...Optio
p.p["id"] = id p.p["id"] = id
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return nil, -1, err return nil, -1, err
} }
@ -279,6 +145,7 @@ func (s *HypervisorService) ListHypervisorCapabilities(p *ListHypervisorCapabili
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -288,12 +155,148 @@ type ListHypervisorCapabilitiesResponse struct {
} }
type HypervisorCapability struct { type HypervisorCapability struct {
Hypervisor string `json:"hypervisor,omitempty"` Hypervisor string `json:"hypervisor"`
Hypervisorversion string `json:"hypervisorversion,omitempty"` Hypervisorversion string `json:"hypervisorversion"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Maxdatavolumeslimit int `json:"maxdatavolumeslimit,omitempty"` Maxdatavolumeslimit int `json:"maxdatavolumeslimit"`
Maxguestslimit int64 `json:"maxguestslimit,omitempty"` Maxguestslimit int64 `json:"maxguestslimit"`
Maxhostspercluster int `json:"maxhostspercluster,omitempty"` Maxhostspercluster int `json:"maxhostspercluster"`
Securitygroupenabled bool `json:"securitygroupenabled,omitempty"` Securitygroupenabled bool `json:"securitygroupenabled"`
Storagemotionenabled bool `json:"storagemotionenabled,omitempty"` Storagemotionenabled bool `json:"storagemotionenabled"`
}
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"`
}
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"`
Hypervisorversion string `json:"hypervisorversion"`
Id string `json:"id"`
Maxdatavolumeslimit int `json:"maxdatavolumeslimit"`
Maxguestslimit int64 `json:"maxguestslimit"`
Maxhostspercluster int `json:"maxhostspercluster"`
Securitygroupenabled bool `json:"securitygroupenabled"`
Storagemotionenabled bool `json:"storagemotionenabled"`
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -36,8 +36,7 @@ func (p *AddImageStoreParams) toURLValues() url.Values {
if v, found := p.p["details"]; found { if v, found := p.p["details"]; found {
i := 0 i := 0
for k, vv := range v.(map[string]string) { for k, vv := range v.(map[string]string) {
u.Set(fmt.Sprintf("details[%d].key", i), k) u.Set(fmt.Sprintf("details[%d].%s", i, k), vv)
u.Set(fmt.Sprintf("details[%d].value", i), vv)
i++ i++
} }
} }
@ -116,19 +115,19 @@ func (s *ImageStoreService) AddImageStore(p *AddImageStoreParams) (*AddImageStor
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type AddImageStoreResponse struct { type AddImageStoreResponse struct {
Details []string `json:"details,omitempty"` Id string `json:"id"`
Id string `json:"id,omitempty"` Name string `json:"name"`
Name string `json:"name,omitempty"` Protocol string `json:"protocol"`
Protocol string `json:"protocol,omitempty"` Providername string `json:"providername"`
Providername string `json:"providername,omitempty"` Scope string `json:"scope"`
Scope string `json:"scope,omitempty"` Url string `json:"url"`
Url string `json:"url,omitempty"` Zoneid string `json:"zoneid"`
Zoneid string `json:"zoneid,omitempty"` Zonename string `json:"zonename"`
Zonename string `json:"zonename,omitempty"`
} }
type AddImageStoreS3Params struct { type AddImageStoreS3Params struct {
@ -293,19 +292,267 @@ func (s *ImageStoreService) AddImageStoreS3(p *AddImageStoreS3Params) (*AddImage
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type AddImageStoreS3Response struct { type AddImageStoreS3Response struct {
Details []string `json:"details,omitempty"` Id string `json:"id"`
Id string `json:"id,omitempty"` Name string `json:"name"`
Name string `json:"name,omitempty"` Protocol string `json:"protocol"`
Protocol string `json:"protocol,omitempty"` Providername string `json:"providername"`
Providername string `json:"providername,omitempty"` Scope string `json:"scope"`
Scope string `json:"scope,omitempty"` Url string `json:"url"`
Url string `json:"url,omitempty"` Zoneid string `json:"zoneid"`
Zoneid string `json:"zoneid,omitempty"` Zonename string `json:"zonename"`
Zonename string `json:"zonename,omitempty"` }
type CreateSecondaryStagingStoreParams struct {
p map[string]interface{}
}
func (p *CreateSecondaryStagingStoreParams) 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].%s", i, k), vv)
i++
}
}
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["url"]; found {
u.Set("url", v.(string))
}
if v, found := p.p["zoneid"]; found {
u.Set("zoneid", v.(string))
}
return u
}
func (p *CreateSecondaryStagingStoreParams) SetDetails(v map[string]string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["details"] = v
return
}
func (p *CreateSecondaryStagingStoreParams) SetProvider(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["provider"] = v
return
}
func (p *CreateSecondaryStagingStoreParams) SetScope(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["scope"] = v
return
}
func (p *CreateSecondaryStagingStoreParams) SetUrl(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["url"] = v
return
}
func (p *CreateSecondaryStagingStoreParams) 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 CreateSecondaryStagingStoreParams instance,
// as then you are sure you have configured all required params
func (s *ImageStoreService) NewCreateSecondaryStagingStoreParams(url string) *CreateSecondaryStagingStoreParams {
p := &CreateSecondaryStagingStoreParams{}
p.p = make(map[string]interface{})
p.p["url"] = url
return p
}
// create secondary staging store.
func (s *ImageStoreService) CreateSecondaryStagingStore(p *CreateSecondaryStagingStoreParams) (*CreateSecondaryStagingStoreResponse, error) {
resp, err := s.cs.newRequest("createSecondaryStagingStore", p.toURLValues())
if err != nil {
return nil, err
}
var r CreateSecondaryStagingStoreResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type CreateSecondaryStagingStoreResponse struct {
Id string `json:"id"`
Name string `json:"name"`
Protocol string `json:"protocol"`
Providername string `json:"providername"`
Scope string `json:"scope"`
Url string `json:"url"`
Zoneid string `json:"zoneid"`
Zonename string `json:"zonename"`
}
type DeleteImageStoreParams struct {
p map[string]interface{}
}
func (p *DeleteImageStoreParams) 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 *DeleteImageStoreParams) 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 DeleteImageStoreParams instance,
// as then you are sure you have configured all required params
func (s *ImageStoreService) NewDeleteImageStoreParams(id string) *DeleteImageStoreParams {
p := &DeleteImageStoreParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
return p
}
// Deletes an image store or Secondary Storage.
func (s *ImageStoreService) DeleteImageStore(p *DeleteImageStoreParams) (*DeleteImageStoreResponse, error) {
resp, err := s.cs.newRequest("deleteImageStore", p.toURLValues())
if err != nil {
return nil, err
}
var r DeleteImageStoreResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type DeleteImageStoreResponse struct {
Displaytext string `json:"displaytext"`
Success bool `json:"success"`
}
func (r *DeleteImageStoreResponse) UnmarshalJSON(b []byte) error {
var m map[string]interface{}
err := json.Unmarshal(b, &m)
if err != nil {
return err
}
if success, ok := m["success"].(string); ok {
m["success"] = success == "true"
b, err = json.Marshal(m)
if err != nil {
return err
}
}
type alias DeleteImageStoreResponse
return json.Unmarshal(b, (*alias)(r))
}
type DeleteSecondaryStagingStoreParams struct {
p map[string]interface{}
}
func (p *DeleteSecondaryStagingStoreParams) 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 *DeleteSecondaryStagingStoreParams) 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 DeleteSecondaryStagingStoreParams instance,
// as then you are sure you have configured all required params
func (s *ImageStoreService) NewDeleteSecondaryStagingStoreParams(id string) *DeleteSecondaryStagingStoreParams {
p := &DeleteSecondaryStagingStoreParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
return p
}
// Deletes a secondary staging store .
func (s *ImageStoreService) DeleteSecondaryStagingStore(p *DeleteSecondaryStagingStoreParams) (*DeleteSecondaryStagingStoreResponse, error) {
resp, err := s.cs.newRequest("deleteSecondaryStagingStore", p.toURLValues())
if err != nil {
return nil, err
}
var r DeleteSecondaryStagingStoreResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type DeleteSecondaryStagingStoreResponse struct {
Displaytext string `json:"displaytext"`
Success bool `json:"success"`
}
func (r *DeleteSecondaryStagingStoreResponse) UnmarshalJSON(b []byte) error {
var m map[string]interface{}
err := json.Unmarshal(b, &m)
if err != nil {
return err
}
if success, ok := m["success"].(string); ok {
m["success"] = success == "true"
b, err = json.Marshal(m)
if err != nil {
return err
}
}
type alias DeleteSecondaryStagingStoreResponse
return json.Unmarshal(b, (*alias)(r))
} }
type ListImageStoresParams struct { type ListImageStoresParams struct {
@ -425,7 +672,7 @@ func (s *ImageStoreService) GetImageStoreID(name string, opts ...OptionFunc) (st
p.p["name"] = name p.p["name"] = name
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return "", -1, err return "", -1, err
} }
@ -475,7 +722,7 @@ func (s *ImageStoreService) GetImageStoreByID(id string, opts ...OptionFunc) (*I
p.p["id"] = id p.p["id"] = id
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return nil, -1, err return nil, -1, err
} }
@ -512,6 +759,7 @@ func (s *ImageStoreService) ListImageStores(p *ListImageStoresParams) (*ListImag
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -521,173 +769,14 @@ type ListImageStoresResponse struct {
} }
type ImageStore struct { type ImageStore struct {
Details []string `json:"details,omitempty"` Id string `json:"id"`
Id string `json:"id,omitempty"` Name string `json:"name"`
Name string `json:"name,omitempty"` Protocol string `json:"protocol"`
Protocol string `json:"protocol,omitempty"` Providername string `json:"providername"`
Providername string `json:"providername,omitempty"` Scope string `json:"scope"`
Scope string `json:"scope,omitempty"` Url string `json:"url"`
Url string `json:"url,omitempty"` Zoneid string `json:"zoneid"`
Zoneid string `json:"zoneid,omitempty"` Zonename string `json:"zonename"`
Zonename string `json:"zonename,omitempty"`
}
type DeleteImageStoreParams struct {
p map[string]interface{}
}
func (p *DeleteImageStoreParams) 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 *DeleteImageStoreParams) 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 DeleteImageStoreParams instance,
// as then you are sure you have configured all required params
func (s *ImageStoreService) NewDeleteImageStoreParams(id string) *DeleteImageStoreParams {
p := &DeleteImageStoreParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
return p
}
// Deletes an image store or Secondary Storage.
func (s *ImageStoreService) DeleteImageStore(p *DeleteImageStoreParams) (*DeleteImageStoreResponse, error) {
resp, err := s.cs.newRequest("deleteImageStore", p.toURLValues())
if err != nil {
return nil, err
}
var r DeleteImageStoreResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type DeleteImageStoreResponse struct {
Displaytext string `json:"displaytext,omitempty"`
Success string `json:"success,omitempty"`
}
type CreateSecondaryStagingStoreParams struct {
p map[string]interface{}
}
func (p *CreateSecondaryStagingStoreParams) 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["provider"]; found {
u.Set("provider", v.(string))
}
if v, found := p.p["scope"]; found {
u.Set("scope", 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 *CreateSecondaryStagingStoreParams) SetDetails(v map[string]string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["details"] = v
return
}
func (p *CreateSecondaryStagingStoreParams) SetProvider(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["provider"] = v
return
}
func (p *CreateSecondaryStagingStoreParams) SetScope(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["scope"] = v
return
}
func (p *CreateSecondaryStagingStoreParams) SetUrl(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["url"] = v
return
}
func (p *CreateSecondaryStagingStoreParams) 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 CreateSecondaryStagingStoreParams instance,
// as then you are sure you have configured all required params
func (s *ImageStoreService) NewCreateSecondaryStagingStoreParams(url string) *CreateSecondaryStagingStoreParams {
p := &CreateSecondaryStagingStoreParams{}
p.p = make(map[string]interface{})
p.p["url"] = url
return p
}
// create secondary staging store.
func (s *ImageStoreService) CreateSecondaryStagingStore(p *CreateSecondaryStagingStoreParams) (*CreateSecondaryStagingStoreResponse, error) {
resp, err := s.cs.newRequest("createSecondaryStagingStore", p.toURLValues())
if err != nil {
return nil, err
}
var r CreateSecondaryStagingStoreResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type CreateSecondaryStagingStoreResponse 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 ListSecondaryStagingStoresParams struct { type ListSecondaryStagingStoresParams struct {
@ -807,7 +896,7 @@ func (s *ImageStoreService) GetSecondaryStagingStoreID(name string, opts ...Opti
p.p["name"] = name p.p["name"] = name
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return "", -1, err return "", -1, err
} }
@ -857,7 +946,7 @@ func (s *ImageStoreService) GetSecondaryStagingStoreByID(id string, opts ...Opti
p.p["id"] = id p.p["id"] = id
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return nil, -1, err return nil, -1, err
} }
@ -894,6 +983,7 @@ func (s *ImageStoreService) ListSecondaryStagingStores(p *ListSecondaryStagingSt
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -903,66 +993,14 @@ type ListSecondaryStagingStoresResponse struct {
} }
type SecondaryStagingStore struct { type SecondaryStagingStore struct {
Details []string `json:"details,omitempty"` Id string `json:"id"`
Id string `json:"id,omitempty"` Name string `json:"name"`
Name string `json:"name,omitempty"` Protocol string `json:"protocol"`
Protocol string `json:"protocol,omitempty"` Providername string `json:"providername"`
Providername string `json:"providername,omitempty"` Scope string `json:"scope"`
Scope string `json:"scope,omitempty"` Url string `json:"url"`
Url string `json:"url,omitempty"` Zoneid string `json:"zoneid"`
Zoneid string `json:"zoneid,omitempty"` Zonename string `json:"zonename"`
Zonename string `json:"zonename,omitempty"`
}
type DeleteSecondaryStagingStoreParams struct {
p map[string]interface{}
}
func (p *DeleteSecondaryStagingStoreParams) 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 *DeleteSecondaryStagingStoreParams) 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 DeleteSecondaryStagingStoreParams instance,
// as then you are sure you have configured all required params
func (s *ImageStoreService) NewDeleteSecondaryStagingStoreParams(id string) *DeleteSecondaryStagingStoreParams {
p := &DeleteSecondaryStagingStoreParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
return p
}
// Deletes a secondary staging store .
func (s *ImageStoreService) DeleteSecondaryStagingStore(p *DeleteSecondaryStagingStoreParams) (*DeleteSecondaryStagingStoreResponse, error) {
resp, err := s.cs.newRequest("deleteSecondaryStagingStore", p.toURLValues())
if err != nil {
return nil, err
}
var r DeleteSecondaryStagingStoreResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type DeleteSecondaryStagingStoreResponse struct {
Displaytext string `json:"displaytext,omitempty"`
Success string `json:"success,omitempty"`
} }
type UpdateCloudToUseObjectStoreParams struct { type UpdateCloudToUseObjectStoreParams struct {
@ -977,8 +1015,7 @@ func (p *UpdateCloudToUseObjectStoreParams) toURLValues() url.Values {
if v, found := p.p["details"]; found { if v, found := p.p["details"]; found {
i := 0 i := 0
for k, vv := range v.(map[string]string) { for k, vv := range v.(map[string]string) {
u.Set(fmt.Sprintf("details[%d].key", i), k) u.Set(fmt.Sprintf("details[%d].%s", i, k), vv)
u.Set(fmt.Sprintf("details[%d].value", i), vv)
i++ i++
} }
} }
@ -1046,17 +1083,17 @@ func (s *ImageStoreService) UpdateCloudToUseObjectStore(p *UpdateCloudToUseObjec
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type UpdateCloudToUseObjectStoreResponse struct { type UpdateCloudToUseObjectStoreResponse struct {
Details []string `json:"details,omitempty"` Id string `json:"id"`
Id string `json:"id,omitempty"` Name string `json:"name"`
Name string `json:"name,omitempty"` Protocol string `json:"protocol"`
Protocol string `json:"protocol,omitempty"` Providername string `json:"providername"`
Providername string `json:"providername,omitempty"` Scope string `json:"scope"`
Scope string `json:"scope,omitempty"` Url string `json:"url"`
Url string `json:"url,omitempty"` Zoneid string `json:"zoneid"`
Zoneid string `json:"zoneid,omitempty"` Zonename string `json:"zonename"`
Zonename string `json:"zonename,omitempty"`
} }

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -70,13 +70,13 @@ func (s *InternalLBService) NewConfigureInternalLoadBalancerElementParams(enable
} }
// Configures an Internal Load Balancer element. // Configures an Internal Load Balancer element.
func (s *InternalLBService) ConfigureInternalLoadBalancerElement(p *ConfigureInternalLoadBalancerElementParams) (*ConfigureInternalLoadBalancerElementResponse, error) { func (s *InternalLBService) ConfigureInternalLoadBalancerElement(p *ConfigureInternalLoadBalancerElementParams) (*InternalLoadBalancerElementResponse, error) {
resp, err := s.cs.newRequest("configureInternalLoadBalancerElement", p.toURLValues()) resp, err := s.cs.newRequest("configureInternalLoadBalancerElement", p.toURLValues())
if err != nil { if err != nil {
return nil, err return nil, err
} }
var r ConfigureInternalLoadBalancerElementResponse var r InternalLoadBalancerElementResponse
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
@ -100,14 +100,15 @@ func (s *InternalLBService) ConfigureInternalLoadBalancerElement(p *ConfigureInt
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type ConfigureInternalLoadBalancerElementResponse struct { type InternalLoadBalancerElementResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Enabled bool `json:"enabled,omitempty"` Enabled bool `json:"enabled"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Nspid string `json:"nspid,omitempty"` Nspid string `json:"nspid"`
} }
type CreateInternalLoadBalancerElementParams struct { type CreateInternalLoadBalancerElementParams struct {
@ -173,14 +174,15 @@ func (s *InternalLBService) CreateInternalLoadBalancerElement(p *CreateInternalL
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type CreateInternalLoadBalancerElementResponse struct { type CreateInternalLoadBalancerElementResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Enabled bool `json:"enabled,omitempty"` Enabled bool `json:"enabled"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Nspid string `json:"nspid,omitempty"` Nspid string `json:"nspid"`
} }
type ListInternalLoadBalancerElementsParams struct { type ListInternalLoadBalancerElementsParams struct {
@ -279,7 +281,7 @@ func (s *InternalLBService) GetInternalLoadBalancerElementByID(id string, opts .
p.p["id"] = id p.p["id"] = id
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return nil, -1, err return nil, -1, err
} }
@ -316,6 +318,7 @@ func (s *InternalLBService) ListInternalLoadBalancerElements(p *ListInternalLoad
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -325,297 +328,9 @@ type ListInternalLoadBalancerElementsResponse struct {
} }
type InternalLoadBalancerElement struct { type InternalLoadBalancerElement struct {
Enabled bool `json:"enabled,omitempty"` Enabled bool `json:"enabled"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Nspid string `json:"nspid,omitempty"` Nspid string `json:"nspid"`
}
type StopInternalLoadBalancerVMParams struct {
p map[string]interface{}
}
func (p *StopInternalLoadBalancerVMParams) 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 *StopInternalLoadBalancerVMParams) SetForced(v bool) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["forced"] = v
return
}
func (p *StopInternalLoadBalancerVMParams) 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 StopInternalLoadBalancerVMParams instance,
// as then you are sure you have configured all required params
func (s *InternalLBService) NewStopInternalLoadBalancerVMParams(id string) *StopInternalLoadBalancerVMParams {
p := &StopInternalLoadBalancerVMParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
return p
}
// Stops an Internal LB vm.
func (s *InternalLBService) StopInternalLoadBalancerVM(p *StopInternalLoadBalancerVMParams) (*StopInternalLoadBalancerVMResponse, error) {
resp, err := s.cs.newRequest("stopInternalLoadBalancerVM", p.toURLValues())
if err != nil {
return nil, err
}
var r StopInternalLoadBalancerVMResponse
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 StopInternalLoadBalancerVMResponse struct {
JobID string `json:"jobid,omitempty"`
Account string `json:"account,omitempty"`
Created string `json:"created,omitempty"`
Dns1 string `json:"dns1,omitempty"`
Dns2 string `json:"dns2,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Gateway string `json:"gateway,omitempty"`
Guestipaddress string `json:"guestipaddress,omitempty"`
Guestmacaddress string `json:"guestmacaddress,omitempty"`
Guestnetmask string `json:"guestnetmask,omitempty"`
Guestnetworkid string `json:"guestnetworkid,omitempty"`
Guestnetworkname string `json:"guestnetworkname,omitempty"`
Hostid string `json:"hostid,omitempty"`
Hostname string `json:"hostname,omitempty"`
Hypervisor string `json:"hypervisor,omitempty"`
Id string `json:"id,omitempty"`
Ip6dns1 string `json:"ip6dns1,omitempty"`
Ip6dns2 string `json:"ip6dns2,omitempty"`
Isredundantrouter bool `json:"isredundantrouter,omitempty"`
Linklocalip string `json:"linklocalip,omitempty"`
Linklocalmacaddress string `json:"linklocalmacaddress,omitempty"`
Linklocalnetmask string `json:"linklocalnetmask,omitempty"`
Linklocalnetworkid string `json:"linklocalnetworkid,omitempty"`
Name string `json:"name,omitempty"`
Networkdomain string `json:"networkdomain,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"`
Podid string `json:"podid,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Publicip string `json:"publicip,omitempty"`
Publicmacaddress string `json:"publicmacaddress,omitempty"`
Publicnetmask string `json:"publicnetmask,omitempty"`
Publicnetworkid string `json:"publicnetworkid,omitempty"`
Redundantstate string `json:"redundantstate,omitempty"`
Requiresupgrade bool `json:"requiresupgrade,omitempty"`
Role string `json:"role,omitempty"`
Scriptsversion string `json:"scriptsversion,omitempty"`
Serviceofferingid string `json:"serviceofferingid,omitempty"`
Serviceofferingname string `json:"serviceofferingname,omitempty"`
State string `json:"state,omitempty"`
Templateid string `json:"templateid,omitempty"`
Version string `json:"version,omitempty"`
Vpcid string `json:"vpcid,omitempty"`
Vpcname string `json:"vpcname,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
Zonename string `json:"zonename,omitempty"`
}
type StartInternalLoadBalancerVMParams struct {
p map[string]interface{}
}
func (p *StartInternalLoadBalancerVMParams) 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 *StartInternalLoadBalancerVMParams) 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 StartInternalLoadBalancerVMParams instance,
// as then you are sure you have configured all required params
func (s *InternalLBService) NewStartInternalLoadBalancerVMParams(id string) *StartInternalLoadBalancerVMParams {
p := &StartInternalLoadBalancerVMParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
return p
}
// Starts an existing internal lb vm.
func (s *InternalLBService) StartInternalLoadBalancerVM(p *StartInternalLoadBalancerVMParams) (*StartInternalLoadBalancerVMResponse, error) {
resp, err := s.cs.newRequest("startInternalLoadBalancerVM", p.toURLValues())
if err != nil {
return nil, err
}
var r StartInternalLoadBalancerVMResponse
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 StartInternalLoadBalancerVMResponse struct {
JobID string `json:"jobid,omitempty"`
Account string `json:"account,omitempty"`
Created string `json:"created,omitempty"`
Dns1 string `json:"dns1,omitempty"`
Dns2 string `json:"dns2,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Gateway string `json:"gateway,omitempty"`
Guestipaddress string `json:"guestipaddress,omitempty"`
Guestmacaddress string `json:"guestmacaddress,omitempty"`
Guestnetmask string `json:"guestnetmask,omitempty"`
Guestnetworkid string `json:"guestnetworkid,omitempty"`
Guestnetworkname string `json:"guestnetworkname,omitempty"`
Hostid string `json:"hostid,omitempty"`
Hostname string `json:"hostname,omitempty"`
Hypervisor string `json:"hypervisor,omitempty"`
Id string `json:"id,omitempty"`
Ip6dns1 string `json:"ip6dns1,omitempty"`
Ip6dns2 string `json:"ip6dns2,omitempty"`
Isredundantrouter bool `json:"isredundantrouter,omitempty"`
Linklocalip string `json:"linklocalip,omitempty"`
Linklocalmacaddress string `json:"linklocalmacaddress,omitempty"`
Linklocalnetmask string `json:"linklocalnetmask,omitempty"`
Linklocalnetworkid string `json:"linklocalnetworkid,omitempty"`
Name string `json:"name,omitempty"`
Networkdomain string `json:"networkdomain,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"`
Podid string `json:"podid,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Publicip string `json:"publicip,omitempty"`
Publicmacaddress string `json:"publicmacaddress,omitempty"`
Publicnetmask string `json:"publicnetmask,omitempty"`
Publicnetworkid string `json:"publicnetworkid,omitempty"`
Redundantstate string `json:"redundantstate,omitempty"`
Requiresupgrade bool `json:"requiresupgrade,omitempty"`
Role string `json:"role,omitempty"`
Scriptsversion string `json:"scriptsversion,omitempty"`
Serviceofferingid string `json:"serviceofferingid,omitempty"`
Serviceofferingname string `json:"serviceofferingname,omitempty"`
State string `json:"state,omitempty"`
Templateid string `json:"templateid,omitempty"`
Version string `json:"version,omitempty"`
Vpcid string `json:"vpcid,omitempty"`
Vpcname string `json:"vpcname,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
Zonename string `json:"zonename,omitempty"`
} }
type ListInternalLoadBalancerVMsParams struct { type ListInternalLoadBalancerVMsParams struct {
@ -837,7 +552,7 @@ func (s *InternalLBService) GetInternalLoadBalancerVMID(name string, opts ...Opt
p.p["name"] = name p.p["name"] = name
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return "", -1, err return "", -1, err
} }
@ -887,7 +602,7 @@ func (s *InternalLBService) GetInternalLoadBalancerVMByID(id string, opts ...Opt
p.p["id"] = id p.p["id"] = id
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return nil, -1, err return nil, -1, err
} }
@ -924,6 +639,7 @@ func (s *InternalLBService) ListInternalLoadBalancerVMs(p *ListInternalLoadBalan
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -933,72 +649,296 @@ type ListInternalLoadBalancerVMsResponse struct {
} }
type InternalLoadBalancerVM struct { type InternalLoadBalancerVM struct {
Account string `json:"account,omitempty"` Account string `json:"account"`
Created string `json:"created,omitempty"` Created string `json:"created"`
Dns1 string `json:"dns1,omitempty"` Dns1 string `json:"dns1"`
Dns2 string `json:"dns2,omitempty"` Dns2 string `json:"dns2"`
Domain string `json:"domain,omitempty"` Domain string `json:"domain"`
Domainid string `json:"domainid,omitempty"` Domainid string `json:"domainid"`
Gateway string `json:"gateway,omitempty"` Gateway string `json:"gateway"`
Guestipaddress string `json:"guestipaddress,omitempty"` Guestipaddress string `json:"guestipaddress"`
Guestmacaddress string `json:"guestmacaddress,omitempty"` Guestmacaddress string `json:"guestmacaddress"`
Guestnetmask string `json:"guestnetmask,omitempty"` Guestnetmask string `json:"guestnetmask"`
Guestnetworkid string `json:"guestnetworkid,omitempty"` Guestnetworkid string `json:"guestnetworkid"`
Guestnetworkname string `json:"guestnetworkname,omitempty"` Guestnetworkname string `json:"guestnetworkname"`
Hostid string `json:"hostid,omitempty"` Hostid string `json:"hostid"`
Hostname string `json:"hostname,omitempty"` Hostname string `json:"hostname"`
Hypervisor string `json:"hypervisor,omitempty"` Hypervisor string `json:"hypervisor"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Ip6dns1 string `json:"ip6dns1,omitempty"` Ip6dns1 string `json:"ip6dns1"`
Ip6dns2 string `json:"ip6dns2,omitempty"` Ip6dns2 string `json:"ip6dns2"`
Isredundantrouter bool `json:"isredundantrouter,omitempty"` Isredundantrouter bool `json:"isredundantrouter"`
Linklocalip string `json:"linklocalip,omitempty"` Linklocalip string `json:"linklocalip"`
Linklocalmacaddress string `json:"linklocalmacaddress,omitempty"` Linklocalmacaddress string `json:"linklocalmacaddress"`
Linklocalnetmask string `json:"linklocalnetmask,omitempty"` Linklocalnetmask string `json:"linklocalnetmask"`
Linklocalnetworkid string `json:"linklocalnetworkid,omitempty"` Linklocalnetworkid string `json:"linklocalnetworkid"`
Name string `json:"name,omitempty"` Name string `json:"name"`
Networkdomain string `json:"networkdomain,omitempty"` Networkdomain string `json:"networkdomain"`
Nic []struct { Nic []Nic `json:"nic"`
Broadcasturi string `json:"broadcasturi,omitempty"` Podid string `json:"podid"`
Deviceid string `json:"deviceid,omitempty"` Project string `json:"project"`
Gateway string `json:"gateway,omitempty"` Projectid string `json:"projectid"`
Id string `json:"id,omitempty"` Publicip string `json:"publicip"`
Ip6address string `json:"ip6address,omitempty"` Publicmacaddress string `json:"publicmacaddress"`
Ip6cidr string `json:"ip6cidr,omitempty"` Publicnetmask string `json:"publicnetmask"`
Ip6gateway string `json:"ip6gateway,omitempty"` Publicnetworkid string `json:"publicnetworkid"`
Ipaddress string `json:"ipaddress,omitempty"` Redundantstate string `json:"redundantstate"`
Isdefault bool `json:"isdefault,omitempty"` Requiresupgrade bool `json:"requiresupgrade"`
Isolationuri string `json:"isolationuri,omitempty"` Role string `json:"role"`
Macaddress string `json:"macaddress,omitempty"` Scriptsversion string `json:"scriptsversion"`
Netmask string `json:"netmask,omitempty"` Serviceofferingid string `json:"serviceofferingid"`
Networkid string `json:"networkid,omitempty"` Serviceofferingname string `json:"serviceofferingname"`
Networkname string `json:"networkname,omitempty"` State string `json:"state"`
Secondaryip []struct { Templateid string `json:"templateid"`
Id string `json:"id,omitempty"` Version string `json:"version"`
Ipaddress string `json:"ipaddress,omitempty"` Vpcid string `json:"vpcid"`
} `json:"secondaryip,omitempty"` Vpcname string `json:"vpcname"`
Traffictype string `json:"traffictype,omitempty"` Zoneid string `json:"zoneid"`
Type string `json:"type,omitempty"` Zonename string `json:"zonename"`
Virtualmachineid string `json:"virtualmachineid,omitempty"` }
} `json:"nic,omitempty"`
Podid string `json:"podid,omitempty"` type StartInternalLoadBalancerVMParams struct {
Project string `json:"project,omitempty"` p map[string]interface{}
Projectid string `json:"projectid,omitempty"` }
Publicip string `json:"publicip,omitempty"`
Publicmacaddress string `json:"publicmacaddress,omitempty"` func (p *StartInternalLoadBalancerVMParams) toURLValues() url.Values {
Publicnetmask string `json:"publicnetmask,omitempty"` u := url.Values{}
Publicnetworkid string `json:"publicnetworkid,omitempty"` if p.p == nil {
Redundantstate string `json:"redundantstate,omitempty"` return u
Requiresupgrade bool `json:"requiresupgrade,omitempty"` }
Role string `json:"role,omitempty"` if v, found := p.p["id"]; found {
Scriptsversion string `json:"scriptsversion,omitempty"` u.Set("id", v.(string))
Serviceofferingid string `json:"serviceofferingid,omitempty"` }
Serviceofferingname string `json:"serviceofferingname,omitempty"` return u
State string `json:"state,omitempty"` }
Templateid string `json:"templateid,omitempty"`
Version string `json:"version,omitempty"` func (p *StartInternalLoadBalancerVMParams) SetId(v string) {
Vpcid string `json:"vpcid,omitempty"` if p.p == nil {
Vpcname string `json:"vpcname,omitempty"` p.p = make(map[string]interface{})
Zoneid string `json:"zoneid,omitempty"` }
Zonename string `json:"zonename,omitempty"` p.p["id"] = v
return
}
// You should always use this function to get a new StartInternalLoadBalancerVMParams instance,
// as then you are sure you have configured all required params
func (s *InternalLBService) NewStartInternalLoadBalancerVMParams(id string) *StartInternalLoadBalancerVMParams {
p := &StartInternalLoadBalancerVMParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
return p
}
// Starts an existing internal lb vm.
func (s *InternalLBService) StartInternalLoadBalancerVM(p *StartInternalLoadBalancerVMParams) (*StartInternalLoadBalancerVMResponse, error) {
resp, err := s.cs.newRequest("startInternalLoadBalancerVM", p.toURLValues())
if err != nil {
return nil, err
}
var r StartInternalLoadBalancerVMResponse
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 StartInternalLoadBalancerVMResponse struct {
JobID string `json:"jobid"`
Account string `json:"account"`
Created string `json:"created"`
Dns1 string `json:"dns1"`
Dns2 string `json:"dns2"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Gateway string `json:"gateway"`
Guestipaddress string `json:"guestipaddress"`
Guestmacaddress string `json:"guestmacaddress"`
Guestnetmask string `json:"guestnetmask"`
Guestnetworkid string `json:"guestnetworkid"`
Guestnetworkname string `json:"guestnetworkname"`
Hostid string `json:"hostid"`
Hostname string `json:"hostname"`
Hypervisor string `json:"hypervisor"`
Id string `json:"id"`
Ip6dns1 string `json:"ip6dns1"`
Ip6dns2 string `json:"ip6dns2"`
Isredundantrouter bool `json:"isredundantrouter"`
Linklocalip string `json:"linklocalip"`
Linklocalmacaddress string `json:"linklocalmacaddress"`
Linklocalnetmask string `json:"linklocalnetmask"`
Linklocalnetworkid string `json:"linklocalnetworkid"`
Name string `json:"name"`
Networkdomain string `json:"networkdomain"`
Nic []Nic `json:"nic"`
Podid string `json:"podid"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Publicip string `json:"publicip"`
Publicmacaddress string `json:"publicmacaddress"`
Publicnetmask string `json:"publicnetmask"`
Publicnetworkid string `json:"publicnetworkid"`
Redundantstate string `json:"redundantstate"`
Requiresupgrade bool `json:"requiresupgrade"`
Role string `json:"role"`
Scriptsversion string `json:"scriptsversion"`
Serviceofferingid string `json:"serviceofferingid"`
Serviceofferingname string `json:"serviceofferingname"`
State string `json:"state"`
Templateid string `json:"templateid"`
Version string `json:"version"`
Vpcid string `json:"vpcid"`
Vpcname string `json:"vpcname"`
Zoneid string `json:"zoneid"`
Zonename string `json:"zonename"`
}
type StopInternalLoadBalancerVMParams struct {
p map[string]interface{}
}
func (p *StopInternalLoadBalancerVMParams) 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 *StopInternalLoadBalancerVMParams) SetForced(v bool) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["forced"] = v
return
}
func (p *StopInternalLoadBalancerVMParams) 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 StopInternalLoadBalancerVMParams instance,
// as then you are sure you have configured all required params
func (s *InternalLBService) NewStopInternalLoadBalancerVMParams(id string) *StopInternalLoadBalancerVMParams {
p := &StopInternalLoadBalancerVMParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
return p
}
// Stops an Internal LB vm.
func (s *InternalLBService) StopInternalLoadBalancerVM(p *StopInternalLoadBalancerVMParams) (*StopInternalLoadBalancerVMResponse, error) {
resp, err := s.cs.newRequest("stopInternalLoadBalancerVM", p.toURLValues())
if err != nil {
return nil, err
}
var r StopInternalLoadBalancerVMResponse
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 StopInternalLoadBalancerVMResponse struct {
JobID string `json:"jobid"`
Account string `json:"account"`
Created string `json:"created"`
Dns1 string `json:"dns1"`
Dns2 string `json:"dns2"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Gateway string `json:"gateway"`
Guestipaddress string `json:"guestipaddress"`
Guestmacaddress string `json:"guestmacaddress"`
Guestnetmask string `json:"guestnetmask"`
Guestnetworkid string `json:"guestnetworkid"`
Guestnetworkname string `json:"guestnetworkname"`
Hostid string `json:"hostid"`
Hostname string `json:"hostname"`
Hypervisor string `json:"hypervisor"`
Id string `json:"id"`
Ip6dns1 string `json:"ip6dns1"`
Ip6dns2 string `json:"ip6dns2"`
Isredundantrouter bool `json:"isredundantrouter"`
Linklocalip string `json:"linklocalip"`
Linklocalmacaddress string `json:"linklocalmacaddress"`
Linklocalnetmask string `json:"linklocalnetmask"`
Linklocalnetworkid string `json:"linklocalnetworkid"`
Name string `json:"name"`
Networkdomain string `json:"networkdomain"`
Nic []Nic `json:"nic"`
Podid string `json:"podid"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Publicip string `json:"publicip"`
Publicmacaddress string `json:"publicmacaddress"`
Publicnetmask string `json:"publicnetmask"`
Publicnetworkid string `json:"publicnetworkid"`
Redundantstate string `json:"redundantstate"`
Requiresupgrade bool `json:"requiresupgrade"`
Role string `json:"role"`
Scriptsversion string `json:"scriptsversion"`
Serviceofferingid string `json:"serviceofferingid"`
Serviceofferingname string `json:"serviceofferingname"`
State string `json:"state"`
Templateid string `json:"templateid"`
Version string `json:"version"`
Vpcid string `json:"vpcid"`
Vpcname string `json:"vpcname"`
Zoneid string `json:"zoneid"`
Zonename string `json:"zonename"`
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,201 +0,0 @@
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.

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -22,6 +22,373 @@ import (
"strconv" "strconv"
) )
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"`
Accountid string `json:"accountid"`
ApiAllowed int `json:"apiAllowed"`
ApiIssued int `json:"apiIssued"`
ExpireAfter int64 `json:"expireAfter"`
}
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)
}
if v, found := p.p["resourcetypename"]; found {
u.Set("resourcetypename", v.(string))
}
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
}
func (p *ListResourceLimitsParams) SetResourcetypename(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["resourcetypename"] = 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"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Max int64 `json:"max"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Resourcetype string `json:"resourcetype"`
Resourcetypename string `json:"resourcetypename"`
}
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"`
Accountid string `json:"accountid"`
ApiAllowed int `json:"apiAllowed"`
ApiIssued int `json:"apiIssued"`
ExpireAfter int64 `json:"expireAfter"`
}
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"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Resourcecount int64 `json:"resourcecount"`
Resourcetype string `json:"resourcetype"`
Resourcetypename string `json:"resourcetypename"`
}
type UpdateResourceLimitParams struct { type UpdateResourceLimitParams struct {
p map[string]interface{} p map[string]interface{}
} }
@ -111,365 +478,17 @@ func (s *LimitService) UpdateResourceLimit(p *UpdateResourceLimitParams) (*Updat
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type UpdateResourceLimitResponse struct { type UpdateResourceLimitResponse struct {
Account string `json:"account,omitempty"` Account string `json:"account"`
Domain string `json:"domain,omitempty"` Domain string `json:"domain"`
Domainid string `json:"domainid,omitempty"` Domainid string `json:"domainid"`
Max int64 `json:"max,omitempty"` Max int64 `json:"max"`
Project string `json:"project,omitempty"` Project string `json:"project"`
Projectid string `json:"projectid,omitempty"` Projectid string `json:"projectid"`
Resourcetype string `json:"resourcetype,omitempty"` Resourcetype string `json:"resourcetype"`
} Resourcetypename string `json:"resourcetypename"`
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"`
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -24,91 +24,6 @@ import (
"strings" "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 { type CreateIpForwardingRuleParams struct {
p map[string]interface{} p map[string]interface{}
} }
@ -233,39 +148,29 @@ func (s *NATService) CreateIpForwardingRule(p *CreateIpForwardingRuleParams) (*C
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type CreateIpForwardingRuleResponse struct { type CreateIpForwardingRuleResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Cidrlist string `json:"cidrlist,omitempty"` Cidrlist string `json:"cidrlist"`
Fordisplay bool `json:"fordisplay,omitempty"` Fordisplay bool `json:"fordisplay"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Ipaddress string `json:"ipaddress,omitempty"` Ipaddress string `json:"ipaddress"`
Ipaddressid string `json:"ipaddressid,omitempty"` Ipaddressid string `json:"ipaddressid"`
Networkid string `json:"networkid,omitempty"` Networkid string `json:"networkid"`
Privateendport string `json:"privateendport,omitempty"` Privateendport string `json:"privateendport"`
Privateport string `json:"privateport,omitempty"` Privateport string `json:"privateport"`
Protocol string `json:"protocol,omitempty"` Protocol string `json:"protocol"`
Publicendport string `json:"publicendport,omitempty"` Publicendport string `json:"publicendport"`
Publicport string `json:"publicport,omitempty"` Publicport string `json:"publicport"`
State string `json:"state,omitempty"` State string `json:"state"`
Tags []struct { Tags []Tags `json:"tags"`
Account string `json:"account,omitempty"` Virtualmachinedisplayname string `json:"virtualmachinedisplayname"`
Customer string `json:"customer,omitempty"` Virtualmachineid string `json:"virtualmachineid"`
Domain string `json:"domain,omitempty"` Virtualmachinename string `json:"virtualmachinename"`
Domainid string `json:"domainid,omitempty"` Vmguestip string `json:"vmguestip"`
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 { type DeleteIpForwardingRuleParams struct {
@ -326,13 +231,187 @@ func (s *NATService) DeleteIpForwardingRule(p *DeleteIpForwardingRuleParams) (*D
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type DeleteIpForwardingRuleResponse struct { type DeleteIpForwardingRuleResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Success bool `json:"success,omitempty"` Success bool `json:"success"`
}
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"`
Displaytext string `json:"displaytext"`
Success bool `json:"success"`
}
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"`
Success bool `json:"success"`
}
func (r *EnableStaticNatResponse) UnmarshalJSON(b []byte) error {
var m map[string]interface{}
err := json.Unmarshal(b, &m)
if err != nil {
return err
}
if success, ok := m["success"].(string); ok {
m["success"] = success == "true"
b, err = json.Marshal(m)
if err != nil {
return err
}
}
type alias EnableStaticNatResponse
return json.Unmarshal(b, (*alias)(r))
} }
type ListIpForwardingRulesParams struct { type ListIpForwardingRulesParams struct {
@ -487,7 +566,7 @@ func (s *NATService) GetIpForwardingRuleByID(id string, opts ...OptionFunc) (*Ip
p.p["id"] = id p.p["id"] = id
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return nil, -1, err return nil, -1, err
} }
@ -524,6 +603,7 @@ func (s *NATService) ListIpForwardingRules(p *ListIpForwardingRulesParams) (*Lis
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -533,99 +613,21 @@ type ListIpForwardingRulesResponse struct {
} }
type IpForwardingRule struct { type IpForwardingRule struct {
Cidrlist string `json:"cidrlist,omitempty"` Cidrlist string `json:"cidrlist"`
Fordisplay bool `json:"fordisplay,omitempty"` Fordisplay bool `json:"fordisplay"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Ipaddress string `json:"ipaddress,omitempty"` Ipaddress string `json:"ipaddress"`
Ipaddressid string `json:"ipaddressid,omitempty"` Ipaddressid string `json:"ipaddressid"`
Networkid string `json:"networkid,omitempty"` Networkid string `json:"networkid"`
Privateendport string `json:"privateendport,omitempty"` Privateendport string `json:"privateendport"`
Privateport string `json:"privateport,omitempty"` Privateport string `json:"privateport"`
Protocol string `json:"protocol,omitempty"` Protocol string `json:"protocol"`
Publicendport string `json:"publicendport,omitempty"` Publicendport string `json:"publicendport"`
Publicport string `json:"publicport,omitempty"` Publicport string `json:"publicport"`
State string `json:"state,omitempty"` State string `json:"state"`
Tags []struct { Tags []Tags `json:"tags"`
Account string `json:"account,omitempty"` Virtualmachinedisplayname string `json:"virtualmachinedisplayname"`
Customer string `json:"customer,omitempty"` Virtualmachineid string `json:"virtualmachineid"`
Domain string `json:"domain,omitempty"` Virtualmachinename string `json:"virtualmachinename"`
Domainid string `json:"domainid,omitempty"` Vmguestip string `json:"vmguestip"`
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"`
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -81,11 +81,83 @@ func (s *NetworkDeviceService) AddNetworkDevice(p *AddNetworkDeviceParams) (*Add
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type AddNetworkDeviceResponse struct { type AddNetworkDeviceResponse struct {
Id string `json:"id,omitempty"` Id string `json:"id"`
}
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"`
Success bool `json:"success"`
}
func (r *DeleteNetworkDeviceResponse) UnmarshalJSON(b []byte) error {
var m map[string]interface{}
err := json.Unmarshal(b, &m)
if err != nil {
return err
}
if success, ok := m["success"].(string); ok {
m["success"] = success == "true"
b, err = json.Marshal(m)
if err != nil {
return err
}
}
type alias DeleteNetworkDeviceResponse
return json.Unmarshal(b, (*alias)(r))
} }
type ListNetworkDeviceParams struct { type ListNetworkDeviceParams struct {
@ -181,6 +253,7 @@ func (s *NetworkDeviceService) ListNetworkDevice(p *ListNetworkDeviceParams) (*L
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -190,56 +263,5 @@ type ListNetworkDeviceResponse struct {
} }
type NetworkDevice struct { type NetworkDevice struct {
Id string `json:"id,omitempty"` Id string `json:"id"`
}
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"`
} }

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -43,8 +43,7 @@ func (p *CreateNetworkOfferingParams) toURLValues() url.Values {
if v, found := p.p["details"]; found { if v, found := p.p["details"]; found {
i := 0 i := 0
for k, vv := range v.(map[string]string) { for k, vv := range v.(map[string]string) {
u.Set(fmt.Sprintf("details[%d].key", i), k) u.Set(fmt.Sprintf("details[%d].%s", i, k), vv)
u.Set(fmt.Sprintf("details[%d].value", i), vv)
i++ i++
} }
} }
@ -55,6 +54,10 @@ func (p *CreateNetworkOfferingParams) toURLValues() url.Values {
vv := strconv.FormatBool(v.(bool)) vv := strconv.FormatBool(v.(bool))
u.Set("egressdefaultpolicy", vv) u.Set("egressdefaultpolicy", vv)
} }
if v, found := p.p["forvpc"]; found {
vv := strconv.FormatBool(v.(bool))
u.Set("forvpc", vv)
}
if v, found := p.p["guestiptype"]; found { if v, found := p.p["guestiptype"]; found {
u.Set("guestiptype", v.(string)) u.Set("guestiptype", v.(string))
} }
@ -157,6 +160,14 @@ func (p *CreateNetworkOfferingParams) SetEgressdefaultpolicy(v bool) {
return return
} }
func (p *CreateNetworkOfferingParams) SetForvpc(v bool) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["forvpc"] = v
return
}
func (p *CreateNetworkOfferingParams) SetGuestiptype(v string) { func (p *CreateNetworkOfferingParams) SetGuestiptype(v string) {
if p.p == nil { if p.p == nil {
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
@ -297,214 +308,56 @@ func (s *NetworkOfferingService) CreateNetworkOffering(p *CreateNetworkOfferingP
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type CreateNetworkOfferingResponse struct { type CreateNetworkOfferingResponse struct {
Availability string `json:"availability,omitempty"` Availability string `json:"availability"`
Conservemode bool `json:"conservemode,omitempty"` Conservemode bool `json:"conservemode"`
Created string `json:"created,omitempty"` Created string `json:"created"`
Details map[string]string `json:"details,omitempty"` Details map[string]string `json:"details"`
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Egressdefaultpolicy bool `json:"egressdefaultpolicy,omitempty"` Egressdefaultpolicy bool `json:"egressdefaultpolicy"`
Forvpc bool `json:"forvpc,omitempty"` Forvpc bool `json:"forvpc"`
Guestiptype string `json:"guestiptype,omitempty"` Guestiptype string `json:"guestiptype"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Isdefault bool `json:"isdefault,omitempty"` Isdefault bool `json:"isdefault"`
Ispersistent bool `json:"ispersistent,omitempty"` Ispersistent bool `json:"ispersistent"`
Maxconnections int `json:"maxconnections,omitempty"` Maxconnections int `json:"maxconnections"`
Name string `json:"name,omitempty"` Name string `json:"name"`
Networkrate int `json:"networkrate,omitempty"` Networkrate int `json:"networkrate"`
Service []struct { Service []CreateNetworkOfferingResponseService `json:"service"`
Capability []struct { Serviceofferingid string `json:"serviceofferingid"`
Canchooseservicecapability bool `json:"canchooseservicecapability,omitempty"` Specifyipranges bool `json:"specifyipranges"`
Name string `json:"name,omitempty"` Specifyvlan bool `json:"specifyvlan"`
Value string `json:"value,omitempty"` State string `json:"state"`
} `json:"capability,omitempty"` Supportspublicaccess bool `json:"supportspublicaccess"`
Name string `json:"name,omitempty"` Supportsstrechedl2subnet bool `json:"supportsstrechedl2subnet"`
Provider []struct { Tags string `json:"tags"`
Canenableindividualservice bool `json:"canenableindividualservice,omitempty"` Traffictype string `json:"traffictype"`
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 { type CreateNetworkOfferingResponseService struct {
p map[string]interface{} Capability []CreateNetworkOfferingResponseServiceCapability `json:"capability"`
Name string `json:"name"`
Provider []CreateNetworkOfferingResponseServiceProvider `json:"provider"`
} }
func (p *UpdateNetworkOfferingParams) toURLValues() url.Values { type CreateNetworkOfferingResponseServiceProvider struct {
u := url.Values{} Canenableindividualservice bool `json:"canenableindividualservice"`
if p.p == nil { Destinationphysicalnetworkid string `json:"destinationphysicalnetworkid"`
return u Id string `json:"id"`
} Name string `json:"name"`
if v, found := p.p["availability"]; found { Physicalnetworkid string `json:"physicalnetworkid"`
u.Set("availability", v.(string)) Servicelist []string `json:"servicelist"`
} State string `json:"state"`
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) { type CreateNetworkOfferingResponseServiceCapability struct {
if p.p == nil { Canchooseservicecapability bool `json:"canchooseservicecapability"`
p.p = make(map[string]interface{}) Name string `json:"name"`
} Value string `json:"value"`
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 { type DeleteNetworkOfferingParams struct {
@ -550,12 +403,32 @@ func (s *NetworkOfferingService) DeleteNetworkOffering(p *DeleteNetworkOfferingP
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type DeleteNetworkOfferingResponse struct { type DeleteNetworkOfferingResponse struct {
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Success string `json:"success,omitempty"` Success bool `json:"success"`
}
func (r *DeleteNetworkOfferingResponse) UnmarshalJSON(b []byte) error {
var m map[string]interface{}
err := json.Unmarshal(b, &m)
if err != nil {
return err
}
if success, ok := m["success"].(string); ok {
m["success"] = success == "true"
b, err = json.Marshal(m)
if err != nil {
return err
}
}
type alias DeleteNetworkOfferingResponse
return json.Unmarshal(b, (*alias)(r))
} }
type ListNetworkOfferingsParams struct { type ListNetworkOfferingsParams struct {
@ -814,7 +687,7 @@ func (s *NetworkOfferingService) GetNetworkOfferingID(name string, opts ...Optio
p.p["name"] = name p.p["name"] = name
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return "", -1, err return "", -1, err
} }
@ -864,7 +737,7 @@ func (s *NetworkOfferingService) GetNetworkOfferingByID(id string, opts ...Optio
p.p["id"] = id p.p["id"] = id
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return nil, -1, err return nil, -1, err
} }
@ -901,6 +774,7 @@ func (s *NetworkOfferingService) ListNetworkOfferings(p *ListNetworkOfferingsPar
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -910,42 +784,234 @@ type ListNetworkOfferingsResponse struct {
} }
type NetworkOffering struct { type NetworkOffering struct {
Availability string `json:"availability,omitempty"` Availability string `json:"availability"`
Conservemode bool `json:"conservemode,omitempty"` Conservemode bool `json:"conservemode"`
Created string `json:"created,omitempty"` Created string `json:"created"`
Details map[string]string `json:"details,omitempty"` Details map[string]string `json:"details"`
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Egressdefaultpolicy bool `json:"egressdefaultpolicy,omitempty"` Egressdefaultpolicy bool `json:"egressdefaultpolicy"`
Forvpc bool `json:"forvpc,omitempty"` Forvpc bool `json:"forvpc"`
Guestiptype string `json:"guestiptype,omitempty"` Guestiptype string `json:"guestiptype"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Isdefault bool `json:"isdefault,omitempty"` Isdefault bool `json:"isdefault"`
Ispersistent bool `json:"ispersistent,omitempty"` Ispersistent bool `json:"ispersistent"`
Maxconnections int `json:"maxconnections,omitempty"` Maxconnections int `json:"maxconnections"`
Name string `json:"name,omitempty"` Name string `json:"name"`
Networkrate int `json:"networkrate,omitempty"` Networkrate int `json:"networkrate"`
Service []struct { Service []NetworkOfferingServiceInternal `json:"service"`
Capability []struct { Serviceofferingid string `json:"serviceofferingid"`
Canchooseservicecapability bool `json:"canchooseservicecapability,omitempty"` Specifyipranges bool `json:"specifyipranges"`
Name string `json:"name,omitempty"` Specifyvlan bool `json:"specifyvlan"`
Value string `json:"value,omitempty"` State string `json:"state"`
} `json:"capability,omitempty"` Supportspublicaccess bool `json:"supportspublicaccess"`
Name string `json:"name,omitempty"` Supportsstrechedl2subnet bool `json:"supportsstrechedl2subnet"`
Provider []struct { Tags string `json:"tags"`
Canenableindividualservice bool `json:"canenableindividualservice,omitempty"` Traffictype string `json:"traffictype"`
Destinationphysicalnetworkid string `json:"destinationphysicalnetworkid,omitempty"` }
Id string `json:"id,omitempty"`
Name string `json:"name,omitempty"` type NetworkOfferingServiceInternal struct {
Physicalnetworkid string `json:"physicalnetworkid,omitempty"` Capability []NetworkOfferingServiceInternalCapability `json:"capability"`
Servicelist []string `json:"servicelist,omitempty"` Name string `json:"name"`
State string `json:"state,omitempty"` Provider []NetworkOfferingServiceInternalProvider `json:"provider"`
} `json:"provider,omitempty"` }
} `json:"service,omitempty"`
Serviceofferingid string `json:"serviceofferingid,omitempty"` type NetworkOfferingServiceInternalProvider struct {
Specifyipranges bool `json:"specifyipranges,omitempty"` Canenableindividualservice bool `json:"canenableindividualservice"`
Specifyvlan bool `json:"specifyvlan,omitempty"` Destinationphysicalnetworkid string `json:"destinationphysicalnetworkid"`
State string `json:"state,omitempty"` Id string `json:"id"`
Supportsstrechedl2subnet bool `json:"supportsstrechedl2subnet,omitempty"` Name string `json:"name"`
Tags string `json:"tags,omitempty"` Physicalnetworkid string `json:"physicalnetworkid"`
Traffictype string `json:"traffictype,omitempty"` Servicelist []string `json:"servicelist"`
State string `json:"state"`
}
type NetworkOfferingServiceInternalCapability struct {
Canchooseservicecapability bool `json:"canchooseservicecapability"`
Name string `json:"name"`
Value string `json:"value"`
}
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))
}
if v, found := p.p["tags"]; found {
u.Set("tags", 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
}
func (p *UpdateNetworkOfferingParams) 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 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"`
Conservemode bool `json:"conservemode"`
Created string `json:"created"`
Details map[string]string `json:"details"`
Displaytext string `json:"displaytext"`
Egressdefaultpolicy bool `json:"egressdefaultpolicy"`
Forvpc bool `json:"forvpc"`
Guestiptype string `json:"guestiptype"`
Id string `json:"id"`
Isdefault bool `json:"isdefault"`
Ispersistent bool `json:"ispersistent"`
Maxconnections int `json:"maxconnections"`
Name string `json:"name"`
Networkrate int `json:"networkrate"`
Service []UpdateNetworkOfferingResponseService `json:"service"`
Serviceofferingid string `json:"serviceofferingid"`
Specifyipranges bool `json:"specifyipranges"`
Specifyvlan bool `json:"specifyvlan"`
State string `json:"state"`
Supportspublicaccess bool `json:"supportspublicaccess"`
Supportsstrechedl2subnet bool `json:"supportsstrechedl2subnet"`
Tags string `json:"tags"`
Traffictype string `json:"traffictype"`
}
type UpdateNetworkOfferingResponseService struct {
Capability []UpdateNetworkOfferingResponseServiceCapability `json:"capability"`
Name string `json:"name"`
Provider []UpdateNetworkOfferingResponseServiceProvider `json:"provider"`
}
type UpdateNetworkOfferingResponseServiceProvider struct {
Canenableindividualservice bool `json:"canenableindividualservice"`
Destinationphysicalnetworkid string `json:"destinationphysicalnetworkid"`
Id string `json:"id"`
Name string `json:"name"`
Physicalnetworkid string `json:"physicalnetworkid"`
Servicelist []string `json:"servicelist"`
State string `json:"state"`
}
type UpdateNetworkOfferingResponseServiceCapability struct {
Canchooseservicecapability bool `json:"canchooseservicecapability"`
Name string `json:"name"`
Value string `json:"value"`
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -96,337 +96,21 @@ func (s *NicService) AddIpToNic(p *AddIpToNicParams) (*AddIpToNicResponse, error
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type AddIpToNicResponse struct { type AddIpToNicResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Ipaddress string `json:"ipaddress,omitempty"` Ipaddress string `json:"ipaddress"`
Networkid string `json:"networkid,omitempty"` Networkid string `json:"networkid"`
Nicid string `json:"nicid,omitempty"` Nicid string `json:"nicid"`
Virtualmachineid string `json:"virtualmachineid,omitempty"` Secondaryip []struct {
} Id string `json:"id"`
Ipaddress string `json:"ipaddress"`
type RemoveIpFromNicParams struct { } `json:"secondaryip"`
p map[string]interface{} Virtualmachineid string `json:"virtualmachineid"`
}
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 { type ListNicsParams struct {
@ -541,6 +225,7 @@ func (s *NicService) ListNics(p *ListNicsParams) (*ListNicsResponse, error) {
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -550,25 +235,282 @@ type ListNicsResponse struct {
} }
type Nic struct { type Nic struct {
Broadcasturi string `json:"broadcasturi,omitempty"` Broadcasturi string `json:"broadcasturi"`
Deviceid string `json:"deviceid,omitempty"` Deviceid string `json:"deviceid"`
Gateway string `json:"gateway,omitempty"` Extradhcpoption []string `json:"extradhcpoption"`
Id string `json:"id,omitempty"` Gateway string `json:"gateway"`
Ip6address string `json:"ip6address,omitempty"` Id string `json:"id"`
Ip6cidr string `json:"ip6cidr,omitempty"` Ip6address string `json:"ip6address"`
Ip6gateway string `json:"ip6gateway,omitempty"` Ip6cidr string `json:"ip6cidr"`
Ipaddress string `json:"ipaddress,omitempty"` Ip6gateway string `json:"ip6gateway"`
Isdefault bool `json:"isdefault,omitempty"` Ipaddress string `json:"ipaddress"`
Isolationuri string `json:"isolationuri,omitempty"` Isdefault bool `json:"isdefault"`
Macaddress string `json:"macaddress,omitempty"` Isolationuri string `json:"isolationuri"`
Netmask string `json:"netmask,omitempty"` Macaddress string `json:"macaddress"`
Networkid string `json:"networkid,omitempty"` Netmask string `json:"netmask"`
Networkname string `json:"networkname,omitempty"` Networkid string `json:"networkid"`
Secondaryip []struct { Networkname string `json:"networkname"`
Id string `json:"id,omitempty"` Nsxlogicalswitch string `json:"nsxlogicalswitch"`
Ipaddress string `json:"ipaddress,omitempty"` Nsxlogicalswitchport string `json:"nsxlogicalswitchport"`
} `json:"secondaryip,omitempty"` Secondaryip []struct {
Traffictype string `json:"traffictype,omitempty"` Id string `json:"id"`
Type string `json:"type,omitempty"` Ipaddress string `json:"ipaddress"`
Virtualmachineid string `json:"virtualmachineid,omitempty"` } `json:"secondaryip"`
Traffictype string `json:"traffictype"`
Type string `json:"type"`
Virtualmachineid string `json:"virtualmachineid"`
}
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"`
Displaytext string `json:"displaytext"`
Success bool `json:"success"`
}
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"`
Account string `json:"account"`
Affinitygroup []UpdateVmNicIpResponseAffinitygroup `json:"affinitygroup"`
Cpunumber int `json:"cpunumber"`
Cpuspeed int `json:"cpuspeed"`
Cpuused string `json:"cpuused"`
Created string `json:"created"`
Details map[string]string `json:"details"`
Diskioread int64 `json:"diskioread"`
Diskiowrite int64 `json:"diskiowrite"`
Diskkbsread int64 `json:"diskkbsread"`
Diskkbswrite int64 `json:"diskkbswrite"`
Diskofferingid string `json:"diskofferingid"`
Diskofferingname string `json:"diskofferingname"`
Displayname string `json:"displayname"`
Displayvm bool `json:"displayvm"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Forvirtualnetwork bool `json:"forvirtualnetwork"`
Group string `json:"group"`
Groupid string `json:"groupid"`
Guestosid string `json:"guestosid"`
Haenable bool `json:"haenable"`
Hostid string `json:"hostid"`
Hostname string `json:"hostname"`
Hypervisor string `json:"hypervisor"`
Id string `json:"id"`
Instancename string `json:"instancename"`
Isdynamicallyscalable bool `json:"isdynamicallyscalable"`
Isodisplaytext string `json:"isodisplaytext"`
Isoid string `json:"isoid"`
Isoname string `json:"isoname"`
Keypair string `json:"keypair"`
Memory int `json:"memory"`
Memoryintfreekbs int64 `json:"memoryintfreekbs"`
Memorykbs int64 `json:"memorykbs"`
Memorytargetkbs int64 `json:"memorytargetkbs"`
Name string `json:"name"`
Networkkbsread int64 `json:"networkkbsread"`
Networkkbswrite int64 `json:"networkkbswrite"`
Nic []Nic `json:"nic"`
Ostypeid int64 `json:"ostypeid"`
Password string `json:"password"`
Passwordenabled bool `json:"passwordenabled"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Publicip string `json:"publicip"`
Publicipid string `json:"publicipid"`
Rootdeviceid int64 `json:"rootdeviceid"`
Rootdevicetype string `json:"rootdevicetype"`
Securitygroup []UpdateVmNicIpResponseSecuritygroup `json:"securitygroup"`
Serviceofferingid string `json:"serviceofferingid"`
Serviceofferingname string `json:"serviceofferingname"`
Servicestate string `json:"servicestate"`
State string `json:"state"`
Templatedisplaytext string `json:"templatedisplaytext"`
Templateid string `json:"templateid"`
Templatename string `json:"templatename"`
Userid string `json:"userid"`
Username string `json:"username"`
Vgpu string `json:"vgpu"`
Zoneid string `json:"zoneid"`
Zonename string `json:"zonename"`
}
type UpdateVmNicIpResponseSecuritygroup struct {
Account string `json:"account"`
Description string `json:"description"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Egressrule []UpdateVmNicIpResponseSecuritygroupRule `json:"egressrule"`
Id string `json:"id"`
Ingressrule []UpdateVmNicIpResponseSecuritygroupRule `json:"ingressrule"`
Name string `json:"name"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Tags []Tags `json:"tags"`
Virtualmachinecount int `json:"virtualmachinecount"`
Virtualmachineids []interface{} `json:"virtualmachineids"`
}
type UpdateVmNicIpResponseSecuritygroupRule struct {
Account string `json:"account"`
Cidr string `json:"cidr"`
Endport int `json:"endport"`
Icmpcode int `json:"icmpcode"`
Icmptype int `json:"icmptype"`
Protocol string `json:"protocol"`
Ruleid string `json:"ruleid"`
Securitygroupname string `json:"securitygroupname"`
Startport int `json:"startport"`
Tags []Tags `json:"tags"`
}
type UpdateVmNicIpResponseAffinitygroup struct {
Account string `json:"account"`
Description string `json:"description"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Id string `json:"id"`
Name string `json:"name"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Type string `json:"type"`
VirtualmachineIds []string `json:"virtualmachineIds"`
} }

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -34,6 +34,9 @@ func (p *AddNiciraNvpDeviceParams) toURLValues() url.Values {
if v, found := p.p["hostname"]; found { if v, found := p.p["hostname"]; found {
u.Set("hostname", v.(string)) u.Set("hostname", v.(string))
} }
if v, found := p.p["l2gatewayserviceuuid"]; found {
u.Set("l2gatewayserviceuuid", v.(string))
}
if v, found := p.p["l3gatewayserviceuuid"]; found { if v, found := p.p["l3gatewayserviceuuid"]; found {
u.Set("l3gatewayserviceuuid", v.(string)) u.Set("l3gatewayserviceuuid", v.(string))
} }
@ -60,6 +63,14 @@ func (p *AddNiciraNvpDeviceParams) SetHostname(v string) {
return return
} }
func (p *AddNiciraNvpDeviceParams) SetL2gatewayserviceuuid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["l2gatewayserviceuuid"] = v
return
}
func (p *AddNiciraNvpDeviceParams) SetL3gatewayserviceuuid(v string) { func (p *AddNiciraNvpDeviceParams) SetL3gatewayserviceuuid(v string) {
if p.p == nil { if p.p == nil {
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
@ -144,18 +155,20 @@ func (s *NiciraNVPService) AddNiciraNvpDevice(p *AddNiciraNvpDeviceParams) (*Add
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type AddNiciraNvpDeviceResponse struct { type AddNiciraNvpDeviceResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Hostname string `json:"hostname,omitempty"` Hostname string `json:"hostname"`
L3gatewayserviceuuid string `json:"l3gatewayserviceuuid,omitempty"` L2gatewayserviceuuid string `json:"l2gatewayserviceuuid"`
Niciradevicename string `json:"niciradevicename,omitempty"` L3gatewayserviceuuid string `json:"l3gatewayserviceuuid"`
Nvpdeviceid string `json:"nvpdeviceid,omitempty"` Niciradevicename string `json:"niciradevicename"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"` Nvpdeviceid string `json:"nvpdeviceid"`
Provider string `json:"provider,omitempty"` Physicalnetworkid string `json:"physicalnetworkid"`
Transportzoneuuid string `json:"transportzoneuuid,omitempty"` Provider string `json:"provider"`
Transportzoneuuid string `json:"transportzoneuuid"`
} }
type DeleteNiciraNvpDeviceParams struct { type DeleteNiciraNvpDeviceParams struct {
@ -216,13 +229,14 @@ func (s *NiciraNVPService) DeleteNiciraNvpDevice(p *DeleteNiciraNvpDeviceParams)
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type DeleteNiciraNvpDeviceResponse struct { type DeleteNiciraNvpDeviceResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Success bool `json:"success,omitempty"` Success bool `json:"success"`
} }
type ListNiciraNvpDevicesParams struct { type ListNiciraNvpDevicesParams struct {
@ -313,6 +327,7 @@ func (s *NiciraNVPService) ListNiciraNvpDevices(p *ListNiciraNvpDevicesParams) (
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -322,11 +337,12 @@ type ListNiciraNvpDevicesResponse struct {
} }
type NiciraNvpDevice struct { type NiciraNvpDevice struct {
Hostname string `json:"hostname,omitempty"` Hostname string `json:"hostname"`
L3gatewayserviceuuid string `json:"l3gatewayserviceuuid,omitempty"` L2gatewayserviceuuid string `json:"l2gatewayserviceuuid"`
Niciradevicename string `json:"niciradevicename,omitempty"` L3gatewayserviceuuid string `json:"l3gatewayserviceuuid"`
Nvpdeviceid string `json:"nvpdeviceid,omitempty"` Niciradevicename string `json:"niciradevicename"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"` Nvpdeviceid string `json:"nvpdeviceid"`
Provider string `json:"provider,omitempty"` Physicalnetworkid string `json:"physicalnetworkid"`
Transportzoneuuid string `json:"transportzoneuuid,omitempty"` Provider string `json:"provider"`
Transportzoneuuid string `json:"transportzoneuuid"`
} }

View File

@ -0,0 +1,527 @@
//
// Copyright 2018, 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 AddNuageVspDeviceParams struct {
p map[string]interface{}
}
func (p *AddNuageVspDeviceParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["apiversion"]; found {
u.Set("apiversion", v.(string))
}
if v, found := p.p["hostname"]; found {
u.Set("hostname", 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["port"]; found {
vv := strconv.Itoa(v.(int))
u.Set("port", vv)
}
if v, found := p.p["retrycount"]; found {
vv := strconv.Itoa(v.(int))
u.Set("retrycount", vv)
}
if v, found := p.p["retryinterval"]; found {
vv := strconv.FormatInt(v.(int64), 10)
u.Set("retryinterval", vv)
}
if v, found := p.p["username"]; found {
u.Set("username", v.(string))
}
return u
}
func (p *AddNuageVspDeviceParams) SetApiversion(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["apiversion"] = v
return
}
func (p *AddNuageVspDeviceParams) SetHostname(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["hostname"] = v
return
}
func (p *AddNuageVspDeviceParams) SetPassword(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["password"] = v
return
}
func (p *AddNuageVspDeviceParams) SetPhysicalnetworkid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["physicalnetworkid"] = v
return
}
func (p *AddNuageVspDeviceParams) SetPort(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["port"] = v
return
}
func (p *AddNuageVspDeviceParams) SetRetrycount(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["retrycount"] = v
return
}
func (p *AddNuageVspDeviceParams) SetRetryinterval(v int64) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["retryinterval"] = v
return
}
func (p *AddNuageVspDeviceParams) 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 AddNuageVspDeviceParams instance,
// as then you are sure you have configured all required params
func (s *NuageVSPService) NewAddNuageVspDeviceParams(hostname string, password string, physicalnetworkid string, port int, username string) *AddNuageVspDeviceParams {
p := &AddNuageVspDeviceParams{}
p.p = make(map[string]interface{})
p.p["hostname"] = hostname
p.p["password"] = password
p.p["physicalnetworkid"] = physicalnetworkid
p.p["port"] = port
p.p["username"] = username
return p
}
// Adds a Nuage VSP device
func (s *NuageVSPService) AddNuageVspDevice(p *AddNuageVspDeviceParams) (*AddNuageVspDeviceResponse, error) {
resp, err := s.cs.newRequest("addNuageVspDevice", p.toURLValues())
if err != nil {
return nil, err
}
var r AddNuageVspDeviceResponse
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 AddNuageVspDeviceResponse struct {
JobID string `json:"jobid"`
Apiversion string `json:"apiversion"`
Cmsid string `json:"cmsid"`
Hostname string `json:"hostname"`
Nuagedevicename string `json:"nuagedevicename"`
Physicalnetworkid string `json:"physicalnetworkid"`
Port int `json:"port"`
Provider string `json:"provider"`
Retrycount int `json:"retrycount"`
Retryinterval int64 `json:"retryinterval"`
Vspdeviceid string `json:"vspdeviceid"`
}
type DeleteNuageVspDeviceParams struct {
p map[string]interface{}
}
func (p *DeleteNuageVspDeviceParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["vspdeviceid"]; found {
u.Set("vspdeviceid", v.(string))
}
return u
}
func (p *DeleteNuageVspDeviceParams) SetVspdeviceid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["vspdeviceid"] = v
return
}
// You should always use this function to get a new DeleteNuageVspDeviceParams instance,
// as then you are sure you have configured all required params
func (s *NuageVSPService) NewDeleteNuageVspDeviceParams(vspdeviceid string) *DeleteNuageVspDeviceParams {
p := &DeleteNuageVspDeviceParams{}
p.p = make(map[string]interface{})
p.p["vspdeviceid"] = vspdeviceid
return p
}
// delete a nuage vsp device
func (s *NuageVSPService) DeleteNuageVspDevice(p *DeleteNuageVspDeviceParams) (*DeleteNuageVspDeviceResponse, error) {
resp, err := s.cs.newRequest("deleteNuageVspDevice", p.toURLValues())
if err != nil {
return nil, err
}
var r DeleteNuageVspDeviceResponse
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 DeleteNuageVspDeviceResponse struct {
JobID string `json:"jobid"`
Displaytext string `json:"displaytext"`
Success bool `json:"success"`
}
type ListNuageVspDevicesParams struct {
p map[string]interface{}
}
func (p *ListNuageVspDevicesParams) 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["physicalnetworkid"]; found {
u.Set("physicalnetworkid", v.(string))
}
if v, found := p.p["vspdeviceid"]; found {
u.Set("vspdeviceid", v.(string))
}
return u
}
func (p *ListNuageVspDevicesParams) SetKeyword(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["keyword"] = v
return
}
func (p *ListNuageVspDevicesParams) SetPage(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["page"] = v
return
}
func (p *ListNuageVspDevicesParams) SetPagesize(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["pagesize"] = v
return
}
func (p *ListNuageVspDevicesParams) SetPhysicalnetworkid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["physicalnetworkid"] = v
return
}
func (p *ListNuageVspDevicesParams) SetVspdeviceid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["vspdeviceid"] = v
return
}
// You should always use this function to get a new ListNuageVspDevicesParams instance,
// as then you are sure you have configured all required params
func (s *NuageVSPService) NewListNuageVspDevicesParams() *ListNuageVspDevicesParams {
p := &ListNuageVspDevicesParams{}
p.p = make(map[string]interface{})
return p
}
// Lists Nuage VSP devices
func (s *NuageVSPService) ListNuageVspDevices(p *ListNuageVspDevicesParams) (*ListNuageVspDevicesResponse, error) {
resp, err := s.cs.newRequest("listNuageVspDevices", p.toURLValues())
if err != nil {
return nil, err
}
var r ListNuageVspDevicesResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type ListNuageVspDevicesResponse struct {
Count int `json:"count"`
NuageVspDevices []*NuageVspDevice `json:"nuagevspdevice"`
}
type NuageVspDevice struct {
Apiversion string `json:"apiversion"`
Cmsid string `json:"cmsid"`
Hostname string `json:"hostname"`
Nuagedevicename string `json:"nuagedevicename"`
Physicalnetworkid string `json:"physicalnetworkid"`
Port int `json:"port"`
Provider string `json:"provider"`
Retrycount int `json:"retrycount"`
Retryinterval int64 `json:"retryinterval"`
Vspdeviceid string `json:"vspdeviceid"`
}
type UpdateNuageVspDeviceParams struct {
p map[string]interface{}
}
func (p *UpdateNuageVspDeviceParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["apiversion"]; found {
u.Set("apiversion", v.(string))
}
if v, found := p.p["hostname"]; found {
u.Set("hostname", 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["port"]; found {
vv := strconv.Itoa(v.(int))
u.Set("port", vv)
}
if v, found := p.p["retrycount"]; found {
vv := strconv.Itoa(v.(int))
u.Set("retrycount", vv)
}
if v, found := p.p["retryinterval"]; found {
vv := strconv.FormatInt(v.(int64), 10)
u.Set("retryinterval", vv)
}
if v, found := p.p["username"]; found {
u.Set("username", v.(string))
}
return u
}
func (p *UpdateNuageVspDeviceParams) SetApiversion(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["apiversion"] = v
return
}
func (p *UpdateNuageVspDeviceParams) SetHostname(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["hostname"] = v
return
}
func (p *UpdateNuageVspDeviceParams) SetPassword(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["password"] = v
return
}
func (p *UpdateNuageVspDeviceParams) SetPhysicalnetworkid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["physicalnetworkid"] = v
return
}
func (p *UpdateNuageVspDeviceParams) SetPort(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["port"] = v
return
}
func (p *UpdateNuageVspDeviceParams) SetRetrycount(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["retrycount"] = v
return
}
func (p *UpdateNuageVspDeviceParams) SetRetryinterval(v int64) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["retryinterval"] = v
return
}
func (p *UpdateNuageVspDeviceParams) 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 UpdateNuageVspDeviceParams instance,
// as then you are sure you have configured all required params
func (s *NuageVSPService) NewUpdateNuageVspDeviceParams(physicalnetworkid string) *UpdateNuageVspDeviceParams {
p := &UpdateNuageVspDeviceParams{}
p.p = make(map[string]interface{})
p.p["physicalnetworkid"] = physicalnetworkid
return p
}
// Update a Nuage VSP device
func (s *NuageVSPService) UpdateNuageVspDevice(p *UpdateNuageVspDeviceParams) (*UpdateNuageVspDeviceResponse, error) {
resp, err := s.cs.newRequest("updateNuageVspDevice", p.toURLValues())
if err != nil {
return nil, err
}
var r UpdateNuageVspDeviceResponse
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 UpdateNuageVspDeviceResponse struct {
JobID string `json:"jobid"`
Apiversion string `json:"apiversion"`
Cmsid string `json:"cmsid"`
Hostname string `json:"hostname"`
Nuagedevicename string `json:"nuagedevicename"`
Physicalnetworkid string `json:"physicalnetworkid"`
Port int `json:"port"`
Provider string `json:"provider"`
Retrycount int `json:"retrycount"`
Retryinterval int64 `json:"retryinterval"`
Vspdeviceid string `json:"vspdeviceid"`
}

View File

@ -0,0 +1,343 @@
//
// Copyright 2018, 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 ChangeOutOfBandManagementPasswordParams struct {
p map[string]interface{}
}
func (p *ChangeOutOfBandManagementPasswordParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["hostid"]; found {
u.Set("hostid", v.(string))
}
if v, found := p.p["password"]; found {
u.Set("password", v.(string))
}
return u
}
func (p *ChangeOutOfBandManagementPasswordParams) SetHostid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["hostid"] = v
return
}
func (p *ChangeOutOfBandManagementPasswordParams) SetPassword(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["password"] = v
return
}
// You should always use this function to get a new ChangeOutOfBandManagementPasswordParams instance,
// as then you are sure you have configured all required params
func (s *OutofbandManagementService) NewChangeOutOfBandManagementPasswordParams(hostid string) *ChangeOutOfBandManagementPasswordParams {
p := &ChangeOutOfBandManagementPasswordParams{}
p.p = make(map[string]interface{})
p.p["hostid"] = hostid
return p
}
// Changes out-of-band management interface password on the host and updates the interface configuration in CloudStack if the operation succeeds, else reverts the old password
func (s *OutofbandManagementService) ChangeOutOfBandManagementPassword(p *ChangeOutOfBandManagementPasswordParams) (*ChangeOutOfBandManagementPasswordResponse, error) {
resp, err := s.cs.newRequest("changeOutOfBandManagementPassword", p.toURLValues())
if err != nil {
return nil, err
}
var r ChangeOutOfBandManagementPasswordResponse
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 ChangeOutOfBandManagementPasswordResponse struct {
JobID string `json:"jobid"`
Action string `json:"action"`
Address string `json:"address"`
Description string `json:"description"`
Driver string `json:"driver"`
Enabled bool `json:"enabled"`
Hostid string `json:"hostid"`
Password string `json:"password"`
Port string `json:"port"`
Powerstate string `json:"powerstate"`
Status bool `json:"status"`
Username string `json:"username"`
}
type ConfigureOutOfBandManagementParams struct {
p map[string]interface{}
}
func (p *ConfigureOutOfBandManagementParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["address"]; found {
u.Set("address", v.(string))
}
if v, found := p.p["driver"]; found {
u.Set("driver", v.(string))
}
if v, found := p.p["hostid"]; found {
u.Set("hostid", v.(string))
}
if v, found := p.p["password"]; found {
u.Set("password", v.(string))
}
if v, found := p.p["port"]; found {
u.Set("port", v.(string))
}
if v, found := p.p["username"]; found {
u.Set("username", v.(string))
}
return u
}
func (p *ConfigureOutOfBandManagementParams) SetAddress(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["address"] = v
return
}
func (p *ConfigureOutOfBandManagementParams) SetDriver(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["driver"] = v
return
}
func (p *ConfigureOutOfBandManagementParams) SetHostid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["hostid"] = v
return
}
func (p *ConfigureOutOfBandManagementParams) SetPassword(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["password"] = v
return
}
func (p *ConfigureOutOfBandManagementParams) SetPort(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["port"] = v
return
}
func (p *ConfigureOutOfBandManagementParams) 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 ConfigureOutOfBandManagementParams instance,
// as then you are sure you have configured all required params
func (s *OutofbandManagementService) NewConfigureOutOfBandManagementParams(address string, driver string, hostid string, password string, port string, username string) *ConfigureOutOfBandManagementParams {
p := &ConfigureOutOfBandManagementParams{}
p.p = make(map[string]interface{})
p.p["address"] = address
p.p["driver"] = driver
p.p["hostid"] = hostid
p.p["password"] = password
p.p["port"] = port
p.p["username"] = username
return p
}
// Configures a host's out-of-band management interface
func (s *OutofbandManagementService) ConfigureOutOfBandManagement(p *ConfigureOutOfBandManagementParams) (*OutOfBandManagementResponse, error) {
resp, err := s.cs.newRequest("configureOutOfBandManagement", p.toURLValues())
if err != nil {
return nil, err
}
var r OutOfBandManagementResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type OutOfBandManagementResponse struct {
Action string `json:"action"`
Address string `json:"address"`
Description string `json:"description"`
Driver string `json:"driver"`
Enabled bool `json:"enabled"`
Hostid string `json:"hostid"`
Password string `json:"password"`
Port string `json:"port"`
Powerstate string `json:"powerstate"`
Status bool `json:"status"`
Username string `json:"username"`
}
type IssueOutOfBandManagementPowerActionParams struct {
p map[string]interface{}
}
func (p *IssueOutOfBandManagementPowerActionParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["action"]; found {
u.Set("action", v.(string))
}
if v, found := p.p["hostid"]; found {
u.Set("hostid", v.(string))
}
if v, found := p.p["timeout"]; found {
vv := strconv.FormatInt(v.(int64), 10)
u.Set("timeout", vv)
}
return u
}
func (p *IssueOutOfBandManagementPowerActionParams) SetAction(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["action"] = v
return
}
func (p *IssueOutOfBandManagementPowerActionParams) SetHostid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["hostid"] = v
return
}
func (p *IssueOutOfBandManagementPowerActionParams) SetTimeout(v int64) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["timeout"] = v
return
}
// You should always use this function to get a new IssueOutOfBandManagementPowerActionParams instance,
// as then you are sure you have configured all required params
func (s *OutofbandManagementService) NewIssueOutOfBandManagementPowerActionParams(action string, hostid string) *IssueOutOfBandManagementPowerActionParams {
p := &IssueOutOfBandManagementPowerActionParams{}
p.p = make(map[string]interface{})
p.p["action"] = action
p.p["hostid"] = hostid
return p
}
// Initiates the specified power action to the host's out-of-band management interface
func (s *OutofbandManagementService) IssueOutOfBandManagementPowerAction(p *IssueOutOfBandManagementPowerActionParams) (*IssueOutOfBandManagementPowerActionResponse, error) {
resp, err := s.cs.newRequest("issueOutOfBandManagementPowerAction", p.toURLValues())
if err != nil {
return nil, err
}
var r IssueOutOfBandManagementPowerActionResponse
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 IssueOutOfBandManagementPowerActionResponse struct {
JobID string `json:"jobid"`
Action string `json:"action"`
Address string `json:"address"`
Description string `json:"description"`
Driver string `json:"driver"`
Enabled bool `json:"enabled"`
Hostid string `json:"hostid"`
Password string `json:"password"`
Port string `json:"port"`
Powerstate string `json:"powerstate"`
Status bool `json:"status"`
Username string `json:"username"`
}

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -70,13 +70,13 @@ func (s *OvsElementService) NewConfigureOvsElementParams(enabled bool, id string
} }
// Configures an ovs element. // Configures an ovs element.
func (s *OvsElementService) ConfigureOvsElement(p *ConfigureOvsElementParams) (*ConfigureOvsElementResponse, error) { func (s *OvsElementService) ConfigureOvsElement(p *ConfigureOvsElementParams) (*OvsElementResponse, error) {
resp, err := s.cs.newRequest("configureOvsElement", p.toURLValues()) resp, err := s.cs.newRequest("configureOvsElement", p.toURLValues())
if err != nil { if err != nil {
return nil, err return nil, err
} }
var r ConfigureOvsElementResponse var r OvsElementResponse
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
@ -100,19 +100,20 @@ func (s *OvsElementService) ConfigureOvsElement(p *ConfigureOvsElementParams) (*
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type ConfigureOvsElementResponse struct { type OvsElementResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Account string `json:"account,omitempty"` Account string `json:"account"`
Domain string `json:"domain,omitempty"` Domain string `json:"domain"`
Domainid string `json:"domainid,omitempty"` Domainid string `json:"domainid"`
Enabled bool `json:"enabled,omitempty"` Enabled bool `json:"enabled"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Nspid string `json:"nspid,omitempty"` Nspid string `json:"nspid"`
Project string `json:"project,omitempty"` Project string `json:"project"`
Projectid string `json:"projectid,omitempty"` Projectid string `json:"projectid"`
} }
type ListOvsElementsParams struct { type ListOvsElementsParams struct {
@ -211,7 +212,7 @@ func (s *OvsElementService) GetOvsElementByID(id string, opts ...OptionFunc) (*O
p.p["id"] = id p.p["id"] = id
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return nil, -1, err return nil, -1, err
} }
@ -248,6 +249,7 @@ func (s *OvsElementService) ListOvsElements(p *ListOvsElementsParams) (*ListOvsE
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -257,12 +259,12 @@ type ListOvsElementsResponse struct {
} }
type OvsElement struct { type OvsElement struct {
Account string `json:"account,omitempty"` Account string `json:"account"`
Domain string `json:"domain,omitempty"` Domain string `json:"domain"`
Domainid string `json:"domainid,omitempty"` Domainid string `json:"domainid"`
Enabled bool `json:"enabled,omitempty"` Enabled bool `json:"enabled"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Nspid string `json:"nspid,omitempty"` Nspid string `json:"nspid"`
Project string `json:"project,omitempty"` Project string `json:"project"`
Projectid string `json:"projectid,omitempty"` Projectid string `json:"projectid"`
} }

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -137,167 +137,138 @@ func (s *PodService) CreatePod(p *CreatePodParams) (*CreatePodResponse, error) {
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type CreatePodResponse struct { type CreatePodResponse struct {
Allocationstate string `json:"allocationstate,omitempty"` Allocationstate string `json:"allocationstate"`
Capacity []struct { Capacity []CreatePodResponseCapacity `json:"capacity"`
Capacitytotal int64 `json:"capacitytotal,omitempty"` Endip []string `json:"endip"`
Capacityused int64 `json:"capacityused,omitempty"` Forsystemvms []string `json:"forsystemvms"`
Clusterid string `json:"clusterid,omitempty"` Gateway string `json:"gateway"`
Clustername string `json:"clustername,omitempty"` Id string `json:"id"`
Percentused string `json:"percentused,omitempty"` Name string `json:"name"`
Podid string `json:"podid,omitempty"` Netmask string `json:"netmask"`
Podname string `json:"podname,omitempty"` Startip []string `json:"startip"`
Type int `json:"type,omitempty"` Vlanid []string `json:"vlanid"`
Zoneid string `json:"zoneid,omitempty"` Zoneid string `json:"zoneid"`
Zonename string `json:"zonename,omitempty"` Zonename string `json:"zonename"`
} `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 { type CreatePodResponseCapacity struct {
Capacityallocated int64 `json:"capacityallocated"`
Capacitytotal int64 `json:"capacitytotal"`
Capacityused int64 `json:"capacityused"`
Clusterid string `json:"clusterid"`
Clustername string `json:"clustername"`
Name string `json:"name"`
Percentused string `json:"percentused"`
Podid string `json:"podid"`
Podname string `json:"podname"`
Type int `json:"type"`
Zoneid string `json:"zoneid"`
Zonename string `json:"zonename"`
}
type DedicatePodParams struct {
p map[string]interface{} p map[string]interface{}
} }
func (p *UpdatePodParams) toURLValues() url.Values { func (p *DedicatePodParams) toURLValues() url.Values {
u := url.Values{} u := url.Values{}
if p.p == nil { if p.p == nil {
return u return u
} }
if v, found := p.p["allocationstate"]; found { if v, found := p.p["account"]; found {
u.Set("allocationstate", v.(string)) u.Set("account", v.(string))
} }
if v, found := p.p["endip"]; found { if v, found := p.p["domainid"]; found {
u.Set("endip", v.(string)) u.Set("domainid", v.(string))
} }
if v, found := p.p["gateway"]; found { if v, found := p.p["podid"]; found {
u.Set("gateway", v.(string)) u.Set("podid", 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 return u
} }
func (p *UpdatePodParams) SetAllocationstate(v string) { func (p *DedicatePodParams) SetAccount(v string) {
if p.p == nil { if p.p == nil {
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
} }
p.p["allocationstate"] = v p.p["account"] = v
return return
} }
func (p *UpdatePodParams) SetEndip(v string) { func (p *DedicatePodParams) SetDomainid(v string) {
if p.p == nil { if p.p == nil {
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
} }
p.p["endip"] = v p.p["domainid"] = v
return return
} }
func (p *UpdatePodParams) SetGateway(v string) { func (p *DedicatePodParams) SetPodid(v string) {
if p.p == nil { if p.p == nil {
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
} }
p.p["gateway"] = v p.p["podid"] = v
return return
} }
func (p *UpdatePodParams) SetId(v string) { // You should always use this function to get a new DedicatePodParams instance,
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 // as then you are sure you have configured all required params
func (s *PodService) NewUpdatePodParams(id string) *UpdatePodParams { func (s *PodService) NewDedicatePodParams(domainid string, podid string) *DedicatePodParams {
p := &UpdatePodParams{} p := &DedicatePodParams{}
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
p.p["id"] = id p.p["domainid"] = domainid
p.p["podid"] = podid
return p return p
} }
// Updates a Pod. // Dedicates a Pod.
func (s *PodService) UpdatePod(p *UpdatePodParams) (*UpdatePodResponse, error) { func (s *PodService) DedicatePod(p *DedicatePodParams) (*DedicatePodResponse, error) {
resp, err := s.cs.newRequest("updatePod", p.toURLValues()) resp, err := s.cs.newRequest("dedicatePod", p.toURLValues())
if err != nil { if err != nil {
return nil, err return nil, err
} }
var r UpdatePodResponse var r DedicatePodResponse
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err 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 return &r, nil
} }
type UpdatePodResponse struct { type DedicatePodResponse struct {
Allocationstate string `json:"allocationstate,omitempty"` JobID string `json:"jobid"`
Capacity []struct { Accountid string `json:"accountid"`
Capacitytotal int64 `json:"capacitytotal,omitempty"` Affinitygroupid string `json:"affinitygroupid"`
Capacityused int64 `json:"capacityused,omitempty"` Domainid string `json:"domainid"`
Clusterid string `json:"clusterid,omitempty"` Id string `json:"id"`
Clustername string `json:"clustername,omitempty"` Podid string `json:"podid"`
Percentused string `json:"percentused,omitempty"` Podname string `json:"podname"`
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 { type DeletePodParams struct {
@ -343,12 +314,160 @@ func (s *PodService) DeletePod(p *DeletePodParams) (*DeletePodResponse, error) {
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type DeletePodResponse struct { type DeletePodResponse struct {
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Success string `json:"success,omitempty"` Success bool `json:"success"`
}
func (r *DeletePodResponse) UnmarshalJSON(b []byte) error {
var m map[string]interface{}
err := json.Unmarshal(b, &m)
if err != nil {
return err
}
if success, ok := m["success"].(string); ok {
m["success"] = success == "true"
b, err = json.Marshal(m)
if err != nil {
return err
}
}
type alias DeletePodResponse
return json.Unmarshal(b, (*alias)(r))
}
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"`
Affinitygroupid string `json:"affinitygroupid"`
Domainid string `json:"domainid"`
Id string `json:"id"`
Podid string `json:"podid"`
Podname string `json:"podname"`
} }
type ListPodsParams struct { type ListPodsParams struct {
@ -469,7 +588,7 @@ func (s *PodService) GetPodID(name string, opts ...OptionFunc) (string, int, err
p.p["name"] = name p.p["name"] = name
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return "", -1, err return "", -1, err
} }
@ -519,7 +638,7 @@ func (s *PodService) GetPodByID(id string, opts ...OptionFunc) (*Pod, int, error
p.p["id"] = id p.p["id"] = id
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return nil, -1, err return nil, -1, err
} }
@ -556,6 +675,7 @@ func (s *PodService) ListPods(p *ListPodsParams) (*ListPodsResponse, error) {
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -565,126 +685,33 @@ type ListPodsResponse struct {
} }
type Pod struct { type Pod struct {
Allocationstate string `json:"allocationstate,omitempty"` Allocationstate string `json:"allocationstate"`
Capacity []struct { Capacity []PodCapacity `json:"capacity"`
Capacitytotal int64 `json:"capacitytotal,omitempty"` Endip []string `json:"endip"`
Capacityused int64 `json:"capacityused,omitempty"` Forsystemvms []string `json:"forsystemvms"`
Clusterid string `json:"clusterid,omitempty"` Gateway string `json:"gateway"`
Clustername string `json:"clustername,omitempty"` Id string `json:"id"`
Percentused string `json:"percentused,omitempty"` Name string `json:"name"`
Podid string `json:"podid,omitempty"` Netmask string `json:"netmask"`
Podname string `json:"podname,omitempty"` Startip []string `json:"startip"`
Type int `json:"type,omitempty"` Vlanid []string `json:"vlanid"`
Zoneid string `json:"zoneid,omitempty"` Zoneid string `json:"zoneid"`
Zonename string `json:"zonename,omitempty"` Zonename string `json:"zonename"`
} `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 { type PodCapacity struct {
p map[string]interface{} Capacityallocated int64 `json:"capacityallocated"`
} Capacitytotal int64 `json:"capacitytotal"`
Capacityused int64 `json:"capacityused"`
func (p *DedicatePodParams) toURLValues() url.Values { Clusterid string `json:"clusterid"`
u := url.Values{} Clustername string `json:"clustername"`
if p.p == nil { Name string `json:"name"`
return u Percentused string `json:"percentused"`
} Podid string `json:"podid"`
if v, found := p.p["account"]; found { Podname string `json:"podname"`
u.Set("account", v.(string)) Type int `json:"type"`
} Zoneid string `json:"zoneid"`
if v, found := p.p["domainid"]; found { Zonename string `json:"zonename"`
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 { type ReleaseDedicatedPodParams struct {
@ -745,138 +772,155 @@ func (s *PodService) ReleaseDedicatedPod(p *ReleaseDedicatedPodParams) (*Release
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type ReleaseDedicatedPodResponse struct { type ReleaseDedicatedPodResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Success bool `json:"success,omitempty"` Success bool `json:"success"`
} }
type ListDedicatedPodsParams struct { type UpdatePodParams struct {
p map[string]interface{} p map[string]interface{}
} }
func (p *ListDedicatedPodsParams) toURLValues() url.Values { func (p *UpdatePodParams) toURLValues() url.Values {
u := url.Values{} u := url.Values{}
if p.p == nil { if p.p == nil {
return u return u
} }
if v, found := p.p["account"]; found { if v, found := p.p["allocationstate"]; found {
u.Set("account", v.(string)) u.Set("allocationstate", v.(string))
} }
if v, found := p.p["affinitygroupid"]; found { if v, found := p.p["endip"]; found {
u.Set("affinitygroupid", v.(string)) u.Set("endip", v.(string))
} }
if v, found := p.p["domainid"]; found { if v, found := p.p["gateway"]; found {
u.Set("domainid", v.(string)) u.Set("gateway", v.(string))
} }
if v, found := p.p["keyword"]; found { if v, found := p.p["id"]; found {
u.Set("keyword", v.(string)) u.Set("id", v.(string))
} }
if v, found := p.p["page"]; found { if v, found := p.p["name"]; found {
vv := strconv.Itoa(v.(int)) u.Set("name", v.(string))
u.Set("page", vv)
} }
if v, found := p.p["pagesize"]; found { if v, found := p.p["netmask"]; found {
vv := strconv.Itoa(v.(int)) u.Set("netmask", v.(string))
u.Set("pagesize", vv)
} }
if v, found := p.p["podid"]; found { if v, found := p.p["startip"]; found {
u.Set("podid", v.(string)) u.Set("startip", v.(string))
} }
return u return u
} }
func (p *ListDedicatedPodsParams) SetAccount(v string) { func (p *UpdatePodParams) SetAllocationstate(v string) {
if p.p == nil { if p.p == nil {
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
} }
p.p["account"] = v p.p["allocationstate"] = v
return return
} }
func (p *ListDedicatedPodsParams) SetAffinitygroupid(v string) { func (p *UpdatePodParams) SetEndip(v string) {
if p.p == nil { if p.p == nil {
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
} }
p.p["affinitygroupid"] = v p.p["endip"] = v
return return
} }
func (p *ListDedicatedPodsParams) SetDomainid(v string) { func (p *UpdatePodParams) SetGateway(v string) {
if p.p == nil { if p.p == nil {
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
} }
p.p["domainid"] = v p.p["gateway"] = v
return return
} }
func (p *ListDedicatedPodsParams) SetKeyword(v string) { func (p *UpdatePodParams) SetId(v string) {
if p.p == nil { if p.p == nil {
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
} }
p.p["keyword"] = v p.p["id"] = v
return return
} }
func (p *ListDedicatedPodsParams) SetPage(v int) { func (p *UpdatePodParams) SetName(v string) {
if p.p == nil { if p.p == nil {
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
} }
p.p["page"] = v p.p["name"] = v
return return
} }
func (p *ListDedicatedPodsParams) SetPagesize(v int) { func (p *UpdatePodParams) SetNetmask(v string) {
if p.p == nil { if p.p == nil {
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
} }
p.p["pagesize"] = v p.p["netmask"] = v
return return
} }
func (p *ListDedicatedPodsParams) SetPodid(v string) { func (p *UpdatePodParams) SetStartip(v string) {
if p.p == nil { if p.p == nil {
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
} }
p.p["podid"] = v p.p["startip"] = v
return return
} }
// You should always use this function to get a new ListDedicatedPodsParams instance, // You should always use this function to get a new UpdatePodParams instance,
// as then you are sure you have configured all required params // as then you are sure you have configured all required params
func (s *PodService) NewListDedicatedPodsParams() *ListDedicatedPodsParams { func (s *PodService) NewUpdatePodParams(id string) *UpdatePodParams {
p := &ListDedicatedPodsParams{} p := &UpdatePodParams{}
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
p.p["id"] = id
return p return p
} }
// Lists dedicated pods. // Updates a Pod.
func (s *PodService) ListDedicatedPods(p *ListDedicatedPodsParams) (*ListDedicatedPodsResponse, error) { func (s *PodService) UpdatePod(p *UpdatePodParams) (*UpdatePodResponse, error) {
resp, err := s.cs.newRequest("listDedicatedPods", p.toURLValues()) resp, err := s.cs.newRequest("updatePod", p.toURLValues())
if err != nil { if err != nil {
return nil, err return nil, err
} }
var r ListDedicatedPodsResponse var r UpdatePodResponse
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type ListDedicatedPodsResponse struct { type UpdatePodResponse struct {
Count int `json:"count"` Allocationstate string `json:"allocationstate"`
DedicatedPods []*DedicatedPod `json:"dedicatedpod"` Capacity []UpdatePodResponseCapacity `json:"capacity"`
Endip []string `json:"endip"`
Forsystemvms []string `json:"forsystemvms"`
Gateway string `json:"gateway"`
Id string `json:"id"`
Name string `json:"name"`
Netmask string `json:"netmask"`
Startip []string `json:"startip"`
Vlanid []string `json:"vlanid"`
Zoneid string `json:"zoneid"`
Zonename string `json:"zonename"`
} }
type DedicatedPod struct { type UpdatePodResponseCapacity struct {
Accountid string `json:"accountid,omitempty"` Capacityallocated int64 `json:"capacityallocated"`
Affinitygroupid string `json:"affinitygroupid,omitempty"` Capacitytotal int64 `json:"capacitytotal"`
Domainid string `json:"domainid,omitempty"` Capacityused int64 `json:"capacityused"`
Id string `json:"id,omitempty"` Clusterid string `json:"clusterid"`
Podid string `json:"podid,omitempty"` Clustername string `json:"clustername"`
Podname string `json:"podname,omitempty"` Name string `json:"name"`
Percentused string `json:"percentused"`
Podid string `json:"podid"`
Podname string `json:"podname"`
Type int `json:"type"`
Zoneid string `json:"zoneid"`
Zonename string `json:"zonename"`
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -147,30 +147,33 @@ func (s *PortableIPService) CreatePortableIpRange(p *CreatePortableIpRangeParams
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type CreatePortableIpRangeResponse struct { type CreatePortableIpRangeResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Endip string `json:"endip,omitempty"` Endip string `json:"endip"`
Gateway string `json:"gateway,omitempty"` Gateway string `json:"gateway"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Netmask string `json:"netmask,omitempty"` Netmask string `json:"netmask"`
Portableipaddress []struct { Portableipaddress []CreatePortableIpRangeResponsePortableipaddress `json:"portableipaddress"`
Accountid string `json:"accountid,omitempty"` Regionid int `json:"regionid"`
Allocated string `json:"allocated,omitempty"` Startip string `json:"startip"`
Domainid string `json:"domainid,omitempty"` Vlan string `json:"vlan"`
Ipaddress string `json:"ipaddress,omitempty"` }
Networkid string `json:"networkid,omitempty"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"` type CreatePortableIpRangeResponsePortableipaddress struct {
Regionid int `json:"regionid,omitempty"` Accountid string `json:"accountid"`
State string `json:"state,omitempty"` Allocated string `json:"allocated"`
Vpcid string `json:"vpcid,omitempty"` Domainid string `json:"domainid"`
Zoneid string `json:"zoneid,omitempty"` Ipaddress string `json:"ipaddress"`
} `json:"portableipaddress,omitempty"` Networkid string `json:"networkid"`
Regionid int `json:"regionid,omitempty"` Physicalnetworkid string `json:"physicalnetworkid"`
Startip string `json:"startip,omitempty"` Regionid int `json:"regionid"`
Vlan string `json:"vlan,omitempty"` State string `json:"state"`
Vpcid string `json:"vpcid"`
Zoneid string `json:"zoneid"`
} }
type DeletePortableIpRangeParams struct { type DeletePortableIpRangeParams struct {
@ -231,13 +234,14 @@ func (s *PortableIPService) DeletePortableIpRange(p *DeletePortableIpRangeParams
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type DeletePortableIpRangeResponse struct { type DeletePortableIpRangeResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Success bool `json:"success,omitempty"` Success bool `json:"success"`
} }
type ListPortableIpRangesParams struct { type ListPortableIpRangesParams struct {
@ -325,7 +329,7 @@ func (s *PortableIPService) GetPortableIpRangeByID(id string, opts ...OptionFunc
p.p["id"] = id p.p["id"] = id
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return nil, -1, err return nil, -1, err
} }
@ -362,6 +366,7 @@ func (s *PortableIPService) ListPortableIpRanges(p *ListPortableIpRangesParams)
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -371,23 +376,25 @@ type ListPortableIpRangesResponse struct {
} }
type PortableIpRange struct { type PortableIpRange struct {
Endip string `json:"endip,omitempty"` Endip string `json:"endip"`
Gateway string `json:"gateway,omitempty"` Gateway string `json:"gateway"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Netmask string `json:"netmask,omitempty"` Netmask string `json:"netmask"`
Portableipaddress []struct { Portableipaddress []PortableIpRangePortableipaddress `json:"portableipaddress"`
Accountid string `json:"accountid,omitempty"` Regionid int `json:"regionid"`
Allocated string `json:"allocated,omitempty"` Startip string `json:"startip"`
Domainid string `json:"domainid,omitempty"` Vlan string `json:"vlan"`
Ipaddress string `json:"ipaddress,omitempty"` }
Networkid string `json:"networkid,omitempty"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"` type PortableIpRangePortableipaddress struct {
Regionid int `json:"regionid,omitempty"` Accountid string `json:"accountid"`
State string `json:"state,omitempty"` Allocated string `json:"allocated"`
Vpcid string `json:"vpcid,omitempty"` Domainid string `json:"domainid"`
Zoneid string `json:"zoneid,omitempty"` Ipaddress string `json:"ipaddress"`
} `json:"portableipaddress,omitempty"` Networkid string `json:"networkid"`
Regionid int `json:"regionid,omitempty"` Physicalnetworkid string `json:"physicalnetworkid"`
Startip string `json:"startip,omitempty"` Regionid int `json:"regionid"`
Vlan string `json:"vlan,omitempty"` State string `json:"state"`
Vpcid string `json:"vpcid"`
Zoneid string `json:"zoneid"`
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -52,9 +52,10 @@ func (s *QuotaService) QuotaIsEnabled(p *QuotaIsEnabledParams) (*QuotaIsEnabledR
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type QuotaIsEnabledResponse struct { type QuotaIsEnabledResponse struct {
Isenabled bool `json:"isenabled,omitempty"` Isenabled bool `json:"isenabled"`
} }

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -90,144 +90,16 @@ func (s *RegionService) AddRegion(p *AddRegionParams) (*AddRegionResponse, error
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type AddRegionResponse struct { type AddRegionResponse struct {
Endpoint string `json:"endpoint,omitempty"` Endpoint string `json:"endpoint"`
Gslbserviceenabled bool `json:"gslbserviceenabled,omitempty"` Gslbserviceenabled bool `json:"gslbserviceenabled"`
Id int `json:"id,omitempty"` Id int `json:"id"`
Name string `json:"name,omitempty"` Name string `json:"name"`
Portableipserviceenabled bool `json:"portableipserviceenabled,omitempty"` Portableipserviceenabled bool `json:"portableipserviceenabled"`
}
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 { type ListRegionsParams struct {
@ -319,6 +191,7 @@ func (s *RegionService) ListRegions(p *ListRegionsParams) (*ListRegionsResponse,
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -328,9 +201,159 @@ type ListRegionsResponse struct {
} }
type Region struct { type Region struct {
Endpoint string `json:"endpoint,omitempty"` Endpoint string `json:"endpoint"`
Gslbserviceenabled bool `json:"gslbserviceenabled,omitempty"` Gslbserviceenabled bool `json:"gslbserviceenabled"`
Id int `json:"id,omitempty"` Id int `json:"id"`
Name string `json:"name,omitempty"` Name string `json:"name"`
Portableipserviceenabled bool `json:"portableipserviceenabled,omitempty"` Portableipserviceenabled bool `json:"portableipserviceenabled"`
}
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"`
Success bool `json:"success"`
}
func (r *RemoveRegionResponse) UnmarshalJSON(b []byte) error {
var m map[string]interface{}
err := json.Unmarshal(b, &m)
if err != nil {
return err
}
if success, ok := m["success"].(string); ok {
m["success"] = success == "true"
b, err = json.Marshal(m)
if err != nil {
return err
}
}
type alias RemoveRegionResponse
return json.Unmarshal(b, (*alias)(r))
}
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"`
Gslbserviceenabled bool `json:"gslbserviceenabled"`
Id int `json:"id"`
Name string `json:"name"`
Portableipserviceenabled bool `json:"portableipserviceenabled"`
} }

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -35,8 +35,7 @@ func (p *AddResourceDetailParams) toURLValues() url.Values {
if v, found := p.p["details"]; found { if v, found := p.p["details"]; found {
i := 0 i := 0
for k, vv := range v.(map[string]string) { for k, vv := range v.(map[string]string) {
u.Set(fmt.Sprintf("details[%d].key", i), k) u.Set(fmt.Sprintf("details[%d].%s", i, k), vv)
u.Set(fmt.Sprintf("details[%d].value", i), vv)
i++ i++
} }
} }
@ -122,103 +121,65 @@ func (s *ResourcemetadataService) AddResourceDetail(p *AddResourceDetailParams)
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type AddResourceDetailResponse struct { type AddResourceDetailResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Success bool `json:"success,omitempty"` Success bool `json:"success"`
} }
type RemoveResourceDetailParams struct { type GetVolumeSnapshotDetailsParams struct {
p map[string]interface{} p map[string]interface{}
} }
func (p *RemoveResourceDetailParams) toURLValues() url.Values { func (p *GetVolumeSnapshotDetailsParams) toURLValues() url.Values {
u := url.Values{} u := url.Values{}
if p.p == nil { if p.p == nil {
return u return u
} }
if v, found := p.p["key"]; found { if v, found := p.p["snapshotid"]; found {
u.Set("key", v.(string)) u.Set("snapshotid", 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 return u
} }
func (p *RemoveResourceDetailParams) SetKey(v string) { func (p *GetVolumeSnapshotDetailsParams) SetSnapshotid(v string) {
if p.p == nil { if p.p == nil {
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
} }
p.p["key"] = v p.p["snapshotid"] = v
return return
} }
func (p *RemoveResourceDetailParams) SetResourceid(v string) { // You should always use this function to get a new GetVolumeSnapshotDetailsParams instance,
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 // as then you are sure you have configured all required params
func (s *ResourcemetadataService) NewRemoveResourceDetailParams(resourceid string, resourcetype string) *RemoveResourceDetailParams { func (s *ResourcemetadataService) NewGetVolumeSnapshotDetailsParams(snapshotid string) *GetVolumeSnapshotDetailsParams {
p := &RemoveResourceDetailParams{} p := &GetVolumeSnapshotDetailsParams{}
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
p.p["resourceid"] = resourceid p.p["snapshotid"] = snapshotid
p.p["resourcetype"] = resourcetype
return p return p
} }
// Removes detail for the Resource. // Get Volume Snapshot Details
func (s *ResourcemetadataService) RemoveResourceDetail(p *RemoveResourceDetailParams) (*RemoveResourceDetailResponse, error) { func (s *ResourcemetadataService) GetVolumeSnapshotDetails(p *GetVolumeSnapshotDetailsParams) (*GetVolumeSnapshotDetailsResponse, error) {
resp, err := s.cs.newRequest("removeResourceDetail", p.toURLValues()) resp, err := s.cs.newRequest("getVolumeSnapshotDetails", p.toURLValues())
if err != nil { if err != nil {
return nil, err return nil, err
} }
var r RemoveResourceDetailResponse var r GetVolumeSnapshotDetailsResponse
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err 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 return &r, nil
} }
type RemoveResourceDetailResponse struct { type GetVolumeSnapshotDetailsResponse struct {
JobID string `json:"jobid,omitempty"` VolumeiScsiName string `json:"volumeiScsiName"`
Displaytext string `json:"displaytext,omitempty"`
Success bool `json:"success,omitempty"`
} }
type ListResourceDetailsParams struct { type ListResourceDetailsParams struct {
@ -401,6 +362,7 @@ func (s *ResourcemetadataService) ListResourceDetails(p *ListResourceDetailsPara
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -410,14 +372,105 @@ type ListResourceDetailsResponse struct {
} }
type ResourceDetail struct { type ResourceDetail struct {
Account string `json:"account,omitempty"` Account string `json:"account"`
Customer string `json:"customer,omitempty"` Customer string `json:"customer"`
Domain string `json:"domain,omitempty"` Domain string `json:"domain"`
Domainid string `json:"domainid,omitempty"` Domainid string `json:"domainid"`
Key string `json:"key,omitempty"` Key string `json:"key"`
Project string `json:"project,omitempty"` Project string `json:"project"`
Projectid string `json:"projectid,omitempty"` Projectid string `json:"projectid"`
Resourceid string `json:"resourceid,omitempty"` Resourceid string `json:"resourceid"`
Resourcetype string `json:"resourcetype,omitempty"` Resourcetype string `json:"resourcetype"`
Value string `json:"value,omitempty"` Value string `json:"value"`
}
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"`
Displaytext string `json:"displaytext"`
Success bool `json:"success"`
} }

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -24,122 +24,6 @@ import (
"strings" "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 { type CreateTagsParams struct {
p map[string]interface{} p map[string]interface{}
} }
@ -239,13 +123,14 @@ func (s *ResourcetagsService) CreateTags(p *CreateTagsParams) (*CreateTagsRespon
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type CreateTagsResponse struct { type CreateTagsResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Success bool `json:"success,omitempty"` Success bool `json:"success"`
} }
type DeleteTagsParams struct { type DeleteTagsParams struct {
@ -335,13 +220,131 @@ func (s *ResourcetagsService) DeleteTags(p *DeleteTagsParams) (*DeleteTagsRespon
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type DeleteTagsResponse struct { type DeleteTagsResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Success bool `json:"success,omitempty"` Success bool `json:"success"`
}
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 append(s.cs.options, 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"`
Name string `json:"name"`
Poolid int64 `json:"poolid"`
} }
type ListTagsParams struct { type ListTagsParams struct {
@ -522,6 +525,7 @@ func (s *ResourcetagsService) ListTags(p *ListTagsParams) (*ListTagsResponse, er
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -531,14 +535,14 @@ type ListTagsResponse struct {
} }
type Tag struct { type Tag struct {
Account string `json:"account,omitempty"` Account string `json:"account"`
Customer string `json:"customer,omitempty"` Customer string `json:"customer"`
Domain string `json:"domain,omitempty"` Domain string `json:"domain"`
Domainid string `json:"domainid,omitempty"` Domainid string `json:"domainid"`
Key string `json:"key,omitempty"` Key string `json:"key"`
Project string `json:"project,omitempty"` Project string `json:"project"`
Projectid string `json:"projectid,omitempty"` Projectid string `json:"projectid"`
Resourceid string `json:"resourceid,omitempty"` Resourceid string `json:"resourceid"`
Resourcetype string `json:"resourcetype,omitempty"` Resourcetype string `json:"resourcetype"`
Value string `json:"value,omitempty"` Value string `json:"value"`
} }

View File

@ -0,0 +1,749 @@
//
// Copyright 2018, 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"
"strings"
)
type CreateRoleParams struct {
p map[string]interface{}
}
func (p *CreateRoleParams) 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["type"]; found {
u.Set("type", v.(string))
}
return u
}
func (p *CreateRoleParams) SetDescription(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["description"] = v
return
}
func (p *CreateRoleParams) SetName(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["name"] = v
return
}
func (p *CreateRoleParams) 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 CreateRoleParams instance,
// as then you are sure you have configured all required params
func (s *RoleService) NewCreateRoleParams(name string, roleType string) *CreateRoleParams {
p := &CreateRoleParams{}
p.p = make(map[string]interface{})
p.p["name"] = name
p.p["type"] = roleType
return p
}
// Creates a role
func (s *RoleService) CreateRole(p *CreateRoleParams) (*CreateRoleResponse, error) {
resp, err := s.cs.newRequest("createRole", p.toURLValues())
if err != nil {
return nil, err
}
var r CreateRoleResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type CreateRoleResponse struct {
Description string `json:"description"`
Id string `json:"id"`
Name string `json:"name"`
Type string `json:"type"`
}
type CreateRolePermissionParams struct {
p map[string]interface{}
}
func (p *CreateRolePermissionParams) 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["permission"]; found {
u.Set("permission", v.(string))
}
if v, found := p.p["roleid"]; found {
u.Set("roleid", v.(string))
}
if v, found := p.p["rule"]; found {
u.Set("rule", v.(string))
}
return u
}
func (p *CreateRolePermissionParams) SetDescription(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["description"] = v
return
}
func (p *CreateRolePermissionParams) SetPermission(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["permission"] = v
return
}
func (p *CreateRolePermissionParams) SetRoleid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["roleid"] = v
return
}
func (p *CreateRolePermissionParams) SetRule(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["rule"] = v
return
}
// You should always use this function to get a new CreateRolePermissionParams instance,
// as then you are sure you have configured all required params
func (s *RoleService) NewCreateRolePermissionParams(permission string, roleid string, rule string) *CreateRolePermissionParams {
p := &CreateRolePermissionParams{}
p.p = make(map[string]interface{})
p.p["permission"] = permission
p.p["roleid"] = roleid
p.p["rule"] = rule
return p
}
// Adds a API permission to a role
func (s *RoleService) CreateRolePermission(p *CreateRolePermissionParams) (*CreateRolePermissionResponse, error) {
resp, err := s.cs.newRequest("createRolePermission", p.toURLValues())
if err != nil {
return nil, err
}
var r CreateRolePermissionResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type CreateRolePermissionResponse struct {
Description string `json:"description"`
Id string `json:"id"`
Permission string `json:"permission"`
Roleid string `json:"roleid"`
Rolename string `json:"rolename"`
Rule string `json:"rule"`
}
type DeleteRoleParams struct {
p map[string]interface{}
}
func (p *DeleteRoleParams) 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 *DeleteRoleParams) 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 DeleteRoleParams instance,
// as then you are sure you have configured all required params
func (s *RoleService) NewDeleteRoleParams(id string) *DeleteRoleParams {
p := &DeleteRoleParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
return p
}
// Deletes a role
func (s *RoleService) DeleteRole(p *DeleteRoleParams) (*DeleteRoleResponse, error) {
resp, err := s.cs.newRequest("deleteRole", p.toURLValues())
if err != nil {
return nil, err
}
var r DeleteRoleResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type DeleteRoleResponse struct {
Displaytext string `json:"displaytext"`
Success bool `json:"success"`
}
func (r *DeleteRoleResponse) UnmarshalJSON(b []byte) error {
var m map[string]interface{}
err := json.Unmarshal(b, &m)
if err != nil {
return err
}
if success, ok := m["success"].(string); ok {
m["success"] = success == "true"
b, err = json.Marshal(m)
if err != nil {
return err
}
}
type alias DeleteRoleResponse
return json.Unmarshal(b, (*alias)(r))
}
type DeleteRolePermissionParams struct {
p map[string]interface{}
}
func (p *DeleteRolePermissionParams) 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 *DeleteRolePermissionParams) 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 DeleteRolePermissionParams instance,
// as then you are sure you have configured all required params
func (s *RoleService) NewDeleteRolePermissionParams(id string) *DeleteRolePermissionParams {
p := &DeleteRolePermissionParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
return p
}
// Deletes a role permission
func (s *RoleService) DeleteRolePermission(p *DeleteRolePermissionParams) (*DeleteRolePermissionResponse, error) {
resp, err := s.cs.newRequest("deleteRolePermission", p.toURLValues())
if err != nil {
return nil, err
}
var r DeleteRolePermissionResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type DeleteRolePermissionResponse struct {
Displaytext string `json:"displaytext"`
Success bool `json:"success"`
}
func (r *DeleteRolePermissionResponse) UnmarshalJSON(b []byte) error {
var m map[string]interface{}
err := json.Unmarshal(b, &m)
if err != nil {
return err
}
if success, ok := m["success"].(string); ok {
m["success"] = success == "true"
b, err = json.Marshal(m)
if err != nil {
return err
}
}
type alias DeleteRolePermissionResponse
return json.Unmarshal(b, (*alias)(r))
}
type ListRolePermissionsParams struct {
p map[string]interface{}
}
func (p *ListRolePermissionsParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["roleid"]; found {
u.Set("roleid", v.(string))
}
return u
}
func (p *ListRolePermissionsParams) SetRoleid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["roleid"] = v
return
}
// You should always use this function to get a new ListRolePermissionsParams instance,
// as then you are sure you have configured all required params
func (s *RoleService) NewListRolePermissionsParams() *ListRolePermissionsParams {
p := &ListRolePermissionsParams{}
p.p = make(map[string]interface{})
return p
}
// Lists role permissions
func (s *RoleService) ListRolePermissions(p *ListRolePermissionsParams) (*ListRolePermissionsResponse, error) {
resp, err := s.cs.newRequest("listRolePermissions", p.toURLValues())
if err != nil {
return nil, err
}
var r ListRolePermissionsResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type ListRolePermissionsResponse struct {
Count int `json:"count"`
RolePermissions []*RolePermission `json:"rolepermission"`
}
type RolePermission struct {
Description string `json:"description"`
Id string `json:"id"`
Permission string `json:"permission"`
Roleid string `json:"roleid"`
Rolename string `json:"rolename"`
Rule string `json:"rule"`
}
type ListRolesParams struct {
p map[string]interface{}
}
func (p *ListRolesParams) 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["type"]; found {
u.Set("type", v.(string))
}
return u
}
func (p *ListRolesParams) SetId(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["id"] = v
return
}
func (p *ListRolesParams) SetName(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["name"] = v
return
}
func (p *ListRolesParams) 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 ListRolesParams instance,
// as then you are sure you have configured all required params
func (s *RoleService) NewListRolesParams() *ListRolesParams {
p := &ListRolesParams{}
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 *RoleService) GetRoleID(name string, opts ...OptionFunc) (string, int, error) {
p := &ListRolesParams{}
p.p = make(map[string]interface{})
p.p["name"] = name
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return "", -1, err
}
}
l, err := s.ListRoles(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.Roles[0].Id, l.Count, nil
}
if l.Count > 1 {
for _, v := range l.Roles {
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 *RoleService) GetRoleByName(name string, opts ...OptionFunc) (*Role, int, error) {
id, count, err := s.GetRoleID(name, opts...)
if err != nil {
return nil, count, err
}
r, count, err := s.GetRoleByID(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 *RoleService) GetRoleByID(id string, opts ...OptionFunc) (*Role, int, error) {
p := &ListRolesParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return nil, -1, err
}
}
l, err := s.ListRoles(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.Roles[0], l.Count, nil
}
return nil, l.Count, fmt.Errorf("There is more then one result for Role UUID: %s!", id)
}
// Lists dynamic roles in CloudStack
func (s *RoleService) ListRoles(p *ListRolesParams) (*ListRolesResponse, error) {
resp, err := s.cs.newRequest("listRoles", p.toURLValues())
if err != nil {
return nil, err
}
var r ListRolesResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type ListRolesResponse struct {
Count int `json:"count"`
Roles []*Role `json:"role"`
}
type Role struct {
Description string `json:"description"`
Id string `json:"id"`
Name string `json:"name"`
Type string `json:"type"`
}
type UpdateRoleParams struct {
p map[string]interface{}
}
func (p *UpdateRoleParams) 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["id"]; found {
u.Set("id", 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 *UpdateRoleParams) SetDescription(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["description"] = v
return
}
func (p *UpdateRoleParams) SetId(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["id"] = v
return
}
func (p *UpdateRoleParams) SetName(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["name"] = v
return
}
func (p *UpdateRoleParams) 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 UpdateRoleParams instance,
// as then you are sure you have configured all required params
func (s *RoleService) NewUpdateRoleParams(id string) *UpdateRoleParams {
p := &UpdateRoleParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
return p
}
// Updates a role
func (s *RoleService) UpdateRole(p *UpdateRoleParams) (*UpdateRoleResponse, error) {
resp, err := s.cs.newRequest("updateRole", p.toURLValues())
if err != nil {
return nil, err
}
var r UpdateRoleResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type UpdateRoleResponse struct {
Description string `json:"description"`
Id string `json:"id"`
Name string `json:"name"`
Type string `json:"type"`
}
type UpdateRolePermissionParams struct {
p map[string]interface{}
}
func (p *UpdateRolePermissionParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["permission"]; found {
u.Set("permission", v.(string))
}
if v, found := p.p["roleid"]; found {
u.Set("roleid", v.(string))
}
if v, found := p.p["ruleid"]; found {
u.Set("ruleid", v.(string))
}
if v, found := p.p["ruleorder"]; found {
vv := strings.Join(v.([]string), ",")
u.Set("ruleorder", vv)
}
return u
}
func (p *UpdateRolePermissionParams) SetPermission(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["permission"] = v
return
}
func (p *UpdateRolePermissionParams) SetRoleid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["roleid"] = v
return
}
func (p *UpdateRolePermissionParams) SetRuleid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["ruleid"] = v
return
}
func (p *UpdateRolePermissionParams) SetRuleorder(v []string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["ruleorder"] = v
return
}
// You should always use this function to get a new UpdateRolePermissionParams instance,
// as then you are sure you have configured all required params
func (s *RoleService) NewUpdateRolePermissionParams(roleid string) *UpdateRolePermissionParams {
p := &UpdateRolePermissionParams{}
p.p = make(map[string]interface{})
p.p["roleid"] = roleid
return p
}
// Updates a role permission order
func (s *RoleService) UpdateRolePermission(p *UpdateRolePermissionParams) (*UpdateRolePermissionResponse, error) {
resp, err := s.cs.newRequest("updateRolePermission", p.toURLValues())
if err != nil {
return nil, err
}
var r UpdateRolePermissionResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type UpdateRolePermissionResponse struct {
Displaytext string `json:"displaytext"`
Success bool `json:"success"`
}
func (r *UpdateRolePermissionResponse) UnmarshalJSON(b []byte) error {
var m map[string]interface{}
err := json.Unmarshal(b, &m)
if err != nil {
return err
}
if success, ok := m["success"].(string); ok {
m["success"] = success == "true"
b, err = json.Marshal(m)
if err != nil {
return err
}
}
type alias UpdateRolePermissionResponse
return json.Unmarshal(b, (*alias)(r))
}

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -22,397 +22,6 @@ import (
"strconv" "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 { type CreateSSHKeyPairParams struct {
p map[string]interface{} p map[string]interface{}
} }
@ -493,11 +102,12 @@ func (s *SSHService) CreateSSHKeyPair(p *CreateSSHKeyPairParams) (*CreateSSHKeyP
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type CreateSSHKeyPairResponse struct { type CreateSSHKeyPairResponse struct {
Privatekey string `json:"privatekey,omitempty"` Privatekey string `json:"privatekey"`
} }
type DeleteSSHKeyPairParams struct { type DeleteSSHKeyPairParams struct {
@ -576,12 +186,32 @@ func (s *SSHService) DeleteSSHKeyPair(p *DeleteSSHKeyPairParams) (*DeleteSSHKeyP
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type DeleteSSHKeyPairResponse struct { type DeleteSSHKeyPairResponse struct {
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Success string `json:"success,omitempty"` Success bool `json:"success"`
}
func (r *DeleteSSHKeyPairResponse) UnmarshalJSON(b []byte) error {
var m map[string]interface{}
err := json.Unmarshal(b, &m)
if err != nil {
return err
}
if success, ok := m["success"].(string); ok {
m["success"] = success == "true"
b, err = json.Marshal(m)
if err != nil {
return err
}
}
type alias DeleteSSHKeyPairResponse
return json.Unmarshal(b, (*alias)(r))
} }
type ListSSHKeyPairsParams struct { type ListSSHKeyPairsParams struct {
@ -729,6 +359,7 @@ func (s *SSHService) ListSSHKeyPairs(p *ListSSHKeyPairsParams) (*ListSSHKeyPairs
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -738,9 +369,333 @@ type ListSSHKeyPairsResponse struct {
} }
type SSHKeyPair struct { type SSHKeyPair struct {
Account string `json:"account,omitempty"` Account string `json:"account"`
Domain string `json:"domain,omitempty"` Domain string `json:"domain"`
Domainid string `json:"domainid,omitempty"` Domainid string `json:"domainid"`
Fingerprint string `json:"fingerprint,omitempty"` Fingerprint string `json:"fingerprint"`
Name string `json:"name,omitempty"` Name string `json:"name"`
}
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"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Fingerprint string `json:"fingerprint"`
Name string `json:"name"`
}
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"`
Account string `json:"account"`
Affinitygroup []ResetSSHKeyForVirtualMachineResponseAffinitygroup `json:"affinitygroup"`
Cpunumber int `json:"cpunumber"`
Cpuspeed int `json:"cpuspeed"`
Cpuused string `json:"cpuused"`
Created string `json:"created"`
Details map[string]string `json:"details"`
Diskioread int64 `json:"diskioread"`
Diskiowrite int64 `json:"diskiowrite"`
Diskkbsread int64 `json:"diskkbsread"`
Diskkbswrite int64 `json:"diskkbswrite"`
Diskofferingid string `json:"diskofferingid"`
Diskofferingname string `json:"diskofferingname"`
Displayname string `json:"displayname"`
Displayvm bool `json:"displayvm"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Forvirtualnetwork bool `json:"forvirtualnetwork"`
Group string `json:"group"`
Groupid string `json:"groupid"`
Guestosid string `json:"guestosid"`
Haenable bool `json:"haenable"`
Hostid string `json:"hostid"`
Hostname string `json:"hostname"`
Hypervisor string `json:"hypervisor"`
Id string `json:"id"`
Instancename string `json:"instancename"`
Isdynamicallyscalable bool `json:"isdynamicallyscalable"`
Isodisplaytext string `json:"isodisplaytext"`
Isoid string `json:"isoid"`
Isoname string `json:"isoname"`
Keypair string `json:"keypair"`
Memory int `json:"memory"`
Memoryintfreekbs int64 `json:"memoryintfreekbs"`
Memorykbs int64 `json:"memorykbs"`
Memorytargetkbs int64 `json:"memorytargetkbs"`
Name string `json:"name"`
Networkkbsread int64 `json:"networkkbsread"`
Networkkbswrite int64 `json:"networkkbswrite"`
Nic []Nic `json:"nic"`
Ostypeid int64 `json:"ostypeid"`
Password string `json:"password"`
Passwordenabled bool `json:"passwordenabled"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Publicip string `json:"publicip"`
Publicipid string `json:"publicipid"`
Rootdeviceid int64 `json:"rootdeviceid"`
Rootdevicetype string `json:"rootdevicetype"`
Securitygroup []ResetSSHKeyForVirtualMachineResponseSecuritygroup `json:"securitygroup"`
Serviceofferingid string `json:"serviceofferingid"`
Serviceofferingname string `json:"serviceofferingname"`
Servicestate string `json:"servicestate"`
State string `json:"state"`
Templatedisplaytext string `json:"templatedisplaytext"`
Templateid string `json:"templateid"`
Templatename string `json:"templatename"`
Userid string `json:"userid"`
Username string `json:"username"`
Vgpu string `json:"vgpu"`
Zoneid string `json:"zoneid"`
Zonename string `json:"zonename"`
}
type ResetSSHKeyForVirtualMachineResponseSecuritygroup struct {
Account string `json:"account"`
Description string `json:"description"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Egressrule []ResetSSHKeyForVirtualMachineResponseSecuritygroupRule `json:"egressrule"`
Id string `json:"id"`
Ingressrule []ResetSSHKeyForVirtualMachineResponseSecuritygroupRule `json:"ingressrule"`
Name string `json:"name"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Tags []Tags `json:"tags"`
Virtualmachinecount int `json:"virtualmachinecount"`
Virtualmachineids []interface{} `json:"virtualmachineids"`
}
type ResetSSHKeyForVirtualMachineResponseSecuritygroupRule struct {
Account string `json:"account"`
Cidr string `json:"cidr"`
Endport int `json:"endport"`
Icmpcode int `json:"icmpcode"`
Icmptype int `json:"icmptype"`
Protocol string `json:"protocol"`
Ruleid string `json:"ruleid"`
Securitygroupname string `json:"securitygroupname"`
Startport int `json:"startport"`
Tags []Tags `json:"tags"`
}
type ResetSSHKeyForVirtualMachineResponseAffinitygroup struct {
Account string `json:"account"`
Description string `json:"description"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Id string `json:"id"`
Name string `json:"name"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Type string `json:"type"`
VirtualmachineIds []string `json:"virtualmachineIds"`
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -368,41 +368,42 @@ func (s *ServiceOfferingService) CreateServiceOffering(p *CreateServiceOfferingP
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type CreateServiceOfferingResponse struct { type CreateServiceOfferingResponse struct {
Cpunumber int `json:"cpunumber,omitempty"` Cpunumber int `json:"cpunumber"`
Cpuspeed int `json:"cpuspeed,omitempty"` Cpuspeed int `json:"cpuspeed"`
Created string `json:"created,omitempty"` Created string `json:"created"`
Defaultuse bool `json:"defaultuse,omitempty"` Defaultuse bool `json:"defaultuse"`
Deploymentplanner string `json:"deploymentplanner,omitempty"` Deploymentplanner string `json:"deploymentplanner"`
DiskBytesReadRate int64 `json:"diskBytesReadRate,omitempty"` DiskBytesReadRate int64 `json:"diskBytesReadRate"`
DiskBytesWriteRate int64 `json:"diskBytesWriteRate,omitempty"` DiskBytesWriteRate int64 `json:"diskBytesWriteRate"`
DiskIopsReadRate int64 `json:"diskIopsReadRate,omitempty"` DiskIopsReadRate int64 `json:"diskIopsReadRate"`
DiskIopsWriteRate int64 `json:"diskIopsWriteRate,omitempty"` DiskIopsWriteRate int64 `json:"diskIopsWriteRate"`
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Domain string `json:"domain,omitempty"` Domain string `json:"domain"`
Domainid string `json:"domainid,omitempty"` Domainid string `json:"domainid"`
Hosttags string `json:"hosttags,omitempty"` Hosttags string `json:"hosttags"`
Hypervisorsnapshotreserve int `json:"hypervisorsnapshotreserve,omitempty"` Hypervisorsnapshotreserve int `json:"hypervisorsnapshotreserve"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Iscustomized bool `json:"iscustomized,omitempty"` Iscustomized bool `json:"iscustomized"`
Iscustomizediops bool `json:"iscustomizediops,omitempty"` Iscustomizediops bool `json:"iscustomizediops"`
Issystem bool `json:"issystem,omitempty"` Issystem bool `json:"issystem"`
Isvolatile bool `json:"isvolatile,omitempty"` Isvolatile bool `json:"isvolatile"`
Limitcpuuse bool `json:"limitcpuuse,omitempty"` Limitcpuuse bool `json:"limitcpuuse"`
Maxiops int64 `json:"maxiops,omitempty"` Maxiops int64 `json:"maxiops"`
Memory int `json:"memory,omitempty"` Memory int `json:"memory"`
Miniops int64 `json:"miniops,omitempty"` Miniops int64 `json:"miniops"`
Name string `json:"name,omitempty"` Name string `json:"name"`
Networkrate int `json:"networkrate,omitempty"` Networkrate int `json:"networkrate"`
Offerha bool `json:"offerha,omitempty"` Offerha bool `json:"offerha"`
Provisioningtype string `json:"provisioningtype,omitempty"` Provisioningtype string `json:"provisioningtype"`
Serviceofferingdetails map[string]string `json:"serviceofferingdetails,omitempty"` Serviceofferingdetails map[string]string `json:"serviceofferingdetails"`
Storagetype string `json:"storagetype,omitempty"` Storagetype string `json:"storagetype"`
Systemvmtype string `json:"systemvmtype,omitempty"` Systemvmtype string `json:"systemvmtype"`
Tags string `json:"tags,omitempty"` Tags string `json:"tags"`
} }
type DeleteServiceOfferingParams struct { type DeleteServiceOfferingParams struct {
@ -448,126 +449,32 @@ func (s *ServiceOfferingService) DeleteServiceOffering(p *DeleteServiceOfferingP
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type DeleteServiceOfferingResponse struct { type DeleteServiceOfferingResponse struct {
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Success string `json:"success,omitempty"` Success bool `json:"success"`
} }
type UpdateServiceOfferingParams struct { func (r *DeleteServiceOfferingResponse) UnmarshalJSON(b []byte) error {
p map[string]interface{} var m map[string]interface{}
} err := json.Unmarshal(b, &m)
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 { if err != nil {
return nil, err return err
} }
var r UpdateServiceOfferingResponse if success, ok := m["success"].(string); ok {
if err := json.Unmarshal(resp, &r); err != nil { m["success"] = success == "true"
return nil, err b, err = json.Marshal(m)
if err != nil {
return err
}
} }
return &r, nil
}
type UpdateServiceOfferingResponse struct { type alias DeleteServiceOfferingResponse
Cpunumber int `json:"cpunumber,omitempty"` return json.Unmarshal(b, (*alias)(r))
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 { type ListServiceOfferingsParams struct {
@ -723,7 +630,7 @@ func (s *ServiceOfferingService) GetServiceOfferingID(name string, opts ...Optio
p.p["name"] = name p.p["name"] = name
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return "", -1, err return "", -1, err
} }
@ -773,7 +680,7 @@ func (s *ServiceOfferingService) GetServiceOfferingByID(id string, opts ...Optio
p.p["id"] = id p.p["id"] = id
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return nil, -1, err return nil, -1, err
} }
@ -810,6 +717,7 @@ func (s *ServiceOfferingService) ListServiceOfferings(p *ListServiceOfferingsPar
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -819,35 +727,150 @@ type ListServiceOfferingsResponse struct {
} }
type ServiceOffering struct { type ServiceOffering struct {
Cpunumber int `json:"cpunumber,omitempty"` Cpunumber int `json:"cpunumber"`
Cpuspeed int `json:"cpuspeed,omitempty"` Cpuspeed int `json:"cpuspeed"`
Created string `json:"created,omitempty"` Created string `json:"created"`
Defaultuse bool `json:"defaultuse,omitempty"` Defaultuse bool `json:"defaultuse"`
Deploymentplanner string `json:"deploymentplanner,omitempty"` Deploymentplanner string `json:"deploymentplanner"`
DiskBytesReadRate int64 `json:"diskBytesReadRate,omitempty"` DiskBytesReadRate int64 `json:"diskBytesReadRate"`
DiskBytesWriteRate int64 `json:"diskBytesWriteRate,omitempty"` DiskBytesWriteRate int64 `json:"diskBytesWriteRate"`
DiskIopsReadRate int64 `json:"diskIopsReadRate,omitempty"` DiskIopsReadRate int64 `json:"diskIopsReadRate"`
DiskIopsWriteRate int64 `json:"diskIopsWriteRate,omitempty"` DiskIopsWriteRate int64 `json:"diskIopsWriteRate"`
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Domain string `json:"domain,omitempty"` Domain string `json:"domain"`
Domainid string `json:"domainid,omitempty"` Domainid string `json:"domainid"`
Hosttags string `json:"hosttags,omitempty"` Hosttags string `json:"hosttags"`
Hypervisorsnapshotreserve int `json:"hypervisorsnapshotreserve,omitempty"` Hypervisorsnapshotreserve int `json:"hypervisorsnapshotreserve"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Iscustomized bool `json:"iscustomized,omitempty"` Iscustomized bool `json:"iscustomized"`
Iscustomizediops bool `json:"iscustomizediops,omitempty"` Iscustomizediops bool `json:"iscustomizediops"`
Issystem bool `json:"issystem,omitempty"` Issystem bool `json:"issystem"`
Isvolatile bool `json:"isvolatile,omitempty"` Isvolatile bool `json:"isvolatile"`
Limitcpuuse bool `json:"limitcpuuse,omitempty"` Limitcpuuse bool `json:"limitcpuuse"`
Maxiops int64 `json:"maxiops,omitempty"` Maxiops int64 `json:"maxiops"`
Memory int `json:"memory,omitempty"` Memory int `json:"memory"`
Miniops int64 `json:"miniops,omitempty"` Miniops int64 `json:"miniops"`
Name string `json:"name,omitempty"` Name string `json:"name"`
Networkrate int `json:"networkrate,omitempty"` Networkrate int `json:"networkrate"`
Offerha bool `json:"offerha,omitempty"` Offerha bool `json:"offerha"`
Provisioningtype string `json:"provisioningtype,omitempty"` Provisioningtype string `json:"provisioningtype"`
Serviceofferingdetails map[string]string `json:"serviceofferingdetails,omitempty"` Serviceofferingdetails map[string]string `json:"serviceofferingdetails"`
Storagetype string `json:"storagetype,omitempty"` Storagetype string `json:"storagetype"`
Systemvmtype string `json:"systemvmtype,omitempty"` Systemvmtype string `json:"systemvmtype"`
Tags string `json:"tags,omitempty"` Tags string `json:"tags"`
}
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"`
Cpuspeed int `json:"cpuspeed"`
Created string `json:"created"`
Defaultuse bool `json:"defaultuse"`
Deploymentplanner string `json:"deploymentplanner"`
DiskBytesReadRate int64 `json:"diskBytesReadRate"`
DiskBytesWriteRate int64 `json:"diskBytesWriteRate"`
DiskIopsReadRate int64 `json:"diskIopsReadRate"`
DiskIopsWriteRate int64 `json:"diskIopsWriteRate"`
Displaytext string `json:"displaytext"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Hosttags string `json:"hosttags"`
Hypervisorsnapshotreserve int `json:"hypervisorsnapshotreserve"`
Id string `json:"id"`
Iscustomized bool `json:"iscustomized"`
Iscustomizediops bool `json:"iscustomizediops"`
Issystem bool `json:"issystem"`
Isvolatile bool `json:"isvolatile"`
Limitcpuuse bool `json:"limitcpuuse"`
Maxiops int64 `json:"maxiops"`
Memory int `json:"memory"`
Miniops int64 `json:"miniops"`
Name string `json:"name"`
Networkrate int `json:"networkrate"`
Offerha bool `json:"offerha"`
Provisioningtype string `json:"provisioningtype"`
Serviceofferingdetails map[string]string `json:"serviceofferingdetails"`
Storagetype string `json:"storagetype"`
Systemvmtype string `json:"systemvmtype"`
Tags string `json:"tags"`
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -22,6 +22,198 @@ import (
"strconv" "strconv"
) )
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"`
Allocatediops int64 `json:"allocatediops"`
Capacityiops int64 `json:"capacityiops"`
Clusterid string `json:"clusterid"`
Clustername string `json:"clustername"`
Created string `json:"created"`
Disksizeallocated int64 `json:"disksizeallocated"`
Disksizetotal int64 `json:"disksizetotal"`
Disksizeused int64 `json:"disksizeused"`
Hypervisor string `json:"hypervisor"`
Id string `json:"id"`
Ipaddress string `json:"ipaddress"`
Name string `json:"name"`
Overprovisionfactor string `json:"overprovisionfactor"`
Path string `json:"path"`
Podid string `json:"podid"`
Podname string `json:"podname"`
Provider string `json:"provider"`
Scope string `json:"scope"`
State string `json:"state"`
Storagecapabilities map[string]string `json:"storagecapabilities"`
Suitableformigration bool `json:"suitableformigration"`
Tags string `json:"tags"`
Type string `json:"type"`
Zoneid string `json:"zoneid"`
Zonename string `json:"zonename"`
}
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"`
Allocatediops int64 `json:"allocatediops"`
Capacityiops int64 `json:"capacityiops"`
Clusterid string `json:"clusterid"`
Clustername string `json:"clustername"`
Created string `json:"created"`
Disksizeallocated int64 `json:"disksizeallocated"`
Disksizetotal int64 `json:"disksizetotal"`
Disksizeused int64 `json:"disksizeused"`
Hypervisor string `json:"hypervisor"`
Id string `json:"id"`
Ipaddress string `json:"ipaddress"`
Name string `json:"name"`
Overprovisionfactor string `json:"overprovisionfactor"`
Path string `json:"path"`
Podid string `json:"podid"`
Podname string `json:"podname"`
Provider string `json:"provider"`
Scope string `json:"scope"`
State string `json:"state"`
Storagecapabilities map[string]string `json:"storagecapabilities"`
Suitableformigration bool `json:"suitableformigration"`
Tags string `json:"tags"`
Type string `json:"type"`
Zoneid string `json:"zoneid"`
Zonename string `json:"zonename"`
}
type ListStorageProvidersParams struct { type ListStorageProvidersParams struct {
p map[string]interface{} p map[string]interface{}
} }
@ -100,6 +292,7 @@ func (s *StoragePoolService) ListStorageProviders(p *ListStorageProvidersParams)
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -109,192 +302,6 @@ type ListStorageProvidersResponse struct {
} }
type StorageProvider struct { type StorageProvider struct {
Name string `json:"name,omitempty"` Name string `json:"name"`
Type string `json:"type,omitempty"` Type string `json:"type"`
}
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"`
} }

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -121,12 +121,84 @@ func (s *StratosphereSSPService) AddStratosphereSsp(p *AddStratosphereSspParams)
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type AddStratosphereSspResponse struct { type AddStratosphereSspResponse struct {
Hostid string `json:"hostid,omitempty"` Hostid string `json:"hostid"`
Name string `json:"name,omitempty"` Name string `json:"name"`
Url string `json:"url,omitempty"` Url string `json:"url"`
Zoneid string `json:"zoneid,omitempty"` Zoneid string `json:"zoneid"`
}
type DeleteStratosphereSspParams struct {
p map[string]interface{}
}
func (p *DeleteStratosphereSspParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["hostid"]; found {
u.Set("hostid", v.(string))
}
return u
}
func (p *DeleteStratosphereSspParams) SetHostid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["hostid"] = v
return
}
// You should always use this function to get a new DeleteStratosphereSspParams instance,
// as then you are sure you have configured all required params
func (s *StratosphereSSPService) NewDeleteStratosphereSspParams(hostid string) *DeleteStratosphereSspParams {
p := &DeleteStratosphereSspParams{}
p.p = make(map[string]interface{})
p.p["hostid"] = hostid
return p
}
// Removes stratosphere ssp server
func (s *StratosphereSSPService) DeleteStratosphereSsp(p *DeleteStratosphereSspParams) (*DeleteStratosphereSspResponse, error) {
resp, err := s.cs.newRequest("deleteStratosphereSsp", p.toURLValues())
if err != nil {
return nil, err
}
var r DeleteStratosphereSspResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type DeleteStratosphereSspResponse struct {
Displaytext string `json:"displaytext"`
Success bool `json:"success"`
}
func (r *DeleteStratosphereSspResponse) UnmarshalJSON(b []byte) error {
var m map[string]interface{}
err := json.Unmarshal(b, &m)
if err != nil {
return err
}
if success, ok := m["success"].(string); ok {
m["success"] = success == "true"
b, err = json.Marshal(m)
if err != nil {
return err
}
}
type alias DeleteStratosphereSspResponse
return json.Unmarshal(b, (*alias)(r))
} }

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -99,19 +99,19 @@ func (s *SwiftService) AddSwift(p *AddSwiftParams) (*AddSwiftResponse, error) {
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type AddSwiftResponse struct { type AddSwiftResponse struct {
Details []string `json:"details,omitempty"` Id string `json:"id"`
Id string `json:"id,omitempty"` Name string `json:"name"`
Name string `json:"name,omitempty"` Protocol string `json:"protocol"`
Protocol string `json:"protocol,omitempty"` Providername string `json:"providername"`
Providername string `json:"providername,omitempty"` Scope string `json:"scope"`
Scope string `json:"scope,omitempty"` Url string `json:"url"`
Url string `json:"url,omitempty"` Zoneid string `json:"zoneid"`
Zoneid string `json:"zoneid,omitempty"` Zonename string `json:"zonename"`
Zonename string `json:"zonename,omitempty"`
} }
type ListSwiftsParams struct { type ListSwiftsParams struct {
@ -188,7 +188,7 @@ func (s *SwiftService) GetSwiftID(keyword string, opts ...OptionFunc) (string, i
p.p["keyword"] = keyword p.p["keyword"] = keyword
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return "", -1, err return "", -1, err
} }
@ -228,6 +228,7 @@ func (s *SwiftService) ListSwifts(p *ListSwiftsParams) (*ListSwiftsResponse, err
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -237,13 +238,12 @@ type ListSwiftsResponse struct {
} }
type Swift struct { type Swift struct {
Details []string `json:"details,omitempty"` Id string `json:"id"`
Id string `json:"id,omitempty"` Name string `json:"name"`
Name string `json:"name,omitempty"` Protocol string `json:"protocol"`
Protocol string `json:"protocol,omitempty"` Providername string `json:"providername"`
Providername string `json:"providername,omitempty"` Scope string `json:"scope"`
Scope string `json:"scope,omitempty"` Url string `json:"url"`
Url string `json:"url,omitempty"` Zoneid string `json:"zoneid"`
Zoneid string `json:"zoneid,omitempty"` Zonename string `json:"zonename"`
Zonename string `json:"zonename,omitempty"`
} }

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -156,6 +156,7 @@ func (s *SystemCapacityService) ListCapacity(p *ListCapacityParams) (*ListCapaci
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -165,14 +166,16 @@ type ListCapacityResponse struct {
} }
type Capacity struct { type Capacity struct {
Capacitytotal int64 `json:"capacitytotal,omitempty"` Capacityallocated int64 `json:"capacityallocated"`
Capacityused int64 `json:"capacityused,omitempty"` Capacitytotal int64 `json:"capacitytotal"`
Clusterid string `json:"clusterid,omitempty"` Capacityused int64 `json:"capacityused"`
Clustername string `json:"clustername,omitempty"` Clusterid string `json:"clusterid"`
Percentused string `json:"percentused,omitempty"` Clustername string `json:"clustername"`
Podid string `json:"podid,omitempty"` Name string `json:"name"`
Podname string `json:"podname,omitempty"` Percentused string `json:"percentused"`
Type int `json:"type,omitempty"` Podid string `json:"podid"`
Zoneid string `json:"zoneid,omitempty"` Podname string `json:"podname"`
Zonename string `json:"zonename,omitempty"` Type int `json:"type"`
Zoneid string `json:"zoneid"`
Zonename string `json:"zonename"`
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -114,384 +114,15 @@ func (s *UCSService) AddUcsManager(p *AddUcsManagerParams) (*AddUcsManagerRespon
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type AddUcsManagerResponse struct { type AddUcsManagerResponse struct {
Id string `json:"id,omitempty"` Id string `json:"id"`
Name string `json:"name,omitempty"` Name string `json:"name"`
Url string `json:"url,omitempty"` Url string `json:"url"`
Zoneid string `json:"zoneid,omitempty"` Zoneid string `json:"zoneid"`
}
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 { type AssociateUcsProfileToBladeParams struct {
@ -581,14 +212,459 @@ func (s *UCSService) AssociateUcsProfileToBlade(p *AssociateUcsProfileToBladePar
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type AssociateUcsProfileToBladeResponse struct { type AssociateUcsProfileToBladeResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Bladedn string `json:"bladedn,omitempty"` Bladedn string `json:"bladedn"`
Hostid string `json:"hostid,omitempty"` Hostid string `json:"hostid"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Profiledn string `json:"profiledn,omitempty"` Profiledn string `json:"profiledn"`
Ucsmanagerid string `json:"ucsmanagerid,omitempty"` Ucsmanagerid string `json:"ucsmanagerid"`
}
type DeleteUcsManagerParams struct {
p map[string]interface{}
}
func (p *DeleteUcsManagerParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["ucsmanagerid"]; found {
u.Set("ucsmanagerid", v.(string))
}
return u
}
func (p *DeleteUcsManagerParams) 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 DeleteUcsManagerParams instance,
// as then you are sure you have configured all required params
func (s *UCSService) NewDeleteUcsManagerParams(ucsmanagerid string) *DeleteUcsManagerParams {
p := &DeleteUcsManagerParams{}
p.p = make(map[string]interface{})
p.p["ucsmanagerid"] = ucsmanagerid
return p
}
// Delete a Ucs manager
func (s *UCSService) DeleteUcsManager(p *DeleteUcsManagerParams) (*DeleteUcsManagerResponse, error) {
resp, err := s.cs.newRequest("deleteUcsManager", p.toURLValues())
if err != nil {
return nil, err
}
var r DeleteUcsManagerResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type DeleteUcsManagerResponse struct {
Displaytext string `json:"displaytext"`
Success bool `json:"success"`
}
func (r *DeleteUcsManagerResponse) UnmarshalJSON(b []byte) error {
var m map[string]interface{}
err := json.Unmarshal(b, &m)
if err != nil {
return err
}
if success, ok := m["success"].(string); ok {
m["success"] = success == "true"
b, err = json.Marshal(m)
if err != nil {
return err
}
}
type alias DeleteUcsManagerResponse
return json.Unmarshal(b, (*alias)(r))
}
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"`
Hostid string `json:"hostid"`
Id string `json:"id"`
Profiledn string `json:"profiledn"`
Ucsmanagerid string `json:"ucsmanagerid"`
}
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 append(s.cs.options, 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 append(s.cs.options, 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"`
Name string `json:"name"`
Url string `json:"url"`
Zoneid string `json:"zoneid"`
}
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"`
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -45,6 +45,10 @@ func (p *CreateVlanIpRangeParams) toURLValues() url.Values {
if v, found := p.p["endipv6"]; found { if v, found := p.p["endipv6"]; found {
u.Set("endipv6", v.(string)) u.Set("endipv6", v.(string))
} }
if v, found := p.p["forsystemvms"]; found {
vv := strconv.FormatBool(v.(bool))
u.Set("forsystemvms", vv)
}
if v, found := p.p["forvirtualnetwork"]; found { if v, found := p.p["forvirtualnetwork"]; found {
vv := strconv.FormatBool(v.(bool)) vv := strconv.FormatBool(v.(bool))
u.Set("forvirtualnetwork", vv) u.Set("forvirtualnetwork", vv)
@ -120,6 +124,14 @@ func (p *CreateVlanIpRangeParams) SetEndipv6(v string) {
return return
} }
func (p *CreateVlanIpRangeParams) SetForsystemvms(v bool) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["forsystemvms"] = v
return
}
func (p *CreateVlanIpRangeParams) SetForvirtualnetwork(v bool) { func (p *CreateVlanIpRangeParams) SetForvirtualnetwork(v bool) {
if p.p == nil { if p.p == nil {
p.p = make(map[string]interface{}) p.p = make(map[string]interface{})
@ -243,32 +255,138 @@ func (s *VLANService) CreateVlanIpRange(p *CreateVlanIpRangeParams) (*CreateVlan
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type CreateVlanIpRangeResponse struct { type CreateVlanIpRangeResponse struct {
Account string `json:"account,omitempty"` Account string `json:"account"`
Description string `json:"description,omitempty"` Description string `json:"description"`
Domain string `json:"domain,omitempty"` Domain string `json:"domain"`
Domainid string `json:"domainid,omitempty"` Domainid string `json:"domainid"`
Endip string `json:"endip,omitempty"` Endip string `json:"endip"`
Endipv6 string `json:"endipv6,omitempty"` Endipv6 string `json:"endipv6"`
Forvirtualnetwork bool `json:"forvirtualnetwork,omitempty"` Forsystemvms bool `json:"forsystemvms"`
Gateway string `json:"gateway,omitempty"` Forvirtualnetwork bool `json:"forvirtualnetwork"`
Id string `json:"id,omitempty"` Gateway string `json:"gateway"`
Ip6cidr string `json:"ip6cidr,omitempty"` Id string `json:"id"`
Ip6gateway string `json:"ip6gateway,omitempty"` Ip6cidr string `json:"ip6cidr"`
Netmask string `json:"netmask,omitempty"` Ip6gateway string `json:"ip6gateway"`
Networkid string `json:"networkid,omitempty"` Netmask string `json:"netmask"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"` Networkid string `json:"networkid"`
Podid string `json:"podid,omitempty"` Physicalnetworkid string `json:"physicalnetworkid"`
Podname string `json:"podname,omitempty"` Podid string `json:"podid"`
Project string `json:"project,omitempty"` Podname string `json:"podname"`
Projectid string `json:"projectid,omitempty"` Project string `json:"project"`
Startip string `json:"startip,omitempty"` Projectid string `json:"projectid"`
Startipv6 string `json:"startipv6,omitempty"` Startip string `json:"startip"`
Vlan string `json:"vlan,omitempty"` Startipv6 string `json:"startipv6"`
Zoneid string `json:"zoneid,omitempty"` Vlan string `json:"vlan"`
Zoneid string `json:"zoneid"`
}
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(physicalnetworkid string, vlanrange string) *DedicateGuestVlanRangeParams {
p := &DedicateGuestVlanRangeParams{}
p.p = make(map[string]interface{})
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"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Guestvlanrange string `json:"guestvlanrange"`
Id string `json:"id"`
Physicalnetworkid int64 `json:"physicalnetworkid"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Zoneid int64 `json:"zoneid"`
} }
type DeleteVlanIpRangeParams struct { type DeleteVlanIpRangeParams struct {
@ -314,12 +432,229 @@ func (s *VLANService) DeleteVlanIpRange(p *DeleteVlanIpRangeParams) (*DeleteVlan
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type DeleteVlanIpRangeResponse struct { type DeleteVlanIpRangeResponse struct {
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Success string `json:"success,omitempty"` Success bool `json:"success"`
}
func (r *DeleteVlanIpRangeResponse) UnmarshalJSON(b []byte) error {
var m map[string]interface{}
err := json.Unmarshal(b, &m)
if err != nil {
return err
}
if success, ok := m["success"].(string); ok {
m["success"] = success == "true"
b, err = json.Marshal(m)
if err != nil {
return err
}
}
type alias DeleteVlanIpRangeResponse
return json.Unmarshal(b, (*alias)(r))
}
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 append(s.cs.options, 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"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Guestvlanrange string `json:"guestvlanrange"`
Id string `json:"id"`
Physicalnetworkid int64 `json:"physicalnetworkid"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Zoneid int64 `json:"zoneid"`
} }
type ListVlanIpRangesParams struct { type ListVlanIpRangesParams struct {
@ -495,7 +830,7 @@ func (s *VLANService) GetVlanIpRangeByID(id string, opts ...OptionFunc) (*VlanIp
p.p["id"] = id p.p["id"] = id
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return nil, -1, err return nil, -1, err
} }
@ -532,6 +867,7 @@ func (s *VLANService) ListVlanIpRanges(p *ListVlanIpRangesParams) (*ListVlanIpRa
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -541,133 +877,29 @@ type ListVlanIpRangesResponse struct {
} }
type VlanIpRange struct { type VlanIpRange struct {
Account string `json:"account,omitempty"` Account string `json:"account"`
Description string `json:"description,omitempty"` Description string `json:"description"`
Domain string `json:"domain,omitempty"` Domain string `json:"domain"`
Domainid string `json:"domainid,omitempty"` Domainid string `json:"domainid"`
Endip string `json:"endip,omitempty"` Endip string `json:"endip"`
Endipv6 string `json:"endipv6,omitempty"` Endipv6 string `json:"endipv6"`
Forvirtualnetwork bool `json:"forvirtualnetwork,omitempty"` Forsystemvms bool `json:"forsystemvms"`
Gateway string `json:"gateway,omitempty"` Forvirtualnetwork bool `json:"forvirtualnetwork"`
Id string `json:"id,omitempty"` Gateway string `json:"gateway"`
Ip6cidr string `json:"ip6cidr,omitempty"` Id string `json:"id"`
Ip6gateway string `json:"ip6gateway,omitempty"` Ip6cidr string `json:"ip6cidr"`
Netmask string `json:"netmask,omitempty"` Ip6gateway string `json:"ip6gateway"`
Networkid string `json:"networkid,omitempty"` Netmask string `json:"netmask"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"` Networkid string `json:"networkid"`
Podid string `json:"podid,omitempty"` Physicalnetworkid string `json:"physicalnetworkid"`
Podname string `json:"podname,omitempty"` Podid string `json:"podid"`
Project string `json:"project,omitempty"` Podname string `json:"podname"`
Projectid string `json:"projectid,omitempty"` Project string `json:"project"`
Startip string `json:"startip,omitempty"` Projectid string `json:"projectid"`
Startipv6 string `json:"startipv6,omitempty"` Startip string `json:"startip"`
Vlan string `json:"vlan,omitempty"` Startipv6 string `json:"startipv6"`
Zoneid string `json:"zoneid,omitempty"` Vlan string `json:"vlan"`
} Zoneid string `json:"zoneid"`
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 { type ReleaseDedicatedGuestVlanRangeParams struct {
@ -728,207 +960,12 @@ func (s *VLANService) ReleaseDedicatedGuestVlanRange(p *ReleaseDedicatedGuestVla
return nil, err return nil, err
} }
} }
return &r, nil return &r, nil
} }
type ReleaseDedicatedGuestVlanRangeResponse struct { type ReleaseDedicatedGuestVlanRangeResponse struct {
JobID string `json:"jobid,omitempty"` JobID string `json:"jobid"`
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Success bool `json:"success,omitempty"` Success bool `json:"success"`
}
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"`
} }

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -100,18 +100,19 @@ func (s *VMGroupService) CreateInstanceGroup(p *CreateInstanceGroupParams) (*Cre
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type CreateInstanceGroupResponse struct { type CreateInstanceGroupResponse struct {
Account string `json:"account,omitempty"` Account string `json:"account"`
Created string `json:"created,omitempty"` Created string `json:"created"`
Domain string `json:"domain,omitempty"` Domain string `json:"domain"`
Domainid string `json:"domainid,omitempty"` Domainid string `json:"domainid"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Name string `json:"name,omitempty"` Name string `json:"name"`
Project string `json:"project,omitempty"` Project string `json:"project"`
Projectid string `json:"projectid,omitempty"` Projectid string `json:"projectid"`
} }
type DeleteInstanceGroupParams struct { type DeleteInstanceGroupParams struct {
@ -157,80 +158,32 @@ func (s *VMGroupService) DeleteInstanceGroup(p *DeleteInstanceGroupParams) (*Del
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
type DeleteInstanceGroupResponse struct { type DeleteInstanceGroupResponse struct {
Displaytext string `json:"displaytext,omitempty"` Displaytext string `json:"displaytext"`
Success string `json:"success,omitempty"` Success bool `json:"success"`
} }
type UpdateInstanceGroupParams struct { func (r *DeleteInstanceGroupResponse) UnmarshalJSON(b []byte) error {
p map[string]interface{} var m map[string]interface{}
} err := json.Unmarshal(b, &m)
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 { if err != nil {
return nil, err return err
} }
var r UpdateInstanceGroupResponse if success, ok := m["success"].(string); ok {
if err := json.Unmarshal(resp, &r); err != nil { m["success"] = success == "true"
return nil, err b, err = json.Marshal(m)
if err != nil {
return err
}
} }
return &r, nil
}
type UpdateInstanceGroupResponse struct { type alias DeleteInstanceGroupResponse
Account string `json:"account,omitempty"` return json.Unmarshal(b, (*alias)(r))
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 { type ListInstanceGroupsParams struct {
@ -374,7 +327,7 @@ func (s *VMGroupService) GetInstanceGroupID(name string, opts ...OptionFunc) (st
p.p["name"] = name p.p["name"] = name
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return "", -1, err return "", -1, err
} }
@ -424,7 +377,7 @@ func (s *VMGroupService) GetInstanceGroupByID(id string, opts ...OptionFunc) (*I
p.p["id"] = id p.p["id"] = id
for _, fn := range opts { for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil { if err := fn(s.cs, p); err != nil {
return nil, -1, err return nil, -1, err
} }
@ -461,6 +414,7 @@ func (s *VMGroupService) ListInstanceGroups(p *ListInstanceGroupsParams) (*ListI
if err := json.Unmarshal(resp, &r); err != nil { if err := json.Unmarshal(resp, &r); err != nil {
return nil, err return nil, err
} }
return &r, nil return &r, nil
} }
@ -470,12 +424,81 @@ type ListInstanceGroupsResponse struct {
} }
type InstanceGroup struct { type InstanceGroup struct {
Account string `json:"account,omitempty"` Account string `json:"account"`
Created string `json:"created,omitempty"` Created string `json:"created"`
Domain string `json:"domain,omitempty"` Domain string `json:"domain"`
Domainid string `json:"domainid,omitempty"` Domainid string `json:"domainid"`
Id string `json:"id,omitempty"` Id string `json:"id"`
Name string `json:"name,omitempty"` Name string `json:"name"`
Project string `json:"project,omitempty"` Project string `json:"project"`
Projectid string `json:"projectid,omitempty"` Projectid string `json:"projectid"`
}
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"`
Created string `json:"created"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Id string `json:"id"`
Name string `json:"name"`
Project string `json:"project"`
Projectid string `json:"projectid"`
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
// //
// Copyright 2016, Sander van Harmelen // Copyright 2018, Sander van Harmelen
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -26,7 +26,9 @@ import (
"errors" "errors"
"fmt" "fmt"
"io/ioutil" "io/ioutil"
"net"
"net/http" "net/http"
"net/http/cookiejar"
"net/url" "net/url"
"regexp" "regexp"
"sort" "sort"
@ -65,80 +67,98 @@ type CloudStackClient struct {
apiKey string // Api key apiKey string // Api key
secret string // Secret key secret string // Secret key
async bool // Wait for async calls to finish async bool // Wait for async calls to finish
options []OptionFunc // A list of option functions to apply to all API calls
timeout int64 // Max waiting timeout in seconds for async jobs to finish; defaults to 300 seconds timeout int64 // Max waiting timeout in seconds for async jobs to finish; defaults to 300 seconds
APIDiscovery *APIDiscoveryService APIDiscovery *APIDiscoveryService
Account *AccountService Account *AccountService
Address *AddressService Address *AddressService
AffinityGroup *AffinityGroupService AffinityGroup *AffinityGroupService
Alert *AlertService Alert *AlertService
Asyncjob *AsyncjobService Asyncjob *AsyncjobService
Authentication *AuthenticationService Authentication *AuthenticationService
AutoScale *AutoScaleService AutoScale *AutoScaleService
Baremetal *BaremetalService Baremetal *BaremetalService
Certificate *CertificateService BigSwitchBCF *BigSwitchBCFService
CloudIdentifier *CloudIdentifierService BrocadeVCS *BrocadeVCSService
Cluster *ClusterService Certificate *CertificateService
Configuration *ConfigurationService CloudIdentifier *CloudIdentifierService
DiskOffering *DiskOfferingService Cluster *ClusterService
Domain *DomainService Configuration *ConfigurationService
Event *EventService Custom *CustomService
Firewall *FirewallService DiskOffering *DiskOfferingService
GuestOS *GuestOSService Domain *DomainService
Host *HostService Event *EventService
Hypervisor *HypervisorService Firewall *FirewallService
ISO *ISOService GuestOS *GuestOSService
ImageStore *ImageStoreService Host *HostService
InternalLB *InternalLBService Hypervisor *HypervisorService
LDAP *LDAPService ISO *ISOService
Limit *LimitService ImageStore *ImageStoreService
LoadBalancer *LoadBalancerService InternalLB *InternalLBService
NAT *NATService LDAP *LDAPService
NetworkACL *NetworkACLService Limit *LimitService
NetworkDevice *NetworkDeviceService LoadBalancer *LoadBalancerService
NetworkOffering *NetworkOfferingService NAT *NATService
Network *NetworkService NetworkACL *NetworkACLService
Nic *NicService NetworkDevice *NetworkDeviceService
NiciraNVP *NiciraNVPService NetworkOffering *NetworkOfferingService
OvsElement *OvsElementService Network *NetworkService
Pod *PodService Nic *NicService
Pool *PoolService NiciraNVP *NiciraNVPService
PortableIP *PortableIPService NuageVSP *NuageVSPService
Project *ProjectService OutofbandManagement *OutofbandManagementService
Quota *QuotaService OvsElement *OvsElementService
Region *RegionService Pod *PodService
Resourcemetadata *ResourcemetadataService Pool *PoolService
Resourcetags *ResourcetagsService PortableIP *PortableIPService
Router *RouterService Project *ProjectService
SSH *SSHService Quota *QuotaService
SecurityGroup *SecurityGroupService Region *RegionService
ServiceOffering *ServiceOfferingService Resourcemetadata *ResourcemetadataService
Snapshot *SnapshotService Resourcetags *ResourcetagsService
StoragePool *StoragePoolService Role *RoleService
StratosphereSSP *StratosphereSSPService Router *RouterService
Swift *SwiftService SSH *SSHService
SystemCapacity *SystemCapacityService SecurityGroup *SecurityGroupService
SystemVM *SystemVMService ServiceOffering *ServiceOfferingService
Template *TemplateService Snapshot *SnapshotService
UCS *UCSService StoragePool *StoragePoolService
Usage *UsageService StratosphereSSP *StratosphereSSPService
User *UserService Swift *SwiftService
VLAN *VLANService SystemCapacity *SystemCapacityService
VMGroup *VMGroupService SystemVM *SystemVMService
VPC *VPCService Template *TemplateService
VPN *VPNService UCS *UCSService
VirtualMachine *VirtualMachineService Usage *UsageService
Volume *VolumeService User *UserService
Zone *ZoneService VLAN *VLANService
VMGroup *VMGroupService
VPC *VPCService
VPN *VPNService
VirtualMachine *VirtualMachineService
Volume *VolumeService
Zone *ZoneService
} }
// Creates a new client for communicating with CloudStack // Creates a new client for communicating with CloudStack
func newClient(apiurl string, apikey string, secret string, async bool, verifyssl bool) *CloudStackClient { func newClient(apiurl string, apikey string, secret string, async bool, verifyssl bool) *CloudStackClient {
jar, _ := cookiejar.New(nil)
cs := &CloudStackClient{ cs := &CloudStackClient{
client: &http.Client{ client: &http.Client{
Jar: jar,
Transport: &http.Transport{ Transport: &http.Transport{
Proxy: http.ProxyFromEnvironment, Proxy: http.ProxyFromEnvironment,
TLSClientConfig: &tls.Config{InsecureSkipVerify: !verifyssl}, // If verifyssl is true, skipping the verify should be false and vice versa DialContext: (&net.Dialer{
Timeout: 30 * time.Second,
KeepAlive: 30 * time.Second,
DualStack: true,
}).DialContext,
MaxIdleConns: 100,
IdleConnTimeout: 90 * time.Second,
TLSClientConfig: &tls.Config{InsecureSkipVerify: !verifyssl}, // If verifyssl is true, skipping the verify should be false and vice versa
TLSHandshakeTimeout: 10 * time.Second,
ExpectContinueTimeout: 1 * time.Second,
}, },
Timeout: time.Duration(60 * time.Second), Timeout: time.Duration(60 * time.Second),
}, },
@ -146,6 +166,7 @@ func newClient(apiurl string, apikey string, secret string, async bool, verifyss
apiKey: apikey, apiKey: apikey,
secret: secret, secret: secret,
async: async, async: async,
options: []OptionFunc{},
timeout: 300, timeout: 300,
} }
cs.APIDiscovery = NewAPIDiscoveryService(cs) cs.APIDiscovery = NewAPIDiscoveryService(cs)
@ -157,10 +178,13 @@ func newClient(apiurl string, apikey string, secret string, async bool, verifyss
cs.Authentication = NewAuthenticationService(cs) cs.Authentication = NewAuthenticationService(cs)
cs.AutoScale = NewAutoScaleService(cs) cs.AutoScale = NewAutoScaleService(cs)
cs.Baremetal = NewBaremetalService(cs) cs.Baremetal = NewBaremetalService(cs)
cs.BigSwitchBCF = NewBigSwitchBCFService(cs)
cs.BrocadeVCS = NewBrocadeVCSService(cs)
cs.Certificate = NewCertificateService(cs) cs.Certificate = NewCertificateService(cs)
cs.CloudIdentifier = NewCloudIdentifierService(cs) cs.CloudIdentifier = NewCloudIdentifierService(cs)
cs.Cluster = NewClusterService(cs) cs.Cluster = NewClusterService(cs)
cs.Configuration = NewConfigurationService(cs) cs.Configuration = NewConfigurationService(cs)
cs.Custom = NewCustomService(cs)
cs.DiskOffering = NewDiskOfferingService(cs) cs.DiskOffering = NewDiskOfferingService(cs)
cs.Domain = NewDomainService(cs) cs.Domain = NewDomainService(cs)
cs.Event = NewEventService(cs) cs.Event = NewEventService(cs)
@ -181,6 +205,8 @@ func newClient(apiurl string, apikey string, secret string, async bool, verifyss
cs.Network = NewNetworkService(cs) cs.Network = NewNetworkService(cs)
cs.Nic = NewNicService(cs) cs.Nic = NewNicService(cs)
cs.NiciraNVP = NewNiciraNVPService(cs) cs.NiciraNVP = NewNiciraNVPService(cs)
cs.NuageVSP = NewNuageVSPService(cs)
cs.OutofbandManagement = NewOutofbandManagementService(cs)
cs.OvsElement = NewOvsElementService(cs) cs.OvsElement = NewOvsElementService(cs)
cs.Pod = NewPodService(cs) cs.Pod = NewPodService(cs)
cs.Pool = NewPoolService(cs) cs.Pool = NewPoolService(cs)
@ -190,6 +216,7 @@ func newClient(apiurl string, apikey string, secret string, async bool, verifyss
cs.Region = NewRegionService(cs) cs.Region = NewRegionService(cs)
cs.Resourcemetadata = NewResourcemetadataService(cs) cs.Resourcemetadata = NewResourcemetadataService(cs)
cs.Resourcetags = NewResourcetagsService(cs) cs.Resourcetags = NewResourcetagsService(cs)
cs.Role = NewRoleService(cs)
cs.Router = NewRouterService(cs) cs.Router = NewRouterService(cs)
cs.SSH = NewSSHService(cs) cs.SSH = NewSSHService(cs)
cs.SecurityGroup = NewSecurityGroupService(cs) cs.SecurityGroup = NewSecurityGroupService(cs)
@ -237,6 +264,15 @@ func (cs *CloudStackClient) AsyncTimeout(timeoutInSeconds int64) {
cs.timeout = timeoutInSeconds cs.timeout = timeoutInSeconds
} }
// Set any default options that would be added to all API calls that support it.
func (cs *CloudStackClient) DefaultOptions(options ...OptionFunc) {
if options != nil {
cs.options = options
} else {
cs.options = []OptionFunc{}
}
}
var AsyncTimeoutErr = errors.New("Timeout while waiting for async job to finish") 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 // 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
@ -303,7 +339,7 @@ func (cs *CloudStackClient) newRequest(api string, params url.Values) (json.RawM
var err error var err error
var resp *http.Response var resp *http.Response
if !cs.HTTPGETOnly && (api == "deployVirtualMachine" || api == "updateVirtualMachine") { if !cs.HTTPGETOnly && (api == "deployVirtualMachine" || api == "login" || api == "updateVirtualMachine") {
// The deployVirtualMachine API should be called using a POST call // The deployVirtualMachine API should be called using a POST call
// so we don't have to worry about the userdata size // so we don't have to worry about the userdata size
@ -503,6 +539,22 @@ func NewBaremetalService(cs *CloudStackClient) *BaremetalService {
return &BaremetalService{cs: cs} return &BaremetalService{cs: cs}
} }
type BigSwitchBCFService struct {
cs *CloudStackClient
}
func NewBigSwitchBCFService(cs *CloudStackClient) *BigSwitchBCFService {
return &BigSwitchBCFService{cs: cs}
}
type BrocadeVCSService struct {
cs *CloudStackClient
}
func NewBrocadeVCSService(cs *CloudStackClient) *BrocadeVCSService {
return &BrocadeVCSService{cs: cs}
}
type CertificateService struct { type CertificateService struct {
cs *CloudStackClient cs *CloudStackClient
} }
@ -535,6 +587,14 @@ func NewConfigurationService(cs *CloudStackClient) *ConfigurationService {
return &ConfigurationService{cs: cs} return &ConfigurationService{cs: cs}
} }
type CustomService struct {
cs *CloudStackClient
}
func NewCustomService(cs *CloudStackClient) *CustomService {
return &CustomService{cs: cs}
}
type DiskOfferingService struct { type DiskOfferingService struct {
cs *CloudStackClient cs *CloudStackClient
} }
@ -695,6 +755,22 @@ func NewNiciraNVPService(cs *CloudStackClient) *NiciraNVPService {
return &NiciraNVPService{cs: cs} return &NiciraNVPService{cs: cs}
} }
type NuageVSPService struct {
cs *CloudStackClient
}
func NewNuageVSPService(cs *CloudStackClient) *NuageVSPService {
return &NuageVSPService{cs: cs}
}
type OutofbandManagementService struct {
cs *CloudStackClient
}
func NewOutofbandManagementService(cs *CloudStackClient) *OutofbandManagementService {
return &OutofbandManagementService{cs: cs}
}
type OvsElementService struct { type OvsElementService struct {
cs *CloudStackClient cs *CloudStackClient
} }
@ -767,6 +843,14 @@ func NewResourcetagsService(cs *CloudStackClient) *ResourcetagsService {
return &ResourcetagsService{cs: cs} return &ResourcetagsService{cs: cs}
} }
type RoleService struct {
cs *CloudStackClient
}
func NewRoleService(cs *CloudStackClient) *RoleService {
return &RoleService{cs: cs}
}
type RouterService struct { type RouterService struct {
cs *CloudStackClient cs *CloudStackClient
} }