Merge branch 'master' into 'ephemeral-ssh-key-pair-issue-7225'.

This commit is contained in:
Stephen Fox 2019-02-05 16:16:51 -05:00
commit 354fcc5cc6
88 changed files with 41766 additions and 38473 deletions

View File

@ -10,7 +10,11 @@ import (
)
func NewDeviceFlowOAuthTokenProvider(env azure.Environment, say func(string), tenantID string) oAuthTokenProvider {
return &deviceflowOauthTokenProvider{}
return &deviceflowOauthTokenProvider{
env: env,
say: say,
tenantID: tenantID,
}
}
type deviceflowOauthTokenProvider struct {

View File

@ -155,8 +155,7 @@ func (c ClientConfig) useDeviceLogin() bool {
c.ClientID == "" &&
c.ClientSecret == "" &&
c.ClientJWT == "" &&
c.ClientCertPath == "" &&
c.TenantID == ""
c.ClientCertPath == ""
}
func (c ClientConfig) useMSI() bool {

View File

@ -268,11 +268,18 @@ func getCloud() *azure.Environment {
// tests for assertRequiredParametersSet
func Test_ClientConfig_CanUseDeviceCode(t *testing.T) {
// TenantID is optional, but Builder will look up tenant ID before requesting
t.Run("without TenantID", func(t *testing.T) {
cfg := emptyClientConfig()
cfg.SubscriptionID = "12345"
// TenantID is optional
assertValid(t, cfg)
})
t.Run("with TenantID", func(t *testing.T) {
cfg := emptyClientConfig()
cfg.SubscriptionID = "12345"
cfg.TenantID = "12345"
assertValid(t, cfg)
})
}
func assertValid(t *testing.T, cfg ClientConfig) {

View File

@ -41,7 +41,7 @@ import (
profitbricksbuilder "github.com/hashicorp/packer/builder/profitbricks"
qemubuilder "github.com/hashicorp/packer/builder/qemu"
scalewaybuilder "github.com/hashicorp/packer/builder/scaleway"
tencentcloudbuilder "github.com/hashicorp/packer/builder/tencentcloud/cvm"
tencentcloudcvmbuilder "github.com/hashicorp/packer/builder/tencentcloud/cvm"
tritonbuilder "github.com/hashicorp/packer/builder/triton"
virtualboxisobuilder "github.com/hashicorp/packer/builder/virtualbox/iso"
virtualboxovfbuilder "github.com/hashicorp/packer/builder/virtualbox/ovf"
@ -114,7 +114,7 @@ var Builders = map[string]packer.Builder{
"profitbricks": new(profitbricksbuilder.Builder),
"qemu": new(qemubuilder.Builder),
"scaleway": new(scalewaybuilder.Builder),
"tencentcloud-cvm": new(tencentcloudbuilder.Builder),
"tencentcloud-cvm": new(tencentcloudcvmbuilder.Builder),
"triton": new(tritonbuilder.Builder),
"virtualbox-iso": new(virtualboxisobuilder.Builder),
"virtualbox-ovf": new(virtualboxovfbuilder.Builder),

View File

@ -1190,7 +1190,6 @@ func newParser(filename string, b []byte, opts ...Option) *parser {
Stats: &stats,
// start rule is rule [0] unless an alternate entrypoint is specified
entrypoint: g.rules[0].name,
emptyState: make(storeDict),
}
p.setOptions(opts)
@ -1279,9 +1278,6 @@ type parser struct {
choiceNoMatch string
// recovery expression stack, keeps track of the currently available recovery expression, these are traversed in reverse
recoveryStack []map[string]interface{}
// emptyState contains an empty storeDict, which is used to optimize cloneState if global "state" store is not used.
emptyState storeDict
}
// push a variable set on the vstack.
@ -1455,13 +1451,6 @@ func (p *parser) cloneState() storeDict {
defer p.out(p.in("cloneState"))
}
if len(p.cur.state) == 0 {
if len(p.emptyState) > 0 {
p.emptyState = make(storeDict)
}
return p.emptyState
}
state := make(storeDict, len(p.cur.state))
for k, v := range p.cur.state {
if c, ok := v.(Cloner); ok {

View File

@ -242,13 +242,13 @@ func getCreateVMScript(opts *scriptOptions) (string, error) {
}
var tpl = template.Must(template.New("createVM").Parse(`
$vhdPath = Join-Path -Path {{ .Path }} -ChildPath {{ .VHDX }}
$vhdPath = Join-Path -Path "{{ .Path }}" -ChildPath "{{ .VHDX }}"
{{ if ne .HardDrivePath "" -}}
{{- if .DiffDisks -}}
Hyper-V\New-VHD -Path $vhdPath -ParentPath {{ .HardDrivePath }} -Differencing -BlockSizeBytes {{ .VHDBlockSizeBytes }}
Hyper-V\New-VHD -Path $vhdPath -ParentPath "{{ .HardDrivePath }}" -Differencing -BlockSizeBytes {{ .VHDBlockSizeBytes }}
{{- else -}}
Copy-Item -Path {{ .HardDrivePath }} -Destination $vhdPath
Copy-Item -Path "{{ .HardDrivePath }}" -Destination $vhdPath
{{- end -}}
{{- else -}}
{{- if .FixedVHD -}}
@ -258,7 +258,7 @@ $vhdPath = Join-Path -Path {{ .Path }} -ChildPath {{ .VHDX }}
{{- end -}}
{{- end }}
Hyper-V\New-VM -Name {{ .VMName }} -Path {{ .Path }} -MemoryStartupBytes {{ .MemoryStartupBytes }} -VHDPath $vhdPath -SwitchName {{ .SwitchName }}
Hyper-V\New-VM -Name "{{ .VMName }}" -Path "{{ .Path }}" -MemoryStartupBytes {{ .MemoryStartupBytes }} -VHDPath $vhdPath -SwitchName "{{ .SwitchName }}"
{{- if eq .Generation 2}} -Generation {{ .Generation }} {{- end -}}
{{- if ne .Version ""}} -Version {{ .Version }} {{- end -}}
`))

View File

@ -26,9 +26,9 @@ func Test_getCreateVMScript(t *testing.T) {
t.Fatalf("Error: %s", err.Error())
}
expected := `$vhdPath = Join-Path -Path C://mypath -ChildPath myvm.vhd
Hyper-V\New-VHD -Path $vhdPath -ParentPath C://harddrivepath -Differencing -BlockSizeBytes 10
Hyper-V\New-VM -Name myvm -Path C://mypath -MemoryStartupBytes 1024 -VHDPath $vhdPath -SwitchName hyperv-vmx-switch -Version 5.0`
expected := `$vhdPath = Join-Path -Path "C://mypath" -ChildPath "myvm.vhd"
Hyper-V\New-VHD -Path $vhdPath -ParentPath "C://harddrivepath" -Differencing -BlockSizeBytes 10
Hyper-V\New-VM -Name "myvm" -Path "C://mypath" -MemoryStartupBytes 1024 -VHDPath $vhdPath -SwitchName "hyperv-vmx-switch" -Version 5.0`
if ok := strings.Compare(scriptString, expected); ok != 0 {
t.Fatalf("EXPECTED: \n%s\n\n RECEIVED: \n%s\n\n", expected, scriptString)
}
@ -48,9 +48,9 @@ Hyper-V\New-VM -Name myvm -Path C://mypath -MemoryStartupBytes 1024 -VHDPath $vh
t.Fatalf("Error: %s", err.Error())
}
expected = `$vhdPath = Join-Path -Path C://mypath -ChildPath myvm.vhdx
Hyper-V\New-VHD -Path $vhdPath -ParentPath C://harddrivepath -Differencing -BlockSizeBytes 10
Hyper-V\New-VM -Name myvm -Path C://mypath -MemoryStartupBytes 1024 -VHDPath $vhdPath -SwitchName hyperv-vmx-switch -Generation 2 -Version 5.0`
expected = `$vhdPath = Join-Path -Path "C://mypath" -ChildPath "myvm.vhdx"
Hyper-V\New-VHD -Path $vhdPath -ParentPath "C://harddrivepath" -Differencing -BlockSizeBytes 10
Hyper-V\New-VM -Name "myvm" -Path "C://mypath" -MemoryStartupBytes 1024 -VHDPath $vhdPath -SwitchName "hyperv-vmx-switch" -Generation 2 -Version 5.0`
if ok := strings.Compare(scriptString, expected); ok != 0 {
t.Fatalf("EXPECTED: \n%s\n\n RECEIVED: \n%s\n\n", expected, scriptString)
}
@ -63,9 +63,9 @@ Hyper-V\New-VM -Name myvm -Path C://mypath -MemoryStartupBytes 1024 -VHDPath $vh
t.Fatalf("Error: %s", err.Error())
}
expected = `$vhdPath = Join-Path -Path C://mypath -ChildPath myvm.vhdx
Hyper-V\New-VHD -Path $vhdPath -ParentPath C://harddrivepath -Differencing -BlockSizeBytes 10
Hyper-V\New-VM -Name myvm -Path C://mypath -MemoryStartupBytes 1024 -VHDPath $vhdPath -SwitchName hyperv-vmx-switch -Version 5.0`
expected = `$vhdPath = Join-Path -Path "C://mypath" -ChildPath "myvm.vhdx"
Hyper-V\New-VHD -Path $vhdPath -ParentPath "C://harddrivepath" -Differencing -BlockSizeBytes 10
Hyper-V\New-VM -Name "myvm" -Path "C://mypath" -MemoryStartupBytes 1024 -VHDPath $vhdPath -SwitchName "hyperv-vmx-switch" -Version 5.0`
if ok := strings.Compare(scriptString, expected); ok != 0 {
t.Fatalf("EXPECTED: \n%s\n\n RECEIVED: \n%s\n\n", expected, scriptString)
}
@ -86,9 +86,9 @@ Hyper-V\New-VM -Name myvm -Path C://mypath -MemoryStartupBytes 1024 -VHDPath $vh
if err != nil {
t.Fatalf("Error: %s", err.Error())
}
expected = `$vhdPath = Join-Path -Path C://mypath -ChildPath myvm.vhdx
Hyper-V\New-VHD -Path $vhdPath -ParentPath C://harddrivepath -Differencing -BlockSizeBytes 10
Hyper-V\New-VM -Name myvm -Path C://mypath -MemoryStartupBytes 1024 -VHDPath $vhdPath -SwitchName hyperv-vmx-switch`
expected = `$vhdPath = Join-Path -Path "C://mypath" -ChildPath "myvm.vhdx"
Hyper-V\New-VHD -Path $vhdPath -ParentPath "C://harddrivepath" -Differencing -BlockSizeBytes 10
Hyper-V\New-VM -Name "myvm" -Path "C://mypath" -MemoryStartupBytes 1024 -VHDPath $vhdPath -SwitchName "hyperv-vmx-switch"`
if ok := strings.Compare(scriptString, expected); ok != 0 {
t.Fatalf("EXPECTED: \n%s\n\n RECEIVED: \n%s\n\n", expected, scriptString)
}
@ -98,9 +98,9 @@ Hyper-V\New-VM -Name myvm -Path C://mypath -MemoryStartupBytes 1024 -VHDPath $vh
if err != nil {
t.Fatalf("Error: %s", err.Error())
}
expected = `$vhdPath = Join-Path -Path C://mypath -ChildPath myvm.vhdx
Copy-Item -Path C://harddrivepath -Destination $vhdPath
Hyper-V\New-VM -Name myvm -Path C://mypath -MemoryStartupBytes 1024 -VHDPath $vhdPath -SwitchName hyperv-vmx-switch`
expected = `$vhdPath = Join-Path -Path "C://mypath" -ChildPath "myvm.vhdx"
Copy-Item -Path "C://harddrivepath" -Destination $vhdPath
Hyper-V\New-VM -Name "myvm" -Path "C://mypath" -MemoryStartupBytes 1024 -VHDPath $vhdPath -SwitchName "hyperv-vmx-switch"`
if ok := strings.Compare(scriptString, expected); ok != 0 {
t.Fatalf("EXPECTED: \n%s\n\n RECEIVED: \n%s\n\n", expected, scriptString)
}
@ -110,9 +110,9 @@ Hyper-V\New-VM -Name myvm -Path C://mypath -MemoryStartupBytes 1024 -VHDPath $vh
if err != nil {
t.Fatalf("Error: %s", err.Error())
}
expected = `$vhdPath = Join-Path -Path C://mypath -ChildPath myvm.vhdx
expected = `$vhdPath = Join-Path -Path "C://mypath" -ChildPath "myvm.vhdx"
Hyper-V\New-VHD -Path $vhdPath -SizeBytes 8192 -BlockSizeBytes 10
Hyper-V\New-VM -Name myvm -Path C://mypath -MemoryStartupBytes 1024 -VHDPath $vhdPath -SwitchName hyperv-vmx-switch`
Hyper-V\New-VM -Name "myvm" -Path "C://mypath" -MemoryStartupBytes 1024 -VHDPath $vhdPath -SwitchName "hyperv-vmx-switch"`
if ok := strings.Compare(scriptString, expected); ok != 0 {
t.Fatalf("EXPECTED: \n%s\n\n RECEIVED: \n%s\n\n", expected, scriptString)
}
@ -122,9 +122,9 @@ Hyper-V\New-VM -Name myvm -Path C://mypath -MemoryStartupBytes 1024 -VHDPath $vh
if err != nil {
t.Fatalf("Error: %s", err.Error())
}
expected = `$vhdPath = Join-Path -Path C://mypath -ChildPath myvm.vhd
expected = `$vhdPath = Join-Path -Path "C://mypath" -ChildPath "myvm.vhd"
Hyper-V\New-VHD -Path $vhdPath -Fixed -SizeBytes 8192
Hyper-V\New-VM -Name myvm -Path C://mypath -MemoryStartupBytes 1024 -VHDPath $vhdPath -SwitchName hyperv-vmx-switch`
Hyper-V\New-VM -Name "myvm" -Path "C://mypath" -MemoryStartupBytes 1024 -VHDPath $vhdPath -SwitchName "hyperv-vmx-switch"`
if ok := strings.Compare(scriptString, expected); ok != 0 {
t.Fatalf("EXPECTED: \n%s\n\n RECEIVED: \n%s\n\n", expected, scriptString)
}

2
go.mod
View File

@ -160,7 +160,7 @@ require (
github.com/ugorji/go v0.0.0-20151218193438-646ae4a518c1
github.com/ulikunitz/xz v0.0.0-20180703112113-636d36a76670
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/net v0.0.0-20181201002055-351d144fa1fc
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/vmware/govmomi v0.0.0-20170707011325-c2105a174311 h1:s5pyxd5S6wRs2WpEE0xRfWUF46Wbz44h203KnbX0ecI=
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.1.4+incompatible/go.mod h1:s3eL3z5pNXF5FVybcT+LIVdId8pYn709yv6v5mrkrQE=
github.com/xanzy/go-cloudstack v2.4.1+incompatible h1:Oc4xa2+I94h1g/QJ+nHoq597nJz2KXzxuQx/weOx0AU=
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/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=

View File

@ -51,7 +51,7 @@ type Config struct {
EmptyGroups []string `mapstructure:"empty_groups"`
HostAlias string `mapstructure:"host_alias"`
User string `mapstructure:"user"`
LocalPort string `mapstructure:"local_port"`
LocalPort uint `mapstructure:"local_port"`
SSHHostKeyFile string `mapstructure:"ssh_host_key_file"`
SSHAuthorizedKeyFile string `mapstructure:"ssh_authorized_key_file"`
SFTPCmd string `mapstructure:"sftp_command"`
@ -130,12 +130,8 @@ func (p *Provisioner) Prepare(raws ...interface{}) error {
p.config.AnsibleEnvVars = append(p.config.AnsibleEnvVars, "ANSIBLE_SCP_IF_SSH=True")
}
if len(p.config.LocalPort) > 0 {
if _, err := strconv.ParseUint(p.config.LocalPort, 10, 16); err != nil {
errs = packer.MultiErrorAppend(errs, fmt.Errorf("local_port: %s must be a valid port", p.config.LocalPort))
}
} else {
p.config.LocalPort = "0"
if p.config.LocalPort > 65535 {
errs = packer.MultiErrorAppend(errs, fmt.Errorf("local_port: %d must be a valid port", p.config.LocalPort))
}
if len(p.config.InventoryDirectory) > 0 {
@ -256,11 +252,8 @@ func (p *Provisioner) Provision(ui packer.Ui, comm packer.Communicator) error {
config.AddHostKey(hostSigner)
localListener, err := func() (net.Listener, error) {
port, err := strconv.ParseUint(p.config.LocalPort, 10, 16)
if err != nil {
return nil, err
}
port := p.config.LocalPort
tries := 1
if port != 0 {
tries = 10
@ -272,11 +265,17 @@ func (p *Provisioner) Provision(ui packer.Ui, comm packer.Communicator) error {
ui.Say(err.Error())
continue
}
_, p.config.LocalPort, err = net.SplitHostPort(l.Addr().String())
_, portStr, err := net.SplitHostPort(l.Addr().String())
if err != nil {
ui.Say(err.Error())
continue
}
portUint64, err := strconv.ParseUint(portStr, 10, 0)
if err != nil {
ui.Say(err.Error())
continue
}
p.config.LocalPort = uint(portUint64)
return l, nil
}
return nil, errors.New("Error setting up SSH proxy connection")
@ -304,10 +303,10 @@ func (p *Provisioner) Provision(ui packer.Ui, comm packer.Communicator) error {
}
defer os.Remove(tf.Name())
host := fmt.Sprintf("%s ansible_host=127.0.0.1 ansible_user=%s ansible_port=%s\n",
host := fmt.Sprintf("%s ansible_host=127.0.0.1 ansible_user=%s ansible_port=%d\n",
p.config.HostAlias, p.config.User, p.config.LocalPort)
if p.ansibleMajVersion < 2 {
host = fmt.Sprintf("%s ansible_ssh_host=127.0.0.1 ansible_ssh_user=%s ansible_ssh_port=%s\n",
host = fmt.Sprintf("%s ansible_ssh_host=127.0.0.1 ansible_ssh_user=%s ansible_ssh_port=%d\n",
p.config.HostAlias, p.config.User, p.config.LocalPort)
}

View File

@ -245,13 +245,13 @@ func TestProvisionerPrepare_LocalPort(t *testing.T) {
config["ssh_authorized_key_file"] = publickey_file.Name()
config["playbook_file"] = playbook_file.Name()
config["local_port"] = "65537"
config["local_port"] = uint(65537)
err = p.Prepare(config)
if err == nil {
t.Fatal("should have error")
}
config["local_port"] = "22222"
config["local_port"] = uint(22222)
err = p.Prepare(config)
if err != nil {
t.Fatalf("err: %s", err)

View File

@ -12,8 +12,11 @@ set -e
function validateToolPresence
{
local TOOLNAME=$1
which ${TOOLNAME} >/dev/null || echo "${TOOLNAME} is not on the path. Exiting..."
which ${TOOLNAME} >/dev/null
if [ $? -ne 0 ]; then
echo "${TOOLNAME} is not on the path. Exiting..."
exit 1
fi
}
# Validates that all used tools are present; exits when any is not found
@ -84,6 +87,7 @@ function convertPathOnCygwin() {
esac
}
validatePreconditions
enterPackerSourceDir
ensureOutputStructure
cleanOutputDirs

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");
// 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 {
return nil, err
}
return &r, nil
}
@ -72,25 +73,29 @@ type ListApisResponse struct {
}
type Api struct {
Description string `json:"description,omitempty"`
Isasync bool `json:"isasync,omitempty"`
Name string `json:"name,omitempty"`
Params []struct {
Description string `json:"description,omitempty"`
Length int `json:"length,omitempty"`
Name string `json:"name,omitempty"`
Related string `json:"related,omitempty"`
Required bool `json:"required,omitempty"`
Since string `json:"since,omitempty"`
Type string `json:"type,omitempty"`
} `json:"params,omitempty"`
Related string `json:"related,omitempty"`
Response []struct {
Description string `json:"description,omitempty"`
Name string `json:"name,omitempty"`
Response []string `json:"response,omitempty"`
Type string `json:"type,omitempty"`
} `json:"response,omitempty"`
Since string `json:"since,omitempty"`
Type string `json:"type,omitempty"`
Description string `json:"description"`
Isasync bool `json:"isasync"`
Name string `json:"name"`
Params []ApiParams `json:"params"`
Related string `json:"related"`
Response []ApiResponse `json:"response"`
Since string `json:"since"`
Type string `json:"type"`
}
type ApiResponse struct {
Description string `json:"description"`
Name string `json:"name"`
Response []interface{} `json:"response"`
Type string `json:"type"`
}
type ApiParams struct {
Description string `json:"description"`
Length int `json:"length"`
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");
// 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 &r, nil
}
type AssociateIpAddressResponse struct {
JobID string `json:"jobid,omitempty"`
Account string `json:"account,omitempty"`
Allocated string `json:"allocated,omitempty"`
Associatednetworkid string `json:"associatednetworkid,omitempty"`
Associatednetworkname string `json:"associatednetworkname,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Fordisplay bool `json:"fordisplay,omitempty"`
Forvirtualnetwork bool `json:"forvirtualnetwork,omitempty"`
Id string `json:"id,omitempty"`
Ipaddress string `json:"ipaddress,omitempty"`
Isportable bool `json:"isportable,omitempty"`
Issourcenat bool `json:"issourcenat,omitempty"`
Isstaticnat bool `json:"isstaticnat,omitempty"`
Issystem bool `json:"issystem,omitempty"`
Networkid string `json:"networkid,omitempty"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Purpose string `json:"purpose,omitempty"`
State string `json:"state,omitempty"`
Tags []struct {
Account string `json:"account,omitempty"`
Customer string `json:"customer,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Key string `json:"key,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Resourceid string `json:"resourceid,omitempty"`
Resourcetype string `json:"resourcetype,omitempty"`
Value string `json:"value,omitempty"`
} `json:"tags,omitempty"`
Virtualmachinedisplayname string `json:"virtualmachinedisplayname,omitempty"`
Virtualmachineid string `json:"virtualmachineid,omitempty"`
Virtualmachinename string `json:"virtualmachinename,omitempty"`
Vlanid string `json:"vlanid,omitempty"`
Vlanname string `json:"vlanname,omitempty"`
Vmipaddress string `json:"vmipaddress,omitempty"`
Vpcid string `json:"vpcid,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
Zonename string `json:"zonename,omitempty"`
JobID string `json:"jobid"`
Account string `json:"account"`
Allocated string `json:"allocated"`
Associatednetworkid string `json:"associatednetworkid"`
Associatednetworkname string `json:"associatednetworkname"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Fordisplay bool `json:"fordisplay"`
Forvirtualnetwork bool `json:"forvirtualnetwork"`
Id string `json:"id"`
Ipaddress string `json:"ipaddress"`
Isportable bool `json:"isportable"`
Issourcenat bool `json:"issourcenat"`
Isstaticnat bool `json:"isstaticnat"`
Issystem bool `json:"issystem"`
Networkid string `json:"networkid"`
Physicalnetworkid string `json:"physicalnetworkid"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Purpose string `json:"purpose"`
State string `json:"state"`
Tags []Tags `json:"tags"`
Virtualmachinedisplayname string `json:"virtualmachinedisplayname"`
Virtualmachineid string `json:"virtualmachineid"`
Virtualmachinename string `json:"virtualmachinename"`
Vlanid string `json:"vlanid"`
Vlanname string `json:"vlanname"`
Vmipaddress string `json:"vmipaddress"`
Vpcid string `json:"vpcid"`
Zoneid string `json:"zoneid"`
Zonename string `json:"zonename"`
}
type DisassociateIpAddressParams struct {
@ -283,13 +273,14 @@ func (s *AddressService) DisassociateIpAddress(p *DisassociateIpAddressParams) (
return nil, err
}
}
return &r, nil
}
type DisassociateIpAddressResponse struct {
JobID string `json:"jobid,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Success bool `json:"success,omitempty"`
JobID string `json:"jobid"`
Displaytext string `json:"displaytext"`
Success bool `json:"success"`
}
type ListPublicIpAddressesParams struct {
@ -587,7 +578,7 @@ func (s *AddressService) GetPublicIpAddressByID(id string, opts ...OptionFunc) (
p.p["id"] = id
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return nil, -1, err
}
@ -624,6 +615,7 @@ func (s *AddressService) ListPublicIpAddresses(p *ListPublicIpAddressesParams) (
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -633,47 +625,36 @@ type ListPublicIpAddressesResponse struct {
}
type PublicIpAddress struct {
Account string `json:"account,omitempty"`
Allocated string `json:"allocated,omitempty"`
Associatednetworkid string `json:"associatednetworkid,omitempty"`
Associatednetworkname string `json:"associatednetworkname,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Fordisplay bool `json:"fordisplay,omitempty"`
Forvirtualnetwork bool `json:"forvirtualnetwork,omitempty"`
Id string `json:"id,omitempty"`
Ipaddress string `json:"ipaddress,omitempty"`
Isportable bool `json:"isportable,omitempty"`
Issourcenat bool `json:"issourcenat,omitempty"`
Isstaticnat bool `json:"isstaticnat,omitempty"`
Issystem bool `json:"issystem,omitempty"`
Networkid string `json:"networkid,omitempty"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Purpose string `json:"purpose,omitempty"`
State string `json:"state,omitempty"`
Tags []struct {
Account string `json:"account,omitempty"`
Customer string `json:"customer,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Key string `json:"key,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Resourceid string `json:"resourceid,omitempty"`
Resourcetype string `json:"resourcetype,omitempty"`
Value string `json:"value,omitempty"`
} `json:"tags,omitempty"`
Virtualmachinedisplayname string `json:"virtualmachinedisplayname,omitempty"`
Virtualmachineid string `json:"virtualmachineid,omitempty"`
Virtualmachinename string `json:"virtualmachinename,omitempty"`
Vlanid string `json:"vlanid,omitempty"`
Vlanname string `json:"vlanname,omitempty"`
Vmipaddress string `json:"vmipaddress,omitempty"`
Vpcid string `json:"vpcid,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
Zonename string `json:"zonename,omitempty"`
Account string `json:"account"`
Allocated string `json:"allocated"`
Associatednetworkid string `json:"associatednetworkid"`
Associatednetworkname string `json:"associatednetworkname"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Fordisplay bool `json:"fordisplay"`
Forvirtualnetwork bool `json:"forvirtualnetwork"`
Id string `json:"id"`
Ipaddress string `json:"ipaddress"`
Isportable bool `json:"isportable"`
Issourcenat bool `json:"issourcenat"`
Isstaticnat bool `json:"isstaticnat"`
Issystem bool `json:"issystem"`
Networkid string `json:"networkid"`
Physicalnetworkid string `json:"physicalnetworkid"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Purpose string `json:"purpose"`
State string `json:"state"`
Tags []Tags `json:"tags"`
Virtualmachinedisplayname string `json:"virtualmachinedisplayname"`
Virtualmachineid string `json:"virtualmachineid"`
Virtualmachinename string `json:"virtualmachinename"`
Vlanid string `json:"vlanid"`
Vlanname string `json:"vlanname"`
Vmipaddress string `json:"vmipaddress"`
Vpcid string `json:"vpcid"`
Zoneid string `json:"zoneid"`
Zonename string `json:"zonename"`
}
type UpdateIpAddressParams struct {
@ -762,50 +743,40 @@ func (s *AddressService) UpdateIpAddress(p *UpdateIpAddressParams) (*UpdateIpAdd
return nil, err
}
}
return &r, nil
}
type UpdateIpAddressResponse struct {
JobID string `json:"jobid,omitempty"`
Account string `json:"account,omitempty"`
Allocated string `json:"allocated,omitempty"`
Associatednetworkid string `json:"associatednetworkid,omitempty"`
Associatednetworkname string `json:"associatednetworkname,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Fordisplay bool `json:"fordisplay,omitempty"`
Forvirtualnetwork bool `json:"forvirtualnetwork,omitempty"`
Id string `json:"id,omitempty"`
Ipaddress string `json:"ipaddress,omitempty"`
Isportable bool `json:"isportable,omitempty"`
Issourcenat bool `json:"issourcenat,omitempty"`
Isstaticnat bool `json:"isstaticnat,omitempty"`
Issystem bool `json:"issystem,omitempty"`
Networkid string `json:"networkid,omitempty"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Purpose string `json:"purpose,omitempty"`
State string `json:"state,omitempty"`
Tags []struct {
Account string `json:"account,omitempty"`
Customer string `json:"customer,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Key string `json:"key,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Resourceid string `json:"resourceid,omitempty"`
Resourcetype string `json:"resourcetype,omitempty"`
Value string `json:"value,omitempty"`
} `json:"tags,omitempty"`
Virtualmachinedisplayname string `json:"virtualmachinedisplayname,omitempty"`
Virtualmachineid string `json:"virtualmachineid,omitempty"`
Virtualmachinename string `json:"virtualmachinename,omitempty"`
Vlanid string `json:"vlanid,omitempty"`
Vlanname string `json:"vlanname,omitempty"`
Vmipaddress string `json:"vmipaddress,omitempty"`
Vpcid string `json:"vpcid,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
Zonename string `json:"zonename,omitempty"`
JobID string `json:"jobid"`
Account string `json:"account"`
Allocated string `json:"allocated"`
Associatednetworkid string `json:"associatednetworkid"`
Associatednetworkname string `json:"associatednetworkname"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Fordisplay bool `json:"fordisplay"`
Forvirtualnetwork bool `json:"forvirtualnetwork"`
Id string `json:"id"`
Ipaddress string `json:"ipaddress"`
Isportable bool `json:"isportable"`
Issourcenat bool `json:"issourcenat"`
Isstaticnat bool `json:"isstaticnat"`
Issystem bool `json:"issystem"`
Networkid string `json:"networkid"`
Physicalnetworkid string `json:"physicalnetworkid"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Purpose string `json:"purpose"`
State string `json:"state"`
Tags []Tags `json:"tags"`
Virtualmachinedisplayname string `json:"virtualmachinedisplayname"`
Virtualmachineid string `json:"virtualmachineid"`
Virtualmachinename string `json:"virtualmachinename"`
Vlanid string `json:"vlanid"`
Vlanname string `json:"vlanname"`
Vmipaddress string `json:"vmipaddress"`
Vpcid string `json:"vpcid"`
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");
// 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 &r, nil
}
type CreateAffinityGroupResponse struct {
JobID string `json:"jobid,omitempty"`
Account string `json:"account,omitempty"`
Description string `json:"description,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Id string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Type string `json:"type,omitempty"`
VirtualmachineIds []string `json:"virtualmachineIds,omitempty"`
JobID string `json:"jobid"`
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"`
}
type DeleteAffinityGroupParams struct {
@ -261,13 +262,93 @@ func (s *AffinityGroupService) DeleteAffinityGroup(p *DeleteAffinityGroupParams)
return nil, err
}
}
return &r, nil
}
type DeleteAffinityGroupResponse struct {
JobID string `json:"jobid,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Success bool `json:"success,omitempty"`
JobID string `json:"jobid"`
Displaytext string `json:"displaytext"`
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 {
@ -433,7 +514,7 @@ func (s *AffinityGroupService) GetAffinityGroupID(name string, opts ...OptionFun
p.p["name"] = name
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return "", -1, err
}
@ -487,7 +568,7 @@ func (s *AffinityGroupService) GetAffinityGroupByID(id string, opts ...OptionFun
p.p["id"] = id
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return nil, -1, err
}
@ -528,6 +609,7 @@ func (s *AffinityGroupService) ListAffinityGroups(p *ListAffinityGroupsParams) (
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -537,16 +619,16 @@ type ListAffinityGroupsResponse struct {
}
type AffinityGroup struct {
Account string `json:"account,omitempty"`
Description string `json:"description,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Id string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Type string `json:"type,omitempty"`
VirtualmachineIds []string `json:"virtualmachineIds,omitempty"`
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"`
}
type UpdateVMAffinityGroupParams struct {
@ -636,260 +718,114 @@ func (s *AffinityGroupService) UpdateVMAffinityGroup(p *UpdateVMAffinityGroupPar
return nil, err
}
}
return &r, nil
}
type UpdateVMAffinityGroupResponse struct {
JobID string `json:"jobid,omitempty"`
Account string `json:"account,omitempty"`
Affinitygroup []struct {
Account string `json:"account,omitempty"`
Description string `json:"description,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Id string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Type string `json:"type,omitempty"`
VirtualmachineIds []string `json:"virtualmachineIds,omitempty"`
} `json:"affinitygroup,omitempty"`
Cpunumber int `json:"cpunumber,omitempty"`
Cpuspeed int `json:"cpuspeed,omitempty"`
Cpuused string `json:"cpuused,omitempty"`
Created string `json:"created,omitempty"`
Details map[string]string `json:"details,omitempty"`
Diskioread int64 `json:"diskioread,omitempty"`
Diskiowrite int64 `json:"diskiowrite,omitempty"`
Diskkbsread int64 `json:"diskkbsread,omitempty"`
Diskkbswrite int64 `json:"diskkbswrite,omitempty"`
Diskofferingid string `json:"diskofferingid,omitempty"`
Diskofferingname string `json:"diskofferingname,omitempty"`
Displayname string `json:"displayname,omitempty"`
Displayvm bool `json:"displayvm,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Forvirtualnetwork bool `json:"forvirtualnetwork,omitempty"`
Group string `json:"group,omitempty"`
Groupid string `json:"groupid,omitempty"`
Guestosid string `json:"guestosid,omitempty"`
Haenable bool `json:"haenable,omitempty"`
Hostid string `json:"hostid,omitempty"`
Hostname string `json:"hostname,omitempty"`
Hypervisor string `json:"hypervisor,omitempty"`
Id string `json:"id,omitempty"`
Instancename string `json:"instancename,omitempty"`
Isdynamicallyscalable bool `json:"isdynamicallyscalable,omitempty"`
Isodisplaytext string `json:"isodisplaytext,omitempty"`
Isoid string `json:"isoid,omitempty"`
Isoname string `json:"isoname,omitempty"`
Keypair string `json:"keypair,omitempty"`
Memory int `json:"memory,omitempty"`
Name string `json:"name,omitempty"`
Networkkbsread int64 `json:"networkkbsread,omitempty"`
Networkkbswrite int64 `json:"networkkbswrite,omitempty"`
Nic []struct {
Broadcasturi string `json:"broadcasturi,omitempty"`
Deviceid string `json:"deviceid,omitempty"`
Gateway string `json:"gateway,omitempty"`
Id string `json:"id,omitempty"`
Ip6address string `json:"ip6address,omitempty"`
Ip6cidr string `json:"ip6cidr,omitempty"`
Ip6gateway string `json:"ip6gateway,omitempty"`
Ipaddress string `json:"ipaddress,omitempty"`
Isdefault bool `json:"isdefault,omitempty"`
Isolationuri string `json:"isolationuri,omitempty"`
Macaddress string `json:"macaddress,omitempty"`
Netmask string `json:"netmask,omitempty"`
Networkid string `json:"networkid,omitempty"`
Networkname string `json:"networkname,omitempty"`
Secondaryip []struct {
Id string `json:"id,omitempty"`
Ipaddress string `json:"ipaddress,omitempty"`
} `json:"secondaryip,omitempty"`
Traffictype string `json:"traffictype,omitempty"`
Type string `json:"type,omitempty"`
Virtualmachineid string `json:"virtualmachineid,omitempty"`
} `json:"nic,omitempty"`
Ostypeid int64 `json:"ostypeid,omitempty"`
Password string `json:"password,omitempty"`
Passwordenabled bool `json:"passwordenabled,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Publicip string `json:"publicip,omitempty"`
Publicipid string `json:"publicipid,omitempty"`
Rootdeviceid int64 `json:"rootdeviceid,omitempty"`
Rootdevicetype string `json:"rootdevicetype,omitempty"`
Securitygroup []struct {
Account string `json:"account,omitempty"`
Description string `json:"description,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Egressrule []struct {
Account string `json:"account,omitempty"`
Cidr string `json:"cidr,omitempty"`
Endport int `json:"endport,omitempty"`
Icmpcode int `json:"icmpcode,omitempty"`
Icmptype int `json:"icmptype,omitempty"`
Protocol string `json:"protocol,omitempty"`
Ruleid string `json:"ruleid,omitempty"`
Securitygroupname string `json:"securitygroupname,omitempty"`
Startport int `json:"startport,omitempty"`
Tags []struct {
Account string `json:"account,omitempty"`
Customer string `json:"customer,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Key string `json:"key,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Resourceid string `json:"resourceid,omitempty"`
Resourcetype string `json:"resourcetype,omitempty"`
Value string `json:"value,omitempty"`
} `json:"tags,omitempty"`
} `json:"egressrule,omitempty"`
Id string `json:"id,omitempty"`
Ingressrule []struct {
Account string `json:"account,omitempty"`
Cidr string `json:"cidr,omitempty"`
Endport int `json:"endport,omitempty"`
Icmpcode int `json:"icmpcode,omitempty"`
Icmptype int `json:"icmptype,omitempty"`
Protocol string `json:"protocol,omitempty"`
Ruleid string `json:"ruleid,omitempty"`
Securitygroupname string `json:"securitygroupname,omitempty"`
Startport int `json:"startport,omitempty"`
Tags []struct {
Account string `json:"account,omitempty"`
Customer string `json:"customer,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Key string `json:"key,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Resourceid string `json:"resourceid,omitempty"`
Resourcetype string `json:"resourcetype,omitempty"`
Value string `json:"value,omitempty"`
} `json:"tags,omitempty"`
} `json:"ingressrule,omitempty"`
Name string `json:"name,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Tags []struct {
Account string `json:"account,omitempty"`
Customer string `json:"customer,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Key string `json:"key,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Resourceid string `json:"resourceid,omitempty"`
Resourcetype string `json:"resourcetype,omitempty"`
Value string `json:"value,omitempty"`
} `json:"tags,omitempty"`
Virtualmachinecount int `json:"virtualmachinecount,omitempty"`
Virtualmachineids []string `json:"virtualmachineids,omitempty"`
} `json:"securitygroup,omitempty"`
Serviceofferingid string `json:"serviceofferingid,omitempty"`
Serviceofferingname string `json:"serviceofferingname,omitempty"`
Servicestate string `json:"servicestate,omitempty"`
State string `json:"state,omitempty"`
Tags []struct {
Account string `json:"account,omitempty"`
Customer string `json:"customer,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Key string `json:"key,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Resourceid string `json:"resourceid,omitempty"`
Resourcetype string `json:"resourcetype,omitempty"`
Value string `json:"value,omitempty"`
} `json:"tags,omitempty"`
Templatedisplaytext string `json:"templatedisplaytext,omitempty"`
Templateid string `json:"templateid,omitempty"`
Templatename string `json:"templatename,omitempty"`
Userid string `json:"userid,omitempty"`
Username string `json:"username,omitempty"`
Vgpu string `json:"vgpu,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
Zonename string `json:"zonename,omitempty"`
JobID string `json:"jobid"`
Account string `json:"account"`
Affinitygroup []UpdateVMAffinityGroupResponseAffinitygroup `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 []UpdateVMAffinityGroupResponseSecuritygroup `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 ListAffinityGroupTypesParams struct {
p map[string]interface{}
type UpdateVMAffinityGroupResponseSecuritygroup struct {
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 {
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
type UpdateVMAffinityGroupResponseSecuritygroupRule 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"`
}
func (p *ListAffinityGroupTypesParams) SetKeyword(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["keyword"] = v
return
}
func (p *ListAffinityGroupTypesParams) SetPage(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["page"] = v
return
}
func (p *ListAffinityGroupTypesParams) SetPagesize(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["pagesize"] = v
return
}
// You should always use this function to get a new ListAffinityGroupTypesParams instance,
// as then you are sure you have configured all required params
func (s *AffinityGroupService) NewListAffinityGroupTypesParams() *ListAffinityGroupTypesParams {
p := &ListAffinityGroupTypesParams{}
p.p = make(map[string]interface{})
return p
}
// Lists affinity group types available
func (s *AffinityGroupService) ListAffinityGroupTypes(p *ListAffinityGroupTypesParams) (*ListAffinityGroupTypesResponse, error) {
resp, err := s.cs.newRequest("listAffinityGroupTypes", p.toURLValues())
if err != nil {
return nil, err
}
var r ListAffinityGroupTypesResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type ListAffinityGroupTypesResponse struct {
Count int `json:"count"`
AffinityGroupTypes []*AffinityGroupType `json:"affinitygrouptype"`
}
type AffinityGroupType struct {
Type string `json:"type,omitempty"`
type UpdateVMAffinityGroupResponseAffinitygroup 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");
// you may not use this file except in compliance with the License.
@ -24,204 +24,6 @@ import (
"strings"
)
type ListAlertsParams struct {
p map[string]interface{}
}
func (p *ListAlertsParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["id"]; found {
u.Set("id", v.(string))
}
if v, found := p.p["keyword"]; found {
u.Set("keyword", v.(string))
}
if v, found := p.p["name"]; found {
u.Set("name", v.(string))
}
if v, found := p.p["page"]; found {
vv := strconv.Itoa(v.(int))
u.Set("page", vv)
}
if v, found := p.p["pagesize"]; found {
vv := strconv.Itoa(v.(int))
u.Set("pagesize", vv)
}
if v, found := p.p["type"]; found {
u.Set("type", v.(string))
}
return u
}
func (p *ListAlertsParams) SetId(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["id"] = v
return
}
func (p *ListAlertsParams) SetKeyword(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["keyword"] = v
return
}
func (p *ListAlertsParams) SetName(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["name"] = v
return
}
func (p *ListAlertsParams) SetPage(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["page"] = v
return
}
func (p *ListAlertsParams) SetPagesize(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["pagesize"] = v
return
}
func (p *ListAlertsParams) SetType(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["type"] = v
return
}
// You should always use this function to get a new ListAlertsParams instance,
// as then you are sure you have configured all required params
func (s *AlertService) NewListAlertsParams() *ListAlertsParams {
p := &ListAlertsParams{}
p.p = make(map[string]interface{})
return p
}
// This is a courtesy helper function, which in some cases may not work as expected!
func (s *AlertService) GetAlertID(name string, opts ...OptionFunc) (string, int, error) {
p := &ListAlertsParams{}
p.p = make(map[string]interface{})
p.p["name"] = name
for _, fn := range opts {
if err := fn(s.cs, p); err != nil {
return "", -1, err
}
}
l, err := s.ListAlerts(p)
if err != nil {
return "", -1, err
}
if l.Count == 0 {
return "", l.Count, fmt.Errorf("No match found for %s: %+v", name, l)
}
if l.Count == 1 {
return l.Alerts[0].Id, l.Count, nil
}
if l.Count > 1 {
for _, v := range l.Alerts {
if v.Name == name {
return v.Id, l.Count, nil
}
}
}
return "", l.Count, fmt.Errorf("Could not find an exact match for %s: %+v", name, l)
}
// This is a courtesy helper function, which in some cases may not work as expected!
func (s *AlertService) GetAlertByName(name string, opts ...OptionFunc) (*Alert, int, error) {
id, count, err := s.GetAlertID(name, opts...)
if err != nil {
return nil, count, err
}
r, count, err := s.GetAlertByID(id, opts...)
if err != nil {
return nil, count, err
}
return r, count, nil
}
// This is a courtesy helper function, which in some cases may not work as expected!
func (s *AlertService) GetAlertByID(id string, opts ...OptionFunc) (*Alert, int, error) {
p := &ListAlertsParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
for _, fn := range opts {
if err := fn(s.cs, p); err != nil {
return nil, -1, err
}
}
l, err := s.ListAlerts(p)
if err != nil {
if strings.Contains(err.Error(), fmt.Sprintf(
"Invalid parameter id value=%s due to incorrect long value format, "+
"or entity does not exist", id)) {
return nil, 0, fmt.Errorf("No match found for %s: %+v", id, l)
}
return nil, -1, err
}
if l.Count == 0 {
return nil, l.Count, fmt.Errorf("No match found for %s: %+v", id, l)
}
if l.Count == 1 {
return l.Alerts[0], l.Count, nil
}
return nil, l.Count, fmt.Errorf("There is more then one result for Alert UUID: %s!", id)
}
// Lists all alerts.
func (s *AlertService) ListAlerts(p *ListAlertsParams) (*ListAlertsResponse, error) {
resp, err := s.cs.newRequest("listAlerts", p.toURLValues())
if err != nil {
return nil, err
}
var r ListAlertsResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type ListAlertsResponse struct {
Count int `json:"count"`
Alerts []*Alert `json:"alert"`
}
type Alert struct {
Description string `json:"description,omitempty"`
Id string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Sent string `json:"sent,omitempty"`
Type int `json:"type,omitempty"`
}
type ArchiveAlertsParams struct {
p map[string]interface{}
}
@ -298,12 +100,32 @@ func (s *AlertService) ArchiveAlerts(p *ArchiveAlertsParams) (*ArchiveAlertsResp
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type ArchiveAlertsResponse struct {
Displaytext string `json:"displaytext,omitempty"`
Success string `json:"success,omitempty"`
Displaytext string `json:"displaytext"`
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 {
@ -382,12 +204,32 @@ func (s *AlertService) DeleteAlerts(p *DeleteAlertsParams) (*DeleteAlertsRespons
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type DeleteAlertsResponse struct {
Displaytext string `json:"displaytext,omitempty"`
Success string `json:"success,omitempty"`
Displaytext string `json:"displaytext"`
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 {
@ -495,11 +337,211 @@ func (s *AlertService) GenerateAlert(p *GenerateAlertParams) (*GenerateAlertResp
return nil, err
}
}
return &r, nil
}
type GenerateAlertResponse struct {
JobID string `json:"jobid,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Success bool `json:"success,omitempty"`
JobID string `json:"jobid"`
Displaytext string `json:"displaytext"`
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");
// you may not use this file except in compliance with the License.
@ -23,76 +23,6 @@ import (
"time"
)
type QueryAsyncJobResultParams struct {
p map[string]interface{}
}
func (p *QueryAsyncJobResultParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["jobid"]; found {
u.Set("jobid", v.(string))
}
return u
}
func (p *QueryAsyncJobResultParams) SetJobid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["jobid"] = v
return
}
// You should always use this function to get a new QueryAsyncJobResultParams instance,
// as then you are sure you have configured all required params
func (s *AsyncjobService) NewQueryAsyncJobResultParams(jobid string) *QueryAsyncJobResultParams {
p := &QueryAsyncJobResultParams{}
p.p = make(map[string]interface{})
p.p["jobid"] = jobid
return p
}
// Retrieves the current status of asynchronous job.
func (s *AsyncjobService) QueryAsyncJobResult(p *QueryAsyncJobResultParams) (*QueryAsyncJobResultResponse, error) {
var resp json.RawMessage
var err error
// We should be able to retry on failure as this call is idempotent
for i := 0; i < 3; i++ {
resp, err = s.cs.newRequest("queryAsyncJobResult", p.toURLValues())
if err == nil {
break
}
time.Sleep(500 * time.Millisecond)
}
if err != nil {
return nil, err
}
var r QueryAsyncJobResultResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type QueryAsyncJobResultResponse struct {
Accountid string `json:"accountid,omitempty"`
Cmd string `json:"cmd,omitempty"`
Created string `json:"created,omitempty"`
Jobinstanceid string `json:"jobinstanceid,omitempty"`
Jobinstancetype string `json:"jobinstancetype,omitempty"`
Jobprocstatus int `json:"jobprocstatus,omitempty"`
Jobresult json.RawMessage `json:"jobresult,omitempty"`
Jobresultcode int `json:"jobresultcode,omitempty"`
Jobresulttype string `json:"jobresulttype,omitempty"`
Jobstatus int `json:"jobstatus,omitempty"`
Userid string `json:"userid,omitempty"`
}
type ListAsyncJobsParams struct {
p map[string]interface{}
}
@ -216,6 +146,7 @@ func (s *AsyncjobService) ListAsyncJobs(p *ListAsyncJobsParams) (*ListAsyncJobsR
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -225,15 +156,86 @@ type ListAsyncJobsResponse struct {
}
type AsyncJob struct {
Accountid string `json:"accountid,omitempty"`
Cmd string `json:"cmd,omitempty"`
Created string `json:"created,omitempty"`
Jobinstanceid string `json:"jobinstanceid,omitempty"`
Jobinstancetype string `json:"jobinstancetype,omitempty"`
Jobprocstatus int `json:"jobprocstatus,omitempty"`
Jobresult json.RawMessage `json:"jobresult,omitempty"`
Jobresultcode int `json:"jobresultcode,omitempty"`
Jobresulttype string `json:"jobresulttype,omitempty"`
Jobstatus int `json:"jobstatus,omitempty"`
Userid string `json:"userid,omitempty"`
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"`
}
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");
// 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 {
return nil, err
}
return &r, nil
}
type LoginResponse struct {
Account string `json:"account,omitempty"`
Domainid string `json:"domainid,omitempty"`
Firstname string `json:"firstname,omitempty"`
Lastname string `json:"lastname,omitempty"`
Registered string `json:"registered,omitempty"`
Sessionkey string `json:"sessionkey,omitempty"`
Timeout int `json:"timeout,omitempty"`
Timezone string `json:"timezone,omitempty"`
Type string `json:"type,omitempty"`
Userid string `json:"userid,omitempty"`
Username string `json:"username,omitempty"`
Account string `json:"account"`
Domainid string `json:"domainid"`
Firstname string `json:"firstname"`
Lastname string `json:"lastname"`
Registered string `json:"registered"`
Sessionkey string `json:"sessionkey"`
Timeout int `json:"timeout"`
Timezone string `json:"timezone"`
Timezoneoffset string `json:"timezoneoffset"`
Type string `json:"type"`
Userid string `json:"userid"`
Username string `json:"username"`
}
type LogoutParams struct {
@ -148,9 +150,10 @@ func (s *AuthenticationService) Logout(p *LogoutParams) (*LogoutResponse, error)
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
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");
// you may not use this file except in compliance with the License.
@ -22,6 +22,130 @@ import (
"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 {
p map[string]interface{}
}
@ -156,12 +280,13 @@ func (s *BaremetalService) AddBaremetalPxeKickStartServer(p *AddBaremetalPxeKick
return nil, err
}
}
return &r, nil
}
type AddBaremetalPxeKickStartServerResponse struct {
JobID string `json:"jobid,omitempty"`
Tftpdir string `json:"tftpdir,omitempty"`
JobID string `json:"jobid"`
Tftpdir string `json:"tftpdir"`
}
type AddBaremetalPxePingServerParams struct {
@ -344,104 +469,57 @@ func (s *BaremetalService) AddBaremetalPxePingServer(p *AddBaremetalPxePingServe
return nil, err
}
}
return &r, nil
}
type AddBaremetalPxePingServerResponse struct {
JobID string `json:"jobid,omitempty"`
Pingdir string `json:"pingdir,omitempty"`
Pingstorageserverip string `json:"pingstorageserverip,omitempty"`
Tftpdir string `json:"tftpdir,omitempty"`
JobID string `json:"jobid"`
Pingdir string `json:"pingdir"`
Pingstorageserverip string `json:"pingstorageserverip"`
Tftpdir string `json:"tftpdir"`
}
type AddBaremetalDhcpParams struct {
type AddBaremetalRctParams struct {
p map[string]interface{}
}
func (p *AddBaremetalDhcpParams) toURLValues() url.Values {
func (p *AddBaremetalRctParams) 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))
if v, found := p.p["baremetalrcturl"]; found {
u.Set("baremetalrcturl", v.(string))
}
return u
}
func (p *AddBaremetalDhcpParams) SetDhcpservertype(v string) {
func (p *AddBaremetalRctParams) SetBaremetalrcturl(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["dhcpservertype"] = v
p.p["baremetalrcturl"] = 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,
// 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) NewAddBaremetalDhcpParams(dhcpservertype string, password string, physicalnetworkid string, url string, username string) *AddBaremetalDhcpParams {
p := &AddBaremetalDhcpParams{}
func (s *BaremetalService) NewAddBaremetalRctParams(baremetalrcturl string) *AddBaremetalRctParams {
p := &AddBaremetalRctParams{}
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
p.p["baremetalrcturl"] = baremetalrcturl
return p
}
// adds a baremetal dhcp server
func (s *BaremetalService) AddBaremetalDhcp(p *AddBaremetalDhcpParams) (*AddBaremetalDhcpResponse, error) {
resp, err := s.cs.newRequest("addBaremetalDhcp", p.toURLValues())
// 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 AddBaremetalDhcpResponse
var r AddBaremetalRctResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
@ -465,16 +543,82 @@ func (s *BaremetalService) AddBaremetalDhcp(p *AddBaremetalDhcpParams) (*AddBare
return nil, err
}
}
return &r, nil
}
type AddBaremetalDhcpResponse struct {
JobID string `json:"jobid,omitempty"`
Dhcpservertype string `json:"dhcpservertype,omitempty"`
Id string `json:"id,omitempty"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
Provider string `json:"provider,omitempty"`
Url string `json:"url,omitempty"`
type AddBaremetalRctResponse struct {
JobID string `json:"jobid"`
Id string `json:"id"`
Url string `json:"url"`
}
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 {
@ -578,6 +722,7 @@ func (s *BaremetalService) ListBaremetalDhcp(p *ListBaremetalDhcpParams) (*ListB
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -587,11 +732,11 @@ type ListBaremetalDhcpResponse struct {
}
type BaremetalDhcp struct {
Dhcpservertype string `json:"dhcpservertype,omitempty"`
Id string `json:"id,omitempty"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
Provider string `json:"provider,omitempty"`
Url string `json:"url,omitempty"`
Dhcpservertype string `json:"dhcpservertype"`
Id string `json:"id"`
Physicalnetworkid string `json:"physicalnetworkid"`
Provider string `json:"provider"`
Url string `json:"url"`
}
type ListBaremetalPxeServersParams struct {
@ -684,6 +829,7 @@ func (s *BaremetalService) ListBaremetalPxeServers(p *ListBaremetalPxeServersPar
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -693,149 +839,10 @@ type ListBaremetalPxeServersResponse struct {
}
type BaremetalPxeServer struct {
Id string `json:"id,omitempty"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
Provider string `json:"provider,omitempty"`
Url string `json:"url,omitempty"`
}
type AddBaremetalRctParams struct {
p map[string]interface{}
}
func (p *AddBaremetalRctParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["baremetalrcturl"]; found {
u.Set("baremetalrcturl", v.(string))
}
return u
}
func (p *AddBaremetalRctParams) SetBaremetalrcturl(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["baremetalrcturl"] = v
return
}
// You should always use this function to get a new AddBaremetalRctParams instance,
// as then you are sure you have configured all required params
func (s *BaremetalService) NewAddBaremetalRctParams(baremetalrcturl string) *AddBaremetalRctParams {
p := &AddBaremetalRctParams{}
p.p = make(map[string]interface{})
p.p["baremetalrcturl"] = baremetalrcturl
return p
}
// adds baremetal rack configuration text
func (s *BaremetalService) AddBaremetalRct(p *AddBaremetalRctParams) (*AddBaremetalRctResponse, error) {
resp, err := s.cs.newRequest("addBaremetalRct", p.toURLValues())
if err != nil {
return nil, err
}
var r AddBaremetalRctResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
// If we have a async client, we need to wait for the async result
if s.cs.async {
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
if err != nil {
if err == AsyncTimeoutErr {
return &r, err
}
return nil, err
}
b, err = getRawValue(b)
if err != nil {
return nil, err
}
if err := json.Unmarshal(b, &r); err != nil {
return nil, err
}
}
return &r, nil
}
type AddBaremetalRctResponse struct {
JobID string `json:"jobid,omitempty"`
Id string `json:"id,omitempty"`
Url string `json:"url,omitempty"`
}
type DeleteBaremetalRctParams struct {
p map[string]interface{}
}
func (p *DeleteBaremetalRctParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["id"]; found {
u.Set("id", v.(string))
}
return u
}
func (p *DeleteBaremetalRctParams) SetId(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["id"] = v
return
}
// You should always use this function to get a new DeleteBaremetalRctParams instance,
// as then you are sure you have configured all required params
func (s *BaremetalService) NewDeleteBaremetalRctParams(id string) *DeleteBaremetalRctParams {
p := &DeleteBaremetalRctParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
return p
}
// deletes baremetal rack configuration text
func (s *BaremetalService) DeleteBaremetalRct(p *DeleteBaremetalRctParams) (*DeleteBaremetalRctResponse, error) {
resp, err := s.cs.newRequest("deleteBaremetalRct", p.toURLValues())
if err != nil {
return nil, err
}
var r DeleteBaremetalRctResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
// If we have a async client, we need to wait for the async result
if s.cs.async {
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
if err != nil {
if err == AsyncTimeoutErr {
return &r, err
}
return nil, err
}
if err := json.Unmarshal(b, &r); err != nil {
return nil, err
}
}
return &r, nil
}
type DeleteBaremetalRctResponse struct {
JobID string `json:"jobid,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Success bool `json:"success,omitempty"`
Id string `json:"id"`
Physicalnetworkid string `json:"physicalnetworkid"`
Provider string `json:"provider"`
Url string `json:"url"`
}
type ListBaremetalRctParams struct {
@ -904,6 +911,7 @@ func (s *BaremetalService) ListBaremetalRct(p *ListBaremetalRctParams) (*ListBar
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -913,6 +921,74 @@ type ListBaremetalRctResponse struct {
}
type BaremetalRct struct {
Id string `json:"id,omitempty"`
Url string `json:"url,omitempty"`
Id string `json:"id"`
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");
// 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 &r, nil
}
type UploadCustomCertificateResponse struct {
JobID string `json:"jobid,omitempty"`
Message string `json:"message,omitempty"`
JobID string `json:"jobid"`
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");
// 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 {
return nil, err
}
return &r, nil
}
type GetCloudIdentifierResponse struct {
Cloudidentifier string `json:"cloudidentifier,omitempty"`
Signature string `json:"signature,omitempty"`
Userid string `json:"userid,omitempty"`
Cloudidentifier string `json:"cloudidentifier"`
Signature string `json:"signature"`
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");
// 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 {
return nil, err
}
return &r, nil
}
type AddClusterResponse struct {
Allocationstate string `json:"allocationstate,omitempty"`
Capacity []struct {
Capacitytotal int64 `json:"capacitytotal,omitempty"`
Capacityused int64 `json:"capacityused,omitempty"`
Clusterid string `json:"clusterid,omitempty"`
Clustername string `json:"clustername,omitempty"`
Percentused string `json:"percentused,omitempty"`
Podid string `json:"podid,omitempty"`
Podname string `json:"podname,omitempty"`
Type int `json:"type,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
Zonename string `json:"zonename,omitempty"`
} `json:"capacity,omitempty"`
Clustertype string `json:"clustertype,omitempty"`
Cpuovercommitratio string `json:"cpuovercommitratio,omitempty"`
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"`
Allocationstate string `json:"allocationstate"`
Capacity []AddClusterResponseCapacity `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 AddClusterResponseCapacity 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 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 {
@ -343,141 +449,196 @@ func (s *ClusterService) DeleteCluster(p *DeleteClusterParams) (*DeleteClusterRe
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type DeleteClusterResponse struct {
Displaytext string `json:"displaytext,omitempty"`
Success string `json:"success,omitempty"`
Displaytext string `json:"displaytext"`
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{}
}
func (p *UpdateClusterParams) toURLValues() url.Values {
func (p *DisableOutOfBandManagementForClusterParams) 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))
if v, found := p.p["clusterid"]; found {
u.Set("clusterid", v.(string))
}
return u
}
func (p *UpdateClusterParams) SetAllocationstate(v string) {
func (p *DisableOutOfBandManagementForClusterParams) SetClusterid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["allocationstate"] = v
p.p["clusterid"] = 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,
// You should always use this function to get a new DisableOutOfBandManagementForClusterParams instance,
// as then you are sure you have configured all required params
func (s *ClusterService) NewUpdateClusterParams(id string) *UpdateClusterParams {
p := &UpdateClusterParams{}
func (s *ClusterService) NewDisableOutOfBandManagementForClusterParams(clusterid string) *DisableOutOfBandManagementForClusterParams {
p := &DisableOutOfBandManagementForClusterParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
p.p["clusterid"] = clusterid
return p
}
// Updates an existing cluster
func (s *ClusterService) UpdateCluster(p *UpdateClusterParams) (*UpdateClusterResponse, error) {
resp, err := s.cs.newRequest("updateCluster", p.toURLValues())
// Disables out-of-band management for a cluster
func (s *ClusterService) DisableOutOfBandManagementForCluster(p *DisableOutOfBandManagementForClusterParams) (*DisableOutOfBandManagementForClusterResponse, error) {
resp, err := s.cs.newRequest("disableOutOfBandManagementForCluster", p.toURLValues())
if err != nil {
return nil, err
}
var r UpdateClusterResponse
var r DisableOutOfBandManagementForClusterResponse
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 UpdateClusterResponse struct {
Allocationstate string `json:"allocationstate,omitempty"`
Capacity []struct {
Capacitytotal int64 `json:"capacitytotal,omitempty"`
Capacityused int64 `json:"capacityused,omitempty"`
Clusterid string `json:"clusterid,omitempty"`
Clustername string `json:"clustername,omitempty"`
Percentused string `json:"percentused,omitempty"`
Podid string `json:"podid,omitempty"`
Podname string `json:"podname,omitempty"`
Type int `json:"type,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
Zonename string `json:"zonename,omitempty"`
} `json:"capacity,omitempty"`
Clustertype string `json:"clustertype,omitempty"`
Cpuovercommitratio string `json:"cpuovercommitratio,omitempty"`
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 DisableOutOfBandManagementForClusterResponse 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 EnableOutOfBandManagementForClusterParams struct {
p map[string]interface{}
}
func (p *EnableOutOfBandManagementForClusterParams) 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 *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 {
@ -642,7 +803,7 @@ func (s *ClusterService) GetClusterID(name string, opts ...OptionFunc) (string,
p.p["name"] = name
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return "", -1, err
}
@ -692,7 +853,7 @@ func (s *ClusterService) GetClusterByID(id string, opts ...OptionFunc) (*Cluster
p.p["id"] = id
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return nil, -1, err
}
@ -729,6 +890,7 @@ func (s *ClusterService) ListClusters(p *ListClustersParams) (*ListClustersRespo
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -738,197 +900,36 @@ type ListClustersResponse struct {
}
type Cluster struct {
Allocationstate string `json:"allocationstate,omitempty"`
Capacity []struct {
Capacitytotal int64 `json:"capacitytotal,omitempty"`
Capacityused int64 `json:"capacityused,omitempty"`
Clusterid string `json:"clusterid,omitempty"`
Clustername string `json:"clustername,omitempty"`
Percentused string `json:"percentused,omitempty"`
Podid string `json:"podid,omitempty"`
Podname string `json:"podname,omitempty"`
Type int `json:"type,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
Zonename string `json:"zonename,omitempty"`
} `json:"capacity,omitempty"`
Clustertype string `json:"clustertype,omitempty"`
Cpuovercommitratio string `json:"cpuovercommitratio,omitempty"`
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"`
Allocationstate string `json:"allocationstate"`
Capacity []ClusterCapacity `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 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,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 ClusterCapacity 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 ListDedicatedClustersParams struct {
@ -1041,6 +1042,7 @@ func (s *ClusterService) ListDedicatedClusters(p *ListDedicatedClustersParams) (
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -1050,10 +1052,213 @@ type ListDedicatedClustersResponse struct {
}
type DedicatedCluster struct {
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"`
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 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");
// you may not use this file except in compliance with the License.
@ -22,114 +22,62 @@ import (
"strconv"
)
type UpdateConfigurationParams struct {
type ListCapabilitiesParams struct {
p map[string]interface{}
}
func (p *UpdateConfigurationParams) toURLValues() url.Values {
func (p *ListCapabilitiesParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["accountid"]; found {
u.Set("accountid", v.(string))
}
if v, found := p.p["clusterid"]; found {
u.Set("clusterid", v.(string))
}
if v, found := p.p["name"]; found {
u.Set("name", v.(string))
}
if v, found := p.p["storageid"]; found {
u.Set("storageid", v.(string))
}
if v, found := p.p["value"]; found {
u.Set("value", v.(string))
}
if v, found := p.p["zoneid"]; found {
u.Set("zoneid", v.(string))
}
return u
}
func (p *UpdateConfigurationParams) SetAccountid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["accountid"] = v
return
}
func (p *UpdateConfigurationParams) SetClusterid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["clusterid"] = v
return
}
func (p *UpdateConfigurationParams) SetName(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["name"] = v
return
}
func (p *UpdateConfigurationParams) SetStorageid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["storageid"] = v
return
}
func (p *UpdateConfigurationParams) SetValue(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["value"] = v
return
}
func (p *UpdateConfigurationParams) SetZoneid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["zoneid"] = v
return
}
// You should always use this function to get a new UpdateConfigurationParams instance,
// 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) NewUpdateConfigurationParams(name string) *UpdateConfigurationParams {
p := &UpdateConfigurationParams{}
func (s *ConfigurationService) NewListCapabilitiesParams() *ListCapabilitiesParams {
p := &ListCapabilitiesParams{}
p.p = make(map[string]interface{})
p.p["name"] = name
return p
}
// Updates a configuration.
func (s *ConfigurationService) UpdateConfiguration(p *UpdateConfigurationParams) (*UpdateConfigurationResponse, error) {
resp, err := s.cs.newRequest("updateConfiguration", p.toURLValues())
// 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 UpdateConfigurationResponse
var r ListCapabilitiesResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type UpdateConfigurationResponse struct {
Category string `json:"category,omitempty"`
Description string `json:"description,omitempty"`
Id int64 `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Scope string `json:"scope,omitempty"`
Value string `json:"value,omitempty"`
type ListCapabilitiesResponse struct {
Count int `json:"count"`
Capabilities []*Capability `json:"capability"`
}
type Capability struct {
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 {
@ -150,6 +98,12 @@ func (p *ListConfigurationsParams) toURLValues() url.Values {
if v, found := p.p["clusterid"]; found {
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 {
u.Set("keyword", v.(string))
}
@ -197,6 +151,22 @@ func (p *ListConfigurationsParams) SetClusterid(v string) {
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) {
if p.p == nil {
p.p = make(map[string]interface{})
@ -264,6 +234,7 @@ func (s *ConfigurationService) ListConfigurations(p *ListConfigurationsParams) (
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -273,68 +244,12 @@ type ListConfigurationsResponse struct {
}
type Configuration struct {
Category string `json:"category,omitempty"`
Description string `json:"description,omitempty"`
Id int64 `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Scope string `json:"scope,omitempty"`
Value string `json:"value,omitempty"`
}
type ListCapabilitiesParams struct {
p map[string]interface{}
}
func (p *ListCapabilitiesParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
return u
}
// You should always use this function to get a new ListCapabilitiesParams instance,
// as then you are sure you have configured all required params
func (s *ConfigurationService) NewListCapabilitiesParams() *ListCapabilitiesParams {
p := &ListCapabilitiesParams{}
p.p = make(map[string]interface{})
return p
}
// Lists capabilities
func (s *ConfigurationService) ListCapabilities(p *ListCapabilitiesParams) (*ListCapabilitiesResponse, error) {
resp, err := s.cs.newRequest("listCapabilities", p.toURLValues())
if err != nil {
return nil, err
}
var r ListCapabilitiesResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type ListCapabilitiesResponse struct {
Count int `json:"count"`
Capabilities []*Capability `json:"capability"`
}
type Capability struct {
Allowusercreateprojects bool `json:"allowusercreateprojects,omitempty"`
Allowuserexpungerecovervm bool `json:"allowuserexpungerecovervm,omitempty"`
Allowuserviewdestroyedvm bool `json:"allowuserviewdestroyedvm,omitempty"`
Apilimitinterval int `json:"apilimitinterval,omitempty"`
Apilimitmax int `json:"apilimitmax,omitempty"`
Cloudstackversion string `json:"cloudstackversion,omitempty"`
Customdiskofferingmaxsize int64 `json:"customdiskofferingmaxsize,omitempty"`
Customdiskofferingminsize int64 `json:"customdiskofferingminsize,omitempty"`
Kvmsnapshotenabled bool `json:"kvmsnapshotenabled,omitempty"`
Projectinviterequired bool `json:"projectinviterequired,omitempty"`
Regionsecondaryenabled bool `json:"regionsecondaryenabled,omitempty"`
Securitygroupsenabled bool `json:"securitygroupsenabled,omitempty"`
SupportELB string `json:"supportELB,omitempty"`
Userpublictemplateenabled bool `json:"userpublictemplateenabled,omitempty"`
Category string `json:"category"`
Description string `json:"description"`
Id int64 `json:"id"`
Name string `json:"name"`
Scope string `json:"scope"`
Value string `json:"value"`
}
type ListDeploymentPlannersParams struct {
@ -403,6 +318,7 @@ func (s *ConfigurationService) ListDeploymentPlanners(p *ListDeploymentPlannersP
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -412,222 +328,138 @@ type ListDeploymentPlannersResponse struct {
}
type DeploymentPlanner struct {
Name string `json:"name,omitempty"`
Name string `json:"name"`
}
type ListLdapConfigurationsParams struct {
type UpdateConfigurationParams struct {
p map[string]interface{}
}
func (p *ListLdapConfigurationsParams) toURLValues() url.Values {
func (p *UpdateConfigurationParams) 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["accountid"]; found {
u.Set("accountid", v.(string))
}
if v, found := p.p["keyword"]; found {
u.Set("keyword", v.(string))
if v, found := p.p["clusterid"]; found {
u.Set("clusterid", v.(string))
}
if v, found := p.p["page"]; found {
vv := strconv.Itoa(v.(int))
u.Set("page", vv)
if v, found := p.p["domainid"]; found {
u.Set("domainid", v.(string))
}
if v, found := p.p["pagesize"]; found {
vv := strconv.Itoa(v.(int))
u.Set("pagesize", vv)
if v, found := p.p["imagestoreuuid"]; found {
u.Set("imagestoreuuid", v.(string))
}
if v, found := p.p["port"]; found {
vv := strconv.Itoa(v.(int))
u.Set("port", vv)
if v, found := p.p["name"]; found {
u.Set("name", v.(string))
}
if v, found := p.p["storageid"]; found {
u.Set("storageid", v.(string))
}
if v, found := p.p["value"]; found {
u.Set("value", v.(string))
}
if v, found := p.p["zoneid"]; found {
u.Set("zoneid", v.(string))
}
return u
}
func (p *ListLdapConfigurationsParams) SetHostname(v string) {
func (p *UpdateConfigurationParams) SetAccountid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["hostname"] = v
p.p["accountid"] = v
return
}
func (p *ListLdapConfigurationsParams) SetKeyword(v string) {
func (p *UpdateConfigurationParams) SetClusterid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["keyword"] = v
p.p["clusterid"] = v
return
}
func (p *ListLdapConfigurationsParams) SetPage(v int) {
func (p *UpdateConfigurationParams) SetDomainid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["page"] = v
p.p["domainid"] = v
return
}
func (p *ListLdapConfigurationsParams) SetPagesize(v int) {
func (p *UpdateConfigurationParams) SetImagestoreuuid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["pagesize"] = v
p.p["imagestoreuuid"] = v
return
}
func (p *ListLdapConfigurationsParams) SetPort(v int) {
func (p *UpdateConfigurationParams) SetName(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["port"] = v
p.p["name"] = v
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
func (s *ConfigurationService) NewListLdapConfigurationsParams() *ListLdapConfigurationsParams {
p := &ListLdapConfigurationsParams{}
func (s *ConfigurationService) NewUpdateConfigurationParams(name string) *UpdateConfigurationParams {
p := &UpdateConfigurationParams{}
p.p = make(map[string]interface{})
p.p["name"] = name
return p
}
// Lists all LDAP configurations
func (s *ConfigurationService) ListLdapConfigurations(p *ListLdapConfigurationsParams) (*ListLdapConfigurationsResponse, error) {
resp, err := s.cs.newRequest("listLdapConfigurations", p.toURLValues())
// Updates a configuration.
func (s *ConfigurationService) UpdateConfiguration(p *UpdateConfigurationParams) (*UpdateConfigurationResponse, error) {
resp, err := s.cs.newRequest("updateConfiguration", p.toURLValues())
if err != nil {
return nil, err
}
var r ListLdapConfigurationsResponse
var r UpdateConfigurationResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type ListLdapConfigurationsResponse struct {
Count int `json:"count"`
LdapConfigurations []*LdapConfiguration `json:"ldapconfiguration"`
}
type LdapConfiguration struct {
Hostname string `json:"hostname,omitempty"`
Port int `json:"port,omitempty"`
}
type AddLdapConfigurationParams struct {
p map[string]interface{}
}
func (p *AddLdapConfigurationParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["hostname"]; found {
u.Set("hostname", v.(string))
}
if v, found := p.p["port"]; found {
vv := strconv.Itoa(v.(int))
u.Set("port", vv)
}
return u
}
func (p *AddLdapConfigurationParams) SetHostname(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["hostname"] = v
return
}
func (p *AddLdapConfigurationParams) SetPort(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["port"] = v
return
}
// You should always use this function to get a new AddLdapConfigurationParams instance,
// as then you are sure you have configured all required params
func (s *ConfigurationService) NewAddLdapConfigurationParams(hostname string, port int) *AddLdapConfigurationParams {
p := &AddLdapConfigurationParams{}
p.p = make(map[string]interface{})
p.p["hostname"] = hostname
p.p["port"] = port
return p
}
// Add a new Ldap Configuration
func (s *ConfigurationService) AddLdapConfiguration(p *AddLdapConfigurationParams) (*AddLdapConfigurationResponse, error) {
resp, err := s.cs.newRequest("addLdapConfiguration", p.toURLValues())
if err != nil {
return nil, err
}
var r AddLdapConfigurationResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type AddLdapConfigurationResponse struct {
Hostname string `json:"hostname,omitempty"`
Port int `json:"port,omitempty"`
}
type DeleteLdapConfigurationParams struct {
p map[string]interface{}
}
func (p *DeleteLdapConfigurationParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["hostname"]; found {
u.Set("hostname", v.(string))
}
return u
}
func (p *DeleteLdapConfigurationParams) SetHostname(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["hostname"] = v
return
}
// You should always use this function to get a new DeleteLdapConfigurationParams instance,
// as then you are sure you have configured all required params
func (s *ConfigurationService) NewDeleteLdapConfigurationParams(hostname string) *DeleteLdapConfigurationParams {
p := &DeleteLdapConfigurationParams{}
p.p = make(map[string]interface{})
p.p["hostname"] = hostname
return p
}
// Remove an Ldap Configuration
func (s *ConfigurationService) DeleteLdapConfiguration(p *DeleteLdapConfigurationParams) (*DeleteLdapConfigurationResponse, error) {
resp, err := s.cs.newRequest("deleteLdapConfiguration", p.toURLValues())
if err != nil {
return nil, err
}
var r DeleteLdapConfigurationResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type DeleteLdapConfigurationResponse struct {
Hostname string `json:"hostname,omitempty"`
Port int `json:"port,omitempty"`
type UpdateConfigurationResponse struct {
Category string `json:"category"`
Description string `json:"description"`
Id int64 `json:"id"`
Name string `json:"name"`
Scope string `json:"scope"`
Value string `json:"value"`
}

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");
// 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 {
return nil, err
}
return &r, nil
}
type CreateDiskOfferingResponse struct {
CacheMode string `json:"cacheMode,omitempty"`
Created string `json:"created,omitempty"`
DiskBytesReadRate int64 `json:"diskBytesReadRate,omitempty"`
DiskBytesWriteRate int64 `json:"diskBytesWriteRate,omitempty"`
DiskIopsReadRate int64 `json:"diskIopsReadRate,omitempty"`
DiskIopsWriteRate int64 `json:"diskIopsWriteRate,omitempty"`
Disksize int64 `json:"disksize,omitempty"`
Displayoffering bool `json:"displayoffering,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Hypervisorsnapshotreserve int `json:"hypervisorsnapshotreserve,omitempty"`
Id string `json:"id,omitempty"`
Iscustomized bool `json:"iscustomized,omitempty"`
Iscustomizediops bool `json:"iscustomizediops,omitempty"`
Maxiops int64 `json:"maxiops,omitempty"`
Miniops int64 `json:"miniops,omitempty"`
Name string `json:"name,omitempty"`
Provisioningtype string `json:"provisioningtype,omitempty"`
Storagetype string `json:"storagetype,omitempty"`
Tags string `json:"tags,omitempty"`
}
type UpdateDiskOfferingParams struct {
p map[string]interface{}
}
func (p *UpdateDiskOfferingParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["displayoffering"]; found {
vv := strconv.FormatBool(v.(bool))
u.Set("displayoffering", vv)
}
if v, found := p.p["displaytext"]; found {
u.Set("displaytext", v.(string))
}
if v, found := p.p["id"]; found {
u.Set("id", v.(string))
}
if v, found := p.p["name"]; found {
u.Set("name", v.(string))
}
if v, found := p.p["sortkey"]; found {
vv := strconv.Itoa(v.(int))
u.Set("sortkey", vv)
}
return u
}
func (p *UpdateDiskOfferingParams) SetDisplayoffering(v bool) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["displayoffering"] = v
return
}
func (p *UpdateDiskOfferingParams) SetDisplaytext(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["displaytext"] = v
return
}
func (p *UpdateDiskOfferingParams) SetId(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["id"] = v
return
}
func (p *UpdateDiskOfferingParams) SetName(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["name"] = v
return
}
func (p *UpdateDiskOfferingParams) SetSortkey(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["sortkey"] = v
return
}
// You should always use this function to get a new UpdateDiskOfferingParams instance,
// as then you are sure you have configured all required params
func (s *DiskOfferingService) NewUpdateDiskOfferingParams(id string) *UpdateDiskOfferingParams {
p := &UpdateDiskOfferingParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
return p
}
// Updates a disk offering.
func (s *DiskOfferingService) UpdateDiskOffering(p *UpdateDiskOfferingParams) (*UpdateDiskOfferingResponse, error) {
resp, err := s.cs.newRequest("updateDiskOffering", p.toURLValues())
if err != nil {
return nil, err
}
var r UpdateDiskOfferingResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type UpdateDiskOfferingResponse struct {
CacheMode string `json:"cacheMode,omitempty"`
Created string `json:"created,omitempty"`
DiskBytesReadRate int64 `json:"diskBytesReadRate,omitempty"`
DiskBytesWriteRate int64 `json:"diskBytesWriteRate,omitempty"`
DiskIopsReadRate int64 `json:"diskIopsReadRate,omitempty"`
DiskIopsWriteRate int64 `json:"diskIopsWriteRate,omitempty"`
Disksize int64 `json:"disksize,omitempty"`
Displayoffering bool `json:"displayoffering,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Hypervisorsnapshotreserve int `json:"hypervisorsnapshotreserve,omitempty"`
Id string `json:"id,omitempty"`
Iscustomized bool `json:"iscustomized,omitempty"`
Iscustomizediops bool `json:"iscustomizediops,omitempty"`
Maxiops int64 `json:"maxiops,omitempty"`
Miniops int64 `json:"miniops,omitempty"`
Name string `json:"name,omitempty"`
Provisioningtype string `json:"provisioningtype,omitempty"`
Storagetype string `json:"storagetype,omitempty"`
Tags string `json:"tags,omitempty"`
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"`
}
type DeleteDiskOfferingParams struct {
@ -441,12 +326,32 @@ func (s *DiskOfferingService) DeleteDiskOffering(p *DeleteDiskOfferingParams) (*
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type DeleteDiskOfferingResponse struct {
Displaytext string `json:"displaytext,omitempty"`
Success string `json:"success,omitempty"`
Displaytext string `json:"displaytext"`
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 {
@ -568,7 +473,7 @@ func (s *DiskOfferingService) GetDiskOfferingID(name string, opts ...OptionFunc)
p.p["name"] = name
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return "", -1, err
}
@ -618,7 +523,7 @@ func (s *DiskOfferingService) GetDiskOfferingByID(id string, opts ...OptionFunc)
p.p["id"] = id
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return nil, -1, err
}
@ -655,6 +560,7 @@ func (s *DiskOfferingService) ListDiskOfferings(p *ListDiskOfferingsParams) (*Li
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -664,25 +570,142 @@ type ListDiskOfferingsResponse struct {
}
type DiskOffering struct {
CacheMode string `json:"cacheMode,omitempty"`
Created string `json:"created,omitempty"`
DiskBytesReadRate int64 `json:"diskBytesReadRate,omitempty"`
DiskBytesWriteRate int64 `json:"diskBytesWriteRate,omitempty"`
DiskIopsReadRate int64 `json:"diskIopsReadRate,omitempty"`
DiskIopsWriteRate int64 `json:"diskIopsWriteRate,omitempty"`
Disksize int64 `json:"disksize,omitempty"`
Displayoffering bool `json:"displayoffering,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Hypervisorsnapshotreserve int `json:"hypervisorsnapshotreserve,omitempty"`
Id string `json:"id,omitempty"`
Iscustomized bool `json:"iscustomized,omitempty"`
Iscustomizediops bool `json:"iscustomizediops,omitempty"`
Maxiops int64 `json:"maxiops,omitempty"`
Miniops int64 `json:"miniops,omitempty"`
Name string `json:"name,omitempty"`
Provisioningtype string `json:"provisioningtype,omitempty"`
Storagetype string `json:"storagetype,omitempty"`
Tags string `json:"tags,omitempty"`
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"`
}
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");
// you may not use this file except in compliance with the License.
@ -24,6 +24,258 @@ import (
"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 {
p map[string]interface{}
}
@ -81,6 +333,9 @@ func (p *ListEventsParams) toURLValues() url.Values {
if v, found := p.p["startdate"]; found {
u.Set("startdate", v.(string))
}
if v, found := p.p["startid"]; found {
u.Set("startid", v.(string))
}
if v, found := p.p["type"]; found {
u.Set("type", v.(string))
}
@ -199,6 +454,14 @@ func (p *ListEventsParams) SetStartdate(v string) {
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) {
if p.p == nil {
p.p = make(map[string]interface{})
@ -222,7 +485,7 @@ func (s *EventService) GetEventByID(id string, opts ...OptionFunc) (*Event, int,
p.p["id"] = id
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return nil, -1, err
}
@ -259,6 +522,7 @@ func (s *EventService) ListEvents(p *ListEventsParams) (*ListEventsResponse, err
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -268,228 +532,17 @@ type ListEventsResponse struct {
}
type Event struct {
Account string `json:"account,omitempty"`
Created string `json:"created,omitempty"`
Description string `json:"description,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Id string `json:"id,omitempty"`
Level string `json:"level,omitempty"`
Parentid string `json:"parentid,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
State string `json:"state,omitempty"`
Type string `json:"type,omitempty"`
Username string `json:"username,omitempty"`
}
type ListEventTypesParams struct {
p map[string]interface{}
}
func (p *ListEventTypesParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
return u
}
// You should always use this function to get a new ListEventTypesParams instance,
// as then you are sure you have configured all required params
func (s *EventService) NewListEventTypesParams() *ListEventTypesParams {
p := &ListEventTypesParams{}
p.p = make(map[string]interface{})
return p
}
// List Event Types
func (s *EventService) ListEventTypes(p *ListEventTypesParams) (*ListEventTypesResponse, error) {
resp, err := s.cs.newRequest("listEventTypes", p.toURLValues())
if err != nil {
return nil, err
}
var r ListEventTypesResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type ListEventTypesResponse struct {
Count int `json:"count"`
EventTypes []*EventType `json:"eventtype"`
}
type EventType struct {
Name string `json:"name,omitempty"`
}
type ArchiveEventsParams struct {
p map[string]interface{}
}
func (p *ArchiveEventsParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["enddate"]; found {
u.Set("enddate", v.(string))
}
if v, found := p.p["ids"]; found {
vv := strings.Join(v.([]string), ",")
u.Set("ids", vv)
}
if v, found := p.p["startdate"]; found {
u.Set("startdate", v.(string))
}
if v, found := p.p["type"]; found {
u.Set("type", v.(string))
}
return u
}
func (p *ArchiveEventsParams) SetEnddate(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["enddate"] = v
return
}
func (p *ArchiveEventsParams) SetIds(v []string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["ids"] = v
return
}
func (p *ArchiveEventsParams) SetStartdate(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["startdate"] = v
return
}
func (p *ArchiveEventsParams) SetType(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["type"] = v
return
}
// You should always use this function to get a new ArchiveEventsParams instance,
// as then you are sure you have configured all required params
func (s *EventService) NewArchiveEventsParams() *ArchiveEventsParams {
p := &ArchiveEventsParams{}
p.p = make(map[string]interface{})
return p
}
// Archive one or more events.
func (s *EventService) ArchiveEvents(p *ArchiveEventsParams) (*ArchiveEventsResponse, error) {
resp, err := s.cs.newRequest("archiveEvents", p.toURLValues())
if err != nil {
return nil, err
}
var r ArchiveEventsResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type ArchiveEventsResponse struct {
Displaytext string `json:"displaytext,omitempty"`
Success string `json:"success,omitempty"`
}
type DeleteEventsParams struct {
p map[string]interface{}
}
func (p *DeleteEventsParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["enddate"]; found {
u.Set("enddate", v.(string))
}
if v, found := p.p["ids"]; found {
vv := strings.Join(v.([]string), ",")
u.Set("ids", vv)
}
if v, found := p.p["startdate"]; found {
u.Set("startdate", v.(string))
}
if v, found := p.p["type"]; found {
u.Set("type", v.(string))
}
return u
}
func (p *DeleteEventsParams) SetEnddate(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["enddate"] = v
return
}
func (p *DeleteEventsParams) SetIds(v []string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["ids"] = v
return
}
func (p *DeleteEventsParams) SetStartdate(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["startdate"] = v
return
}
func (p *DeleteEventsParams) SetType(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["type"] = v
return
}
// You should always use this function to get a new DeleteEventsParams instance,
// as then you are sure you have configured all required params
func (s *EventService) NewDeleteEventsParams() *DeleteEventsParams {
p := &DeleteEventsParams{}
p.p = make(map[string]interface{})
return p
}
// Delete one or more events.
func (s *EventService) DeleteEvents(p *DeleteEventsParams) (*DeleteEventsResponse, error) {
resp, err := s.cs.newRequest("deleteEvents", p.toURLValues())
if err != nil {
return nil, err
}
var r DeleteEventsResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type DeleteEventsResponse struct {
Displaytext string `json:"displaytext,omitempty"`
Success string `json:"success,omitempty"`
Account string `json:"account"`
Created string `json:"created"`
Description string `json:"description"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Id string `json:"id"`
Level string `json:"level"`
Parentid string `json:"parentid"`
Project string `json:"project"`
Projectid string `json:"projectid"`
State string `json:"state"`
Type string `json:"type"`
Username string `json:"username"`
}

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");
// you may not use this file except in compliance with the License.
@ -24,140 +24,6 @@ import (
"strings"
)
type ListHypervisorsParams struct {
p map[string]interface{}
}
func (p *ListHypervisorsParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["zoneid"]; found {
u.Set("zoneid", v.(string))
}
return u
}
func (p *ListHypervisorsParams) SetZoneid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["zoneid"] = v
return
}
// You should always use this function to get a new ListHypervisorsParams instance,
// as then you are sure you have configured all required params
func (s *HypervisorService) NewListHypervisorsParams() *ListHypervisorsParams {
p := &ListHypervisorsParams{}
p.p = make(map[string]interface{})
return p
}
// List hypervisors
func (s *HypervisorService) ListHypervisors(p *ListHypervisorsParams) (*ListHypervisorsResponse, error) {
resp, err := s.cs.newRequest("listHypervisors", p.toURLValues())
if err != nil {
return nil, err
}
var r ListHypervisorsResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type ListHypervisorsResponse struct {
Count int `json:"count"`
Hypervisors []*Hypervisor `json:"hypervisor"`
}
type Hypervisor struct {
Name string `json:"name,omitempty"`
}
type UpdateHypervisorCapabilitiesParams struct {
p map[string]interface{}
}
func (p *UpdateHypervisorCapabilitiesParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["id"]; found {
u.Set("id", v.(string))
}
if v, found := p.p["maxguestslimit"]; found {
vv := strconv.FormatInt(v.(int64), 10)
u.Set("maxguestslimit", vv)
}
if v, found := p.p["securitygroupenabled"]; found {
vv := strconv.FormatBool(v.(bool))
u.Set("securitygroupenabled", vv)
}
return u
}
func (p *UpdateHypervisorCapabilitiesParams) SetId(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["id"] = v
return
}
func (p *UpdateHypervisorCapabilitiesParams) SetMaxguestslimit(v int64) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["maxguestslimit"] = v
return
}
func (p *UpdateHypervisorCapabilitiesParams) SetSecuritygroupenabled(v bool) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["securitygroupenabled"] = v
return
}
// You should always use this function to get a new UpdateHypervisorCapabilitiesParams instance,
// as then you are sure you have configured all required params
func (s *HypervisorService) NewUpdateHypervisorCapabilitiesParams() *UpdateHypervisorCapabilitiesParams {
p := &UpdateHypervisorCapabilitiesParams{}
p.p = make(map[string]interface{})
return p
}
// Updates a hypervisor capabilities.
func (s *HypervisorService) UpdateHypervisorCapabilities(p *UpdateHypervisorCapabilitiesParams) (*UpdateHypervisorCapabilitiesResponse, error) {
resp, err := s.cs.newRequest("updateHypervisorCapabilities", p.toURLValues())
if err != nil {
return nil, err
}
var r UpdateHypervisorCapabilitiesResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type UpdateHypervisorCapabilitiesResponse struct {
Hypervisor string `json:"hypervisor,omitempty"`
Hypervisorversion string `json:"hypervisorversion,omitempty"`
Id string `json:"id,omitempty"`
Maxdatavolumeslimit int `json:"maxdatavolumeslimit,omitempty"`
Maxguestslimit int64 `json:"maxguestslimit,omitempty"`
Maxhostspercluster int `json:"maxhostspercluster,omitempty"`
Securitygroupenabled bool `json:"securitygroupenabled,omitempty"`
Storagemotionenabled bool `json:"storagemotionenabled,omitempty"`
}
type ListHypervisorCapabilitiesParams struct {
p map[string]interface{}
}
@ -242,7 +108,7 @@ func (s *HypervisorService) GetHypervisorCapabilityByID(id string, opts ...Optio
p.p["id"] = id
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return nil, -1, err
}
@ -279,6 +145,7 @@ func (s *HypervisorService) ListHypervisorCapabilities(p *ListHypervisorCapabili
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -288,12 +155,148 @@ type ListHypervisorCapabilitiesResponse struct {
}
type HypervisorCapability struct {
Hypervisor string `json:"hypervisor,omitempty"`
Hypervisorversion string `json:"hypervisorversion,omitempty"`
Id string `json:"id,omitempty"`
Maxdatavolumeslimit int `json:"maxdatavolumeslimit,omitempty"`
Maxguestslimit int64 `json:"maxguestslimit,omitempty"`
Maxhostspercluster int `json:"maxhostspercluster,omitempty"`
Securitygroupenabled bool `json:"securitygroupenabled,omitempty"`
Storagemotionenabled bool `json:"storagemotionenabled,omitempty"`
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"`
}
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");
// 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 {
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)
u.Set(fmt.Sprintf("details[%d].%s", i, k), vv)
i++
}
}
@ -116,19 +115,19 @@ func (s *ImageStoreService) AddImageStore(p *AddImageStoreParams) (*AddImageStor
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type AddImageStoreResponse 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"`
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 AddImageStoreS3Params struct {
@ -293,19 +292,267 @@ func (s *ImageStoreService) AddImageStoreS3(p *AddImageStoreS3Params) (*AddImage
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type AddImageStoreS3Response 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"`
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 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 {
@ -425,7 +672,7 @@ func (s *ImageStoreService) GetImageStoreID(name string, opts ...OptionFunc) (st
p.p["name"] = name
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return "", -1, err
}
@ -475,7 +722,7 @@ func (s *ImageStoreService) GetImageStoreByID(id string, opts ...OptionFunc) (*I
p.p["id"] = id
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return nil, -1, err
}
@ -512,6 +759,7 @@ func (s *ImageStoreService) ListImageStores(p *ListImageStoresParams) (*ListImag
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -521,173 +769,14 @@ type ListImageStoresResponse struct {
}
type ImageStore 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 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"`
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 ListSecondaryStagingStoresParams struct {
@ -807,7 +896,7 @@ func (s *ImageStoreService) GetSecondaryStagingStoreID(name string, opts ...Opti
p.p["name"] = name
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return "", -1, err
}
@ -857,7 +946,7 @@ func (s *ImageStoreService) GetSecondaryStagingStoreByID(id string, opts ...Opti
p.p["id"] = id
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return nil, -1, err
}
@ -894,6 +983,7 @@ func (s *ImageStoreService) ListSecondaryStagingStores(p *ListSecondaryStagingSt
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -903,66 +993,14 @@ type ListSecondaryStagingStoresResponse struct {
}
type SecondaryStagingStore 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 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"`
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 UpdateCloudToUseObjectStoreParams struct {
@ -977,8 +1015,7 @@ func (p *UpdateCloudToUseObjectStoreParams) toURLValues() url.Values {
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)
u.Set(fmt.Sprintf("details[%d].%s", i, k), vv)
i++
}
}
@ -1046,17 +1083,17 @@ func (s *ImageStoreService) UpdateCloudToUseObjectStore(p *UpdateCloudToUseObjec
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type UpdateCloudToUseObjectStoreResponse 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"`
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"`
}

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");
// 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.
func (s *InternalLBService) ConfigureInternalLoadBalancerElement(p *ConfigureInternalLoadBalancerElementParams) (*ConfigureInternalLoadBalancerElementResponse, error) {
func (s *InternalLBService) ConfigureInternalLoadBalancerElement(p *ConfigureInternalLoadBalancerElementParams) (*InternalLoadBalancerElementResponse, error) {
resp, err := s.cs.newRequest("configureInternalLoadBalancerElement", p.toURLValues())
if err != nil {
return nil, err
}
var r ConfigureInternalLoadBalancerElementResponse
var r InternalLoadBalancerElementResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
@ -100,14 +100,15 @@ func (s *InternalLBService) ConfigureInternalLoadBalancerElement(p *ConfigureInt
return nil, err
}
}
return &r, nil
}
type ConfigureInternalLoadBalancerElementResponse struct {
JobID string `json:"jobid,omitempty"`
Enabled bool `json:"enabled,omitempty"`
Id string `json:"id,omitempty"`
Nspid string `json:"nspid,omitempty"`
type InternalLoadBalancerElementResponse struct {
JobID string `json:"jobid"`
Enabled bool `json:"enabled"`
Id string `json:"id"`
Nspid string `json:"nspid"`
}
type CreateInternalLoadBalancerElementParams struct {
@ -173,14 +174,15 @@ func (s *InternalLBService) CreateInternalLoadBalancerElement(p *CreateInternalL
return nil, err
}
}
return &r, nil
}
type CreateInternalLoadBalancerElementResponse struct {
JobID string `json:"jobid,omitempty"`
Enabled bool `json:"enabled,omitempty"`
Id string `json:"id,omitempty"`
Nspid string `json:"nspid,omitempty"`
JobID string `json:"jobid"`
Enabled bool `json:"enabled"`
Id string `json:"id"`
Nspid string `json:"nspid"`
}
type ListInternalLoadBalancerElementsParams struct {
@ -279,7 +281,7 @@ func (s *InternalLBService) GetInternalLoadBalancerElementByID(id string, opts .
p.p["id"] = id
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return nil, -1, err
}
@ -316,6 +318,7 @@ func (s *InternalLBService) ListInternalLoadBalancerElements(p *ListInternalLoad
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -325,297 +328,9 @@ type ListInternalLoadBalancerElementsResponse struct {
}
type InternalLoadBalancerElement struct {
Enabled bool `json:"enabled,omitempty"`
Id string `json:"id,omitempty"`
Nspid string `json:"nspid,omitempty"`
}
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"`
Enabled bool `json:"enabled"`
Id string `json:"id"`
Nspid string `json:"nspid"`
}
type ListInternalLoadBalancerVMsParams struct {
@ -837,7 +552,7 @@ func (s *InternalLBService) GetInternalLoadBalancerVMID(name string, opts ...Opt
p.p["name"] = name
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return "", -1, err
}
@ -887,7 +602,7 @@ func (s *InternalLBService) GetInternalLoadBalancerVMByID(id string, opts ...Opt
p.p["id"] = id
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return nil, -1, err
}
@ -924,6 +639,7 @@ func (s *InternalLBService) ListInternalLoadBalancerVMs(p *ListInternalLoadBalan
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -933,72 +649,296 @@ type ListInternalLoadBalancerVMsResponse struct {
}
type InternalLoadBalancerVM struct {
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"`
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 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"`
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");
// you may not use this file except in compliance with the License.
@ -22,6 +22,373 @@ import (
"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 {
p map[string]interface{}
}
@ -111,365 +478,17 @@ func (s *LimitService) UpdateResourceLimit(p *UpdateResourceLimitParams) (*Updat
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type UpdateResourceLimitResponse struct {
Account string `json:"account,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Max int64 `json:"max,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Resourcetype string `json:"resourcetype,omitempty"`
}
type UpdateResourceCountParams struct {
p map[string]interface{}
}
func (p *UpdateResourceCountParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["account"]; found {
u.Set("account", v.(string))
}
if v, found := p.p["domainid"]; found {
u.Set("domainid", v.(string))
}
if v, found := p.p["projectid"]; found {
u.Set("projectid", v.(string))
}
if v, found := p.p["resourcetype"]; found {
vv := strconv.Itoa(v.(int))
u.Set("resourcetype", vv)
}
return u
}
func (p *UpdateResourceCountParams) SetAccount(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["account"] = v
return
}
func (p *UpdateResourceCountParams) SetDomainid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["domainid"] = v
return
}
func (p *UpdateResourceCountParams) SetProjectid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["projectid"] = v
return
}
func (p *UpdateResourceCountParams) SetResourcetype(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["resourcetype"] = v
return
}
// You should always use this function to get a new UpdateResourceCountParams instance,
// as then you are sure you have configured all required params
func (s *LimitService) NewUpdateResourceCountParams(domainid string) *UpdateResourceCountParams {
p := &UpdateResourceCountParams{}
p.p = make(map[string]interface{})
p.p["domainid"] = domainid
return p
}
// Recalculate and update resource count for an account or domain.
func (s *LimitService) UpdateResourceCount(p *UpdateResourceCountParams) (*UpdateResourceCountResponse, error) {
resp, err := s.cs.newRequest("updateResourceCount", p.toURLValues())
if err != nil {
return nil, err
}
var r UpdateResourceCountResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type UpdateResourceCountResponse struct {
Account string `json:"account,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Resourcecount int64 `json:"resourcecount,omitempty"`
Resourcetype string `json:"resourcetype,omitempty"`
}
type ListResourceLimitsParams struct {
p map[string]interface{}
}
func (p *ListResourceLimitsParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["account"]; found {
u.Set("account", v.(string))
}
if v, found := p.p["domainid"]; found {
u.Set("domainid", v.(string))
}
if v, found := p.p["id"]; found {
vv := strconv.FormatInt(v.(int64), 10)
u.Set("id", vv)
}
if v, found := p.p["isrecursive"]; found {
vv := strconv.FormatBool(v.(bool))
u.Set("isrecursive", vv)
}
if v, found := p.p["keyword"]; found {
u.Set("keyword", v.(string))
}
if v, found := p.p["listall"]; found {
vv := strconv.FormatBool(v.(bool))
u.Set("listall", vv)
}
if v, found := p.p["page"]; found {
vv := strconv.Itoa(v.(int))
u.Set("page", vv)
}
if v, found := p.p["pagesize"]; found {
vv := strconv.Itoa(v.(int))
u.Set("pagesize", vv)
}
if v, found := p.p["projectid"]; found {
u.Set("projectid", v.(string))
}
if v, found := p.p["resourcetype"]; found {
vv := strconv.Itoa(v.(int))
u.Set("resourcetype", vv)
}
return u
}
func (p *ListResourceLimitsParams) SetAccount(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["account"] = v
return
}
func (p *ListResourceLimitsParams) SetDomainid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["domainid"] = v
return
}
func (p *ListResourceLimitsParams) SetId(v int64) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["id"] = v
return
}
func (p *ListResourceLimitsParams) SetIsrecursive(v bool) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["isrecursive"] = v
return
}
func (p *ListResourceLimitsParams) SetKeyword(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["keyword"] = v
return
}
func (p *ListResourceLimitsParams) SetListall(v bool) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["listall"] = v
return
}
func (p *ListResourceLimitsParams) SetPage(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["page"] = v
return
}
func (p *ListResourceLimitsParams) SetPagesize(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["pagesize"] = v
return
}
func (p *ListResourceLimitsParams) SetProjectid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["projectid"] = v
return
}
func (p *ListResourceLimitsParams) SetResourcetype(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["resourcetype"] = v
return
}
// You should always use this function to get a new ListResourceLimitsParams instance,
// as then you are sure you have configured all required params
func (s *LimitService) NewListResourceLimitsParams() *ListResourceLimitsParams {
p := &ListResourceLimitsParams{}
p.p = make(map[string]interface{})
return p
}
// Lists resource limits.
func (s *LimitService) ListResourceLimits(p *ListResourceLimitsParams) (*ListResourceLimitsResponse, error) {
resp, err := s.cs.newRequest("listResourceLimits", p.toURLValues())
if err != nil {
return nil, err
}
var r ListResourceLimitsResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type ListResourceLimitsResponse struct {
Count int `json:"count"`
ResourceLimits []*ResourceLimit `json:"resourcelimit"`
}
type ResourceLimit struct {
Account string `json:"account,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Max int64 `json:"max,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Resourcetype string `json:"resourcetype,omitempty"`
}
type GetApiLimitParams struct {
p map[string]interface{}
}
func (p *GetApiLimitParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
return u
}
// You should always use this function to get a new GetApiLimitParams instance,
// as then you are sure you have configured all required params
func (s *LimitService) NewGetApiLimitParams() *GetApiLimitParams {
p := &GetApiLimitParams{}
p.p = make(map[string]interface{})
return p
}
// Get API limit count for the caller
func (s *LimitService) GetApiLimit(p *GetApiLimitParams) (*GetApiLimitResponse, error) {
resp, err := s.cs.newRequest("getApiLimit", p.toURLValues())
if err != nil {
return nil, err
}
var r GetApiLimitResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type GetApiLimitResponse struct {
Account string `json:"account,omitempty"`
Accountid string `json:"accountid,omitempty"`
ApiAllowed int `json:"apiAllowed,omitempty"`
ApiIssued int `json:"apiIssued,omitempty"`
ExpireAfter int64 `json:"expireAfter,omitempty"`
}
type ResetApiLimitParams struct {
p map[string]interface{}
}
func (p *ResetApiLimitParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["account"]; found {
u.Set("account", v.(string))
}
return u
}
func (p *ResetApiLimitParams) SetAccount(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["account"] = v
return
}
// You should always use this function to get a new ResetApiLimitParams instance,
// as then you are sure you have configured all required params
func (s *LimitService) NewResetApiLimitParams() *ResetApiLimitParams {
p := &ResetApiLimitParams{}
p.p = make(map[string]interface{})
return p
}
// Reset api count
func (s *LimitService) ResetApiLimit(p *ResetApiLimitParams) (*ResetApiLimitResponse, error) {
resp, err := s.cs.newRequest("resetApiLimit", p.toURLValues())
if err != nil {
return nil, err
}
var r ResetApiLimitResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type ResetApiLimitResponse struct {
Account string `json:"account,omitempty"`
Accountid string `json:"accountid,omitempty"`
ApiAllowed int `json:"apiAllowed,omitempty"`
ApiIssued int `json:"apiIssued,omitempty"`
ExpireAfter int64 `json:"expireAfter,omitempty"`
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"`
}

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");
// you may not use this file except in compliance with the License.
@ -24,91 +24,6 @@ import (
"strings"
)
type EnableStaticNatParams struct {
p map[string]interface{}
}
func (p *EnableStaticNatParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["ipaddressid"]; found {
u.Set("ipaddressid", v.(string))
}
if v, found := p.p["networkid"]; found {
u.Set("networkid", v.(string))
}
if v, found := p.p["virtualmachineid"]; found {
u.Set("virtualmachineid", v.(string))
}
if v, found := p.p["vmguestip"]; found {
u.Set("vmguestip", v.(string))
}
return u
}
func (p *EnableStaticNatParams) SetIpaddressid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["ipaddressid"] = v
return
}
func (p *EnableStaticNatParams) SetNetworkid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["networkid"] = v
return
}
func (p *EnableStaticNatParams) SetVirtualmachineid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["virtualmachineid"] = v
return
}
func (p *EnableStaticNatParams) SetVmguestip(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["vmguestip"] = v
return
}
// You should always use this function to get a new EnableStaticNatParams instance,
// as then you are sure you have configured all required params
func (s *NATService) NewEnableStaticNatParams(ipaddressid string, virtualmachineid string) *EnableStaticNatParams {
p := &EnableStaticNatParams{}
p.p = make(map[string]interface{})
p.p["ipaddressid"] = ipaddressid
p.p["virtualmachineid"] = virtualmachineid
return p
}
// Enables static NAT for given IP address
func (s *NATService) EnableStaticNat(p *EnableStaticNatParams) (*EnableStaticNatResponse, error) {
resp, err := s.cs.newRequest("enableStaticNat", p.toURLValues())
if err != nil {
return nil, err
}
var r EnableStaticNatResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type EnableStaticNatResponse struct {
Displaytext string `json:"displaytext,omitempty"`
Success string `json:"success,omitempty"`
}
type CreateIpForwardingRuleParams struct {
p map[string]interface{}
}
@ -233,39 +148,29 @@ func (s *NATService) CreateIpForwardingRule(p *CreateIpForwardingRuleParams) (*C
return nil, err
}
}
return &r, nil
}
type CreateIpForwardingRuleResponse struct {
JobID string `json:"jobid,omitempty"`
Cidrlist string `json:"cidrlist,omitempty"`
Fordisplay bool `json:"fordisplay,omitempty"`
Id string `json:"id,omitempty"`
Ipaddress string `json:"ipaddress,omitempty"`
Ipaddressid string `json:"ipaddressid,omitempty"`
Networkid string `json:"networkid,omitempty"`
Privateendport string `json:"privateendport,omitempty"`
Privateport string `json:"privateport,omitempty"`
Protocol string `json:"protocol,omitempty"`
Publicendport string `json:"publicendport,omitempty"`
Publicport string `json:"publicport,omitempty"`
State string `json:"state,omitempty"`
Tags []struct {
Account string `json:"account,omitempty"`
Customer string `json:"customer,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Key string `json:"key,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Resourceid string `json:"resourceid,omitempty"`
Resourcetype string `json:"resourcetype,omitempty"`
Value string `json:"value,omitempty"`
} `json:"tags,omitempty"`
Virtualmachinedisplayname string `json:"virtualmachinedisplayname,omitempty"`
Virtualmachineid string `json:"virtualmachineid,omitempty"`
Virtualmachinename string `json:"virtualmachinename,omitempty"`
Vmguestip string `json:"vmguestip,omitempty"`
JobID string `json:"jobid"`
Cidrlist string `json:"cidrlist"`
Fordisplay bool `json:"fordisplay"`
Id string `json:"id"`
Ipaddress string `json:"ipaddress"`
Ipaddressid string `json:"ipaddressid"`
Networkid string `json:"networkid"`
Privateendport string `json:"privateendport"`
Privateport string `json:"privateport"`
Protocol string `json:"protocol"`
Publicendport string `json:"publicendport"`
Publicport string `json:"publicport"`
State string `json:"state"`
Tags []Tags `json:"tags"`
Virtualmachinedisplayname string `json:"virtualmachinedisplayname"`
Virtualmachineid string `json:"virtualmachineid"`
Virtualmachinename string `json:"virtualmachinename"`
Vmguestip string `json:"vmguestip"`
}
type DeleteIpForwardingRuleParams struct {
@ -326,13 +231,187 @@ func (s *NATService) DeleteIpForwardingRule(p *DeleteIpForwardingRuleParams) (*D
return nil, err
}
}
return &r, nil
}
type DeleteIpForwardingRuleResponse struct {
JobID string `json:"jobid,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Success bool `json:"success,omitempty"`
JobID string `json:"jobid"`
Displaytext string `json:"displaytext"`
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 {
@ -487,7 +566,7 @@ func (s *NATService) GetIpForwardingRuleByID(id string, opts ...OptionFunc) (*Ip
p.p["id"] = id
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return nil, -1, err
}
@ -524,6 +603,7 @@ func (s *NATService) ListIpForwardingRules(p *ListIpForwardingRulesParams) (*Lis
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -533,99 +613,21 @@ type ListIpForwardingRulesResponse struct {
}
type IpForwardingRule struct {
Cidrlist string `json:"cidrlist,omitempty"`
Fordisplay bool `json:"fordisplay,omitempty"`
Id string `json:"id,omitempty"`
Ipaddress string `json:"ipaddress,omitempty"`
Ipaddressid string `json:"ipaddressid,omitempty"`
Networkid string `json:"networkid,omitempty"`
Privateendport string `json:"privateendport,omitempty"`
Privateport string `json:"privateport,omitempty"`
Protocol string `json:"protocol,omitempty"`
Publicendport string `json:"publicendport,omitempty"`
Publicport string `json:"publicport,omitempty"`
State string `json:"state,omitempty"`
Tags []struct {
Account string `json:"account,omitempty"`
Customer string `json:"customer,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Key string `json:"key,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Resourceid string `json:"resourceid,omitempty"`
Resourcetype string `json:"resourcetype,omitempty"`
Value string `json:"value,omitempty"`
} `json:"tags,omitempty"`
Virtualmachinedisplayname string `json:"virtualmachinedisplayname,omitempty"`
Virtualmachineid string `json:"virtualmachineid,omitempty"`
Virtualmachinename string `json:"virtualmachinename,omitempty"`
Vmguestip string `json:"vmguestip,omitempty"`
}
type DisableStaticNatParams struct {
p map[string]interface{}
}
func (p *DisableStaticNatParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["ipaddressid"]; found {
u.Set("ipaddressid", v.(string))
}
return u
}
func (p *DisableStaticNatParams) SetIpaddressid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["ipaddressid"] = v
return
}
// You should always use this function to get a new DisableStaticNatParams instance,
// as then you are sure you have configured all required params
func (s *NATService) NewDisableStaticNatParams(ipaddressid string) *DisableStaticNatParams {
p := &DisableStaticNatParams{}
p.p = make(map[string]interface{})
p.p["ipaddressid"] = ipaddressid
return p
}
// Disables static rule for given IP address
func (s *NATService) DisableStaticNat(p *DisableStaticNatParams) (*DisableStaticNatResponse, error) {
resp, err := s.cs.newRequest("disableStaticNat", p.toURLValues())
if err != nil {
return nil, err
}
var r DisableStaticNatResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
// If we have a async client, we need to wait for the async result
if s.cs.async {
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
if err != nil {
if err == AsyncTimeoutErr {
return &r, err
}
return nil, err
}
if err := json.Unmarshal(b, &r); err != nil {
return nil, err
}
}
return &r, nil
}
type DisableStaticNatResponse struct {
JobID string `json:"jobid,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Success bool `json:"success,omitempty"`
Cidrlist string `json:"cidrlist"`
Fordisplay bool `json:"fordisplay"`
Id string `json:"id"`
Ipaddress string `json:"ipaddress"`
Ipaddressid string `json:"ipaddressid"`
Networkid string `json:"networkid"`
Privateendport string `json:"privateendport"`
Privateport string `json:"privateport"`
Protocol string `json:"protocol"`
Publicendport string `json:"publicendport"`
Publicport string `json:"publicport"`
State string `json:"state"`
Tags []Tags `json:"tags"`
Virtualmachinedisplayname string `json:"virtualmachinedisplayname"`
Virtualmachineid string `json:"virtualmachineid"`
Virtualmachinename string `json:"virtualmachinename"`
Vmguestip string `json:"vmguestip"`
}

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");
// 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 {
return nil, err
}
return &r, nil
}
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 {
@ -181,6 +253,7 @@ func (s *NetworkDeviceService) ListNetworkDevice(p *ListNetworkDeviceParams) (*L
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -190,56 +263,5 @@ type ListNetworkDeviceResponse struct {
}
type NetworkDevice struct {
Id string `json:"id,omitempty"`
}
type DeleteNetworkDeviceParams struct {
p map[string]interface{}
}
func (p *DeleteNetworkDeviceParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["id"]; found {
u.Set("id", v.(string))
}
return u
}
func (p *DeleteNetworkDeviceParams) SetId(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["id"] = v
return
}
// You should always use this function to get a new DeleteNetworkDeviceParams instance,
// as then you are sure you have configured all required params
func (s *NetworkDeviceService) NewDeleteNetworkDeviceParams(id string) *DeleteNetworkDeviceParams {
p := &DeleteNetworkDeviceParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
return p
}
// Deletes network device.
func (s *NetworkDeviceService) DeleteNetworkDevice(p *DeleteNetworkDeviceParams) (*DeleteNetworkDeviceResponse, error) {
resp, err := s.cs.newRequest("deleteNetworkDevice", p.toURLValues())
if err != nil {
return nil, err
}
var r DeleteNetworkDeviceResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type DeleteNetworkDeviceResponse struct {
Displaytext string `json:"displaytext,omitempty"`
Success string `json:"success,omitempty"`
Id string `json:"id"`
}

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");
// 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 {
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)
u.Set(fmt.Sprintf("details[%d].%s", i, k), vv)
i++
}
}
@ -55,6 +54,10 @@ func (p *CreateNetworkOfferingParams) toURLValues() url.Values {
vv := strconv.FormatBool(v.(bool))
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 {
u.Set("guestiptype", v.(string))
}
@ -157,6 +160,14 @@ func (p *CreateNetworkOfferingParams) SetEgressdefaultpolicy(v bool) {
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) {
if p.p == nil {
p.p = make(map[string]interface{})
@ -297,214 +308,56 @@ func (s *NetworkOfferingService) CreateNetworkOffering(p *CreateNetworkOfferingP
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type CreateNetworkOfferingResponse struct {
Availability string `json:"availability,omitempty"`
Conservemode bool `json:"conservemode,omitempty"`
Created string `json:"created,omitempty"`
Details map[string]string `json:"details,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Egressdefaultpolicy bool `json:"egressdefaultpolicy,omitempty"`
Forvpc bool `json:"forvpc,omitempty"`
Guestiptype string `json:"guestiptype,omitempty"`
Id string `json:"id,omitempty"`
Isdefault bool `json:"isdefault,omitempty"`
Ispersistent bool `json:"ispersistent,omitempty"`
Maxconnections int `json:"maxconnections,omitempty"`
Name string `json:"name,omitempty"`
Networkrate int `json:"networkrate,omitempty"`
Service []struct {
Capability []struct {
Canchooseservicecapability bool `json:"canchooseservicecapability,omitempty"`
Name string `json:"name,omitempty"`
Value string `json:"value,omitempty"`
} `json:"capability,omitempty"`
Name string `json:"name,omitempty"`
Provider []struct {
Canenableindividualservice bool `json:"canenableindividualservice,omitempty"`
Destinationphysicalnetworkid string `json:"destinationphysicalnetworkid,omitempty"`
Id string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
Servicelist []string `json:"servicelist,omitempty"`
State string `json:"state,omitempty"`
} `json:"provider,omitempty"`
} `json:"service,omitempty"`
Serviceofferingid string `json:"serviceofferingid,omitempty"`
Specifyipranges bool `json:"specifyipranges,omitempty"`
Specifyvlan bool `json:"specifyvlan,omitempty"`
State string `json:"state,omitempty"`
Supportsstrechedl2subnet bool `json:"supportsstrechedl2subnet,omitempty"`
Tags string `json:"tags,omitempty"`
Traffictype string `json:"traffictype,omitempty"`
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 []CreateNetworkOfferingResponseService `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 UpdateNetworkOfferingParams struct {
p map[string]interface{}
type CreateNetworkOfferingResponseService struct {
Capability []CreateNetworkOfferingResponseServiceCapability `json:"capability"`
Name string `json:"name"`
Provider []CreateNetworkOfferingResponseServiceProvider `json:"provider"`
}
func (p *UpdateNetworkOfferingParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["availability"]; found {
u.Set("availability", v.(string))
}
if v, found := p.p["displaytext"]; found {
u.Set("displaytext", v.(string))
}
if v, found := p.p["id"]; found {
u.Set("id", v.(string))
}
if v, found := p.p["keepaliveenabled"]; found {
vv := strconv.FormatBool(v.(bool))
u.Set("keepaliveenabled", vv)
}
if v, found := p.p["maxconnections"]; found {
vv := strconv.Itoa(v.(int))
u.Set("maxconnections", vv)
}
if v, found := p.p["name"]; found {
u.Set("name", v.(string))
}
if v, found := p.p["sortkey"]; found {
vv := strconv.Itoa(v.(int))
u.Set("sortkey", vv)
}
if v, found := p.p["state"]; found {
u.Set("state", v.(string))
}
return u
type CreateNetworkOfferingResponseServiceProvider 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"`
}
func (p *UpdateNetworkOfferingParams) SetAvailability(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["availability"] = v
return
}
func (p *UpdateNetworkOfferingParams) SetDisplaytext(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["displaytext"] = v
return
}
func (p *UpdateNetworkOfferingParams) SetId(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["id"] = v
return
}
func (p *UpdateNetworkOfferingParams) SetKeepaliveenabled(v bool) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["keepaliveenabled"] = v
return
}
func (p *UpdateNetworkOfferingParams) SetMaxconnections(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["maxconnections"] = v
return
}
func (p *UpdateNetworkOfferingParams) SetName(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["name"] = v
return
}
func (p *UpdateNetworkOfferingParams) SetSortkey(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["sortkey"] = v
return
}
func (p *UpdateNetworkOfferingParams) SetState(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["state"] = v
return
}
// You should always use this function to get a new UpdateNetworkOfferingParams instance,
// as then you are sure you have configured all required params
func (s *NetworkOfferingService) NewUpdateNetworkOfferingParams() *UpdateNetworkOfferingParams {
p := &UpdateNetworkOfferingParams{}
p.p = make(map[string]interface{})
return p
}
// Updates a network offering.
func (s *NetworkOfferingService) UpdateNetworkOffering(p *UpdateNetworkOfferingParams) (*UpdateNetworkOfferingResponse, error) {
resp, err := s.cs.newRequest("updateNetworkOffering", p.toURLValues())
if err != nil {
return nil, err
}
var r UpdateNetworkOfferingResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type UpdateNetworkOfferingResponse struct {
Availability string `json:"availability,omitempty"`
Conservemode bool `json:"conservemode,omitempty"`
Created string `json:"created,omitempty"`
Details map[string]string `json:"details,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Egressdefaultpolicy bool `json:"egressdefaultpolicy,omitempty"`
Forvpc bool `json:"forvpc,omitempty"`
Guestiptype string `json:"guestiptype,omitempty"`
Id string `json:"id,omitempty"`
Isdefault bool `json:"isdefault,omitempty"`
Ispersistent bool `json:"ispersistent,omitempty"`
Maxconnections int `json:"maxconnections,omitempty"`
Name string `json:"name,omitempty"`
Networkrate int `json:"networkrate,omitempty"`
Service []struct {
Capability []struct {
Canchooseservicecapability bool `json:"canchooseservicecapability,omitempty"`
Name string `json:"name,omitempty"`
Value string `json:"value,omitempty"`
} `json:"capability,omitempty"`
Name string `json:"name,omitempty"`
Provider []struct {
Canenableindividualservice bool `json:"canenableindividualservice,omitempty"`
Destinationphysicalnetworkid string `json:"destinationphysicalnetworkid,omitempty"`
Id string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
Servicelist []string `json:"servicelist,omitempty"`
State string `json:"state,omitempty"`
} `json:"provider,omitempty"`
} `json:"service,omitempty"`
Serviceofferingid string `json:"serviceofferingid,omitempty"`
Specifyipranges bool `json:"specifyipranges,omitempty"`
Specifyvlan bool `json:"specifyvlan,omitempty"`
State string `json:"state,omitempty"`
Supportsstrechedl2subnet bool `json:"supportsstrechedl2subnet,omitempty"`
Tags string `json:"tags,omitempty"`
Traffictype string `json:"traffictype,omitempty"`
type CreateNetworkOfferingResponseServiceCapability struct {
Canchooseservicecapability bool `json:"canchooseservicecapability"`
Name string `json:"name"`
Value string `json:"value"`
}
type DeleteNetworkOfferingParams struct {
@ -550,12 +403,32 @@ func (s *NetworkOfferingService) DeleteNetworkOffering(p *DeleteNetworkOfferingP
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type DeleteNetworkOfferingResponse struct {
Displaytext string `json:"displaytext,omitempty"`
Success string `json:"success,omitempty"`
Displaytext string `json:"displaytext"`
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 {
@ -814,7 +687,7 @@ func (s *NetworkOfferingService) GetNetworkOfferingID(name string, opts ...Optio
p.p["name"] = name
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return "", -1, err
}
@ -864,7 +737,7 @@ func (s *NetworkOfferingService) GetNetworkOfferingByID(id string, opts ...Optio
p.p["id"] = id
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return nil, -1, err
}
@ -901,6 +774,7 @@ func (s *NetworkOfferingService) ListNetworkOfferings(p *ListNetworkOfferingsPar
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -910,42 +784,234 @@ type ListNetworkOfferingsResponse struct {
}
type NetworkOffering struct {
Availability string `json:"availability,omitempty"`
Conservemode bool `json:"conservemode,omitempty"`
Created string `json:"created,omitempty"`
Details map[string]string `json:"details,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Egressdefaultpolicy bool `json:"egressdefaultpolicy,omitempty"`
Forvpc bool `json:"forvpc,omitempty"`
Guestiptype string `json:"guestiptype,omitempty"`
Id string `json:"id,omitempty"`
Isdefault bool `json:"isdefault,omitempty"`
Ispersistent bool `json:"ispersistent,omitempty"`
Maxconnections int `json:"maxconnections,omitempty"`
Name string `json:"name,omitempty"`
Networkrate int `json:"networkrate,omitempty"`
Service []struct {
Capability []struct {
Canchooseservicecapability bool `json:"canchooseservicecapability,omitempty"`
Name string `json:"name,omitempty"`
Value string `json:"value,omitempty"`
} `json:"capability,omitempty"`
Name string `json:"name,omitempty"`
Provider []struct {
Canenableindividualservice bool `json:"canenableindividualservice,omitempty"`
Destinationphysicalnetworkid string `json:"destinationphysicalnetworkid,omitempty"`
Id string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
Servicelist []string `json:"servicelist,omitempty"`
State string `json:"state,omitempty"`
} `json:"provider,omitempty"`
} `json:"service,omitempty"`
Serviceofferingid string `json:"serviceofferingid,omitempty"`
Specifyipranges bool `json:"specifyipranges,omitempty"`
Specifyvlan bool `json:"specifyvlan,omitempty"`
State string `json:"state,omitempty"`
Supportsstrechedl2subnet bool `json:"supportsstrechedl2subnet,omitempty"`
Tags string `json:"tags,omitempty"`
Traffictype string `json:"traffictype,omitempty"`
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 []NetworkOfferingServiceInternal `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 NetworkOfferingServiceInternal struct {
Capability []NetworkOfferingServiceInternalCapability `json:"capability"`
Name string `json:"name"`
Provider []NetworkOfferingServiceInternalProvider `json:"provider"`
}
type NetworkOfferingServiceInternalProvider 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 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");
// 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 &r, nil
}
type AddIpToNicResponse struct {
JobID string `json:"jobid,omitempty"`
Id string `json:"id,omitempty"`
Ipaddress string `json:"ipaddress,omitempty"`
Networkid string `json:"networkid,omitempty"`
Nicid string `json:"nicid,omitempty"`
Virtualmachineid string `json:"virtualmachineid,omitempty"`
}
type RemoveIpFromNicParams struct {
p map[string]interface{}
}
func (p *RemoveIpFromNicParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["id"]; found {
u.Set("id", v.(string))
}
return u
}
func (p *RemoveIpFromNicParams) SetId(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["id"] = v
return
}
// You should always use this function to get a new RemoveIpFromNicParams instance,
// as then you are sure you have configured all required params
func (s *NicService) NewRemoveIpFromNicParams(id string) *RemoveIpFromNicParams {
p := &RemoveIpFromNicParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
return p
}
// Removes secondary IP from the NIC.
func (s *NicService) RemoveIpFromNic(p *RemoveIpFromNicParams) (*RemoveIpFromNicResponse, error) {
resp, err := s.cs.newRequest("removeIpFromNic", p.toURLValues())
if err != nil {
return nil, err
}
var r RemoveIpFromNicResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
// If we have a async client, we need to wait for the async result
if s.cs.async {
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
if err != nil {
if err == AsyncTimeoutErr {
return &r, err
}
return nil, err
}
if err := json.Unmarshal(b, &r); err != nil {
return nil, err
}
}
return &r, nil
}
type RemoveIpFromNicResponse struct {
JobID string `json:"jobid,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Success bool `json:"success,omitempty"`
}
type UpdateVmNicIpParams struct {
p map[string]interface{}
}
func (p *UpdateVmNicIpParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["ipaddress"]; found {
u.Set("ipaddress", v.(string))
}
if v, found := p.p["nicid"]; found {
u.Set("nicid", v.(string))
}
return u
}
func (p *UpdateVmNicIpParams) SetIpaddress(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["ipaddress"] = v
return
}
func (p *UpdateVmNicIpParams) SetNicid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["nicid"] = v
return
}
// You should always use this function to get a new UpdateVmNicIpParams instance,
// as then you are sure you have configured all required params
func (s *NicService) NewUpdateVmNicIpParams(nicid string) *UpdateVmNicIpParams {
p := &UpdateVmNicIpParams{}
p.p = make(map[string]interface{})
p.p["nicid"] = nicid
return p
}
// Update the default Ip of a VM Nic
func (s *NicService) UpdateVmNicIp(p *UpdateVmNicIpParams) (*UpdateVmNicIpResponse, error) {
resp, err := s.cs.newRequest("updateVmNicIp", p.toURLValues())
if err != nil {
return nil, err
}
var r UpdateVmNicIpResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
// If we have a async client, we need to wait for the async result
if s.cs.async {
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
if err != nil {
if err == AsyncTimeoutErr {
return &r, err
}
return nil, err
}
b, err = getRawValue(b)
if err != nil {
return nil, err
}
if err := json.Unmarshal(b, &r); err != nil {
return nil, err
}
}
return &r, nil
}
type UpdateVmNicIpResponse struct {
JobID string `json:"jobid,omitempty"`
Account string `json:"account,omitempty"`
Affinitygroup []struct {
Account string `json:"account,omitempty"`
Description string `json:"description,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Id string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Type string `json:"type,omitempty"`
VirtualmachineIds []string `json:"virtualmachineIds,omitempty"`
} `json:"affinitygroup,omitempty"`
Cpunumber int `json:"cpunumber,omitempty"`
Cpuspeed int `json:"cpuspeed,omitempty"`
Cpuused string `json:"cpuused,omitempty"`
Created string `json:"created,omitempty"`
Details map[string]string `json:"details,omitempty"`
Diskioread int64 `json:"diskioread,omitempty"`
Diskiowrite int64 `json:"diskiowrite,omitempty"`
Diskkbsread int64 `json:"diskkbsread,omitempty"`
Diskkbswrite int64 `json:"diskkbswrite,omitempty"`
Diskofferingid string `json:"diskofferingid,omitempty"`
Diskofferingname string `json:"diskofferingname,omitempty"`
Displayname string `json:"displayname,omitempty"`
Displayvm bool `json:"displayvm,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Forvirtualnetwork bool `json:"forvirtualnetwork,omitempty"`
Group string `json:"group,omitempty"`
Groupid string `json:"groupid,omitempty"`
Guestosid string `json:"guestosid,omitempty"`
Haenable bool `json:"haenable,omitempty"`
Hostid string `json:"hostid,omitempty"`
Hostname string `json:"hostname,omitempty"`
Hypervisor string `json:"hypervisor,omitempty"`
Id string `json:"id,omitempty"`
Instancename string `json:"instancename,omitempty"`
Isdynamicallyscalable bool `json:"isdynamicallyscalable,omitempty"`
Isodisplaytext string `json:"isodisplaytext,omitempty"`
Isoid string `json:"isoid,omitempty"`
Isoname string `json:"isoname,omitempty"`
Keypair string `json:"keypair,omitempty"`
Memory int `json:"memory,omitempty"`
Name string `json:"name,omitempty"`
Networkkbsread int64 `json:"networkkbsread,omitempty"`
Networkkbswrite int64 `json:"networkkbswrite,omitempty"`
Nic []struct {
Broadcasturi string `json:"broadcasturi,omitempty"`
Deviceid string `json:"deviceid,omitempty"`
Gateway string `json:"gateway,omitempty"`
Id string `json:"id,omitempty"`
Ip6address string `json:"ip6address,omitempty"`
Ip6cidr string `json:"ip6cidr,omitempty"`
Ip6gateway string `json:"ip6gateway,omitempty"`
Ipaddress string `json:"ipaddress,omitempty"`
Isdefault bool `json:"isdefault,omitempty"`
Isolationuri string `json:"isolationuri,omitempty"`
Macaddress string `json:"macaddress,omitempty"`
Netmask string `json:"netmask,omitempty"`
Networkid string `json:"networkid,omitempty"`
Networkname string `json:"networkname,omitempty"`
JobID string `json:"jobid"`
Id string `json:"id"`
Ipaddress string `json:"ipaddress"`
Networkid string `json:"networkid"`
Nicid string `json:"nicid"`
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"`
Id string `json:"id"`
Ipaddress string `json:"ipaddress"`
} `json:"secondaryip"`
Virtualmachineid string `json:"virtualmachineid"`
}
type ListNicsParams struct {
@ -541,6 +225,7 @@ func (s *NicService) ListNics(p *ListNicsParams) (*ListNicsResponse, error) {
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -550,25 +235,282 @@ type ListNicsResponse struct {
}
type Nic struct {
Broadcasturi string `json:"broadcasturi,omitempty"`
Deviceid string `json:"deviceid,omitempty"`
Gateway string `json:"gateway,omitempty"`
Id string `json:"id,omitempty"`
Ip6address string `json:"ip6address,omitempty"`
Ip6cidr string `json:"ip6cidr,omitempty"`
Ip6gateway string `json:"ip6gateway,omitempty"`
Ipaddress string `json:"ipaddress,omitempty"`
Isdefault bool `json:"isdefault,omitempty"`
Isolationuri string `json:"isolationuri,omitempty"`
Macaddress string `json:"macaddress,omitempty"`
Netmask string `json:"netmask,omitempty"`
Networkid string `json:"networkid,omitempty"`
Networkname string `json:"networkname,omitempty"`
Broadcasturi string `json:"broadcasturi"`
Deviceid string `json:"deviceid"`
Extradhcpoption []string `json:"extradhcpoption"`
Gateway string `json:"gateway"`
Id string `json:"id"`
Ip6address string `json:"ip6address"`
Ip6cidr string `json:"ip6cidr"`
Ip6gateway string `json:"ip6gateway"`
Ipaddress string `json:"ipaddress"`
Isdefault bool `json:"isdefault"`
Isolationuri string `json:"isolationuri"`
Macaddress string `json:"macaddress"`
Netmask string `json:"netmask"`
Networkid string `json:"networkid"`
Networkname string `json:"networkname"`
Nsxlogicalswitch string `json:"nsxlogicalswitch"`
Nsxlogicalswitchport string `json:"nsxlogicalswitchport"`
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"`
Id string `json:"id"`
Ipaddress string `json:"ipaddress"`
} `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");
// 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 {
u.Set("hostname", v.(string))
}
if v, found := p.p["l2gatewayserviceuuid"]; found {
u.Set("l2gatewayserviceuuid", v.(string))
}
if v, found := p.p["l3gatewayserviceuuid"]; found {
u.Set("l3gatewayserviceuuid", v.(string))
}
@ -60,6 +63,14 @@ func (p *AddNiciraNvpDeviceParams) SetHostname(v string) {
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) {
if p.p == nil {
p.p = make(map[string]interface{})
@ -144,18 +155,20 @@ func (s *NiciraNVPService) AddNiciraNvpDevice(p *AddNiciraNvpDeviceParams) (*Add
return nil, err
}
}
return &r, nil
}
type AddNiciraNvpDeviceResponse struct {
JobID string `json:"jobid,omitempty"`
Hostname string `json:"hostname,omitempty"`
L3gatewayserviceuuid string `json:"l3gatewayserviceuuid,omitempty"`
Niciradevicename string `json:"niciradevicename,omitempty"`
Nvpdeviceid string `json:"nvpdeviceid,omitempty"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
Provider string `json:"provider,omitempty"`
Transportzoneuuid string `json:"transportzoneuuid,omitempty"`
JobID string `json:"jobid"`
Hostname string `json:"hostname"`
L2gatewayserviceuuid string `json:"l2gatewayserviceuuid"`
L3gatewayserviceuuid string `json:"l3gatewayserviceuuid"`
Niciradevicename string `json:"niciradevicename"`
Nvpdeviceid string `json:"nvpdeviceid"`
Physicalnetworkid string `json:"physicalnetworkid"`
Provider string `json:"provider"`
Transportzoneuuid string `json:"transportzoneuuid"`
}
type DeleteNiciraNvpDeviceParams struct {
@ -216,13 +229,14 @@ func (s *NiciraNVPService) DeleteNiciraNvpDevice(p *DeleteNiciraNvpDeviceParams)
return nil, err
}
}
return &r, nil
}
type DeleteNiciraNvpDeviceResponse struct {
JobID string `json:"jobid,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Success bool `json:"success,omitempty"`
JobID string `json:"jobid"`
Displaytext string `json:"displaytext"`
Success bool `json:"success"`
}
type ListNiciraNvpDevicesParams struct {
@ -313,6 +327,7 @@ func (s *NiciraNVPService) ListNiciraNvpDevices(p *ListNiciraNvpDevicesParams) (
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -322,11 +337,12 @@ type ListNiciraNvpDevicesResponse struct {
}
type NiciraNvpDevice struct {
Hostname string `json:"hostname,omitempty"`
L3gatewayserviceuuid string `json:"l3gatewayserviceuuid,omitempty"`
Niciradevicename string `json:"niciradevicename,omitempty"`
Nvpdeviceid string `json:"nvpdeviceid,omitempty"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
Provider string `json:"provider,omitempty"`
Transportzoneuuid string `json:"transportzoneuuid,omitempty"`
Hostname string `json:"hostname"`
L2gatewayserviceuuid string `json:"l2gatewayserviceuuid"`
L3gatewayserviceuuid string `json:"l3gatewayserviceuuid"`
Niciradevicename string `json:"niciradevicename"`
Nvpdeviceid string `json:"nvpdeviceid"`
Physicalnetworkid string `json:"physicalnetworkid"`
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");
// 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.
func (s *OvsElementService) ConfigureOvsElement(p *ConfigureOvsElementParams) (*ConfigureOvsElementResponse, error) {
func (s *OvsElementService) ConfigureOvsElement(p *ConfigureOvsElementParams) (*OvsElementResponse, error) {
resp, err := s.cs.newRequest("configureOvsElement", p.toURLValues())
if err != nil {
return nil, err
}
var r ConfigureOvsElementResponse
var r OvsElementResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
@ -100,19 +100,20 @@ func (s *OvsElementService) ConfigureOvsElement(p *ConfigureOvsElementParams) (*
return nil, err
}
}
return &r, nil
}
type ConfigureOvsElementResponse struct {
JobID string `json:"jobid,omitempty"`
Account string `json:"account,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Enabled bool `json:"enabled,omitempty"`
Id string `json:"id,omitempty"`
Nspid string `json:"nspid,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
type OvsElementResponse struct {
JobID string `json:"jobid"`
Account string `json:"account"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Enabled bool `json:"enabled"`
Id string `json:"id"`
Nspid string `json:"nspid"`
Project string `json:"project"`
Projectid string `json:"projectid"`
}
type ListOvsElementsParams struct {
@ -211,7 +212,7 @@ func (s *OvsElementService) GetOvsElementByID(id string, opts ...OptionFunc) (*O
p.p["id"] = id
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return nil, -1, err
}
@ -248,6 +249,7 @@ func (s *OvsElementService) ListOvsElements(p *ListOvsElementsParams) (*ListOvsE
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -257,12 +259,12 @@ type ListOvsElementsResponse struct {
}
type OvsElement struct {
Account string `json:"account,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Enabled bool `json:"enabled,omitempty"`
Id string `json:"id,omitempty"`
Nspid string `json:"nspid,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Account string `json:"account"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Enabled bool `json:"enabled"`
Id string `json:"id"`
Nspid string `json:"nspid"`
Project string `json:"project"`
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");
// 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 {
return nil, err
}
return &r, nil
}
type CreatePodResponse struct {
Allocationstate string `json:"allocationstate,omitempty"`
Capacity []struct {
Capacitytotal int64 `json:"capacitytotal,omitempty"`
Capacityused int64 `json:"capacityused,omitempty"`
Clusterid string `json:"clusterid,omitempty"`
Clustername string `json:"clustername,omitempty"`
Percentused string `json:"percentused,omitempty"`
Podid string `json:"podid,omitempty"`
Podname string `json:"podname,omitempty"`
Type int `json:"type,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
Zonename string `json:"zonename,omitempty"`
} `json:"capacity,omitempty"`
Endip string `json:"endip,omitempty"`
Gateway string `json:"gateway,omitempty"`
Id string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Netmask string `json:"netmask,omitempty"`
Startip string `json:"startip,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
Zonename string `json:"zonename,omitempty"`
Allocationstate string `json:"allocationstate"`
Capacity []CreatePodResponseCapacity `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 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{}
}
func (p *UpdatePodParams) toURLValues() url.Values {
func (p *DedicatePodParams) 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["account"]; found {
u.Set("account", v.(string))
}
if v, found := p.p["endip"]; found {
u.Set("endip", v.(string))
if v, found := p.p["domainid"]; found {
u.Set("domainid", v.(string))
}
if v, found := p.p["gateway"]; found {
u.Set("gateway", v.(string))
}
if v, found := p.p["id"]; found {
u.Set("id", v.(string))
}
if v, found := p.p["name"]; found {
u.Set("name", v.(string))
}
if v, found := p.p["netmask"]; found {
u.Set("netmask", v.(string))
}
if v, found := p.p["startip"]; found {
u.Set("startip", v.(string))
if v, found := p.p["podid"]; found {
u.Set("podid", v.(string))
}
return u
}
func (p *UpdatePodParams) SetAllocationstate(v string) {
func (p *DedicatePodParams) SetAccount(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["allocationstate"] = v
p.p["account"] = v
return
}
func (p *UpdatePodParams) SetEndip(v string) {
func (p *DedicatePodParams) SetDomainid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["endip"] = v
p.p["domainid"] = v
return
}
func (p *UpdatePodParams) SetGateway(v string) {
func (p *DedicatePodParams) SetPodid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["gateway"] = v
p.p["podid"] = v
return
}
func (p *UpdatePodParams) SetId(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["id"] = v
return
}
func (p *UpdatePodParams) SetName(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["name"] = v
return
}
func (p *UpdatePodParams) SetNetmask(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["netmask"] = v
return
}
func (p *UpdatePodParams) SetStartip(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["startip"] = v
return
}
// You should always use this function to get a new UpdatePodParams instance,
// 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) NewUpdatePodParams(id string) *UpdatePodParams {
p := &UpdatePodParams{}
func (s *PodService) NewDedicatePodParams(domainid string, podid string) *DedicatePodParams {
p := &DedicatePodParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
p.p["domainid"] = domainid
p.p["podid"] = podid
return p
}
// Updates a Pod.
func (s *PodService) UpdatePod(p *UpdatePodParams) (*UpdatePodResponse, error) {
resp, err := s.cs.newRequest("updatePod", p.toURLValues())
// 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 UpdatePodResponse
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 UpdatePodResponse struct {
Allocationstate string `json:"allocationstate,omitempty"`
Capacity []struct {
Capacitytotal int64 `json:"capacitytotal,omitempty"`
Capacityused int64 `json:"capacityused,omitempty"`
Clusterid string `json:"clusterid,omitempty"`
Clustername string `json:"clustername,omitempty"`
Percentused string `json:"percentused,omitempty"`
Podid string `json:"podid,omitempty"`
Podname string `json:"podname,omitempty"`
Type int `json:"type,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
Zonename string `json:"zonename,omitempty"`
} `json:"capacity,omitempty"`
Endip string `json:"endip,omitempty"`
Gateway string `json:"gateway,omitempty"`
Id string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Netmask string `json:"netmask,omitempty"`
Startip string `json:"startip,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
Zonename string `json:"zonename,omitempty"`
type DedicatePodResponse struct {
JobID string `json:"jobid"`
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 DeletePodParams struct {
@ -343,12 +314,160 @@ func (s *PodService) DeletePod(p *DeletePodParams) (*DeletePodResponse, error) {
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type DeletePodResponse struct {
Displaytext string `json:"displaytext,omitempty"`
Success string `json:"success,omitempty"`
Displaytext string `json:"displaytext"`
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 {
@ -469,7 +588,7 @@ func (s *PodService) GetPodID(name string, opts ...OptionFunc) (string, int, err
p.p["name"] = name
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return "", -1, err
}
@ -519,7 +638,7 @@ func (s *PodService) GetPodByID(id string, opts ...OptionFunc) (*Pod, int, error
p.p["id"] = id
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return nil, -1, err
}
@ -556,6 +675,7 @@ func (s *PodService) ListPods(p *ListPodsParams) (*ListPodsResponse, error) {
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -565,126 +685,33 @@ type ListPodsResponse struct {
}
type Pod struct {
Allocationstate string `json:"allocationstate,omitempty"`
Capacity []struct {
Capacitytotal int64 `json:"capacitytotal,omitempty"`
Capacityused int64 `json:"capacityused,omitempty"`
Clusterid string `json:"clusterid,omitempty"`
Clustername string `json:"clustername,omitempty"`
Percentused string `json:"percentused,omitempty"`
Podid string `json:"podid,omitempty"`
Podname string `json:"podname,omitempty"`
Type int `json:"type,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
Zonename string `json:"zonename,omitempty"`
} `json:"capacity,omitempty"`
Endip string `json:"endip,omitempty"`
Gateway string `json:"gateway,omitempty"`
Id string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Netmask string `json:"netmask,omitempty"`
Startip string `json:"startip,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
Zonename string `json:"zonename,omitempty"`
Allocationstate string `json:"allocationstate"`
Capacity []PodCapacity `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 DedicatePodParams struct {
p map[string]interface{}
}
func (p *DedicatePodParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["account"]; found {
u.Set("account", v.(string))
}
if v, found := p.p["domainid"]; found {
u.Set("domainid", v.(string))
}
if v, found := p.p["podid"]; found {
u.Set("podid", v.(string))
}
return u
}
func (p *DedicatePodParams) SetAccount(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["account"] = v
return
}
func (p *DedicatePodParams) SetDomainid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["domainid"] = v
return
}
func (p *DedicatePodParams) SetPodid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["podid"] = v
return
}
// You should always use this function to get a new DedicatePodParams instance,
// as then you are sure you have configured all required params
func (s *PodService) NewDedicatePodParams(domainid string, podid string) *DedicatePodParams {
p := &DedicatePodParams{}
p.p = make(map[string]interface{})
p.p["domainid"] = domainid
p.p["podid"] = podid
return p
}
// Dedicates a Pod.
func (s *PodService) DedicatePod(p *DedicatePodParams) (*DedicatePodResponse, error) {
resp, err := s.cs.newRequest("dedicatePod", p.toURLValues())
if err != nil {
return nil, err
}
var r DedicatePodResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
// If we have a async client, we need to wait for the async result
if s.cs.async {
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
if err != nil {
if err == AsyncTimeoutErr {
return &r, err
}
return nil, err
}
b, err = getRawValue(b)
if err != nil {
return nil, err
}
if err := json.Unmarshal(b, &r); err != nil {
return nil, err
}
}
return &r, nil
}
type DedicatePodResponse struct {
JobID string `json:"jobid,omitempty"`
Accountid string `json:"accountid,omitempty"`
Affinitygroupid string `json:"affinitygroupid,omitempty"`
Domainid string `json:"domainid,omitempty"`
Id string `json:"id,omitempty"`
Podid string `json:"podid,omitempty"`
Podname string `json:"podname,omitempty"`
type PodCapacity 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 ReleaseDedicatedPodParams struct {
@ -745,138 +772,155 @@ func (s *PodService) ReleaseDedicatedPod(p *ReleaseDedicatedPodParams) (*Release
return nil, err
}
}
return &r, nil
}
type ReleaseDedicatedPodResponse struct {
JobID string `json:"jobid,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Success bool `json:"success,omitempty"`
JobID string `json:"jobid"`
Displaytext string `json:"displaytext"`
Success bool `json:"success"`
}
type ListDedicatedPodsParams struct {
type UpdatePodParams struct {
p map[string]interface{}
}
func (p *ListDedicatedPodsParams) toURLValues() url.Values {
func (p *UpdatePodParams) 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["allocationstate"]; found {
u.Set("allocationstate", v.(string))
}
if v, found := p.p["affinitygroupid"]; found {
u.Set("affinitygroupid", v.(string))
if v, found := p.p["endip"]; found {
u.Set("endip", v.(string))
}
if v, found := p.p["domainid"]; found {
u.Set("domainid", v.(string))
if v, found := p.p["gateway"]; found {
u.Set("gateway", v.(string))
}
if v, found := p.p["keyword"]; found {
u.Set("keyword", v.(string))
if v, found := p.p["id"]; found {
u.Set("id", v.(string))
}
if v, found := p.p["page"]; found {
vv := strconv.Itoa(v.(int))
u.Set("page", vv)
if v, found := p.p["name"]; found {
u.Set("name", v.(string))
}
if v, found := p.p["pagesize"]; found {
vv := strconv.Itoa(v.(int))
u.Set("pagesize", vv)
if v, found := p.p["netmask"]; found {
u.Set("netmask", v.(string))
}
if v, found := p.p["podid"]; found {
u.Set("podid", v.(string))
if v, found := p.p["startip"]; found {
u.Set("startip", v.(string))
}
return u
}
func (p *ListDedicatedPodsParams) SetAccount(v string) {
func (p *UpdatePodParams) SetAllocationstate(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["account"] = v
p.p["allocationstate"] = v
return
}
func (p *ListDedicatedPodsParams) SetAffinitygroupid(v string) {
func (p *UpdatePodParams) SetEndip(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["affinitygroupid"] = v
p.p["endip"] = v
return
}
func (p *ListDedicatedPodsParams) SetDomainid(v string) {
func (p *UpdatePodParams) SetGateway(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["domainid"] = v
p.p["gateway"] = v
return
}
func (p *ListDedicatedPodsParams) SetKeyword(v string) {
func (p *UpdatePodParams) SetId(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["keyword"] = v
p.p["id"] = v
return
}
func (p *ListDedicatedPodsParams) SetPage(v int) {
func (p *UpdatePodParams) SetName(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["page"] = v
p.p["name"] = v
return
}
func (p *ListDedicatedPodsParams) SetPagesize(v int) {
func (p *UpdatePodParams) SetNetmask(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["pagesize"] = v
p.p["netmask"] = v
return
}
func (p *ListDedicatedPodsParams) SetPodid(v string) {
func (p *UpdatePodParams) SetStartip(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["podid"] = v
p.p["startip"] = v
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
func (s *PodService) NewListDedicatedPodsParams() *ListDedicatedPodsParams {
p := &ListDedicatedPodsParams{}
func (s *PodService) NewUpdatePodParams(id string) *UpdatePodParams {
p := &UpdatePodParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
return p
}
// Lists dedicated pods.
func (s *PodService) ListDedicatedPods(p *ListDedicatedPodsParams) (*ListDedicatedPodsResponse, error) {
resp, err := s.cs.newRequest("listDedicatedPods", p.toURLValues())
// Updates a Pod.
func (s *PodService) UpdatePod(p *UpdatePodParams) (*UpdatePodResponse, error) {
resp, err := s.cs.newRequest("updatePod", p.toURLValues())
if err != nil {
return nil, err
}
var r ListDedicatedPodsResponse
var r UpdatePodResponse
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 UpdatePodResponse struct {
Allocationstate string `json:"allocationstate"`
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 {
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 UpdatePodResponseCapacity 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"`
}

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");
// 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 &r, nil
}
type CreatePortableIpRangeResponse struct {
JobID string `json:"jobid,omitempty"`
Endip string `json:"endip,omitempty"`
Gateway string `json:"gateway,omitempty"`
Id string `json:"id,omitempty"`
Netmask string `json:"netmask,omitempty"`
Portableipaddress []struct {
Accountid string `json:"accountid,omitempty"`
Allocated string `json:"allocated,omitempty"`
Domainid string `json:"domainid,omitempty"`
Ipaddress string `json:"ipaddress,omitempty"`
Networkid string `json:"networkid,omitempty"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
Regionid int `json:"regionid,omitempty"`
State string `json:"state,omitempty"`
Vpcid string `json:"vpcid,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
} `json:"portableipaddress,omitempty"`
Regionid int `json:"regionid,omitempty"`
Startip string `json:"startip,omitempty"`
Vlan string `json:"vlan,omitempty"`
JobID string `json:"jobid"`
Endip string `json:"endip"`
Gateway string `json:"gateway"`
Id string `json:"id"`
Netmask string `json:"netmask"`
Portableipaddress []CreatePortableIpRangeResponsePortableipaddress `json:"portableipaddress"`
Regionid int `json:"regionid"`
Startip string `json:"startip"`
Vlan string `json:"vlan"`
}
type CreatePortableIpRangeResponsePortableipaddress struct {
Accountid string `json:"accountid"`
Allocated string `json:"allocated"`
Domainid string `json:"domainid"`
Ipaddress string `json:"ipaddress"`
Networkid string `json:"networkid"`
Physicalnetworkid string `json:"physicalnetworkid"`
Regionid int `json:"regionid"`
State string `json:"state"`
Vpcid string `json:"vpcid"`
Zoneid string `json:"zoneid"`
}
type DeletePortableIpRangeParams struct {
@ -231,13 +234,14 @@ func (s *PortableIPService) DeletePortableIpRange(p *DeletePortableIpRangeParams
return nil, err
}
}
return &r, nil
}
type DeletePortableIpRangeResponse struct {
JobID string `json:"jobid,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Success bool `json:"success,omitempty"`
JobID string `json:"jobid"`
Displaytext string `json:"displaytext"`
Success bool `json:"success"`
}
type ListPortableIpRangesParams struct {
@ -325,7 +329,7 @@ func (s *PortableIPService) GetPortableIpRangeByID(id string, opts ...OptionFunc
p.p["id"] = id
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return nil, -1, err
}
@ -362,6 +366,7 @@ func (s *PortableIPService) ListPortableIpRanges(p *ListPortableIpRangesParams)
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -371,23 +376,25 @@ type ListPortableIpRangesResponse struct {
}
type PortableIpRange struct {
Endip string `json:"endip,omitempty"`
Gateway string `json:"gateway,omitempty"`
Id string `json:"id,omitempty"`
Netmask string `json:"netmask,omitempty"`
Portableipaddress []struct {
Accountid string `json:"accountid,omitempty"`
Allocated string `json:"allocated,omitempty"`
Domainid string `json:"domainid,omitempty"`
Ipaddress string `json:"ipaddress,omitempty"`
Networkid string `json:"networkid,omitempty"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
Regionid int `json:"regionid,omitempty"`
State string `json:"state,omitempty"`
Vpcid string `json:"vpcid,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
} `json:"portableipaddress,omitempty"`
Regionid int `json:"regionid,omitempty"`
Startip string `json:"startip,omitempty"`
Vlan string `json:"vlan,omitempty"`
Endip string `json:"endip"`
Gateway string `json:"gateway"`
Id string `json:"id"`
Netmask string `json:"netmask"`
Portableipaddress []PortableIpRangePortableipaddress `json:"portableipaddress"`
Regionid int `json:"regionid"`
Startip string `json:"startip"`
Vlan string `json:"vlan"`
}
type PortableIpRangePortableipaddress struct {
Accountid string `json:"accountid"`
Allocated string `json:"allocated"`
Domainid string `json:"domainid"`
Ipaddress string `json:"ipaddress"`
Networkid string `json:"networkid"`
Physicalnetworkid string `json:"physicalnetworkid"`
Regionid int `json:"regionid"`
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");
// 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 {
return nil, err
}
return &r, nil
}
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");
// 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 {
return nil, err
}
return &r, nil
}
type AddRegionResponse struct {
Endpoint string `json:"endpoint,omitempty"`
Gslbserviceenabled bool `json:"gslbserviceenabled,omitempty"`
Id int `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Portableipserviceenabled bool `json:"portableipserviceenabled,omitempty"`
}
type UpdateRegionParams struct {
p map[string]interface{}
}
func (p *UpdateRegionParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["endpoint"]; found {
u.Set("endpoint", v.(string))
}
if v, found := p.p["id"]; found {
vv := strconv.Itoa(v.(int))
u.Set("id", vv)
}
if v, found := p.p["name"]; found {
u.Set("name", v.(string))
}
return u
}
func (p *UpdateRegionParams) SetEndpoint(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["endpoint"] = v
return
}
func (p *UpdateRegionParams) SetId(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["id"] = v
return
}
func (p *UpdateRegionParams) SetName(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["name"] = v
return
}
// You should always use this function to get a new UpdateRegionParams instance,
// as then you are sure you have configured all required params
func (s *RegionService) NewUpdateRegionParams(id int) *UpdateRegionParams {
p := &UpdateRegionParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
return p
}
// Updates a region
func (s *RegionService) UpdateRegion(p *UpdateRegionParams) (*UpdateRegionResponse, error) {
resp, err := s.cs.newRequest("updateRegion", p.toURLValues())
if err != nil {
return nil, err
}
var r UpdateRegionResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type UpdateRegionResponse struct {
Endpoint string `json:"endpoint,omitempty"`
Gslbserviceenabled bool `json:"gslbserviceenabled,omitempty"`
Id int `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Portableipserviceenabled bool `json:"portableipserviceenabled,omitempty"`
}
type RemoveRegionParams struct {
p map[string]interface{}
}
func (p *RemoveRegionParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["id"]; found {
vv := strconv.Itoa(v.(int))
u.Set("id", vv)
}
return u
}
func (p *RemoveRegionParams) SetId(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["id"] = v
return
}
// You should always use this function to get a new RemoveRegionParams instance,
// as then you are sure you have configured all required params
func (s *RegionService) NewRemoveRegionParams(id int) *RemoveRegionParams {
p := &RemoveRegionParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
return p
}
// Removes specified region
func (s *RegionService) RemoveRegion(p *RemoveRegionParams) (*RemoveRegionResponse, error) {
resp, err := s.cs.newRequest("removeRegion", p.toURLValues())
if err != nil {
return nil, err
}
var r RemoveRegionResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type RemoveRegionResponse struct {
Displaytext string `json:"displaytext,omitempty"`
Success string `json:"success,omitempty"`
Endpoint string `json:"endpoint"`
Gslbserviceenabled bool `json:"gslbserviceenabled"`
Id int `json:"id"`
Name string `json:"name"`
Portableipserviceenabled bool `json:"portableipserviceenabled"`
}
type ListRegionsParams struct {
@ -319,6 +191,7 @@ func (s *RegionService) ListRegions(p *ListRegionsParams) (*ListRegionsResponse,
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -328,9 +201,159 @@ type ListRegionsResponse struct {
}
type Region struct {
Endpoint string `json:"endpoint,omitempty"`
Gslbserviceenabled bool `json:"gslbserviceenabled,omitempty"`
Id int `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Portableipserviceenabled bool `json:"portableipserviceenabled,omitempty"`
Endpoint string `json:"endpoint"`
Gslbserviceenabled bool `json:"gslbserviceenabled"`
Id int `json:"id"`
Name string `json:"name"`
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");
// 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 {
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)
u.Set(fmt.Sprintf("details[%d].%s", i, k), vv)
i++
}
}
@ -122,103 +121,65 @@ func (s *ResourcemetadataService) AddResourceDetail(p *AddResourceDetailParams)
return nil, err
}
}
return &r, nil
}
type AddResourceDetailResponse struct {
JobID string `json:"jobid,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Success bool `json:"success,omitempty"`
JobID string `json:"jobid"`
Displaytext string `json:"displaytext"`
Success bool `json:"success"`
}
type RemoveResourceDetailParams struct {
type GetVolumeSnapshotDetailsParams struct {
p map[string]interface{}
}
func (p *RemoveResourceDetailParams) toURLValues() url.Values {
func (p *GetVolumeSnapshotDetailsParams) 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))
if v, found := p.p["snapshotid"]; found {
u.Set("snapshotid", v.(string))
}
return u
}
func (p *RemoveResourceDetailParams) SetKey(v string) {
func (p *GetVolumeSnapshotDetailsParams) SetSnapshotid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["key"] = v
p.p["snapshotid"] = 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,
// You should always use this function to get a new GetVolumeSnapshotDetailsParams instance,
// as then you are sure you have configured all required params
func (s *ResourcemetadataService) NewRemoveResourceDetailParams(resourceid string, resourcetype string) *RemoveResourceDetailParams {
p := &RemoveResourceDetailParams{}
func (s *ResourcemetadataService) NewGetVolumeSnapshotDetailsParams(snapshotid string) *GetVolumeSnapshotDetailsParams {
p := &GetVolumeSnapshotDetailsParams{}
p.p = make(map[string]interface{})
p.p["resourceid"] = resourceid
p.p["resourcetype"] = resourcetype
p.p["snapshotid"] = snapshotid
return p
}
// Removes detail for the Resource.
func (s *ResourcemetadataService) RemoveResourceDetail(p *RemoveResourceDetailParams) (*RemoveResourceDetailResponse, error) {
resp, err := s.cs.newRequest("removeResourceDetail", p.toURLValues())
// Get Volume Snapshot Details
func (s *ResourcemetadataService) GetVolumeSnapshotDetails(p *GetVolumeSnapshotDetailsParams) (*GetVolumeSnapshotDetailsResponse, error) {
resp, err := s.cs.newRequest("getVolumeSnapshotDetails", p.toURLValues())
if err != nil {
return nil, err
}
var r RemoveResourceDetailResponse
var r GetVolumeSnapshotDetailsResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
// If we have a async client, we need to wait for the async result
if s.cs.async {
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
if err != nil {
if err == AsyncTimeoutErr {
return &r, err
}
return nil, err
}
if err := json.Unmarshal(b, &r); err != nil {
return nil, err
}
}
return &r, nil
}
type RemoveResourceDetailResponse struct {
JobID string `json:"jobid,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Success bool `json:"success,omitempty"`
type GetVolumeSnapshotDetailsResponse struct {
VolumeiScsiName string `json:"volumeiScsiName"`
}
type ListResourceDetailsParams struct {
@ -401,6 +362,7 @@ func (s *ResourcemetadataService) ListResourceDetails(p *ListResourceDetailsPara
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -410,14 +372,105 @@ type ListResourceDetailsResponse struct {
}
type ResourceDetail struct {
Account string `json:"account,omitempty"`
Customer string `json:"customer,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Key string `json:"key,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Resourceid string `json:"resourceid,omitempty"`
Resourcetype string `json:"resourcetype,omitempty"`
Value string `json:"value,omitempty"`
Account string `json:"account"`
Customer string `json:"customer"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Key string `json:"key"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Resourceid string `json:"resourceid"`
Resourcetype string `json:"resourcetype"`
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");
// you may not use this file except in compliance with the License.
@ -24,122 +24,6 @@ import (
"strings"
)
type ListStorageTagsParams struct {
p map[string]interface{}
}
func (p *ListStorageTagsParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["keyword"]; found {
u.Set("keyword", v.(string))
}
if v, found := p.p["page"]; found {
vv := strconv.Itoa(v.(int))
u.Set("page", vv)
}
if v, found := p.p["pagesize"]; found {
vv := strconv.Itoa(v.(int))
u.Set("pagesize", vv)
}
return u
}
func (p *ListStorageTagsParams) SetKeyword(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["keyword"] = v
return
}
func (p *ListStorageTagsParams) SetPage(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["page"] = v
return
}
func (p *ListStorageTagsParams) SetPagesize(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["pagesize"] = v
return
}
// You should always use this function to get a new ListStorageTagsParams instance,
// as then you are sure you have configured all required params
func (s *ResourcetagsService) NewListStorageTagsParams() *ListStorageTagsParams {
p := &ListStorageTagsParams{}
p.p = make(map[string]interface{})
return p
}
// This is a courtesy helper function, which in some cases may not work as expected!
func (s *ResourcetagsService) GetStorageTagID(keyword string, opts ...OptionFunc) (string, int, error) {
p := &ListStorageTagsParams{}
p.p = make(map[string]interface{})
p.p["keyword"] = keyword
for _, fn := range opts {
if err := fn(s.cs, p); err != nil {
return "", -1, err
}
}
l, err := s.ListStorageTags(p)
if err != nil {
return "", -1, err
}
if l.Count == 0 {
return "", l.Count, fmt.Errorf("No match found for %s: %+v", keyword, l)
}
if l.Count == 1 {
return l.StorageTags[0].Id, l.Count, nil
}
if l.Count > 1 {
for _, v := range l.StorageTags {
if v.Name == keyword {
return v.Id, l.Count, nil
}
}
}
return "", l.Count, fmt.Errorf("Could not find an exact match for %s: %+v", keyword, l)
}
// Lists storage tags
func (s *ResourcetagsService) ListStorageTags(p *ListStorageTagsParams) (*ListStorageTagsResponse, error) {
resp, err := s.cs.newRequest("listStorageTags", p.toURLValues())
if err != nil {
return nil, err
}
var r ListStorageTagsResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type ListStorageTagsResponse struct {
Count int `json:"count"`
StorageTags []*StorageTag `json:"storagetag"`
}
type StorageTag struct {
Id string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Poolid int64 `json:"poolid,omitempty"`
}
type CreateTagsParams struct {
p map[string]interface{}
}
@ -239,13 +123,14 @@ func (s *ResourcetagsService) CreateTags(p *CreateTagsParams) (*CreateTagsRespon
return nil, err
}
}
return &r, nil
}
type CreateTagsResponse struct {
JobID string `json:"jobid,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Success bool `json:"success,omitempty"`
JobID string `json:"jobid"`
Displaytext string `json:"displaytext"`
Success bool `json:"success"`
}
type DeleteTagsParams struct {
@ -335,13 +220,131 @@ func (s *ResourcetagsService) DeleteTags(p *DeleteTagsParams) (*DeleteTagsRespon
return nil, err
}
}
return &r, nil
}
type DeleteTagsResponse struct {
JobID string `json:"jobid,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Success bool `json:"success,omitempty"`
JobID string `json:"jobid"`
Displaytext string `json:"displaytext"`
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 {
@ -522,6 +525,7 @@ func (s *ResourcetagsService) ListTags(p *ListTagsParams) (*ListTagsResponse, er
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -531,14 +535,14 @@ type ListTagsResponse struct {
}
type Tag struct {
Account string `json:"account,omitempty"`
Customer string `json:"customer,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Key string `json:"key,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Resourceid string `json:"resourceid,omitempty"`
Resourcetype string `json:"resourcetype,omitempty"`
Value string `json:"value,omitempty"`
Account string `json:"account"`
Customer string `json:"customer"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Key string `json:"key"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Resourceid string `json:"resourceid"`
Resourcetype string `json:"resourcetype"`
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");
// you may not use this file except in compliance with the License.
@ -22,397 +22,6 @@ import (
"strconv"
)
type ResetSSHKeyForVirtualMachineParams struct {
p map[string]interface{}
}
func (p *ResetSSHKeyForVirtualMachineParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["account"]; found {
u.Set("account", v.(string))
}
if v, found := p.p["domainid"]; found {
u.Set("domainid", v.(string))
}
if v, found := p.p["id"]; found {
u.Set("id", v.(string))
}
if v, found := p.p["keypair"]; found {
u.Set("keypair", v.(string))
}
if v, found := p.p["projectid"]; found {
u.Set("projectid", v.(string))
}
return u
}
func (p *ResetSSHKeyForVirtualMachineParams) SetAccount(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["account"] = v
return
}
func (p *ResetSSHKeyForVirtualMachineParams) SetDomainid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["domainid"] = v
return
}
func (p *ResetSSHKeyForVirtualMachineParams) SetId(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["id"] = v
return
}
func (p *ResetSSHKeyForVirtualMachineParams) SetKeypair(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["keypair"] = v
return
}
func (p *ResetSSHKeyForVirtualMachineParams) SetProjectid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["projectid"] = v
return
}
// You should always use this function to get a new ResetSSHKeyForVirtualMachineParams instance,
// as then you are sure you have configured all required params
func (s *SSHService) NewResetSSHKeyForVirtualMachineParams(id string, keypair string) *ResetSSHKeyForVirtualMachineParams {
p := &ResetSSHKeyForVirtualMachineParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
p.p["keypair"] = keypair
return p
}
// Resets the SSH Key for virtual machine. The virtual machine must be in a "Stopped" state. [async]
func (s *SSHService) ResetSSHKeyForVirtualMachine(p *ResetSSHKeyForVirtualMachineParams) (*ResetSSHKeyForVirtualMachineResponse, error) {
resp, err := s.cs.newRequest("resetSSHKeyForVirtualMachine", p.toURLValues())
if err != nil {
return nil, err
}
var r ResetSSHKeyForVirtualMachineResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
// If we have a async client, we need to wait for the async result
if s.cs.async {
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
if err != nil {
if err == AsyncTimeoutErr {
return &r, err
}
return nil, err
}
b, err = getRawValue(b)
if err != nil {
return nil, err
}
if err := json.Unmarshal(b, &r); err != nil {
return nil, err
}
}
return &r, nil
}
type ResetSSHKeyForVirtualMachineResponse struct {
JobID string `json:"jobid,omitempty"`
Account string `json:"account,omitempty"`
Affinitygroup []struct {
Account string `json:"account,omitempty"`
Description string `json:"description,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Id string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Type string `json:"type,omitempty"`
VirtualmachineIds []string `json:"virtualmachineIds,omitempty"`
} `json:"affinitygroup,omitempty"`
Cpunumber int `json:"cpunumber,omitempty"`
Cpuspeed int `json:"cpuspeed,omitempty"`
Cpuused string `json:"cpuused,omitempty"`
Created string `json:"created,omitempty"`
Details map[string]string `json:"details,omitempty"`
Diskioread int64 `json:"diskioread,omitempty"`
Diskiowrite int64 `json:"diskiowrite,omitempty"`
Diskkbsread int64 `json:"diskkbsread,omitempty"`
Diskkbswrite int64 `json:"diskkbswrite,omitempty"`
Diskofferingid string `json:"diskofferingid,omitempty"`
Diskofferingname string `json:"diskofferingname,omitempty"`
Displayname string `json:"displayname,omitempty"`
Displayvm bool `json:"displayvm,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Forvirtualnetwork bool `json:"forvirtualnetwork,omitempty"`
Group string `json:"group,omitempty"`
Groupid string `json:"groupid,omitempty"`
Guestosid string `json:"guestosid,omitempty"`
Haenable bool `json:"haenable,omitempty"`
Hostid string `json:"hostid,omitempty"`
Hostname string `json:"hostname,omitempty"`
Hypervisor string `json:"hypervisor,omitempty"`
Id string `json:"id,omitempty"`
Instancename string `json:"instancename,omitempty"`
Isdynamicallyscalable bool `json:"isdynamicallyscalable,omitempty"`
Isodisplaytext string `json:"isodisplaytext,omitempty"`
Isoid string `json:"isoid,omitempty"`
Isoname string `json:"isoname,omitempty"`
Keypair string `json:"keypair,omitempty"`
Memory int `json:"memory,omitempty"`
Name string `json:"name,omitempty"`
Networkkbsread int64 `json:"networkkbsread,omitempty"`
Networkkbswrite int64 `json:"networkkbswrite,omitempty"`
Nic []struct {
Broadcasturi string `json:"broadcasturi,omitempty"`
Deviceid string `json:"deviceid,omitempty"`
Gateway string `json:"gateway,omitempty"`
Id string `json:"id,omitempty"`
Ip6address string `json:"ip6address,omitempty"`
Ip6cidr string `json:"ip6cidr,omitempty"`
Ip6gateway string `json:"ip6gateway,omitempty"`
Ipaddress string `json:"ipaddress,omitempty"`
Isdefault bool `json:"isdefault,omitempty"`
Isolationuri string `json:"isolationuri,omitempty"`
Macaddress string `json:"macaddress,omitempty"`
Netmask string `json:"netmask,omitempty"`
Networkid string `json:"networkid,omitempty"`
Networkname string `json:"networkname,omitempty"`
Secondaryip []struct {
Id string `json:"id,omitempty"`
Ipaddress string `json:"ipaddress,omitempty"`
} `json:"secondaryip,omitempty"`
Traffictype string `json:"traffictype,omitempty"`
Type string `json:"type,omitempty"`
Virtualmachineid string `json:"virtualmachineid,omitempty"`
} `json:"nic,omitempty"`
Ostypeid int64 `json:"ostypeid,omitempty"`
Password string `json:"password,omitempty"`
Passwordenabled bool `json:"passwordenabled,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Publicip string `json:"publicip,omitempty"`
Publicipid string `json:"publicipid,omitempty"`
Rootdeviceid int64 `json:"rootdeviceid,omitempty"`
Rootdevicetype string `json:"rootdevicetype,omitempty"`
Securitygroup []struct {
Account string `json:"account,omitempty"`
Description string `json:"description,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Egressrule []struct {
Account string `json:"account,omitempty"`
Cidr string `json:"cidr,omitempty"`
Endport int `json:"endport,omitempty"`
Icmpcode int `json:"icmpcode,omitempty"`
Icmptype int `json:"icmptype,omitempty"`
Protocol string `json:"protocol,omitempty"`
Ruleid string `json:"ruleid,omitempty"`
Securitygroupname string `json:"securitygroupname,omitempty"`
Startport int `json:"startport,omitempty"`
Tags []struct {
Account string `json:"account,omitempty"`
Customer string `json:"customer,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Key string `json:"key,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Resourceid string `json:"resourceid,omitempty"`
Resourcetype string `json:"resourcetype,omitempty"`
Value string `json:"value,omitempty"`
} `json:"tags,omitempty"`
} `json:"egressrule,omitempty"`
Id string `json:"id,omitempty"`
Ingressrule []struct {
Account string `json:"account,omitempty"`
Cidr string `json:"cidr,omitempty"`
Endport int `json:"endport,omitempty"`
Icmpcode int `json:"icmpcode,omitempty"`
Icmptype int `json:"icmptype,omitempty"`
Protocol string `json:"protocol,omitempty"`
Ruleid string `json:"ruleid,omitempty"`
Securitygroupname string `json:"securitygroupname,omitempty"`
Startport int `json:"startport,omitempty"`
Tags []struct {
Account string `json:"account,omitempty"`
Customer string `json:"customer,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Key string `json:"key,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Resourceid string `json:"resourceid,omitempty"`
Resourcetype string `json:"resourcetype,omitempty"`
Value string `json:"value,omitempty"`
} `json:"tags,omitempty"`
} `json:"ingressrule,omitempty"`
Name string `json:"name,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Tags []struct {
Account string `json:"account,omitempty"`
Customer string `json:"customer,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Key string `json:"key,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Resourceid string `json:"resourceid,omitempty"`
Resourcetype string `json:"resourcetype,omitempty"`
Value string `json:"value,omitempty"`
} `json:"tags,omitempty"`
Virtualmachinecount int `json:"virtualmachinecount,omitempty"`
Virtualmachineids []string `json:"virtualmachineids,omitempty"`
} `json:"securitygroup,omitempty"`
Serviceofferingid string `json:"serviceofferingid,omitempty"`
Serviceofferingname string `json:"serviceofferingname,omitempty"`
Servicestate string `json:"servicestate,omitempty"`
State string `json:"state,omitempty"`
Tags []struct {
Account string `json:"account,omitempty"`
Customer string `json:"customer,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Key string `json:"key,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Resourceid string `json:"resourceid,omitempty"`
Resourcetype string `json:"resourcetype,omitempty"`
Value string `json:"value,omitempty"`
} `json:"tags,omitempty"`
Templatedisplaytext string `json:"templatedisplaytext,omitempty"`
Templateid string `json:"templateid,omitempty"`
Templatename string `json:"templatename,omitempty"`
Userid string `json:"userid,omitempty"`
Username string `json:"username,omitempty"`
Vgpu string `json:"vgpu,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
Zonename string `json:"zonename,omitempty"`
}
type RegisterSSHKeyPairParams struct {
p map[string]interface{}
}
func (p *RegisterSSHKeyPairParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["account"]; found {
u.Set("account", v.(string))
}
if v, found := p.p["domainid"]; found {
u.Set("domainid", v.(string))
}
if v, found := p.p["name"]; found {
u.Set("name", v.(string))
}
if v, found := p.p["projectid"]; found {
u.Set("projectid", v.(string))
}
if v, found := p.p["publickey"]; found {
u.Set("publickey", v.(string))
}
return u
}
func (p *RegisterSSHKeyPairParams) SetAccount(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["account"] = v
return
}
func (p *RegisterSSHKeyPairParams) SetDomainid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["domainid"] = v
return
}
func (p *RegisterSSHKeyPairParams) SetName(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["name"] = v
return
}
func (p *RegisterSSHKeyPairParams) SetProjectid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["projectid"] = v
return
}
func (p *RegisterSSHKeyPairParams) SetPublickey(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["publickey"] = v
return
}
// You should always use this function to get a new RegisterSSHKeyPairParams instance,
// as then you are sure you have configured all required params
func (s *SSHService) NewRegisterSSHKeyPairParams(name string, publickey string) *RegisterSSHKeyPairParams {
p := &RegisterSSHKeyPairParams{}
p.p = make(map[string]interface{})
p.p["name"] = name
p.p["publickey"] = publickey
return p
}
// Register a public key in a keypair under a certain name
func (s *SSHService) RegisterSSHKeyPair(p *RegisterSSHKeyPairParams) (*RegisterSSHKeyPairResponse, error) {
resp, err := s.cs.newRequest("registerSSHKeyPair", p.toURLValues())
if err != nil {
return nil, err
}
if resp, err = getRawValue(resp); err != nil {
return nil, err
}
var r RegisterSSHKeyPairResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type RegisterSSHKeyPairResponse struct {
Account string `json:"account,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Fingerprint string `json:"fingerprint,omitempty"`
Name string `json:"name,omitempty"`
}
type CreateSSHKeyPairParams struct {
p map[string]interface{}
}
@ -493,11 +102,12 @@ func (s *SSHService) CreateSSHKeyPair(p *CreateSSHKeyPairParams) (*CreateSSHKeyP
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type CreateSSHKeyPairResponse struct {
Privatekey string `json:"privatekey,omitempty"`
Privatekey string `json:"privatekey"`
}
type DeleteSSHKeyPairParams struct {
@ -576,12 +186,32 @@ func (s *SSHService) DeleteSSHKeyPair(p *DeleteSSHKeyPairParams) (*DeleteSSHKeyP
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type DeleteSSHKeyPairResponse struct {
Displaytext string `json:"displaytext,omitempty"`
Success string `json:"success,omitempty"`
Displaytext string `json:"displaytext"`
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 {
@ -729,6 +359,7 @@ func (s *SSHService) ListSSHKeyPairs(p *ListSSHKeyPairsParams) (*ListSSHKeyPairs
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -738,9 +369,333 @@ type ListSSHKeyPairsResponse struct {
}
type SSHKeyPair struct {
Account string `json:"account,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Fingerprint string `json:"fingerprint,omitempty"`
Name string `json:"name,omitempty"`
Account string `json:"account"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Fingerprint string `json:"fingerprint"`
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");
// 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 {
return nil, err
}
return &r, nil
}
type CreateServiceOfferingResponse struct {
Cpunumber int `json:"cpunumber,omitempty"`
Cpuspeed int `json:"cpuspeed,omitempty"`
Created string `json:"created,omitempty"`
Defaultuse bool `json:"defaultuse,omitempty"`
Deploymentplanner string `json:"deploymentplanner,omitempty"`
DiskBytesReadRate int64 `json:"diskBytesReadRate,omitempty"`
DiskBytesWriteRate int64 `json:"diskBytesWriteRate,omitempty"`
DiskIopsReadRate int64 `json:"diskIopsReadRate,omitempty"`
DiskIopsWriteRate int64 `json:"diskIopsWriteRate,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Hosttags string `json:"hosttags,omitempty"`
Hypervisorsnapshotreserve int `json:"hypervisorsnapshotreserve,omitempty"`
Id string `json:"id,omitempty"`
Iscustomized bool `json:"iscustomized,omitempty"`
Iscustomizediops bool `json:"iscustomizediops,omitempty"`
Issystem bool `json:"issystem,omitempty"`
Isvolatile bool `json:"isvolatile,omitempty"`
Limitcpuuse bool `json:"limitcpuuse,omitempty"`
Maxiops int64 `json:"maxiops,omitempty"`
Memory int `json:"memory,omitempty"`
Miniops int64 `json:"miniops,omitempty"`
Name string `json:"name,omitempty"`
Networkrate int `json:"networkrate,omitempty"`
Offerha bool `json:"offerha,omitempty"`
Provisioningtype string `json:"provisioningtype,omitempty"`
Serviceofferingdetails map[string]string `json:"serviceofferingdetails,omitempty"`
Storagetype string `json:"storagetype,omitempty"`
Systemvmtype string `json:"systemvmtype,omitempty"`
Tags string `json:"tags,omitempty"`
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"`
}
type DeleteServiceOfferingParams struct {
@ -448,126 +449,32 @@ func (s *ServiceOfferingService) DeleteServiceOffering(p *DeleteServiceOfferingP
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type DeleteServiceOfferingResponse struct {
Displaytext string `json:"displaytext,omitempty"`
Success string `json:"success,omitempty"`
Displaytext string `json:"displaytext"`
Success bool `json:"success"`
}
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())
func (r *DeleteServiceOfferingResponse) UnmarshalJSON(b []byte) error {
var m map[string]interface{}
err := json.Unmarshal(b, &m)
if err != nil {
return nil, err
return err
}
var r UpdateServiceOfferingResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
if success, ok := m["success"].(string); ok {
m["success"] = success == "true"
b, err = json.Marshal(m)
if err != nil {
return err
}
}
return &r, nil
}
type UpdateServiceOfferingResponse struct {
Cpunumber int `json:"cpunumber,omitempty"`
Cpuspeed int `json:"cpuspeed,omitempty"`
Created string `json:"created,omitempty"`
Defaultuse bool `json:"defaultuse,omitempty"`
Deploymentplanner string `json:"deploymentplanner,omitempty"`
DiskBytesReadRate int64 `json:"diskBytesReadRate,omitempty"`
DiskBytesWriteRate int64 `json:"diskBytesWriteRate,omitempty"`
DiskIopsReadRate int64 `json:"diskIopsReadRate,omitempty"`
DiskIopsWriteRate int64 `json:"diskIopsWriteRate,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Hosttags string `json:"hosttags,omitempty"`
Hypervisorsnapshotreserve int `json:"hypervisorsnapshotreserve,omitempty"`
Id string `json:"id,omitempty"`
Iscustomized bool `json:"iscustomized,omitempty"`
Iscustomizediops bool `json:"iscustomizediops,omitempty"`
Issystem bool `json:"issystem,omitempty"`
Isvolatile bool `json:"isvolatile,omitempty"`
Limitcpuuse bool `json:"limitcpuuse,omitempty"`
Maxiops int64 `json:"maxiops,omitempty"`
Memory int `json:"memory,omitempty"`
Miniops int64 `json:"miniops,omitempty"`
Name string `json:"name,omitempty"`
Networkrate int `json:"networkrate,omitempty"`
Offerha bool `json:"offerha,omitempty"`
Provisioningtype string `json:"provisioningtype,omitempty"`
Serviceofferingdetails map[string]string `json:"serviceofferingdetails,omitempty"`
Storagetype string `json:"storagetype,omitempty"`
Systemvmtype string `json:"systemvmtype,omitempty"`
Tags string `json:"tags,omitempty"`
type alias DeleteServiceOfferingResponse
return json.Unmarshal(b, (*alias)(r))
}
type ListServiceOfferingsParams struct {
@ -723,7 +630,7 @@ func (s *ServiceOfferingService) GetServiceOfferingID(name string, opts ...Optio
p.p["name"] = name
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return "", -1, err
}
@ -773,7 +680,7 @@ func (s *ServiceOfferingService) GetServiceOfferingByID(id string, opts ...Optio
p.p["id"] = id
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return nil, -1, err
}
@ -810,6 +717,7 @@ func (s *ServiceOfferingService) ListServiceOfferings(p *ListServiceOfferingsPar
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -819,35 +727,150 @@ type ListServiceOfferingsResponse struct {
}
type ServiceOffering struct {
Cpunumber int `json:"cpunumber,omitempty"`
Cpuspeed int `json:"cpuspeed,omitempty"`
Created string `json:"created,omitempty"`
Defaultuse bool `json:"defaultuse,omitempty"`
Deploymentplanner string `json:"deploymentplanner,omitempty"`
DiskBytesReadRate int64 `json:"diskBytesReadRate,omitempty"`
DiskBytesWriteRate int64 `json:"diskBytesWriteRate,omitempty"`
DiskIopsReadRate int64 `json:"diskIopsReadRate,omitempty"`
DiskIopsWriteRate int64 `json:"diskIopsWriteRate,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Hosttags string `json:"hosttags,omitempty"`
Hypervisorsnapshotreserve int `json:"hypervisorsnapshotreserve,omitempty"`
Id string `json:"id,omitempty"`
Iscustomized bool `json:"iscustomized,omitempty"`
Iscustomizediops bool `json:"iscustomizediops,omitempty"`
Issystem bool `json:"issystem,omitempty"`
Isvolatile bool `json:"isvolatile,omitempty"`
Limitcpuuse bool `json:"limitcpuuse,omitempty"`
Maxiops int64 `json:"maxiops,omitempty"`
Memory int `json:"memory,omitempty"`
Miniops int64 `json:"miniops,omitempty"`
Name string `json:"name,omitempty"`
Networkrate int `json:"networkrate,omitempty"`
Offerha bool `json:"offerha,omitempty"`
Provisioningtype string `json:"provisioningtype,omitempty"`
Serviceofferingdetails map[string]string `json:"serviceofferingdetails,omitempty"`
Storagetype string `json:"storagetype,omitempty"`
Systemvmtype string `json:"systemvmtype,omitempty"`
Tags string `json:"tags,omitempty"`
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"`
}
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");
// you may not use this file except in compliance with the License.
@ -22,6 +22,198 @@ import (
"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 {
p map[string]interface{}
}
@ -100,6 +292,7 @@ func (s *StoragePoolService) ListStorageProviders(p *ListStorageProvidersParams)
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -109,192 +302,6 @@ type ListStorageProvidersResponse struct {
}
type StorageProvider struct {
Name string `json:"name,omitempty"`
Type string `json:"type,omitempty"`
}
type EnableStorageMaintenanceParams struct {
p map[string]interface{}
}
func (p *EnableStorageMaintenanceParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["id"]; found {
u.Set("id", v.(string))
}
return u
}
func (p *EnableStorageMaintenanceParams) SetId(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["id"] = v
return
}
// You should always use this function to get a new EnableStorageMaintenanceParams instance,
// as then you are sure you have configured all required params
func (s *StoragePoolService) NewEnableStorageMaintenanceParams(id string) *EnableStorageMaintenanceParams {
p := &EnableStorageMaintenanceParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
return p
}
// Puts storage pool into maintenance state
func (s *StoragePoolService) EnableStorageMaintenance(p *EnableStorageMaintenanceParams) (*EnableStorageMaintenanceResponse, error) {
resp, err := s.cs.newRequest("enableStorageMaintenance", p.toURLValues())
if err != nil {
return nil, err
}
var r EnableStorageMaintenanceResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
// If we have a async client, we need to wait for the async result
if s.cs.async {
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
if err != nil {
if err == AsyncTimeoutErr {
return &r, err
}
return nil, err
}
b, err = getRawValue(b)
if err != nil {
return nil, err
}
if err := json.Unmarshal(b, &r); err != nil {
return nil, err
}
}
return &r, nil
}
type EnableStorageMaintenanceResponse struct {
JobID string `json:"jobid,omitempty"`
Capacityiops int64 `json:"capacityiops,omitempty"`
Clusterid string `json:"clusterid,omitempty"`
Clustername string `json:"clustername,omitempty"`
Created string `json:"created,omitempty"`
Disksizeallocated int64 `json:"disksizeallocated,omitempty"`
Disksizetotal int64 `json:"disksizetotal,omitempty"`
Disksizeused int64 `json:"disksizeused,omitempty"`
Hypervisor string `json:"hypervisor,omitempty"`
Id string `json:"id,omitempty"`
Ipaddress string `json:"ipaddress,omitempty"`
Name string `json:"name,omitempty"`
Overprovisionfactor string `json:"overprovisionfactor,omitempty"`
Path string `json:"path,omitempty"`
Podid string `json:"podid,omitempty"`
Podname string `json:"podname,omitempty"`
Scope string `json:"scope,omitempty"`
State string `json:"state,omitempty"`
Storagecapabilities map[string]string `json:"storagecapabilities,omitempty"`
Suitableformigration bool `json:"suitableformigration,omitempty"`
Tags string `json:"tags,omitempty"`
Type string `json:"type,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
Zonename string `json:"zonename,omitempty"`
}
type CancelStorageMaintenanceParams struct {
p map[string]interface{}
}
func (p *CancelStorageMaintenanceParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["id"]; found {
u.Set("id", v.(string))
}
return u
}
func (p *CancelStorageMaintenanceParams) SetId(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["id"] = v
return
}
// You should always use this function to get a new CancelStorageMaintenanceParams instance,
// as then you are sure you have configured all required params
func (s *StoragePoolService) NewCancelStorageMaintenanceParams(id string) *CancelStorageMaintenanceParams {
p := &CancelStorageMaintenanceParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
return p
}
// Cancels maintenance for primary storage
func (s *StoragePoolService) CancelStorageMaintenance(p *CancelStorageMaintenanceParams) (*CancelStorageMaintenanceResponse, error) {
resp, err := s.cs.newRequest("cancelStorageMaintenance", p.toURLValues())
if err != nil {
return nil, err
}
var r CancelStorageMaintenanceResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
// If we have a async client, we need to wait for the async result
if s.cs.async {
b, err := s.cs.GetAsyncJobResult(r.JobID, s.cs.timeout)
if err != nil {
if err == AsyncTimeoutErr {
return &r, err
}
return nil, err
}
b, err = getRawValue(b)
if err != nil {
return nil, err
}
if err := json.Unmarshal(b, &r); err != nil {
return nil, err
}
}
return &r, nil
}
type CancelStorageMaintenanceResponse struct {
JobID string `json:"jobid,omitempty"`
Capacityiops int64 `json:"capacityiops,omitempty"`
Clusterid string `json:"clusterid,omitempty"`
Clustername string `json:"clustername,omitempty"`
Created string `json:"created,omitempty"`
Disksizeallocated int64 `json:"disksizeallocated,omitempty"`
Disksizetotal int64 `json:"disksizetotal,omitempty"`
Disksizeused int64 `json:"disksizeused,omitempty"`
Hypervisor string `json:"hypervisor,omitempty"`
Id string `json:"id,omitempty"`
Ipaddress string `json:"ipaddress,omitempty"`
Name string `json:"name,omitempty"`
Overprovisionfactor string `json:"overprovisionfactor,omitempty"`
Path string `json:"path,omitempty"`
Podid string `json:"podid,omitempty"`
Podname string `json:"podname,omitempty"`
Scope string `json:"scope,omitempty"`
State string `json:"state,omitempty"`
Storagecapabilities map[string]string `json:"storagecapabilities,omitempty"`
Suitableformigration bool `json:"suitableformigration,omitempty"`
Tags string `json:"tags,omitempty"`
Type string `json:"type,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
Zonename string `json:"zonename,omitempty"`
Name string `json:"name"`
Type string `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");
// 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 {
return nil, err
}
return &r, nil
}
type AddStratosphereSspResponse struct {
Hostid string `json:"hostid,omitempty"`
Name string `json:"name,omitempty"`
Url string `json:"url,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
Hostid string `json:"hostid"`
Name string `json:"name"`
Url string `json:"url"`
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");
// 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 {
return nil, err
}
return &r, nil
}
type AddSwiftResponse struct {
Details []string `json:"details,omitempty"`
Id string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Protocol string `json:"protocol,omitempty"`
Providername string `json:"providername,omitempty"`
Scope string `json:"scope,omitempty"`
Url string `json:"url,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
Zonename string `json:"zonename,omitempty"`
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 ListSwiftsParams struct {
@ -188,7 +188,7 @@ func (s *SwiftService) GetSwiftID(keyword string, opts ...OptionFunc) (string, i
p.p["keyword"] = keyword
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return "", -1, err
}
@ -228,6 +228,7 @@ func (s *SwiftService) ListSwifts(p *ListSwiftsParams) (*ListSwiftsResponse, err
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -237,13 +238,12 @@ type ListSwiftsResponse struct {
}
type Swift struct {
Details []string `json:"details,omitempty"`
Id string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Protocol string `json:"protocol,omitempty"`
Providername string `json:"providername,omitempty"`
Scope string `json:"scope,omitempty"`
Url string `json:"url,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
Zonename string `json:"zonename,omitempty"`
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"`
}

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");
// 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 {
return nil, err
}
return &r, nil
}
@ -165,14 +166,16 @@ type ListCapacityResponse struct {
}
type Capacity struct {
Capacitytotal int64 `json:"capacitytotal,omitempty"`
Capacityused int64 `json:"capacityused,omitempty"`
Clusterid string `json:"clusterid,omitempty"`
Clustername string `json:"clustername,omitempty"`
Percentused string `json:"percentused,omitempty"`
Podid string `json:"podid,omitempty"`
Podname string `json:"podname,omitempty"`
Type int `json:"type,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
Zonename string `json:"zonename,omitempty"`
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"`
}

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");
// 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 {
return nil, err
}
return &r, nil
}
type AddUcsManagerResponse struct {
Id string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Url string `json:"url,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
}
type ListUcsManagersParams struct {
p map[string]interface{}
}
func (p *ListUcsManagersParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["id"]; found {
u.Set("id", v.(string))
}
if v, found := p.p["keyword"]; found {
u.Set("keyword", v.(string))
}
if v, found := p.p["page"]; found {
vv := strconv.Itoa(v.(int))
u.Set("page", vv)
}
if v, found := p.p["pagesize"]; found {
vv := strconv.Itoa(v.(int))
u.Set("pagesize", vv)
}
if v, found := p.p["zoneid"]; found {
u.Set("zoneid", v.(string))
}
return u
}
func (p *ListUcsManagersParams) SetId(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["id"] = v
return
}
func (p *ListUcsManagersParams) SetKeyword(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["keyword"] = v
return
}
func (p *ListUcsManagersParams) SetPage(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["page"] = v
return
}
func (p *ListUcsManagersParams) SetPagesize(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["pagesize"] = v
return
}
func (p *ListUcsManagersParams) SetZoneid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["zoneid"] = v
return
}
// You should always use this function to get a new ListUcsManagersParams instance,
// as then you are sure you have configured all required params
func (s *UCSService) NewListUcsManagersParams() *ListUcsManagersParams {
p := &ListUcsManagersParams{}
p.p = make(map[string]interface{})
return p
}
// This is a courtesy helper function, which in some cases may not work as expected!
func (s *UCSService) GetUcsManagerID(keyword string, opts ...OptionFunc) (string, int, error) {
p := &ListUcsManagersParams{}
p.p = make(map[string]interface{})
p.p["keyword"] = keyword
for _, fn := range opts {
if err := fn(s.cs, p); err != nil {
return "", -1, err
}
}
l, err := s.ListUcsManagers(p)
if err != nil {
return "", -1, err
}
if l.Count == 0 {
return "", l.Count, fmt.Errorf("No match found for %s: %+v", keyword, l)
}
if l.Count == 1 {
return l.UcsManagers[0].Id, l.Count, nil
}
if l.Count > 1 {
for _, v := range l.UcsManagers {
if v.Name == keyword {
return v.Id, l.Count, nil
}
}
}
return "", l.Count, fmt.Errorf("Could not find an exact match for %s: %+v", keyword, l)
}
// This is a courtesy helper function, which in some cases may not work as expected!
func (s *UCSService) GetUcsManagerByName(name string, opts ...OptionFunc) (*UcsManager, int, error) {
id, count, err := s.GetUcsManagerID(name, opts...)
if err != nil {
return nil, count, err
}
r, count, err := s.GetUcsManagerByID(id, opts...)
if err != nil {
return nil, count, err
}
return r, count, nil
}
// This is a courtesy helper function, which in some cases may not work as expected!
func (s *UCSService) GetUcsManagerByID(id string, opts ...OptionFunc) (*UcsManager, int, error) {
p := &ListUcsManagersParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
for _, fn := range opts {
if err := fn(s.cs, p); err != nil {
return nil, -1, err
}
}
l, err := s.ListUcsManagers(p)
if err != nil {
if strings.Contains(err.Error(), fmt.Sprintf(
"Invalid parameter id value=%s due to incorrect long value format, "+
"or entity does not exist", id)) {
return nil, 0, fmt.Errorf("No match found for %s: %+v", id, l)
}
return nil, -1, err
}
if l.Count == 0 {
return nil, l.Count, fmt.Errorf("No match found for %s: %+v", id, l)
}
if l.Count == 1 {
return l.UcsManagers[0], l.Count, nil
}
return nil, l.Count, fmt.Errorf("There is more then one result for UcsManager UUID: %s!", id)
}
// List ucs manager
func (s *UCSService) ListUcsManagers(p *ListUcsManagersParams) (*ListUcsManagersResponse, error) {
resp, err := s.cs.newRequest("listUcsManagers", p.toURLValues())
if err != nil {
return nil, err
}
var r ListUcsManagersResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type ListUcsManagersResponse struct {
Count int `json:"count"`
UcsManagers []*UcsManager `json:"ucsmanager"`
}
type UcsManager struct {
Id string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Url string `json:"url,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
}
type ListUcsProfilesParams struct {
p map[string]interface{}
}
func (p *ListUcsProfilesParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["keyword"]; found {
u.Set("keyword", v.(string))
}
if v, found := p.p["page"]; found {
vv := strconv.Itoa(v.(int))
u.Set("page", vv)
}
if v, found := p.p["pagesize"]; found {
vv := strconv.Itoa(v.(int))
u.Set("pagesize", vv)
}
if v, found := p.p["ucsmanagerid"]; found {
u.Set("ucsmanagerid", v.(string))
}
return u
}
func (p *ListUcsProfilesParams) SetKeyword(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["keyword"] = v
return
}
func (p *ListUcsProfilesParams) SetPage(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["page"] = v
return
}
func (p *ListUcsProfilesParams) SetPagesize(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["pagesize"] = v
return
}
func (p *ListUcsProfilesParams) SetUcsmanagerid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["ucsmanagerid"] = v
return
}
// You should always use this function to get a new ListUcsProfilesParams instance,
// as then you are sure you have configured all required params
func (s *UCSService) NewListUcsProfilesParams(ucsmanagerid string) *ListUcsProfilesParams {
p := &ListUcsProfilesParams{}
p.p = make(map[string]interface{})
p.p["ucsmanagerid"] = ucsmanagerid
return p
}
// List profile in ucs manager
func (s *UCSService) ListUcsProfiles(p *ListUcsProfilesParams) (*ListUcsProfilesResponse, error) {
resp, err := s.cs.newRequest("listUcsProfiles", p.toURLValues())
if err != nil {
return nil, err
}
var r ListUcsProfilesResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type ListUcsProfilesResponse struct {
Count int `json:"count"`
UcsProfiles []*UcsProfile `json:"ucsprofile"`
}
type UcsProfile struct {
Ucsdn string `json:"ucsdn,omitempty"`
}
type ListUcsBladesParams struct {
p map[string]interface{}
}
func (p *ListUcsBladesParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["keyword"]; found {
u.Set("keyword", v.(string))
}
if v, found := p.p["page"]; found {
vv := strconv.Itoa(v.(int))
u.Set("page", vv)
}
if v, found := p.p["pagesize"]; found {
vv := strconv.Itoa(v.(int))
u.Set("pagesize", vv)
}
if v, found := p.p["ucsmanagerid"]; found {
u.Set("ucsmanagerid", v.(string))
}
return u
}
func (p *ListUcsBladesParams) SetKeyword(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["keyword"] = v
return
}
func (p *ListUcsBladesParams) SetPage(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["page"] = v
return
}
func (p *ListUcsBladesParams) SetPagesize(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["pagesize"] = v
return
}
func (p *ListUcsBladesParams) SetUcsmanagerid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["ucsmanagerid"] = v
return
}
// You should always use this function to get a new ListUcsBladesParams instance,
// as then you are sure you have configured all required params
func (s *UCSService) NewListUcsBladesParams(ucsmanagerid string) *ListUcsBladesParams {
p := &ListUcsBladesParams{}
p.p = make(map[string]interface{})
p.p["ucsmanagerid"] = ucsmanagerid
return p
}
// List ucs blades
func (s *UCSService) ListUcsBlades(p *ListUcsBladesParams) (*ListUcsBladesResponse, error) {
resp, err := s.cs.newRequest("listUcsBlades", p.toURLValues())
if err != nil {
return nil, err
}
var r ListUcsBladesResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type ListUcsBladesResponse struct {
Count int `json:"count"`
UcsBlades []*UcsBlade `json:"ucsblade"`
}
type UcsBlade struct {
Bladedn string `json:"bladedn,omitempty"`
Hostid string `json:"hostid,omitempty"`
Id string `json:"id,omitempty"`
Profiledn string `json:"profiledn,omitempty"`
Ucsmanagerid string `json:"ucsmanagerid,omitempty"`
Id string `json:"id"`
Name string `json:"name"`
Url string `json:"url"`
Zoneid string `json:"zoneid"`
}
type AssociateUcsProfileToBladeParams struct {
@ -581,14 +212,459 @@ func (s *UCSService) AssociateUcsProfileToBlade(p *AssociateUcsProfileToBladePar
return nil, err
}
}
return &r, nil
}
type AssociateUcsProfileToBladeResponse struct {
JobID string `json:"jobid,omitempty"`
Bladedn string `json:"bladedn,omitempty"`
Hostid string `json:"hostid,omitempty"`
Id string `json:"id,omitempty"`
Profiledn string `json:"profiledn,omitempty"`
Ucsmanagerid string `json:"ucsmanagerid,omitempty"`
JobID string `json:"jobid"`
Bladedn string `json:"bladedn"`
Hostid string `json:"hostid"`
Id string `json:"id"`
Profiledn string `json:"profiledn"`
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");
// 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 {
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 {
vv := strconv.FormatBool(v.(bool))
u.Set("forvirtualnetwork", vv)
@ -120,6 +124,14 @@ func (p *CreateVlanIpRangeParams) SetEndipv6(v string) {
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) {
if p.p == nil {
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 {
return nil, err
}
return &r, nil
}
type CreateVlanIpRangeResponse struct {
Account string `json:"account,omitempty"`
Description string `json:"description,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Endip string `json:"endip,omitempty"`
Endipv6 string `json:"endipv6,omitempty"`
Forvirtualnetwork bool `json:"forvirtualnetwork,omitempty"`
Gateway string `json:"gateway,omitempty"`
Id string `json:"id,omitempty"`
Ip6cidr string `json:"ip6cidr,omitempty"`
Ip6gateway string `json:"ip6gateway,omitempty"`
Netmask string `json:"netmask,omitempty"`
Networkid string `json:"networkid,omitempty"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
Podid string `json:"podid,omitempty"`
Podname string `json:"podname,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Startip string `json:"startip,omitempty"`
Startipv6 string `json:"startipv6,omitempty"`
Vlan string `json:"vlan,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
Account string `json:"account"`
Description string `json:"description"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Endip string `json:"endip"`
Endipv6 string `json:"endipv6"`
Forsystemvms bool `json:"forsystemvms"`
Forvirtualnetwork bool `json:"forvirtualnetwork"`
Gateway string `json:"gateway"`
Id string `json:"id"`
Ip6cidr string `json:"ip6cidr"`
Ip6gateway string `json:"ip6gateway"`
Netmask string `json:"netmask"`
Networkid string `json:"networkid"`
Physicalnetworkid string `json:"physicalnetworkid"`
Podid string `json:"podid"`
Podname string `json:"podname"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Startip string `json:"startip"`
Startipv6 string `json:"startipv6"`
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 {
@ -314,12 +432,229 @@ func (s *VLANService) DeleteVlanIpRange(p *DeleteVlanIpRangeParams) (*DeleteVlan
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type DeleteVlanIpRangeResponse struct {
Displaytext string `json:"displaytext,omitempty"`
Success string `json:"success,omitempty"`
Displaytext string `json:"displaytext"`
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 {
@ -495,7 +830,7 @@ func (s *VLANService) GetVlanIpRangeByID(id string, opts ...OptionFunc) (*VlanIp
p.p["id"] = id
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return nil, -1, err
}
@ -532,6 +867,7 @@ func (s *VLANService) ListVlanIpRanges(p *ListVlanIpRangesParams) (*ListVlanIpRa
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -541,133 +877,29 @@ type ListVlanIpRangesResponse struct {
}
type VlanIpRange struct {
Account string `json:"account,omitempty"`
Description string `json:"description,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Endip string `json:"endip,omitempty"`
Endipv6 string `json:"endipv6,omitempty"`
Forvirtualnetwork bool `json:"forvirtualnetwork,omitempty"`
Gateway string `json:"gateway,omitempty"`
Id string `json:"id,omitempty"`
Ip6cidr string `json:"ip6cidr,omitempty"`
Ip6gateway string `json:"ip6gateway,omitempty"`
Netmask string `json:"netmask,omitempty"`
Networkid string `json:"networkid,omitempty"`
Physicalnetworkid string `json:"physicalnetworkid,omitempty"`
Podid string `json:"podid,omitempty"`
Podname string `json:"podname,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Startip string `json:"startip,omitempty"`
Startipv6 string `json:"startipv6,omitempty"`
Vlan string `json:"vlan,omitempty"`
Zoneid string `json:"zoneid,omitempty"`
}
type DedicateGuestVlanRangeParams struct {
p map[string]interface{}
}
func (p *DedicateGuestVlanRangeParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["account"]; found {
u.Set("account", v.(string))
}
if v, found := p.p["domainid"]; found {
u.Set("domainid", v.(string))
}
if v, found := p.p["physicalnetworkid"]; found {
u.Set("physicalnetworkid", v.(string))
}
if v, found := p.p["projectid"]; found {
u.Set("projectid", v.(string))
}
if v, found := p.p["vlanrange"]; found {
u.Set("vlanrange", v.(string))
}
return u
}
func (p *DedicateGuestVlanRangeParams) SetAccount(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["account"] = v
return
}
func (p *DedicateGuestVlanRangeParams) SetDomainid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["domainid"] = v
return
}
func (p *DedicateGuestVlanRangeParams) SetPhysicalnetworkid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["physicalnetworkid"] = v
return
}
func (p *DedicateGuestVlanRangeParams) SetProjectid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["projectid"] = v
return
}
func (p *DedicateGuestVlanRangeParams) SetVlanrange(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["vlanrange"] = v
return
}
// You should always use this function to get a new DedicateGuestVlanRangeParams instance,
// as then you are sure you have configured all required params
func (s *VLANService) NewDedicateGuestVlanRangeParams(account string, domainid string, physicalnetworkid string, vlanrange string) *DedicateGuestVlanRangeParams {
p := &DedicateGuestVlanRangeParams{}
p.p = make(map[string]interface{})
p.p["account"] = account
p.p["domainid"] = domainid
p.p["physicalnetworkid"] = physicalnetworkid
p.p["vlanrange"] = vlanrange
return p
}
// Dedicates a guest vlan range to an account
func (s *VLANService) DedicateGuestVlanRange(p *DedicateGuestVlanRangeParams) (*DedicateGuestVlanRangeResponse, error) {
resp, err := s.cs.newRequest("dedicateGuestVlanRange", p.toURLValues())
if err != nil {
return nil, err
}
var r DedicateGuestVlanRangeResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type DedicateGuestVlanRangeResponse struct {
Account string `json:"account,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Guestvlanrange string `json:"guestvlanrange,omitempty"`
Id string `json:"id,omitempty"`
Physicalnetworkid int64 `json:"physicalnetworkid,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Zoneid int64 `json:"zoneid,omitempty"`
Account string `json:"account"`
Description string `json:"description"`
Domain string `json:"domain"`
Domainid string `json:"domainid"`
Endip string `json:"endip"`
Endipv6 string `json:"endipv6"`
Forsystemvms bool `json:"forsystemvms"`
Forvirtualnetwork bool `json:"forvirtualnetwork"`
Gateway string `json:"gateway"`
Id string `json:"id"`
Ip6cidr string `json:"ip6cidr"`
Ip6gateway string `json:"ip6gateway"`
Netmask string `json:"netmask"`
Networkid string `json:"networkid"`
Physicalnetworkid string `json:"physicalnetworkid"`
Podid string `json:"podid"`
Podname string `json:"podname"`
Project string `json:"project"`
Projectid string `json:"projectid"`
Startip string `json:"startip"`
Startipv6 string `json:"startipv6"`
Vlan string `json:"vlan"`
Zoneid string `json:"zoneid"`
}
type ReleaseDedicatedGuestVlanRangeParams struct {
@ -728,207 +960,12 @@ func (s *VLANService) ReleaseDedicatedGuestVlanRange(p *ReleaseDedicatedGuestVla
return nil, err
}
}
return &r, nil
}
type ReleaseDedicatedGuestVlanRangeResponse struct {
JobID string `json:"jobid,omitempty"`
Displaytext string `json:"displaytext,omitempty"`
Success bool `json:"success,omitempty"`
}
type ListDedicatedGuestVlanRangesParams struct {
p map[string]interface{}
}
func (p *ListDedicatedGuestVlanRangesParams) toURLValues() url.Values {
u := url.Values{}
if p.p == nil {
return u
}
if v, found := p.p["account"]; found {
u.Set("account", v.(string))
}
if v, found := p.p["domainid"]; found {
u.Set("domainid", v.(string))
}
if v, found := p.p["guestvlanrange"]; found {
u.Set("guestvlanrange", v.(string))
}
if v, found := p.p["id"]; found {
u.Set("id", v.(string))
}
if v, found := p.p["keyword"]; found {
u.Set("keyword", v.(string))
}
if v, found := p.p["page"]; found {
vv := strconv.Itoa(v.(int))
u.Set("page", vv)
}
if v, found := p.p["pagesize"]; found {
vv := strconv.Itoa(v.(int))
u.Set("pagesize", vv)
}
if v, found := p.p["physicalnetworkid"]; found {
u.Set("physicalnetworkid", v.(string))
}
if v, found := p.p["projectid"]; found {
u.Set("projectid", v.(string))
}
if v, found := p.p["zoneid"]; found {
u.Set("zoneid", v.(string))
}
return u
}
func (p *ListDedicatedGuestVlanRangesParams) SetAccount(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["account"] = v
return
}
func (p *ListDedicatedGuestVlanRangesParams) SetDomainid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["domainid"] = v
return
}
func (p *ListDedicatedGuestVlanRangesParams) SetGuestvlanrange(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["guestvlanrange"] = v
return
}
func (p *ListDedicatedGuestVlanRangesParams) SetId(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["id"] = v
return
}
func (p *ListDedicatedGuestVlanRangesParams) SetKeyword(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["keyword"] = v
return
}
func (p *ListDedicatedGuestVlanRangesParams) SetPage(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["page"] = v
return
}
func (p *ListDedicatedGuestVlanRangesParams) SetPagesize(v int) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["pagesize"] = v
return
}
func (p *ListDedicatedGuestVlanRangesParams) SetPhysicalnetworkid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["physicalnetworkid"] = v
return
}
func (p *ListDedicatedGuestVlanRangesParams) SetProjectid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["projectid"] = v
return
}
func (p *ListDedicatedGuestVlanRangesParams) SetZoneid(v string) {
if p.p == nil {
p.p = make(map[string]interface{})
}
p.p["zoneid"] = v
return
}
// You should always use this function to get a new ListDedicatedGuestVlanRangesParams instance,
// as then you are sure you have configured all required params
func (s *VLANService) NewListDedicatedGuestVlanRangesParams() *ListDedicatedGuestVlanRangesParams {
p := &ListDedicatedGuestVlanRangesParams{}
p.p = make(map[string]interface{})
return p
}
// This is a courtesy helper function, which in some cases may not work as expected!
func (s *VLANService) GetDedicatedGuestVlanRangeByID(id string, opts ...OptionFunc) (*DedicatedGuestVlanRange, int, error) {
p := &ListDedicatedGuestVlanRangesParams{}
p.p = make(map[string]interface{})
p.p["id"] = id
for _, fn := range opts {
if err := fn(s.cs, p); err != nil {
return nil, -1, err
}
}
l, err := s.ListDedicatedGuestVlanRanges(p)
if err != nil {
if strings.Contains(err.Error(), fmt.Sprintf(
"Invalid parameter id value=%s due to incorrect long value format, "+
"or entity does not exist", id)) {
return nil, 0, fmt.Errorf("No match found for %s: %+v", id, l)
}
return nil, -1, err
}
if l.Count == 0 {
return nil, l.Count, fmt.Errorf("No match found for %s: %+v", id, l)
}
if l.Count == 1 {
return l.DedicatedGuestVlanRanges[0], l.Count, nil
}
return nil, l.Count, fmt.Errorf("There is more then one result for DedicatedGuestVlanRange UUID: %s!", id)
}
// Lists dedicated guest vlan ranges
func (s *VLANService) ListDedicatedGuestVlanRanges(p *ListDedicatedGuestVlanRangesParams) (*ListDedicatedGuestVlanRangesResponse, error) {
resp, err := s.cs.newRequest("listDedicatedGuestVlanRanges", p.toURLValues())
if err != nil {
return nil, err
}
var r ListDedicatedGuestVlanRangesResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type ListDedicatedGuestVlanRangesResponse struct {
Count int `json:"count"`
DedicatedGuestVlanRanges []*DedicatedGuestVlanRange `json:"dedicatedguestvlanrange"`
}
type DedicatedGuestVlanRange struct {
Account string `json:"account,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Guestvlanrange string `json:"guestvlanrange,omitempty"`
Id string `json:"id,omitempty"`
Physicalnetworkid int64 `json:"physicalnetworkid,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
Zoneid int64 `json:"zoneid,omitempty"`
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");
// 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 {
return nil, err
}
return &r, nil
}
type CreateInstanceGroupResponse struct {
Account string `json:"account,omitempty"`
Created string `json:"created,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Id string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
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"`
}
type DeleteInstanceGroupParams struct {
@ -157,80 +158,32 @@ func (s *VMGroupService) DeleteInstanceGroup(p *DeleteInstanceGroupParams) (*Del
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
type DeleteInstanceGroupResponse struct {
Displaytext string `json:"displaytext,omitempty"`
Success string `json:"success,omitempty"`
Displaytext string `json:"displaytext"`
Success bool `json:"success"`
}
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())
func (r *DeleteInstanceGroupResponse) UnmarshalJSON(b []byte) error {
var m map[string]interface{}
err := json.Unmarshal(b, &m)
if err != nil {
return nil, err
return err
}
var r UpdateInstanceGroupResponse
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
if success, ok := m["success"].(string); ok {
m["success"] = success == "true"
b, err = json.Marshal(m)
if err != nil {
return err
}
}
return &r, nil
}
type UpdateInstanceGroupResponse struct {
Account string `json:"account,omitempty"`
Created string `json:"created,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Id string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
type alias DeleteInstanceGroupResponse
return json.Unmarshal(b, (*alias)(r))
}
type ListInstanceGroupsParams struct {
@ -374,7 +327,7 @@ func (s *VMGroupService) GetInstanceGroupID(name string, opts ...OptionFunc) (st
p.p["name"] = name
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return "", -1, err
}
@ -424,7 +377,7 @@ func (s *VMGroupService) GetInstanceGroupByID(id string, opts ...OptionFunc) (*I
p.p["id"] = id
for _, fn := range opts {
for _, fn := range append(s.cs.options, opts...) {
if err := fn(s.cs, p); err != nil {
return nil, -1, err
}
@ -461,6 +414,7 @@ func (s *VMGroupService) ListInstanceGroups(p *ListInstanceGroupsParams) (*ListI
if err := json.Unmarshal(resp, &r); err != nil {
return nil, err
}
return &r, nil
}
@ -470,12 +424,81 @@ type ListInstanceGroupsResponse struct {
}
type InstanceGroup struct {
Account string `json:"account,omitempty"`
Created string `json:"created,omitempty"`
Domain string `json:"domain,omitempty"`
Domainid string `json:"domainid,omitempty"`
Id string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Project string `json:"project,omitempty"`
Projectid string `json:"projectid,omitempty"`
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"`
}
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");
// you may not use this file except in compliance with the License.
@ -26,7 +26,9 @@ import (
"errors"
"fmt"
"io/ioutil"
"net"
"net/http"
"net/http/cookiejar"
"net/url"
"regexp"
"sort"
@ -65,6 +67,7 @@ type CloudStackClient struct {
apiKey string // Api key
secret string // Secret key
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
APIDiscovery *APIDiscoveryService
@ -76,10 +79,13 @@ type CloudStackClient struct {
Authentication *AuthenticationService
AutoScale *AutoScaleService
Baremetal *BaremetalService
BigSwitchBCF *BigSwitchBCFService
BrocadeVCS *BrocadeVCSService
Certificate *CertificateService
CloudIdentifier *CloudIdentifierService
Cluster *ClusterService
Configuration *ConfigurationService
Custom *CustomService
DiskOffering *DiskOfferingService
Domain *DomainService
Event *EventService
@ -100,6 +106,8 @@ type CloudStackClient struct {
Network *NetworkService
Nic *NicService
NiciraNVP *NiciraNVPService
NuageVSP *NuageVSPService
OutofbandManagement *OutofbandManagementService
OvsElement *OvsElementService
Pod *PodService
Pool *PoolService
@ -109,6 +117,7 @@ type CloudStackClient struct {
Region *RegionService
Resourcemetadata *ResourcemetadataService
Resourcetags *ResourcetagsService
Role *RoleService
Router *RouterService
SSH *SSHService
SecurityGroup *SecurityGroupService
@ -134,11 +143,22 @@ type CloudStackClient struct {
// Creates a new client for communicating with CloudStack
func newClient(apiurl string, apikey string, secret string, async bool, verifyssl bool) *CloudStackClient {
jar, _ := cookiejar.New(nil)
cs := &CloudStackClient{
client: &http.Client{
Jar: jar,
Transport: &http.Transport{
Proxy: http.ProxyFromEnvironment,
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),
},
@ -146,6 +166,7 @@ func newClient(apiurl string, apikey string, secret string, async bool, verifyss
apiKey: apikey,
secret: secret,
async: async,
options: []OptionFunc{},
timeout: 300,
}
cs.APIDiscovery = NewAPIDiscoveryService(cs)
@ -157,10 +178,13 @@ func newClient(apiurl string, apikey string, secret string, async bool, verifyss
cs.Authentication = NewAuthenticationService(cs)
cs.AutoScale = NewAutoScaleService(cs)
cs.Baremetal = NewBaremetalService(cs)
cs.BigSwitchBCF = NewBigSwitchBCFService(cs)
cs.BrocadeVCS = NewBrocadeVCSService(cs)
cs.Certificate = NewCertificateService(cs)
cs.CloudIdentifier = NewCloudIdentifierService(cs)
cs.Cluster = NewClusterService(cs)
cs.Configuration = NewConfigurationService(cs)
cs.Custom = NewCustomService(cs)
cs.DiskOffering = NewDiskOfferingService(cs)
cs.Domain = NewDomainService(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.Nic = NewNicService(cs)
cs.NiciraNVP = NewNiciraNVPService(cs)
cs.NuageVSP = NewNuageVSPService(cs)
cs.OutofbandManagement = NewOutofbandManagementService(cs)
cs.OvsElement = NewOvsElementService(cs)
cs.Pod = NewPodService(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.Resourcemetadata = NewResourcemetadataService(cs)
cs.Resourcetags = NewResourcetagsService(cs)
cs.Role = NewRoleService(cs)
cs.Router = NewRouterService(cs)
cs.SSH = NewSSHService(cs)
cs.SecurityGroup = NewSecurityGroupService(cs)
@ -237,6 +264,15 @@ func (cs *CloudStackClient) AsyncTimeout(timeoutInSeconds int64) {
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")
// 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 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
// so we don't have to worry about the userdata size
@ -503,6 +539,22 @@ func NewBaremetalService(cs *CloudStackClient) *BaremetalService {
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 {
cs *CloudStackClient
}
@ -535,6 +587,14 @@ func NewConfigurationService(cs *CloudStackClient) *ConfigurationService {
return &ConfigurationService{cs: cs}
}
type CustomService struct {
cs *CloudStackClient
}
func NewCustomService(cs *CloudStackClient) *CustomService {
return &CustomService{cs: cs}
}
type DiskOfferingService struct {
cs *CloudStackClient
}
@ -695,6 +755,22 @@ func NewNiciraNVPService(cs *CloudStackClient) *NiciraNVPService {
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 {
cs *CloudStackClient
}
@ -767,6 +843,14 @@ func NewResourcetagsService(cs *CloudStackClient) *ResourcetagsService {
return &ResourcetagsService{cs: cs}
}
type RoleService struct {
cs *CloudStackClient
}
func NewRoleService(cs *CloudStackClient) *RoleService {
return &RoleService{cs: cs}
}
type RouterService struct {
cs *CloudStackClient
}

View File

@ -49,7 +49,7 @@ DigitalOcean. Replace the mock `api_token` value with your own.
Required Parameters:
- `playbook_file` - The playbook to be run by Ansible.
- `playbook_file` (string) - The playbook to be run by Ansible.
Optional Parameters:
@ -57,9 +57,7 @@ Optional Parameters:
running Ansible. Usage example:
``` json
{
"ansible_env_vars": [ "ANSIBLE_HOST_KEY_CHECKING=False", "ANSIBLE_SSH_ARGS='-o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=60s'", "ANSIBLE_NOCOLOR=True" ]
}
```
If you are running a Windows build on AWS, Azure or Google Compute and
@ -82,9 +80,7 @@ Optional Parameters:
not be quoted. Usage example:
``` json
{
"extra_arguments": [ "--extra-vars", "Region={{user `Region`}} Stage={{user `Stage`}}" ]
}
```
If you are running a Windows build on AWS, Azure or Google Compute and
@ -117,7 +113,7 @@ Optional Parameters:
inventory directory with `host_vars` `group_vars` that you would like to
use in the playbook that this provisioner will run.
- `local_port` (string) - The port on which to attempt to listen for SSH
- `local_port` (uint) - The port on which to attempt to listen for SSH
connections. This value is a starting point. The provisioner will attempt
listen for SSH connections on the first available of ten ports, starting at
`local_port`. A system-chosen port is used when `local_port` is missing or
@ -175,9 +171,7 @@ To debug underlying issues with Ansible, add `"-vvvv"` to `"extra_arguments"`
to enable verbose logging.
``` json
{
"extra_arguments": [ "-vvvv" ]
}
```
## Limitations

View File

@ -202,7 +202,7 @@
<a href="/docs/provisioners/ansible-local.html">Ansible Local</a>
</li>
<li<%= sidebar_current("docs-provisioners-ansible-remote")%>>
<a href="/docs/provisioners/ansible.html">Ansible Remote</a>
<a href="/docs/provisioners/ansible.html">Ansible (Remote)</a>
</li>
<li<%= sidebar_current("docs-provisioners-breakpoint")%>>
<a href="/docs/provisioners/breakpoint.html">Breakpoint</a>