cloudstack/HostService.go (5,260 lines of code) (raw):

// // Licensed to the Apache Software Foundation (ASF) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information // regarding copyright ownership. The ASF licenses this file // to you 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 HostServiceIface interface { AddBaremetalHost(p *AddBaremetalHostParams) (*AddBaremetalHostResponse, error) NewAddBaremetalHostParams(hypervisor string, podid string, url string, zoneid string) *AddBaremetalHostParams AddGloboDnsHost(p *AddGloboDnsHostParams) (*AddGloboDnsHostResponse, error) NewAddGloboDnsHostParams(password string, physicalnetworkid string, url string, username string) *AddGloboDnsHostParams AddHost(p *AddHostParams) (*AddHostResponse, error) NewAddHostParams(hypervisor string, podid string, url string, zoneid string) *AddHostParams AddSecondaryStorage(p *AddSecondaryStorageParams) (*AddSecondaryStorageResponse, error) NewAddSecondaryStorageParams(url string) *AddSecondaryStorageParams CancelHostMaintenance(p *CancelHostMaintenanceParams) (*CancelHostMaintenanceResponse, error) NewCancelHostMaintenanceParams(id string) *CancelHostMaintenanceParams ConfigureHAForHost(p *ConfigureHAForHostParams) (*HAForHostResponse, error) NewConfigureHAForHostParams(hostid string, provider string) *ConfigureHAForHostParams EnableHAForHost(p *EnableHAForHostParams) (*EnableHAForHostResponse, error) NewEnableHAForHostParams(hostid string) *EnableHAForHostParams DedicateHost(p *DedicateHostParams) (*DedicateHostResponse, error) NewDedicateHostParams(domainid string, hostid string) *DedicateHostParams DeleteHost(p *DeleteHostParams) (*DeleteHostResponse, error) NewDeleteHostParams(id string) *DeleteHostParams DisableHAForHost(p *DisableHAForHostParams) (*DisableHAForHostResponse, error) NewDisableHAForHostParams(hostid string) *DisableHAForHostParams DisableOutOfBandManagementForHost(p *DisableOutOfBandManagementForHostParams) (*DisableOutOfBandManagementForHostResponse, error) NewDisableOutOfBandManagementForHostParams(hostid string) *DisableOutOfBandManagementForHostParams EnableOutOfBandManagementForHost(p *EnableOutOfBandManagementForHostParams) (*EnableOutOfBandManagementForHostResponse, error) NewEnableOutOfBandManagementForHostParams(hostid string) *EnableOutOfBandManagementForHostParams FindHostsForMigration(p *FindHostsForMigrationParams) (*FindHostsForMigrationResponse, error) NewFindHostsForMigrationParams(virtualmachineid string) *FindHostsForMigrationParams ListDedicatedHosts(p *ListDedicatedHostsParams) (*ListDedicatedHostsResponse, error) NewListDedicatedHostsParams() *ListDedicatedHostsParams ListHostTags(p *ListHostTagsParams) (*ListHostTagsResponse, error) NewListHostTagsParams() *ListHostTagsParams GetHostTagID(keyword string, opts ...OptionFunc) (string, int, error) ListHosts(p *ListHostsParams) (*ListHostsResponse, error) NewListHostsParams() *ListHostsParams GetHostID(name string, opts ...OptionFunc) (string, int, error) GetHostByName(name string, opts ...OptionFunc) (*Host, int, error) GetHostByID(id string, opts ...OptionFunc) (*Host, int, error) ListHostsMetrics(p *ListHostsMetricsParams) (*ListHostsMetricsResponse, error) NewListHostsMetricsParams() *ListHostsMetricsParams GetHostsMetricID(name string, opts ...OptionFunc) (string, int, error) GetHostsMetricByName(name string, opts ...OptionFunc) (*HostsMetric, int, error) GetHostsMetricByID(id string, opts ...OptionFunc) (*HostsMetric, int, error) PrepareHostForMaintenance(p *PrepareHostForMaintenanceParams) (*PrepareHostForMaintenanceResponse, error) NewPrepareHostForMaintenanceParams(id string) *PrepareHostForMaintenanceParams ReconnectHost(p *ReconnectHostParams) (*ReconnectHostResponse, error) NewReconnectHostParams(id string) *ReconnectHostParams ReleaseDedicatedHost(p *ReleaseDedicatedHostParams) (*ReleaseDedicatedHostResponse, error) NewReleaseDedicatedHostParams(hostid string) *ReleaseDedicatedHostParams ReleaseHostReservation(p *ReleaseHostReservationParams) (*ReleaseHostReservationResponse, error) NewReleaseHostReservationParams(id string) *ReleaseHostReservationParams UpdateHost(p *UpdateHostParams) (*UpdateHostResponse, error) NewUpdateHostParams(id string) *UpdateHostParams UpdateHostPassword(p *UpdateHostPasswordParams) (*UpdateHostPasswordResponse, error) NewUpdateHostPasswordParams(password string, username string) *UpdateHostPasswordParams MigrateSecondaryStorageData(p *MigrateSecondaryStorageDataParams) (*MigrateSecondaryStorageDataResponse, error) NewMigrateSecondaryStorageDataParams(destpools []string, srcpool string) *MigrateSecondaryStorageDataParams CancelHostAsDegraded(p *CancelHostAsDegradedParams) (*CancelHostAsDegradedResponse, error) NewCancelHostAsDegradedParams(id string) *CancelHostAsDegradedParams ListHostHAProviders(p *ListHostHAProvidersParams) (*ListHostHAProvidersResponse, error) NewListHostHAProvidersParams(hypervisor string) *ListHostHAProvidersParams ListSecondaryStorageSelectors(p *ListSecondaryStorageSelectorsParams) (*ListSecondaryStorageSelectorsResponse, error) NewListSecondaryStorageSelectorsParams(zoneid string) *ListSecondaryStorageSelectorsParams GetSecondaryStorageSelectorID(keyword string, zoneid string, opts ...OptionFunc) (string, int, error) CreateSecondaryStorageSelector(p *CreateSecondaryStorageSelectorParams) (*CreateSecondaryStorageSelectorResponse, error) NewCreateSecondaryStorageSelectorParams(description string, heuristicrule string, name string, hostType string, zoneid string) *CreateSecondaryStorageSelectorParams RemoveSecondaryStorageSelector(p *RemoveSecondaryStorageSelectorParams) (*RemoveSecondaryStorageSelectorResponse, error) NewRemoveSecondaryStorageSelectorParams(id string) *RemoveSecondaryStorageSelectorParams ListHostHAResources(p *ListHostHAResourcesParams) (*ListHostHAResourcesResponse, error) NewListHostHAResourcesParams() *ListHostHAResourcesParams DeclareHostAsDegraded(p *DeclareHostAsDegradedParams) (*DeclareHostAsDegradedResponse, error) NewDeclareHostAsDegradedParams(id string) *DeclareHostAsDegradedParams UpdateSecondaryStorageSelector(p *UpdateSecondaryStorageSelectorParams) (*UpdateSecondaryStorageSelectorResponse, error) NewUpdateSecondaryStorageSelectorParams(heuristicrule string, id string) *UpdateSecondaryStorageSelectorParams } type AddBaremetalHostParams struct { p map[string]interface{} } func (p *AddBaremetalHostParams) 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["clusterid"]; found { u.Set("clusterid", v.(string)) } if v, found := p.p["clustername"]; found { u.Set("clustername", v.(string)) } if v, found := p.p["hosttags"]; found { vv := strings.Join(v.([]string), ",") u.Set("hosttags", vv) } if v, found := p.p["hypervisor"]; found { u.Set("hypervisor", v.(string)) } if v, found := p.p["ipaddress"]; found { u.Set("ipaddress", v.(string)) } if v, found := p.p["password"]; found { u.Set("password", v.(string)) } if v, found := p.p["podid"]; found { u.Set("podid", v.(string)) } if v, found := p.p["url"]; found { u.Set("url", v.(string)) } if v, found := p.p["username"]; found { u.Set("username", v.(string)) } if v, found := p.p["zoneid"]; found { u.Set("zoneid", v.(string)) } return u } func (p *AddBaremetalHostParams) SetAllocationstate(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["allocationstate"] = v } func (p *AddBaremetalHostParams) ResetAllocationstate() { if p.p != nil && p.p["allocationstate"] != nil { delete(p.p, "allocationstate") } } func (p *AddBaremetalHostParams) GetAllocationstate() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["allocationstate"].(string) return value, ok } func (p *AddBaremetalHostParams) SetClusterid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["clusterid"] = v } func (p *AddBaremetalHostParams) ResetClusterid() { if p.p != nil && p.p["clusterid"] != nil { delete(p.p, "clusterid") } } func (p *AddBaremetalHostParams) GetClusterid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["clusterid"].(string) return value, ok } func (p *AddBaremetalHostParams) SetClustername(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["clustername"] = v } func (p *AddBaremetalHostParams) ResetClustername() { if p.p != nil && p.p["clustername"] != nil { delete(p.p, "clustername") } } func (p *AddBaremetalHostParams) GetClustername() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["clustername"].(string) return value, ok } func (p *AddBaremetalHostParams) SetHosttags(v []string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["hosttags"] = v } func (p *AddBaremetalHostParams) ResetHosttags() { if p.p != nil && p.p["hosttags"] != nil { delete(p.p, "hosttags") } } func (p *AddBaremetalHostParams) GetHosttags() ([]string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["hosttags"].([]string) return value, ok } func (p *AddBaremetalHostParams) SetHypervisor(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["hypervisor"] = v } func (p *AddBaremetalHostParams) ResetHypervisor() { if p.p != nil && p.p["hypervisor"] != nil { delete(p.p, "hypervisor") } } func (p *AddBaremetalHostParams) GetHypervisor() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["hypervisor"].(string) return value, ok } func (p *AddBaremetalHostParams) SetIpaddress(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["ipaddress"] = v } func (p *AddBaremetalHostParams) ResetIpaddress() { if p.p != nil && p.p["ipaddress"] != nil { delete(p.p, "ipaddress") } } func (p *AddBaremetalHostParams) GetIpaddress() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["ipaddress"].(string) return value, ok } func (p *AddBaremetalHostParams) SetPassword(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["password"] = v } func (p *AddBaremetalHostParams) ResetPassword() { if p.p != nil && p.p["password"] != nil { delete(p.p, "password") } } func (p *AddBaremetalHostParams) GetPassword() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["password"].(string) return value, ok } func (p *AddBaremetalHostParams) SetPodid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["podid"] = v } func (p *AddBaremetalHostParams) ResetPodid() { if p.p != nil && p.p["podid"] != nil { delete(p.p, "podid") } } func (p *AddBaremetalHostParams) GetPodid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["podid"].(string) return value, ok } func (p *AddBaremetalHostParams) SetUrl(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["url"] = v } func (p *AddBaremetalHostParams) ResetUrl() { if p.p != nil && p.p["url"] != nil { delete(p.p, "url") } } func (p *AddBaremetalHostParams) GetUrl() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["url"].(string) return value, ok } func (p *AddBaremetalHostParams) SetUsername(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["username"] = v } func (p *AddBaremetalHostParams) ResetUsername() { if p.p != nil && p.p["username"] != nil { delete(p.p, "username") } } func (p *AddBaremetalHostParams) GetUsername() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["username"].(string) return value, ok } func (p *AddBaremetalHostParams) SetZoneid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["zoneid"] = v } func (p *AddBaremetalHostParams) ResetZoneid() { if p.p != nil && p.p["zoneid"] != nil { delete(p.p, "zoneid") } } func (p *AddBaremetalHostParams) GetZoneid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["zoneid"].(string) return value, ok } // You should always use this function to get a new AddBaremetalHostParams instance, // as then you are sure you have configured all required params func (s *HostService) NewAddBaremetalHostParams(hypervisor string, podid string, url string, zoneid string) *AddBaremetalHostParams { p := &AddBaremetalHostParams{} p.p = make(map[string]interface{}) p.p["hypervisor"] = hypervisor p.p["podid"] = podid p.p["url"] = url p.p["zoneid"] = zoneid return p } // add a baremetal host func (s *HostService) AddBaremetalHost(p *AddBaremetalHostParams) (*AddBaremetalHostResponse, error) { resp, err := s.cs.newRequest("addBaremetalHost", p.toURLValues()) if err != nil { return nil, err } var r AddBaremetalHostResponse if err := json.Unmarshal(resp, &r); err != nil { return nil, err } return &r, nil } type AddBaremetalHostResponse struct { Annotation string `json:"annotation"` Arch string `json:"arch"` Capabilities string `json:"capabilities"` Clusterid string `json:"clusterid"` Clustername string `json:"clustername"` Clustertype string `json:"clustertype"` Cpuallocated string `json:"cpuallocated"` Cpuallocatedpercentage string `json:"cpuallocatedpercentage"` Cpuallocatedvalue int64 `json:"cpuallocatedvalue"` Cpuallocatedwithoverprovisioning string `json:"cpuallocatedwithoverprovisioning"` Cpuloadaverage float64 `json:"cpuloadaverage"` Cpunumber int `json:"cpunumber"` Cpusockets int `json:"cpusockets"` Cpuspeed int64 `json:"cpuspeed"` Cpuused string `json:"cpuused"` Cpuwithoverprovisioning string `json:"cpuwithoverprovisioning"` Created string `json:"created"` Details map[string]string `json:"details"` Disconnected string `json:"disconnected"` Disksizeallocated int64 `json:"disksizeallocated"` Disksizetotal int64 `json:"disksizetotal"` Encryptionsupported bool `json:"encryptionsupported"` Events string `json:"events"` Explicithosttags string `json:"explicithosttags"` Gpugroup []AddBaremetalHostResponseGpugroup `json:"gpugroup"` Hahost bool `json:"hahost"` Hasannotations bool `json:"hasannotations"` Hasenoughcapacity bool `json:"hasenoughcapacity"` Hostha HAForHostResponse `json:"hostha"` Hosttags string `json:"hosttags"` Hypervisor string `json:"hypervisor"` Hypervisorversion string `json:"hypervisorversion"` Id string `json:"id"` Implicithosttags string `json:"implicithosttags"` Instanceconversionsupported bool `json:"instanceconversionsupported"` Ipaddress string `json:"ipaddress"` Islocalstorageactive bool `json:"islocalstorageactive"` Istagarule bool `json:"istagarule"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Lastannotated string `json:"lastannotated"` Lastpinged string `json:"lastpinged"` Managementserverid UUID `json:"managementserverid"` Memoryallocated int64 `json:"memoryallocated"` Memoryallocatedbytes int64 `json:"memoryallocatedbytes"` Memoryallocatedpercentage string `json:"memoryallocatedpercentage"` Memorytotal int64 `json:"memorytotal"` Memoryused int64 `json:"memoryused"` Memorywithoverprovisioning string `json:"memorywithoverprovisioning"` Name string `json:"name"` Networkkbsread int64 `json:"networkkbsread"` Networkkbswrite int64 `json:"networkkbswrite"` Oscategoryid string `json:"oscategoryid"` Oscategoryname string `json:"oscategoryname"` Outofbandmanagement OutOfBandManagementResponse `json:"outofbandmanagement"` Podid string `json:"podid"` Podname string `json:"podname"` Removed string `json:"removed"` Resourcestate string `json:"resourcestate"` State string `json:"state"` Suitableformigration bool `json:"suitableformigration"` Type string `json:"type"` Ueficapability bool `json:"ueficapability"` Username string `json:"username"` Version string `json:"version"` Zoneid string `json:"zoneid"` Zonename string `json:"zonename"` } type AddBaremetalHostResponseGpugroup struct { Gpugroupname string `json:"gpugroupname"` Vgpu []AddBaremetalHostResponseGpugroupVgpu `json:"vgpu"` } type AddBaremetalHostResponseGpugroupVgpu struct { Maxcapacity int64 `json:"maxcapacity"` Maxheads int64 `json:"maxheads"` Maxresolutionx int64 `json:"maxresolutionx"` Maxresolutiony int64 `json:"maxresolutiony"` Maxvgpuperpgpu int64 `json:"maxvgpuperpgpu"` Remainingcapacity int64 `json:"remainingcapacity"` Vgputype string `json:"vgputype"` Videoram int64 `json:"videoram"` } type AddGloboDnsHostParams struct { p map[string]interface{} } func (p *AddGloboDnsHostParams) toURLValues() url.Values { u := url.Values{} if p.p == nil { return u } if v, found := p.p["password"]; found { u.Set("password", v.(string)) } if v, found := p.p["physicalnetworkid"]; found { u.Set("physicalnetworkid", v.(string)) } if v, found := p.p["url"]; found { u.Set("url", v.(string)) } if v, found := p.p["username"]; found { u.Set("username", v.(string)) } return u } func (p *AddGloboDnsHostParams) SetPassword(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["password"] = v } func (p *AddGloboDnsHostParams) ResetPassword() { if p.p != nil && p.p["password"] != nil { delete(p.p, "password") } } func (p *AddGloboDnsHostParams) GetPassword() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["password"].(string) return value, ok } func (p *AddGloboDnsHostParams) SetPhysicalnetworkid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["physicalnetworkid"] = v } func (p *AddGloboDnsHostParams) ResetPhysicalnetworkid() { if p.p != nil && p.p["physicalnetworkid"] != nil { delete(p.p, "physicalnetworkid") } } func (p *AddGloboDnsHostParams) GetPhysicalnetworkid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["physicalnetworkid"].(string) return value, ok } func (p *AddGloboDnsHostParams) SetUrl(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["url"] = v } func (p *AddGloboDnsHostParams) ResetUrl() { if p.p != nil && p.p["url"] != nil { delete(p.p, "url") } } func (p *AddGloboDnsHostParams) GetUrl() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["url"].(string) return value, ok } func (p *AddGloboDnsHostParams) SetUsername(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["username"] = v } func (p *AddGloboDnsHostParams) ResetUsername() { if p.p != nil && p.p["username"] != nil { delete(p.p, "username") } } func (p *AddGloboDnsHostParams) GetUsername() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["username"].(string) return value, ok } // You should always use this function to get a new AddGloboDnsHostParams instance, // as then you are sure you have configured all required params func (s *HostService) NewAddGloboDnsHostParams(password string, physicalnetworkid string, url string, username string) *AddGloboDnsHostParams { p := &AddGloboDnsHostParams{} p.p = make(map[string]interface{}) p.p["password"] = password p.p["physicalnetworkid"] = physicalnetworkid p.p["url"] = url p.p["username"] = username return p } // Adds the GloboDNS external host func (s *HostService) AddGloboDnsHost(p *AddGloboDnsHostParams) (*AddGloboDnsHostResponse, error) { resp, err := s.cs.newRequest("addGloboDnsHost", p.toURLValues()) if err != nil { return nil, err } var r AddGloboDnsHostResponse 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 AddGloboDnsHostResponse struct { Displaytext string `json:"displaytext"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Success bool `json:"success"` } type AddHostParams struct { p map[string]interface{} } func (p *AddHostParams) 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["clusterid"]; found { u.Set("clusterid", v.(string)) } if v, found := p.p["clustername"]; found { u.Set("clustername", v.(string)) } if v, found := p.p["hosttags"]; found { vv := strings.Join(v.([]string), ",") u.Set("hosttags", vv) } if v, found := p.p["hypervisor"]; found { u.Set("hypervisor", v.(string)) } if v, found := p.p["password"]; found { u.Set("password", v.(string)) } if v, found := p.p["podid"]; found { u.Set("podid", v.(string)) } if v, found := p.p["url"]; found { u.Set("url", v.(string)) } if v, found := p.p["username"]; found { u.Set("username", v.(string)) } if v, found := p.p["zoneid"]; found { u.Set("zoneid", v.(string)) } return u } func (p *AddHostParams) SetAllocationstate(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["allocationstate"] = v } func (p *AddHostParams) ResetAllocationstate() { if p.p != nil && p.p["allocationstate"] != nil { delete(p.p, "allocationstate") } } func (p *AddHostParams) GetAllocationstate() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["allocationstate"].(string) return value, ok } func (p *AddHostParams) SetClusterid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["clusterid"] = v } func (p *AddHostParams) ResetClusterid() { if p.p != nil && p.p["clusterid"] != nil { delete(p.p, "clusterid") } } func (p *AddHostParams) GetClusterid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["clusterid"].(string) return value, ok } func (p *AddHostParams) SetClustername(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["clustername"] = v } func (p *AddHostParams) ResetClustername() { if p.p != nil && p.p["clustername"] != nil { delete(p.p, "clustername") } } func (p *AddHostParams) GetClustername() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["clustername"].(string) return value, ok } func (p *AddHostParams) SetHosttags(v []string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["hosttags"] = v } func (p *AddHostParams) ResetHosttags() { if p.p != nil && p.p["hosttags"] != nil { delete(p.p, "hosttags") } } func (p *AddHostParams) GetHosttags() ([]string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["hosttags"].([]string) return value, ok } func (p *AddHostParams) SetHypervisor(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["hypervisor"] = v } func (p *AddHostParams) ResetHypervisor() { if p.p != nil && p.p["hypervisor"] != nil { delete(p.p, "hypervisor") } } func (p *AddHostParams) GetHypervisor() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["hypervisor"].(string) return value, ok } func (p *AddHostParams) SetPassword(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["password"] = v } func (p *AddHostParams) ResetPassword() { if p.p != nil && p.p["password"] != nil { delete(p.p, "password") } } func (p *AddHostParams) GetPassword() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["password"].(string) return value, ok } func (p *AddHostParams) SetPodid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["podid"] = v } func (p *AddHostParams) ResetPodid() { if p.p != nil && p.p["podid"] != nil { delete(p.p, "podid") } } func (p *AddHostParams) GetPodid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["podid"].(string) return value, ok } func (p *AddHostParams) SetUrl(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["url"] = v } func (p *AddHostParams) ResetUrl() { if p.p != nil && p.p["url"] != nil { delete(p.p, "url") } } func (p *AddHostParams) GetUrl() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["url"].(string) return value, ok } func (p *AddHostParams) SetUsername(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["username"] = v } func (p *AddHostParams) ResetUsername() { if p.p != nil && p.p["username"] != nil { delete(p.p, "username") } } func (p *AddHostParams) GetUsername() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["username"].(string) return value, ok } func (p *AddHostParams) SetZoneid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["zoneid"] = v } func (p *AddHostParams) ResetZoneid() { if p.p != nil && p.p["zoneid"] != nil { delete(p.p, "zoneid") } } func (p *AddHostParams) GetZoneid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["zoneid"].(string) return value, ok } // You should always use this function to get a new AddHostParams instance, // as then you are sure you have configured all required params func (s *HostService) NewAddHostParams(hypervisor string, podid string, url string, zoneid string) *AddHostParams { p := &AddHostParams{} p.p = make(map[string]interface{}) p.p["hypervisor"] = hypervisor p.p["podid"] = podid p.p["url"] = url p.p["zoneid"] = zoneid return p } // Adds a new host. func (s *HostService) AddHost(p *AddHostParams) (*AddHostResponse, error) { resp, err := s.cs.newRequest("addHost", p.toURLValues()) if err != nil { return nil, err } if resp, err = getRawValue(resp); err != nil { return nil, err } var r AddHostResponse if err := json.Unmarshal(resp, &r); err != nil { return nil, err } return &r, nil } type AddHostResponse struct { Annotation string `json:"annotation"` Arch string `json:"arch"` Capabilities string `json:"capabilities"` Clusterid string `json:"clusterid"` Clustername string `json:"clustername"` Clustertype string `json:"clustertype"` Cpuallocated string `json:"cpuallocated"` Cpuallocatedpercentage string `json:"cpuallocatedpercentage"` Cpuallocatedvalue int64 `json:"cpuallocatedvalue"` Cpuallocatedwithoverprovisioning string `json:"cpuallocatedwithoverprovisioning"` Cpuloadaverage float64 `json:"cpuloadaverage"` Cpunumber int `json:"cpunumber"` Cpusockets int `json:"cpusockets"` Cpuspeed int64 `json:"cpuspeed"` Cpuused string `json:"cpuused"` Cpuwithoverprovisioning string `json:"cpuwithoverprovisioning"` Created string `json:"created"` Details map[string]string `json:"details"` Disconnected string `json:"disconnected"` Disksizeallocated int64 `json:"disksizeallocated"` Disksizetotal int64 `json:"disksizetotal"` Encryptionsupported bool `json:"encryptionsupported"` Events string `json:"events"` Explicithosttags string `json:"explicithosttags"` Gpugroup []AddHostResponseGpugroup `json:"gpugroup"` Hahost bool `json:"hahost"` Hasannotations bool `json:"hasannotations"` Hasenoughcapacity bool `json:"hasenoughcapacity"` Hostha HAForHostResponse `json:"hostha"` Hosttags string `json:"hosttags"` Hypervisor string `json:"hypervisor"` Hypervisorversion string `json:"hypervisorversion"` Id string `json:"id"` Implicithosttags string `json:"implicithosttags"` Instanceconversionsupported bool `json:"instanceconversionsupported"` Ipaddress string `json:"ipaddress"` Islocalstorageactive bool `json:"islocalstorageactive"` Istagarule bool `json:"istagarule"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Lastannotated string `json:"lastannotated"` Lastpinged string `json:"lastpinged"` Managementserverid UUID `json:"managementserverid"` Memoryallocated int64 `json:"memoryallocated"` Memoryallocatedbytes int64 `json:"memoryallocatedbytes"` Memoryallocatedpercentage string `json:"memoryallocatedpercentage"` Memorytotal int64 `json:"memorytotal"` Memoryused int64 `json:"memoryused"` Memorywithoverprovisioning string `json:"memorywithoverprovisioning"` Name string `json:"name"` Networkkbsread int64 `json:"networkkbsread"` Networkkbswrite int64 `json:"networkkbswrite"` Oscategoryid string `json:"oscategoryid"` Oscategoryname string `json:"oscategoryname"` Outofbandmanagement OutOfBandManagementResponse `json:"outofbandmanagement"` Podid string `json:"podid"` Podname string `json:"podname"` Removed string `json:"removed"` Resourcestate string `json:"resourcestate"` State string `json:"state"` Suitableformigration bool `json:"suitableformigration"` Type string `json:"type"` Ueficapability bool `json:"ueficapability"` Username string `json:"username"` Version string `json:"version"` Zoneid string `json:"zoneid"` Zonename string `json:"zonename"` } type AddHostResponseGpugroup struct { Gpugroupname string `json:"gpugroupname"` Vgpu []AddHostResponseGpugroupVgpu `json:"vgpu"` } type AddHostResponseGpugroupVgpu struct { Maxcapacity int64 `json:"maxcapacity"` Maxheads int64 `json:"maxheads"` Maxresolutionx int64 `json:"maxresolutionx"` Maxresolutiony int64 `json:"maxresolutiony"` Maxvgpuperpgpu int64 `json:"maxvgpuperpgpu"` Remainingcapacity int64 `json:"remainingcapacity"` Vgputype string `json:"vgputype"` Videoram int64 `json:"videoram"` } type AddSecondaryStorageParams struct { p map[string]interface{} } func (p *AddSecondaryStorageParams) toURLValues() url.Values { u := url.Values{} if p.p == nil { return u } 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 *AddSecondaryStorageParams) SetUrl(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["url"] = v } func (p *AddSecondaryStorageParams) ResetUrl() { if p.p != nil && p.p["url"] != nil { delete(p.p, "url") } } func (p *AddSecondaryStorageParams) GetUrl() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["url"].(string) return value, ok } func (p *AddSecondaryStorageParams) SetZoneid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["zoneid"] = v } func (p *AddSecondaryStorageParams) ResetZoneid() { if p.p != nil && p.p["zoneid"] != nil { delete(p.p, "zoneid") } } func (p *AddSecondaryStorageParams) GetZoneid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["zoneid"].(string) return value, ok } // You should always use this function to get a new AddSecondaryStorageParams instance, // as then you are sure you have configured all required params func (s *HostService) NewAddSecondaryStorageParams(url string) *AddSecondaryStorageParams { p := &AddSecondaryStorageParams{} p.p = make(map[string]interface{}) p.p["url"] = url return p } // Adds secondary storage. func (s *HostService) AddSecondaryStorage(p *AddSecondaryStorageParams) (*AddSecondaryStorageResponse, error) { resp, err := s.cs.newRequest("addSecondaryStorage", p.toURLValues()) if err != nil { return nil, err } var r AddSecondaryStorageResponse if err := json.Unmarshal(resp, &r); err != nil { return nil, err } return &r, nil } type AddSecondaryStorageResponse struct { Disksizetotal int64 `json:"disksizetotal"` Disksizeused int64 `json:"disksizeused"` Hasannotations bool `json:"hasannotations"` Id string `json:"id"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Name string `json:"name"` Protocol string `json:"protocol"` Providername string `json:"providername"` Readonly bool `json:"readonly"` Scope string `json:"scope"` Url string `json:"url"` Zoneid string `json:"zoneid"` Zonename string `json:"zonename"` } type CancelHostMaintenanceParams struct { p map[string]interface{} } func (p *CancelHostMaintenanceParams) 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 *CancelHostMaintenanceParams) SetId(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["id"] = v } func (p *CancelHostMaintenanceParams) ResetId() { if p.p != nil && p.p["id"] != nil { delete(p.p, "id") } } func (p *CancelHostMaintenanceParams) GetId() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["id"].(string) return value, ok } // You should always use this function to get a new CancelHostMaintenanceParams instance, // as then you are sure you have configured all required params func (s *HostService) NewCancelHostMaintenanceParams(id string) *CancelHostMaintenanceParams { p := &CancelHostMaintenanceParams{} p.p = make(map[string]interface{}) p.p["id"] = id return p } // Cancels host maintenance. func (s *HostService) CancelHostMaintenance(p *CancelHostMaintenanceParams) (*CancelHostMaintenanceResponse, error) { resp, err := s.cs.newRequest("cancelHostMaintenance", p.toURLValues()) if err != nil { return nil, err } var r CancelHostMaintenanceResponse 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 CancelHostMaintenanceResponse struct { Annotation string `json:"annotation"` Arch string `json:"arch"` Capabilities string `json:"capabilities"` Clusterid string `json:"clusterid"` Clustername string `json:"clustername"` Clustertype string `json:"clustertype"` Cpuallocated string `json:"cpuallocated"` Cpuallocatedpercentage string `json:"cpuallocatedpercentage"` Cpuallocatedvalue int64 `json:"cpuallocatedvalue"` Cpuallocatedwithoverprovisioning string `json:"cpuallocatedwithoverprovisioning"` Cpuloadaverage float64 `json:"cpuloadaverage"` Cpunumber int `json:"cpunumber"` Cpusockets int `json:"cpusockets"` Cpuspeed int64 `json:"cpuspeed"` Cpuused string `json:"cpuused"` Cpuwithoverprovisioning string `json:"cpuwithoverprovisioning"` Created string `json:"created"` Details map[string]string `json:"details"` Disconnected string `json:"disconnected"` Disksizeallocated int64 `json:"disksizeallocated"` Disksizetotal int64 `json:"disksizetotal"` Encryptionsupported bool `json:"encryptionsupported"` Events string `json:"events"` Explicithosttags string `json:"explicithosttags"` Gpugroup []CancelHostMaintenanceResponseGpugroup `json:"gpugroup"` Hahost bool `json:"hahost"` Hasannotations bool `json:"hasannotations"` Hasenoughcapacity bool `json:"hasenoughcapacity"` Hostha HAForHostResponse `json:"hostha"` Hosttags string `json:"hosttags"` Hypervisor string `json:"hypervisor"` Hypervisorversion string `json:"hypervisorversion"` Id string `json:"id"` Implicithosttags string `json:"implicithosttags"` Instanceconversionsupported bool `json:"instanceconversionsupported"` Ipaddress string `json:"ipaddress"` Islocalstorageactive bool `json:"islocalstorageactive"` Istagarule bool `json:"istagarule"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Lastannotated string `json:"lastannotated"` Lastpinged string `json:"lastpinged"` Managementserverid UUID `json:"managementserverid"` Memoryallocated int64 `json:"memoryallocated"` Memoryallocatedbytes int64 `json:"memoryallocatedbytes"` Memoryallocatedpercentage string `json:"memoryallocatedpercentage"` Memorytotal int64 `json:"memorytotal"` Memoryused int64 `json:"memoryused"` Memorywithoverprovisioning string `json:"memorywithoverprovisioning"` Name string `json:"name"` Networkkbsread int64 `json:"networkkbsread"` Networkkbswrite int64 `json:"networkkbswrite"` Oscategoryid string `json:"oscategoryid"` Oscategoryname string `json:"oscategoryname"` Outofbandmanagement OutOfBandManagementResponse `json:"outofbandmanagement"` Podid string `json:"podid"` Podname string `json:"podname"` Removed string `json:"removed"` Resourcestate string `json:"resourcestate"` State string `json:"state"` Suitableformigration bool `json:"suitableformigration"` Type string `json:"type"` Ueficapability bool `json:"ueficapability"` Username string `json:"username"` Version string `json:"version"` Zoneid string `json:"zoneid"` Zonename string `json:"zonename"` } type CancelHostMaintenanceResponseGpugroup struct { Gpugroupname string `json:"gpugroupname"` Vgpu []CancelHostMaintenanceResponseGpugroupVgpu `json:"vgpu"` } type CancelHostMaintenanceResponseGpugroupVgpu struct { Maxcapacity int64 `json:"maxcapacity"` Maxheads int64 `json:"maxheads"` Maxresolutionx int64 `json:"maxresolutionx"` Maxresolutiony int64 `json:"maxresolutiony"` Maxvgpuperpgpu int64 `json:"maxvgpuperpgpu"` Remainingcapacity int64 `json:"remainingcapacity"` Vgputype string `json:"vgputype"` Videoram int64 `json:"videoram"` } type ConfigureHAForHostParams struct { p map[string]interface{} } func (p *ConfigureHAForHostParams) 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["provider"]; found { u.Set("provider", v.(string)) } return u } func (p *ConfigureHAForHostParams) SetHostid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["hostid"] = v } func (p *ConfigureHAForHostParams) ResetHostid() { if p.p != nil && p.p["hostid"] != nil { delete(p.p, "hostid") } } func (p *ConfigureHAForHostParams) GetHostid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["hostid"].(string) return value, ok } func (p *ConfigureHAForHostParams) SetProvider(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["provider"] = v } func (p *ConfigureHAForHostParams) ResetProvider() { if p.p != nil && p.p["provider"] != nil { delete(p.p, "provider") } } func (p *ConfigureHAForHostParams) GetProvider() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["provider"].(string) return value, ok } // You should always use this function to get a new ConfigureHAForHostParams instance, // as then you are sure you have configured all required params func (s *HostService) NewConfigureHAForHostParams(hostid string, provider string) *ConfigureHAForHostParams { p := &ConfigureHAForHostParams{} p.p = make(map[string]interface{}) p.p["hostid"] = hostid p.p["provider"] = provider return p } // Configures HA for a host func (s *HostService) ConfigureHAForHost(p *ConfigureHAForHostParams) (*HAForHostResponse, error) { resp, err := s.cs.newRequest("configureHAForHost", p.toURLValues()) if err != nil { return nil, err } var r HAForHostResponse 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 HAForHostResponse struct { Haenable bool `json:"haenable"` Haprovider string `json:"haprovider"` Hastate string `json:"hastate"` Hostid string `json:"hostid"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Status bool `json:"status"` } type EnableHAForHostParams struct { p map[string]interface{} } func (p *EnableHAForHostParams) 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 *EnableHAForHostParams) SetHostid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["hostid"] = v } func (p *EnableHAForHostParams) ResetHostid() { if p.p != nil && p.p["hostid"] != nil { delete(p.p, "hostid") } } func (p *EnableHAForHostParams) GetHostid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["hostid"].(string) return value, ok } // You should always use this function to get a new EnableHAForHostParams instance, // as then you are sure you have configured all required params func (s *HostService) NewEnableHAForHostParams(hostid string) *EnableHAForHostParams { p := &EnableHAForHostParams{} p.p = make(map[string]interface{}) p.p["hostid"] = hostid return p } // Enables HA for a host func (s *HostService) EnableHAForHost(p *EnableHAForHostParams) (*EnableHAForHostResponse, error) { resp, err := s.cs.newRequest("enableHAForHost", p.toURLValues()) if err != nil { return nil, err } var r EnableHAForHostResponse 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 EnableHAForHostResponse struct { Haenable bool `json:"haenable"` Haprovider string `json:"haprovider"` Hastate string `json:"hastate"` Hostid string `json:"hostid"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Status bool `json:"status"` } type DedicateHostParams struct { p map[string]interface{} } func (p *DedicateHostParams) 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["hostid"]; found { u.Set("hostid", v.(string)) } return u } func (p *DedicateHostParams) SetAccount(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["account"] = v } func (p *DedicateHostParams) ResetAccount() { if p.p != nil && p.p["account"] != nil { delete(p.p, "account") } } func (p *DedicateHostParams) GetAccount() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["account"].(string) return value, ok } func (p *DedicateHostParams) SetDomainid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["domainid"] = v } func (p *DedicateHostParams) ResetDomainid() { if p.p != nil && p.p["domainid"] != nil { delete(p.p, "domainid") } } func (p *DedicateHostParams) GetDomainid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["domainid"].(string) return value, ok } func (p *DedicateHostParams) SetHostid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["hostid"] = v } func (p *DedicateHostParams) ResetHostid() { if p.p != nil && p.p["hostid"] != nil { delete(p.p, "hostid") } } func (p *DedicateHostParams) GetHostid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["hostid"].(string) return value, ok } // You should always use this function to get a new DedicateHostParams instance, // as then you are sure you have configured all required params func (s *HostService) NewDedicateHostParams(domainid string, hostid string) *DedicateHostParams { p := &DedicateHostParams{} p.p = make(map[string]interface{}) p.p["domainid"] = domainid p.p["hostid"] = hostid return p } // Dedicates a host. func (s *HostService) DedicateHost(p *DedicateHostParams) (*DedicateHostResponse, error) { resp, err := s.cs.newRequest("dedicateHost", p.toURLValues()) if err != nil { return nil, err } var r DedicateHostResponse 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 DedicateHostResponse struct { Accountid string `json:"accountid"` Affinitygroupid string `json:"affinitygroupid"` Domainid string `json:"domainid"` Hostid string `json:"hostid"` Hostname string `json:"hostname"` Id string `json:"id"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` } type DeleteHostParams struct { p map[string]interface{} } func (p *DeleteHostParams) 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["forcedestroylocalstorage"]; found { vv := strconv.FormatBool(v.(bool)) u.Set("forcedestroylocalstorage", vv) } if v, found := p.p["id"]; found { u.Set("id", v.(string)) } return u } func (p *DeleteHostParams) SetForced(v bool) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["forced"] = v } func (p *DeleteHostParams) ResetForced() { if p.p != nil && p.p["forced"] != nil { delete(p.p, "forced") } } func (p *DeleteHostParams) GetForced() (bool, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["forced"].(bool) return value, ok } func (p *DeleteHostParams) SetForcedestroylocalstorage(v bool) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["forcedestroylocalstorage"] = v } func (p *DeleteHostParams) ResetForcedestroylocalstorage() { if p.p != nil && p.p["forcedestroylocalstorage"] != nil { delete(p.p, "forcedestroylocalstorage") } } func (p *DeleteHostParams) GetForcedestroylocalstorage() (bool, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["forcedestroylocalstorage"].(bool) return value, ok } func (p *DeleteHostParams) SetId(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["id"] = v } func (p *DeleteHostParams) ResetId() { if p.p != nil && p.p["id"] != nil { delete(p.p, "id") } } func (p *DeleteHostParams) GetId() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["id"].(string) return value, ok } // You should always use this function to get a new DeleteHostParams instance, // as then you are sure you have configured all required params func (s *HostService) NewDeleteHostParams(id string) *DeleteHostParams { p := &DeleteHostParams{} p.p = make(map[string]interface{}) p.p["id"] = id return p } // Deletes a host. func (s *HostService) DeleteHost(p *DeleteHostParams) (*DeleteHostResponse, error) { resp, err := s.cs.newRequest("deleteHost", p.toURLValues()) if err != nil { return nil, err } var r DeleteHostResponse if err := json.Unmarshal(resp, &r); err != nil { return nil, err } return &r, nil } type DeleteHostResponse struct { Displaytext string `json:"displaytext"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Success bool `json:"success"` } func (r *DeleteHostResponse) 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 } } if ostypeid, ok := m["ostypeid"].(float64); ok { m["ostypeid"] = strconv.Itoa(int(ostypeid)) b, err = json.Marshal(m) if err != nil { return err } } type alias DeleteHostResponse return json.Unmarshal(b, (*alias)(r)) } type DisableHAForHostParams struct { p map[string]interface{} } func (p *DisableHAForHostParams) 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 *DisableHAForHostParams) SetHostid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["hostid"] = v } func (p *DisableHAForHostParams) ResetHostid() { if p.p != nil && p.p["hostid"] != nil { delete(p.p, "hostid") } } func (p *DisableHAForHostParams) GetHostid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["hostid"].(string) return value, ok } // You should always use this function to get a new DisableHAForHostParams instance, // as then you are sure you have configured all required params func (s *HostService) NewDisableHAForHostParams(hostid string) *DisableHAForHostParams { p := &DisableHAForHostParams{} p.p = make(map[string]interface{}) p.p["hostid"] = hostid return p } // Disables HA for a host func (s *HostService) DisableHAForHost(p *DisableHAForHostParams) (*DisableHAForHostResponse, error) { resp, err := s.cs.newRequest("disableHAForHost", p.toURLValues()) if err != nil { return nil, err } var r DisableHAForHostResponse 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 DisableHAForHostResponse struct { Haenable bool `json:"haenable"` Haprovider string `json:"haprovider"` Hastate string `json:"hastate"` Hostid string `json:"hostid"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Status bool `json:"status"` } type DisableOutOfBandManagementForHostParams struct { p map[string]interface{} } func (p *DisableOutOfBandManagementForHostParams) 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 *DisableOutOfBandManagementForHostParams) SetHostid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["hostid"] = v } func (p *DisableOutOfBandManagementForHostParams) ResetHostid() { if p.p != nil && p.p["hostid"] != nil { delete(p.p, "hostid") } } func (p *DisableOutOfBandManagementForHostParams) GetHostid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["hostid"].(string) return value, ok } // You should always use this function to get a new DisableOutOfBandManagementForHostParams instance, // as then you are sure you have configured all required params func (s *HostService) NewDisableOutOfBandManagementForHostParams(hostid string) *DisableOutOfBandManagementForHostParams { p := &DisableOutOfBandManagementForHostParams{} p.p = make(map[string]interface{}) p.p["hostid"] = hostid return p } // Disables out-of-band management for a host func (s *HostService) DisableOutOfBandManagementForHost(p *DisableOutOfBandManagementForHostParams) (*DisableOutOfBandManagementForHostResponse, error) { resp, err := s.cs.newRequest("disableOutOfBandManagementForHost", p.toURLValues()) if err != nil { return nil, err } var r DisableOutOfBandManagementForHostResponse 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 DisableOutOfBandManagementForHostResponse 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"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Password string `json:"password"` Port string `json:"port"` Powerstate string `json:"powerstate"` Status bool `json:"status"` Username string `json:"username"` } type EnableOutOfBandManagementForHostParams struct { p map[string]interface{} } func (p *EnableOutOfBandManagementForHostParams) 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 *EnableOutOfBandManagementForHostParams) SetHostid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["hostid"] = v } func (p *EnableOutOfBandManagementForHostParams) ResetHostid() { if p.p != nil && p.p["hostid"] != nil { delete(p.p, "hostid") } } func (p *EnableOutOfBandManagementForHostParams) GetHostid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["hostid"].(string) return value, ok } // You should always use this function to get a new EnableOutOfBandManagementForHostParams instance, // as then you are sure you have configured all required params func (s *HostService) NewEnableOutOfBandManagementForHostParams(hostid string) *EnableOutOfBandManagementForHostParams { p := &EnableOutOfBandManagementForHostParams{} p.p = make(map[string]interface{}) p.p["hostid"] = hostid return p } // Enables out-of-band management for a host func (s *HostService) EnableOutOfBandManagementForHost(p *EnableOutOfBandManagementForHostParams) (*EnableOutOfBandManagementForHostResponse, error) { resp, err := s.cs.newRequest("enableOutOfBandManagementForHost", p.toURLValues()) if err != nil { return nil, err } var r EnableOutOfBandManagementForHostResponse 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 EnableOutOfBandManagementForHostResponse 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"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Password string `json:"password"` Port string `json:"port"` Powerstate string `json:"powerstate"` Status bool `json:"status"` Username string `json:"username"` } type FindHostsForMigrationParams struct { p map[string]interface{} } func (p *FindHostsForMigrationParams) 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["virtualmachineid"]; found { u.Set("virtualmachineid", v.(string)) } return u } func (p *FindHostsForMigrationParams) SetKeyword(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["keyword"] = v } func (p *FindHostsForMigrationParams) ResetKeyword() { if p.p != nil && p.p["keyword"] != nil { delete(p.p, "keyword") } } func (p *FindHostsForMigrationParams) GetKeyword() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["keyword"].(string) return value, ok } func (p *FindHostsForMigrationParams) SetPage(v int) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["page"] = v } func (p *FindHostsForMigrationParams) ResetPage() { if p.p != nil && p.p["page"] != nil { delete(p.p, "page") } } func (p *FindHostsForMigrationParams) GetPage() (int, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["page"].(int) return value, ok } func (p *FindHostsForMigrationParams) SetPagesize(v int) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["pagesize"] = v } func (p *FindHostsForMigrationParams) ResetPagesize() { if p.p != nil && p.p["pagesize"] != nil { delete(p.p, "pagesize") } } func (p *FindHostsForMigrationParams) GetPagesize() (int, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["pagesize"].(int) return value, ok } func (p *FindHostsForMigrationParams) SetVirtualmachineid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["virtualmachineid"] = v } func (p *FindHostsForMigrationParams) ResetVirtualmachineid() { if p.p != nil && p.p["virtualmachineid"] != nil { delete(p.p, "virtualmachineid") } } func (p *FindHostsForMigrationParams) GetVirtualmachineid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["virtualmachineid"].(string) return value, ok } // You should always use this function to get a new FindHostsForMigrationParams instance, // as then you are sure you have configured all required params func (s *HostService) NewFindHostsForMigrationParams(virtualmachineid string) *FindHostsForMigrationParams { p := &FindHostsForMigrationParams{} p.p = make(map[string]interface{}) p.p["virtualmachineid"] = virtualmachineid return p } // Find hosts suitable for migrating a virtual machine. func (s *HostService) FindHostsForMigration(p *FindHostsForMigrationParams) (*FindHostsForMigrationResponse, error) { resp, err := s.cs.newRequest("findHostsForMigration", p.toURLValues()) if err != nil { return nil, err } var r FindHostsForMigrationResponse if err := json.Unmarshal(resp, &r); err != nil { return nil, err } return &r, nil } type FindHostsForMigrationResponse struct { Count int `json:"count"` Host []*HostForMigration `json:"host"` } type HostForMigration struct { Averageload int64 `json:"averageload"` Capabilities string `json:"capabilities"` Clusterid string `json:"clusterid"` Clustername string `json:"clustername"` Clustertype string `json:"clustertype"` Cpuallocated string `json:"cpuallocated"` Cpuallocatedpercentage string `json:"cpuallocatedpercentage"` Cpuallocatedvalue int64 `json:"cpuallocatedvalue"` Cpuallocatedwithoverprovisioning string `json:"cpuallocatedwithoverprovisioning"` Cpunumber int `json:"cpunumber"` Cpuspeed int64 `json:"cpuspeed"` Cpuused string `json:"cpuused"` Cpuwithoverprovisioning string `json:"cpuwithoverprovisioning"` Created string `json:"created"` Disconnected string `json:"disconnected"` Disksizeallocated int64 `json:"disksizeallocated"` Disksizetotal int64 `json:"disksizetotal"` Events string `json:"events"` Explicithosttags string `json:"explicithosttags"` Hahost bool `json:"hahost"` Hasenoughcapacity bool `json:"hasenoughcapacity"` Hosttags string `json:"hosttags"` Hypervisor string `json:"hypervisor"` Hypervisorversion string `json:"hypervisorversion"` Id string `json:"id"` Implicithosttags string `json:"implicithosttags"` Ipaddress string `json:"ipaddress"` Islocalstorageactive bool `json:"islocalstorageactive"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Lastpinged string `json:"lastpinged"` Managementserverid UUID `json:"managementserverid"` Memoryallocated string `json:"memoryallocated"` Memoryallocatedbytes int64 `json:"memoryallocatedbytes"` Memoryallocatedpercentage string `json:"memoryallocatedpercentage"` Memorytotal int64 `json:"memorytotal"` Memoryused int64 `json:"memoryused"` Memorywithoverprovisioning string `json:"memorywithoverprovisioning"` Name string `json:"name"` Networkkbsread int64 `json:"networkkbsread"` Networkkbswrite int64 `json:"networkkbswrite"` Oscategoryid string `json:"oscategoryid"` Oscategoryname string `json:"oscategoryname"` Podid string `json:"podid"` Podname string `json:"podname"` Removed string `json:"removed"` RequiresStorageMotion bool `json:"requiresStorageMotion"` Resourcestate string `json:"resourcestate"` State string `json:"state"` Suitableformigration bool `json:"suitableformigration"` Type string `json:"type"` Version string `json:"version"` Zoneid string `json:"zoneid"` Zonename string `json:"zonename"` } type ListDedicatedHostsParams struct { p map[string]interface{} } func (p *ListDedicatedHostsParams) 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["hostid"]; found { u.Set("hostid", v.(string)) } if v, found := p.p["keyword"]; found { u.Set("keyword", v.(string)) } if v, found := p.p["page"]; found { vv := strconv.Itoa(v.(int)) u.Set("page", vv) } if v, found := p.p["pagesize"]; found { vv := strconv.Itoa(v.(int)) u.Set("pagesize", vv) } return u } func (p *ListDedicatedHostsParams) SetAccount(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["account"] = v } func (p *ListDedicatedHostsParams) ResetAccount() { if p.p != nil && p.p["account"] != nil { delete(p.p, "account") } } func (p *ListDedicatedHostsParams) GetAccount() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["account"].(string) return value, ok } func (p *ListDedicatedHostsParams) SetAffinitygroupid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["affinitygroupid"] = v } func (p *ListDedicatedHostsParams) ResetAffinitygroupid() { if p.p != nil && p.p["affinitygroupid"] != nil { delete(p.p, "affinitygroupid") } } func (p *ListDedicatedHostsParams) GetAffinitygroupid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["affinitygroupid"].(string) return value, ok } func (p *ListDedicatedHostsParams) SetDomainid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["domainid"] = v } func (p *ListDedicatedHostsParams) ResetDomainid() { if p.p != nil && p.p["domainid"] != nil { delete(p.p, "domainid") } } func (p *ListDedicatedHostsParams) GetDomainid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["domainid"].(string) return value, ok } func (p *ListDedicatedHostsParams) SetHostid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["hostid"] = v } func (p *ListDedicatedHostsParams) ResetHostid() { if p.p != nil && p.p["hostid"] != nil { delete(p.p, "hostid") } } func (p *ListDedicatedHostsParams) GetHostid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["hostid"].(string) return value, ok } func (p *ListDedicatedHostsParams) SetKeyword(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["keyword"] = v } func (p *ListDedicatedHostsParams) ResetKeyword() { if p.p != nil && p.p["keyword"] != nil { delete(p.p, "keyword") } } func (p *ListDedicatedHostsParams) GetKeyword() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["keyword"].(string) return value, ok } func (p *ListDedicatedHostsParams) SetPage(v int) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["page"] = v } func (p *ListDedicatedHostsParams) ResetPage() { if p.p != nil && p.p["page"] != nil { delete(p.p, "page") } } func (p *ListDedicatedHostsParams) GetPage() (int, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["page"].(int) return value, ok } func (p *ListDedicatedHostsParams) SetPagesize(v int) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["pagesize"] = v } func (p *ListDedicatedHostsParams) ResetPagesize() { if p.p != nil && p.p["pagesize"] != nil { delete(p.p, "pagesize") } } func (p *ListDedicatedHostsParams) GetPagesize() (int, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["pagesize"].(int) return value, ok } // You should always use this function to get a new ListDedicatedHostsParams instance, // as then you are sure you have configured all required params func (s *HostService) NewListDedicatedHostsParams() *ListDedicatedHostsParams { p := &ListDedicatedHostsParams{} p.p = make(map[string]interface{}) return p } // Lists dedicated hosts. func (s *HostService) ListDedicatedHosts(p *ListDedicatedHostsParams) (*ListDedicatedHostsResponse, error) { resp, err := s.cs.newRequest("listDedicatedHosts", p.toURLValues()) if err != nil { return nil, err } var r ListDedicatedHostsResponse if err := json.Unmarshal(resp, &r); err != nil { return nil, err } return &r, nil } type ListDedicatedHostsResponse struct { Count int `json:"count"` DedicatedHosts []*DedicatedHost `json:"dedicatedhost"` } type DedicatedHost struct { Accountid string `json:"accountid"` Affinitygroupid string `json:"affinitygroupid"` Domainid string `json:"domainid"` Hostid string `json:"hostid"` Hostname string `json:"hostname"` Id string `json:"id"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` } type ListHostTagsParams struct { p map[string]interface{} } func (p *ListHostTagsParams) 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 *ListHostTagsParams) SetKeyword(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["keyword"] = v } func (p *ListHostTagsParams) ResetKeyword() { if p.p != nil && p.p["keyword"] != nil { delete(p.p, "keyword") } } func (p *ListHostTagsParams) GetKeyword() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["keyword"].(string) return value, ok } func (p *ListHostTagsParams) SetPage(v int) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["page"] = v } func (p *ListHostTagsParams) ResetPage() { if p.p != nil && p.p["page"] != nil { delete(p.p, "page") } } func (p *ListHostTagsParams) GetPage() (int, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["page"].(int) return value, ok } func (p *ListHostTagsParams) SetPagesize(v int) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["pagesize"] = v } func (p *ListHostTagsParams) ResetPagesize() { if p.p != nil && p.p["pagesize"] != nil { delete(p.p, "pagesize") } } func (p *ListHostTagsParams) GetPagesize() (int, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["pagesize"].(int) return value, ok } // You should always use this function to get a new ListHostTagsParams instance, // as then you are sure you have configured all required params func (s *HostService) NewListHostTagsParams() *ListHostTagsParams { p := &ListHostTagsParams{} 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 *HostService) GetHostTagID(keyword string, opts ...OptionFunc) (string, int, error) { p := &ListHostTagsParams{} 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.ListHostTags(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.HostTags[0].Id, l.Count, nil } if l.Count > 1 { for _, v := range l.HostTags { 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 host tags func (s *HostService) ListHostTags(p *ListHostTagsParams) (*ListHostTagsResponse, error) { resp, err := s.cs.newRequest("listHostTags", p.toURLValues()) if err != nil { return nil, err } var r ListHostTagsResponse if err := json.Unmarshal(resp, &r); err != nil { return nil, err } return &r, nil } type ListHostTagsResponse struct { Count int `json:"count"` HostTags []*HostTag `json:"hosttag"` } type HostTag struct { Hostid int64 `json:"hostid"` Id string `json:"id"` Isimplicit bool `json:"isimplicit"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Name string `json:"name"` } type ListHostsParams struct { p map[string]interface{} } func (p *ListHostsParams) toURLValues() url.Values { u := url.Values{} if p.p == nil { return u } if v, found := p.p["clusterid"]; found { u.Set("clusterid", v.(string)) } if v, found := p.p["details"]; found { vv := strings.Join(v.([]string), ",") u.Set("details", vv) } if v, found := p.p["hahost"]; found { vv := strconv.FormatBool(v.(bool)) u.Set("hahost", vv) } if v, found := p.p["hypervisor"]; found { u.Set("hypervisor", v.(string)) } if v, found := p.p["id"]; found { u.Set("id", v.(string)) } if v, found := p.p["keyword"]; found { u.Set("keyword", v.(string)) } if v, found := p.p["name"]; found { u.Set("name", v.(string)) } if v, found := p.p["outofbandmanagementenabled"]; found { vv := strconv.FormatBool(v.(bool)) u.Set("outofbandmanagementenabled", vv) } if v, found := p.p["outofbandmanagementpowerstate"]; found { u.Set("outofbandmanagementpowerstate", v.(string)) } if v, found := p.p["page"]; found { vv := strconv.Itoa(v.(int)) u.Set("page", vv) } if v, found := p.p["pagesize"]; found { vv := strconv.Itoa(v.(int)) u.Set("pagesize", vv) } if v, found := p.p["podid"]; found { u.Set("podid", v.(string)) } if v, found := p.p["resourcestate"]; found { u.Set("resourcestate", v.(string)) } if v, found := p.p["state"]; found { u.Set("state", v.(string)) } if v, found := p.p["type"]; found { u.Set("type", v.(string)) } if v, found := p.p["virtualmachineid"]; found { u.Set("virtualmachineid", v.(string)) } if v, found := p.p["zoneid"]; found { u.Set("zoneid", v.(string)) } return u } func (p *ListHostsParams) SetClusterid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["clusterid"] = v } func (p *ListHostsParams) ResetClusterid() { if p.p != nil && p.p["clusterid"] != nil { delete(p.p, "clusterid") } } func (p *ListHostsParams) GetClusterid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["clusterid"].(string) return value, ok } func (p *ListHostsParams) SetDetails(v []string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["details"] = v } func (p *ListHostsParams) ResetDetails() { if p.p != nil && p.p["details"] != nil { delete(p.p, "details") } } func (p *ListHostsParams) GetDetails() ([]string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["details"].([]string) return value, ok } func (p *ListHostsParams) SetHahost(v bool) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["hahost"] = v } func (p *ListHostsParams) ResetHahost() { if p.p != nil && p.p["hahost"] != nil { delete(p.p, "hahost") } } func (p *ListHostsParams) GetHahost() (bool, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["hahost"].(bool) return value, ok } func (p *ListHostsParams) SetHypervisor(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["hypervisor"] = v } func (p *ListHostsParams) ResetHypervisor() { if p.p != nil && p.p["hypervisor"] != nil { delete(p.p, "hypervisor") } } func (p *ListHostsParams) GetHypervisor() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["hypervisor"].(string) return value, ok } func (p *ListHostsParams) SetId(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["id"] = v } func (p *ListHostsParams) ResetId() { if p.p != nil && p.p["id"] != nil { delete(p.p, "id") } } func (p *ListHostsParams) GetId() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["id"].(string) return value, ok } func (p *ListHostsParams) SetKeyword(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["keyword"] = v } func (p *ListHostsParams) ResetKeyword() { if p.p != nil && p.p["keyword"] != nil { delete(p.p, "keyword") } } func (p *ListHostsParams) GetKeyword() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["keyword"].(string) return value, ok } func (p *ListHostsParams) SetName(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["name"] = v } func (p *ListHostsParams) ResetName() { if p.p != nil && p.p["name"] != nil { delete(p.p, "name") } } func (p *ListHostsParams) GetName() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["name"].(string) return value, ok } func (p *ListHostsParams) SetOutofbandmanagementenabled(v bool) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["outofbandmanagementenabled"] = v } func (p *ListHostsParams) ResetOutofbandmanagementenabled() { if p.p != nil && p.p["outofbandmanagementenabled"] != nil { delete(p.p, "outofbandmanagementenabled") } } func (p *ListHostsParams) GetOutofbandmanagementenabled() (bool, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["outofbandmanagementenabled"].(bool) return value, ok } func (p *ListHostsParams) SetOutofbandmanagementpowerstate(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["outofbandmanagementpowerstate"] = v } func (p *ListHostsParams) ResetOutofbandmanagementpowerstate() { if p.p != nil && p.p["outofbandmanagementpowerstate"] != nil { delete(p.p, "outofbandmanagementpowerstate") } } func (p *ListHostsParams) GetOutofbandmanagementpowerstate() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["outofbandmanagementpowerstate"].(string) return value, ok } func (p *ListHostsParams) SetPage(v int) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["page"] = v } func (p *ListHostsParams) ResetPage() { if p.p != nil && p.p["page"] != nil { delete(p.p, "page") } } func (p *ListHostsParams) GetPage() (int, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["page"].(int) return value, ok } func (p *ListHostsParams) SetPagesize(v int) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["pagesize"] = v } func (p *ListHostsParams) ResetPagesize() { if p.p != nil && p.p["pagesize"] != nil { delete(p.p, "pagesize") } } func (p *ListHostsParams) GetPagesize() (int, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["pagesize"].(int) return value, ok } func (p *ListHostsParams) SetPodid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["podid"] = v } func (p *ListHostsParams) ResetPodid() { if p.p != nil && p.p["podid"] != nil { delete(p.p, "podid") } } func (p *ListHostsParams) GetPodid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["podid"].(string) return value, ok } func (p *ListHostsParams) SetResourcestate(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["resourcestate"] = v } func (p *ListHostsParams) ResetResourcestate() { if p.p != nil && p.p["resourcestate"] != nil { delete(p.p, "resourcestate") } } func (p *ListHostsParams) GetResourcestate() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["resourcestate"].(string) return value, ok } func (p *ListHostsParams) SetState(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["state"] = v } func (p *ListHostsParams) ResetState() { if p.p != nil && p.p["state"] != nil { delete(p.p, "state") } } func (p *ListHostsParams) GetState() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["state"].(string) return value, ok } func (p *ListHostsParams) SetType(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["type"] = v } func (p *ListHostsParams) ResetType() { if p.p != nil && p.p["type"] != nil { delete(p.p, "type") } } func (p *ListHostsParams) GetType() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["type"].(string) return value, ok } func (p *ListHostsParams) SetVirtualmachineid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["virtualmachineid"] = v } func (p *ListHostsParams) ResetVirtualmachineid() { if p.p != nil && p.p["virtualmachineid"] != nil { delete(p.p, "virtualmachineid") } } func (p *ListHostsParams) GetVirtualmachineid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["virtualmachineid"].(string) return value, ok } func (p *ListHostsParams) SetZoneid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["zoneid"] = v } func (p *ListHostsParams) ResetZoneid() { if p.p != nil && p.p["zoneid"] != nil { delete(p.p, "zoneid") } } func (p *ListHostsParams) GetZoneid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["zoneid"].(string) return value, ok } // You should always use this function to get a new ListHostsParams instance, // as then you are sure you have configured all required params func (s *HostService) NewListHostsParams() *ListHostsParams { p := &ListHostsParams{} 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 *HostService) GetHostID(name string, opts ...OptionFunc) (string, int, error) { p := &ListHostsParams{} 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.ListHosts(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.Hosts[0].Id, l.Count, nil } if l.Count > 1 { for _, v := range l.Hosts { 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 *HostService) GetHostByName(name string, opts ...OptionFunc) (*Host, int, error) { id, count, err := s.GetHostID(name, opts...) if err != nil { return nil, count, err } r, count, err := s.GetHostByID(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 *HostService) GetHostByID(id string, opts ...OptionFunc) (*Host, int, error) { p := &ListHostsParams{} 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.ListHosts(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.Hosts[0], l.Count, nil } return nil, l.Count, fmt.Errorf("There is more then one result for Host UUID: %s!", id) } // Lists hosts. func (s *HostService) ListHosts(p *ListHostsParams) (*ListHostsResponse, error) { resp, err := s.cs.newRequest("listHosts", p.toURLValues()) if err != nil { return nil, err } var r ListHostsResponse if err := json.Unmarshal(resp, &r); err != nil { return nil, err } return &r, nil } type ListHostsResponse struct { Count int `json:"count"` Hosts []*Host `json:"host"` } type Host struct { Annotation string `json:"annotation"` Arch string `json:"arch"` Capabilities string `json:"capabilities"` Clusterid string `json:"clusterid"` Clustername string `json:"clustername"` Clustertype string `json:"clustertype"` Cpuallocated string `json:"cpuallocated"` Cpuallocatedpercentage string `json:"cpuallocatedpercentage"` Cpuallocatedvalue int64 `json:"cpuallocatedvalue"` Cpuallocatedwithoverprovisioning string `json:"cpuallocatedwithoverprovisioning"` Cpuloadaverage float64 `json:"cpuloadaverage"` Cpunumber int `json:"cpunumber"` Cpusockets int `json:"cpusockets"` Cpuspeed int64 `json:"cpuspeed"` Cpuused string `json:"cpuused"` Cpuwithoverprovisioning string `json:"cpuwithoverprovisioning"` Created string `json:"created"` Details map[string]string `json:"details"` Disconnected string `json:"disconnected"` Disksizeallocated int64 `json:"disksizeallocated"` Disksizetotal int64 `json:"disksizetotal"` Encryptionsupported bool `json:"encryptionsupported"` Events string `json:"events"` Explicithosttags string `json:"explicithosttags"` Gpugroup []HostGpugroup `json:"gpugroup"` Hahost bool `json:"hahost"` Hasannotations bool `json:"hasannotations"` Hasenoughcapacity bool `json:"hasenoughcapacity"` Hostha HAForHostResponse `json:"hostha"` Hosttags string `json:"hosttags"` Hypervisor string `json:"hypervisor"` Hypervisorversion string `json:"hypervisorversion"` Id string `json:"id"` Implicithosttags string `json:"implicithosttags"` Instanceconversionsupported bool `json:"instanceconversionsupported"` Ipaddress string `json:"ipaddress"` Islocalstorageactive bool `json:"islocalstorageactive"` Istagarule bool `json:"istagarule"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Lastannotated string `json:"lastannotated"` Lastpinged string `json:"lastpinged"` Managementserverid UUID `json:"managementserverid"` Memoryallocated int64 `json:"memoryallocated"` Memoryallocatedbytes int64 `json:"memoryallocatedbytes"` Memoryallocatedpercentage string `json:"memoryallocatedpercentage"` Memorytotal int64 `json:"memorytotal"` Memoryused int64 `json:"memoryused"` Memorywithoverprovisioning string `json:"memorywithoverprovisioning"` Name string `json:"name"` Networkkbsread int64 `json:"networkkbsread"` Networkkbswrite int64 `json:"networkkbswrite"` Oscategoryid string `json:"oscategoryid"` Oscategoryname string `json:"oscategoryname"` Outofbandmanagement OutOfBandManagementResponse `json:"outofbandmanagement"` Podid string `json:"podid"` Podname string `json:"podname"` Removed string `json:"removed"` Resourcestate string `json:"resourcestate"` State string `json:"state"` Suitableformigration bool `json:"suitableformigration"` Type string `json:"type"` Ueficapability bool `json:"ueficapability"` Username string `json:"username"` Version string `json:"version"` Zoneid string `json:"zoneid"` Zonename string `json:"zonename"` } type HostGpugroup struct { Gpugroupname string `json:"gpugroupname"` Vgpu []HostGpugroupVgpu `json:"vgpu"` } type HostGpugroupVgpu struct { Maxcapacity int64 `json:"maxcapacity"` Maxheads int64 `json:"maxheads"` Maxresolutionx int64 `json:"maxresolutionx"` Maxresolutiony int64 `json:"maxresolutiony"` Maxvgpuperpgpu int64 `json:"maxvgpuperpgpu"` Remainingcapacity int64 `json:"remainingcapacity"` Vgputype string `json:"vgputype"` Videoram int64 `json:"videoram"` } type ListHostsMetricsParams struct { p map[string]interface{} } func (p *ListHostsMetricsParams) toURLValues() url.Values { u := url.Values{} if p.p == nil { return u } if v, found := p.p["clusterid"]; found { u.Set("clusterid", v.(string)) } if v, found := p.p["details"]; found { vv := strings.Join(v.([]string), ",") u.Set("details", vv) } if v, found := p.p["hahost"]; found { vv := strconv.FormatBool(v.(bool)) u.Set("hahost", vv) } if v, found := p.p["hypervisor"]; found { u.Set("hypervisor", v.(string)) } if v, found := p.p["id"]; found { u.Set("id", v.(string)) } if v, found := p.p["keyword"]; found { u.Set("keyword", v.(string)) } if v, found := p.p["name"]; found { u.Set("name", v.(string)) } if v, found := p.p["outofbandmanagementenabled"]; found { vv := strconv.FormatBool(v.(bool)) u.Set("outofbandmanagementenabled", vv) } if v, found := p.p["outofbandmanagementpowerstate"]; found { u.Set("outofbandmanagementpowerstate", v.(string)) } if v, found := p.p["page"]; found { vv := strconv.Itoa(v.(int)) u.Set("page", vv) } if v, found := p.p["pagesize"]; found { vv := strconv.Itoa(v.(int)) u.Set("pagesize", vv) } if v, found := p.p["podid"]; found { u.Set("podid", v.(string)) } if v, found := p.p["resourcestate"]; found { u.Set("resourcestate", v.(string)) } if v, found := p.p["state"]; found { u.Set("state", v.(string)) } if v, found := p.p["type"]; found { u.Set("type", v.(string)) } if v, found := p.p["virtualmachineid"]; found { u.Set("virtualmachineid", v.(string)) } if v, found := p.p["zoneid"]; found { u.Set("zoneid", v.(string)) } return u } func (p *ListHostsMetricsParams) SetClusterid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["clusterid"] = v } func (p *ListHostsMetricsParams) ResetClusterid() { if p.p != nil && p.p["clusterid"] != nil { delete(p.p, "clusterid") } } func (p *ListHostsMetricsParams) GetClusterid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["clusterid"].(string) return value, ok } func (p *ListHostsMetricsParams) SetDetails(v []string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["details"] = v } func (p *ListHostsMetricsParams) ResetDetails() { if p.p != nil && p.p["details"] != nil { delete(p.p, "details") } } func (p *ListHostsMetricsParams) GetDetails() ([]string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["details"].([]string) return value, ok } func (p *ListHostsMetricsParams) SetHahost(v bool) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["hahost"] = v } func (p *ListHostsMetricsParams) ResetHahost() { if p.p != nil && p.p["hahost"] != nil { delete(p.p, "hahost") } } func (p *ListHostsMetricsParams) GetHahost() (bool, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["hahost"].(bool) return value, ok } func (p *ListHostsMetricsParams) SetHypervisor(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["hypervisor"] = v } func (p *ListHostsMetricsParams) ResetHypervisor() { if p.p != nil && p.p["hypervisor"] != nil { delete(p.p, "hypervisor") } } func (p *ListHostsMetricsParams) GetHypervisor() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["hypervisor"].(string) return value, ok } func (p *ListHostsMetricsParams) SetId(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["id"] = v } func (p *ListHostsMetricsParams) ResetId() { if p.p != nil && p.p["id"] != nil { delete(p.p, "id") } } func (p *ListHostsMetricsParams) GetId() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["id"].(string) return value, ok } func (p *ListHostsMetricsParams) SetKeyword(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["keyword"] = v } func (p *ListHostsMetricsParams) ResetKeyword() { if p.p != nil && p.p["keyword"] != nil { delete(p.p, "keyword") } } func (p *ListHostsMetricsParams) GetKeyword() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["keyword"].(string) return value, ok } func (p *ListHostsMetricsParams) SetName(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["name"] = v } func (p *ListHostsMetricsParams) ResetName() { if p.p != nil && p.p["name"] != nil { delete(p.p, "name") } } func (p *ListHostsMetricsParams) GetName() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["name"].(string) return value, ok } func (p *ListHostsMetricsParams) SetOutofbandmanagementenabled(v bool) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["outofbandmanagementenabled"] = v } func (p *ListHostsMetricsParams) ResetOutofbandmanagementenabled() { if p.p != nil && p.p["outofbandmanagementenabled"] != nil { delete(p.p, "outofbandmanagementenabled") } } func (p *ListHostsMetricsParams) GetOutofbandmanagementenabled() (bool, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["outofbandmanagementenabled"].(bool) return value, ok } func (p *ListHostsMetricsParams) SetOutofbandmanagementpowerstate(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["outofbandmanagementpowerstate"] = v } func (p *ListHostsMetricsParams) ResetOutofbandmanagementpowerstate() { if p.p != nil && p.p["outofbandmanagementpowerstate"] != nil { delete(p.p, "outofbandmanagementpowerstate") } } func (p *ListHostsMetricsParams) GetOutofbandmanagementpowerstate() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["outofbandmanagementpowerstate"].(string) return value, ok } func (p *ListHostsMetricsParams) SetPage(v int) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["page"] = v } func (p *ListHostsMetricsParams) ResetPage() { if p.p != nil && p.p["page"] != nil { delete(p.p, "page") } } func (p *ListHostsMetricsParams) GetPage() (int, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["page"].(int) return value, ok } func (p *ListHostsMetricsParams) SetPagesize(v int) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["pagesize"] = v } func (p *ListHostsMetricsParams) ResetPagesize() { if p.p != nil && p.p["pagesize"] != nil { delete(p.p, "pagesize") } } func (p *ListHostsMetricsParams) GetPagesize() (int, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["pagesize"].(int) return value, ok } func (p *ListHostsMetricsParams) SetPodid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["podid"] = v } func (p *ListHostsMetricsParams) ResetPodid() { if p.p != nil && p.p["podid"] != nil { delete(p.p, "podid") } } func (p *ListHostsMetricsParams) GetPodid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["podid"].(string) return value, ok } func (p *ListHostsMetricsParams) SetResourcestate(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["resourcestate"] = v } func (p *ListHostsMetricsParams) ResetResourcestate() { if p.p != nil && p.p["resourcestate"] != nil { delete(p.p, "resourcestate") } } func (p *ListHostsMetricsParams) GetResourcestate() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["resourcestate"].(string) return value, ok } func (p *ListHostsMetricsParams) SetState(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["state"] = v } func (p *ListHostsMetricsParams) ResetState() { if p.p != nil && p.p["state"] != nil { delete(p.p, "state") } } func (p *ListHostsMetricsParams) GetState() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["state"].(string) return value, ok } func (p *ListHostsMetricsParams) SetType(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["type"] = v } func (p *ListHostsMetricsParams) ResetType() { if p.p != nil && p.p["type"] != nil { delete(p.p, "type") } } func (p *ListHostsMetricsParams) GetType() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["type"].(string) return value, ok } func (p *ListHostsMetricsParams) SetVirtualmachineid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["virtualmachineid"] = v } func (p *ListHostsMetricsParams) ResetVirtualmachineid() { if p.p != nil && p.p["virtualmachineid"] != nil { delete(p.p, "virtualmachineid") } } func (p *ListHostsMetricsParams) GetVirtualmachineid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["virtualmachineid"].(string) return value, ok } func (p *ListHostsMetricsParams) SetZoneid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["zoneid"] = v } func (p *ListHostsMetricsParams) ResetZoneid() { if p.p != nil && p.p["zoneid"] != nil { delete(p.p, "zoneid") } } func (p *ListHostsMetricsParams) GetZoneid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["zoneid"].(string) return value, ok } // You should always use this function to get a new ListHostsMetricsParams instance, // as then you are sure you have configured all required params func (s *HostService) NewListHostsMetricsParams() *ListHostsMetricsParams { p := &ListHostsMetricsParams{} 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 *HostService) GetHostsMetricID(name string, opts ...OptionFunc) (string, int, error) { p := &ListHostsMetricsParams{} 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.ListHostsMetrics(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.HostsMetrics[0].Id, l.Count, nil } if l.Count > 1 { for _, v := range l.HostsMetrics { 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 *HostService) GetHostsMetricByName(name string, opts ...OptionFunc) (*HostsMetric, int, error) { id, count, err := s.GetHostsMetricID(name, opts...) if err != nil { return nil, count, err } r, count, err := s.GetHostsMetricByID(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 *HostService) GetHostsMetricByID(id string, opts ...OptionFunc) (*HostsMetric, int, error) { p := &ListHostsMetricsParams{} 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.ListHostsMetrics(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.HostsMetrics[0], l.Count, nil } return nil, l.Count, fmt.Errorf("There is more then one result for HostsMetric UUID: %s!", id) } // Lists hosts metrics func (s *HostService) ListHostsMetrics(p *ListHostsMetricsParams) (*ListHostsMetricsResponse, error) { resp, err := s.cs.newRequest("listHostsMetrics", p.toURLValues()) if err != nil { return nil, err } var r ListHostsMetricsResponse if err := json.Unmarshal(resp, &r); err != nil { return nil, err } return &r, nil } type ListHostsMetricsResponse struct { Count int `json:"count"` HostsMetrics []*HostsMetric `json:"hostsmetric"` } type HostsMetric struct { Annotation string `json:"annotation"` Arch string `json:"arch"` Capabilities string `json:"capabilities"` Clusterid string `json:"clusterid"` Clustername string `json:"clustername"` Clustertype string `json:"clustertype"` Cpuallocated string `json:"cpuallocated"` Cpuallocateddisablethreshold bool `json:"cpuallocateddisablethreshold"` Cpuallocatedghz string `json:"cpuallocatedghz"` Cpuallocatedpercentage string `json:"cpuallocatedpercentage"` Cpuallocatedthreshold bool `json:"cpuallocatedthreshold"` Cpuallocatedvalue int64 `json:"cpuallocatedvalue"` Cpuallocatedwithoverprovisioning string `json:"cpuallocatedwithoverprovisioning"` Cpudisablethreshold bool `json:"cpudisablethreshold"` Cpuloadaverage float64 `json:"cpuloadaverage"` Cpunumber int `json:"cpunumber"` Cpusockets int `json:"cpusockets"` Cpuspeed int64 `json:"cpuspeed"` Cputhreshold bool `json:"cputhreshold"` Cputotalghz string `json:"cputotalghz"` Cpuused string `json:"cpuused"` Cpuusedghz string `json:"cpuusedghz"` Cpuwithoverprovisioning string `json:"cpuwithoverprovisioning"` Created string `json:"created"` Details map[string]string `json:"details"` Disconnected string `json:"disconnected"` Disksizeallocated int64 `json:"disksizeallocated"` Disksizetotal int64 `json:"disksizetotal"` Encryptionsupported bool `json:"encryptionsupported"` Events string `json:"events"` Explicithosttags string `json:"explicithosttags"` Gpugroup []HostsMetricGpugroup `json:"gpugroup"` Hahost bool `json:"hahost"` Hasannotations bool `json:"hasannotations"` Hasenoughcapacity bool `json:"hasenoughcapacity"` Hostha HAForHostResponse `json:"hostha"` Hosttags string `json:"hosttags"` Hypervisor string `json:"hypervisor"` Hypervisorversion string `json:"hypervisorversion"` Id string `json:"id"` Implicithosttags string `json:"implicithosttags"` Instanceconversionsupported bool `json:"instanceconversionsupported"` Instances string `json:"instances"` Ipaddress string `json:"ipaddress"` Islocalstorageactive bool `json:"islocalstorageactive"` Istagarule bool `json:"istagarule"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Lastannotated string `json:"lastannotated"` Lastpinged string `json:"lastpinged"` Managementserverid UUID `json:"managementserverid"` Memoryallocated int64 `json:"memoryallocated"` Memoryallocatedbytes int64 `json:"memoryallocatedbytes"` Memoryallocateddisablethreshold bool `json:"memoryallocateddisablethreshold"` Memoryallocatedgb string `json:"memoryallocatedgb"` Memoryallocatedpercentage string `json:"memoryallocatedpercentage"` Memoryallocatedthreshold bool `json:"memoryallocatedthreshold"` Memorydisablethreshold bool `json:"memorydisablethreshold"` Memorythreshold bool `json:"memorythreshold"` Memorytotal int64 `json:"memorytotal"` Memorytotalgb string `json:"memorytotalgb"` Memoryused int64 `json:"memoryused"` Memoryusedgb string `json:"memoryusedgb"` Memorywithoverprovisioning string `json:"memorywithoverprovisioning"` Name string `json:"name"` Networkkbsread int64 `json:"networkkbsread"` Networkkbswrite int64 `json:"networkkbswrite"` Networkread string `json:"networkread"` Networkwrite string `json:"networkwrite"` Oscategoryid string `json:"oscategoryid"` Oscategoryname string `json:"oscategoryname"` Outofbandmanagement OutOfBandManagementResponse `json:"outofbandmanagement"` Podid string `json:"podid"` Podname string `json:"podname"` Powerstate string `json:"powerstate"` Removed string `json:"removed"` Resourcestate string `json:"resourcestate"` State string `json:"state"` Suitableformigration bool `json:"suitableformigration"` Systeminstances string `json:"systeminstances"` Type string `json:"type"` Ueficapability bool `json:"ueficapability"` Username string `json:"username"` Version string `json:"version"` Zoneid string `json:"zoneid"` Zonename string `json:"zonename"` } type HostsMetricGpugroup struct { Gpugroupname string `json:"gpugroupname"` Vgpu []HostsMetricGpugroupVgpu `json:"vgpu"` } type HostsMetricGpugroupVgpu struct { Maxcapacity int64 `json:"maxcapacity"` Maxheads int64 `json:"maxheads"` Maxresolutionx int64 `json:"maxresolutionx"` Maxresolutiony int64 `json:"maxresolutiony"` Maxvgpuperpgpu int64 `json:"maxvgpuperpgpu"` Remainingcapacity int64 `json:"remainingcapacity"` Vgputype string `json:"vgputype"` Videoram int64 `json:"videoram"` } type PrepareHostForMaintenanceParams struct { p map[string]interface{} } func (p *PrepareHostForMaintenanceParams) 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 *PrepareHostForMaintenanceParams) SetId(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["id"] = v } func (p *PrepareHostForMaintenanceParams) ResetId() { if p.p != nil && p.p["id"] != nil { delete(p.p, "id") } } func (p *PrepareHostForMaintenanceParams) GetId() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["id"].(string) return value, ok } // You should always use this function to get a new PrepareHostForMaintenanceParams instance, // as then you are sure you have configured all required params func (s *HostService) NewPrepareHostForMaintenanceParams(id string) *PrepareHostForMaintenanceParams { p := &PrepareHostForMaintenanceParams{} p.p = make(map[string]interface{}) p.p["id"] = id return p } // Prepares a host for maintenance. func (s *HostService) PrepareHostForMaintenance(p *PrepareHostForMaintenanceParams) (*PrepareHostForMaintenanceResponse, error) { resp, err := s.cs.newRequest("prepareHostForMaintenance", p.toURLValues()) if err != nil { return nil, err } var r PrepareHostForMaintenanceResponse 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 PrepareHostForMaintenanceResponse struct { Annotation string `json:"annotation"` Arch string `json:"arch"` Capabilities string `json:"capabilities"` Clusterid string `json:"clusterid"` Clustername string `json:"clustername"` Clustertype string `json:"clustertype"` Cpuallocated string `json:"cpuallocated"` Cpuallocatedpercentage string `json:"cpuallocatedpercentage"` Cpuallocatedvalue int64 `json:"cpuallocatedvalue"` Cpuallocatedwithoverprovisioning string `json:"cpuallocatedwithoverprovisioning"` Cpuloadaverage float64 `json:"cpuloadaverage"` Cpunumber int `json:"cpunumber"` Cpusockets int `json:"cpusockets"` Cpuspeed int64 `json:"cpuspeed"` Cpuused string `json:"cpuused"` Cpuwithoverprovisioning string `json:"cpuwithoverprovisioning"` Created string `json:"created"` Details map[string]string `json:"details"` Disconnected string `json:"disconnected"` Disksizeallocated int64 `json:"disksizeallocated"` Disksizetotal int64 `json:"disksizetotal"` Encryptionsupported bool `json:"encryptionsupported"` Events string `json:"events"` Explicithosttags string `json:"explicithosttags"` Gpugroup []PrepareHostForMaintenanceResponseGpugroup `json:"gpugroup"` Hahost bool `json:"hahost"` Hasannotations bool `json:"hasannotations"` Hasenoughcapacity bool `json:"hasenoughcapacity"` Hostha HAForHostResponse `json:"hostha"` Hosttags string `json:"hosttags"` Hypervisor string `json:"hypervisor"` Hypervisorversion string `json:"hypervisorversion"` Id string `json:"id"` Implicithosttags string `json:"implicithosttags"` Instanceconversionsupported bool `json:"instanceconversionsupported"` Ipaddress string `json:"ipaddress"` Islocalstorageactive bool `json:"islocalstorageactive"` Istagarule bool `json:"istagarule"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Lastannotated string `json:"lastannotated"` Lastpinged string `json:"lastpinged"` Managementserverid UUID `json:"managementserverid"` Memoryallocated int64 `json:"memoryallocated"` Memoryallocatedbytes int64 `json:"memoryallocatedbytes"` Memoryallocatedpercentage string `json:"memoryallocatedpercentage"` Memorytotal int64 `json:"memorytotal"` Memoryused int64 `json:"memoryused"` Memorywithoverprovisioning string `json:"memorywithoverprovisioning"` Name string `json:"name"` Networkkbsread int64 `json:"networkkbsread"` Networkkbswrite int64 `json:"networkkbswrite"` Oscategoryid string `json:"oscategoryid"` Oscategoryname string `json:"oscategoryname"` Outofbandmanagement OutOfBandManagementResponse `json:"outofbandmanagement"` Podid string `json:"podid"` Podname string `json:"podname"` Removed string `json:"removed"` Resourcestate string `json:"resourcestate"` State string `json:"state"` Suitableformigration bool `json:"suitableformigration"` Type string `json:"type"` Ueficapability bool `json:"ueficapability"` Username string `json:"username"` Version string `json:"version"` Zoneid string `json:"zoneid"` Zonename string `json:"zonename"` } type PrepareHostForMaintenanceResponseGpugroup struct { Gpugroupname string `json:"gpugroupname"` Vgpu []PrepareHostForMaintenanceResponseGpugroupVgpu `json:"vgpu"` } type PrepareHostForMaintenanceResponseGpugroupVgpu struct { Maxcapacity int64 `json:"maxcapacity"` Maxheads int64 `json:"maxheads"` Maxresolutionx int64 `json:"maxresolutionx"` Maxresolutiony int64 `json:"maxresolutiony"` Maxvgpuperpgpu int64 `json:"maxvgpuperpgpu"` Remainingcapacity int64 `json:"remainingcapacity"` Vgputype string `json:"vgputype"` Videoram int64 `json:"videoram"` } type ReconnectHostParams struct { p map[string]interface{} } func (p *ReconnectHostParams) 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 *ReconnectHostParams) SetId(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["id"] = v } func (p *ReconnectHostParams) ResetId() { if p.p != nil && p.p["id"] != nil { delete(p.p, "id") } } func (p *ReconnectHostParams) GetId() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["id"].(string) return value, ok } // You should always use this function to get a new ReconnectHostParams instance, // as then you are sure you have configured all required params func (s *HostService) NewReconnectHostParams(id string) *ReconnectHostParams { p := &ReconnectHostParams{} p.p = make(map[string]interface{}) p.p["id"] = id return p } // Reconnects a host. func (s *HostService) ReconnectHost(p *ReconnectHostParams) (*ReconnectHostResponse, error) { resp, err := s.cs.newRequest("reconnectHost", p.toURLValues()) if err != nil { return nil, err } var r ReconnectHostResponse 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 ReconnectHostResponse struct { Annotation string `json:"annotation"` Arch string `json:"arch"` Capabilities string `json:"capabilities"` Clusterid string `json:"clusterid"` Clustername string `json:"clustername"` Clustertype string `json:"clustertype"` Cpuallocated string `json:"cpuallocated"` Cpuallocatedpercentage string `json:"cpuallocatedpercentage"` Cpuallocatedvalue int64 `json:"cpuallocatedvalue"` Cpuallocatedwithoverprovisioning string `json:"cpuallocatedwithoverprovisioning"` Cpuloadaverage float64 `json:"cpuloadaverage"` Cpunumber int `json:"cpunumber"` Cpusockets int `json:"cpusockets"` Cpuspeed int64 `json:"cpuspeed"` Cpuused string `json:"cpuused"` Cpuwithoverprovisioning string `json:"cpuwithoverprovisioning"` Created string `json:"created"` Details map[string]string `json:"details"` Disconnected string `json:"disconnected"` Disksizeallocated int64 `json:"disksizeallocated"` Disksizetotal int64 `json:"disksizetotal"` Encryptionsupported bool `json:"encryptionsupported"` Events string `json:"events"` Explicithosttags string `json:"explicithosttags"` Gpugroup []ReconnectHostResponseGpugroup `json:"gpugroup"` Hahost bool `json:"hahost"` Hasannotations bool `json:"hasannotations"` Hasenoughcapacity bool `json:"hasenoughcapacity"` Hostha HAForHostResponse `json:"hostha"` Hosttags string `json:"hosttags"` Hypervisor string `json:"hypervisor"` Hypervisorversion string `json:"hypervisorversion"` Id string `json:"id"` Implicithosttags string `json:"implicithosttags"` Instanceconversionsupported bool `json:"instanceconversionsupported"` Ipaddress string `json:"ipaddress"` Islocalstorageactive bool `json:"islocalstorageactive"` Istagarule bool `json:"istagarule"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Lastannotated string `json:"lastannotated"` Lastpinged string `json:"lastpinged"` Managementserverid UUID `json:"managementserverid"` Memoryallocated int64 `json:"memoryallocated"` Memoryallocatedbytes int64 `json:"memoryallocatedbytes"` Memoryallocatedpercentage string `json:"memoryallocatedpercentage"` Memorytotal int64 `json:"memorytotal"` Memoryused int64 `json:"memoryused"` Memorywithoverprovisioning string `json:"memorywithoverprovisioning"` Name string `json:"name"` Networkkbsread int64 `json:"networkkbsread"` Networkkbswrite int64 `json:"networkkbswrite"` Oscategoryid string `json:"oscategoryid"` Oscategoryname string `json:"oscategoryname"` Outofbandmanagement OutOfBandManagementResponse `json:"outofbandmanagement"` Podid string `json:"podid"` Podname string `json:"podname"` Removed string `json:"removed"` Resourcestate string `json:"resourcestate"` State string `json:"state"` Suitableformigration bool `json:"suitableformigration"` Type string `json:"type"` Ueficapability bool `json:"ueficapability"` Username string `json:"username"` Version string `json:"version"` Zoneid string `json:"zoneid"` Zonename string `json:"zonename"` } type ReconnectHostResponseGpugroup struct { Gpugroupname string `json:"gpugroupname"` Vgpu []ReconnectHostResponseGpugroupVgpu `json:"vgpu"` } type ReconnectHostResponseGpugroupVgpu struct { Maxcapacity int64 `json:"maxcapacity"` Maxheads int64 `json:"maxheads"` Maxresolutionx int64 `json:"maxresolutionx"` Maxresolutiony int64 `json:"maxresolutiony"` Maxvgpuperpgpu int64 `json:"maxvgpuperpgpu"` Remainingcapacity int64 `json:"remainingcapacity"` Vgputype string `json:"vgputype"` Videoram int64 `json:"videoram"` } type ReleaseDedicatedHostParams struct { p map[string]interface{} } func (p *ReleaseDedicatedHostParams) 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 *ReleaseDedicatedHostParams) SetHostid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["hostid"] = v } func (p *ReleaseDedicatedHostParams) ResetHostid() { if p.p != nil && p.p["hostid"] != nil { delete(p.p, "hostid") } } func (p *ReleaseDedicatedHostParams) GetHostid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["hostid"].(string) return value, ok } // You should always use this function to get a new ReleaseDedicatedHostParams instance, // as then you are sure you have configured all required params func (s *HostService) NewReleaseDedicatedHostParams(hostid string) *ReleaseDedicatedHostParams { p := &ReleaseDedicatedHostParams{} p.p = make(map[string]interface{}) p.p["hostid"] = hostid return p } // Release the dedication for host func (s *HostService) ReleaseDedicatedHost(p *ReleaseDedicatedHostParams) (*ReleaseDedicatedHostResponse, error) { resp, err := s.cs.newRequest("releaseDedicatedHost", p.toURLValues()) if err != nil { return nil, err } var r ReleaseDedicatedHostResponse 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 ReleaseDedicatedHostResponse struct { Displaytext string `json:"displaytext"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Success bool `json:"success"` } type ReleaseHostReservationParams struct { p map[string]interface{} } func (p *ReleaseHostReservationParams) 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 *ReleaseHostReservationParams) SetId(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["id"] = v } func (p *ReleaseHostReservationParams) ResetId() { if p.p != nil && p.p["id"] != nil { delete(p.p, "id") } } func (p *ReleaseHostReservationParams) GetId() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["id"].(string) return value, ok } // You should always use this function to get a new ReleaseHostReservationParams instance, // as then you are sure you have configured all required params func (s *HostService) NewReleaseHostReservationParams(id string) *ReleaseHostReservationParams { p := &ReleaseHostReservationParams{} p.p = make(map[string]interface{}) p.p["id"] = id return p } // Releases host reservation. func (s *HostService) ReleaseHostReservation(p *ReleaseHostReservationParams) (*ReleaseHostReservationResponse, error) { resp, err := s.cs.newRequest("releaseHostReservation", p.toURLValues()) if err != nil { return nil, err } var r ReleaseHostReservationResponse 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 ReleaseHostReservationResponse struct { Displaytext string `json:"displaytext"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Success bool `json:"success"` } type UpdateHostParams struct { p map[string]interface{} } func (p *UpdateHostParams) 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["annotation"]; found { u.Set("annotation", v.(string)) } if v, found := p.p["hosttags"]; found { vv := strings.Join(v.([]string), ",") u.Set("hosttags", vv) } if v, found := p.p["id"]; found { u.Set("id", v.(string)) } if v, found := p.p["istagarule"]; found { vv := strconv.FormatBool(v.(bool)) u.Set("istagarule", vv) } if v, found := p.p["name"]; found { u.Set("name", v.(string)) } if v, found := p.p["oscategoryid"]; found { u.Set("oscategoryid", v.(string)) } if v, found := p.p["url"]; found { u.Set("url", v.(string)) } return u } func (p *UpdateHostParams) SetAllocationstate(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["allocationstate"] = v } func (p *UpdateHostParams) ResetAllocationstate() { if p.p != nil && p.p["allocationstate"] != nil { delete(p.p, "allocationstate") } } func (p *UpdateHostParams) GetAllocationstate() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["allocationstate"].(string) return value, ok } func (p *UpdateHostParams) SetAnnotation(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["annotation"] = v } func (p *UpdateHostParams) ResetAnnotation() { if p.p != nil && p.p["annotation"] != nil { delete(p.p, "annotation") } } func (p *UpdateHostParams) GetAnnotation() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["annotation"].(string) return value, ok } func (p *UpdateHostParams) SetHosttags(v []string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["hosttags"] = v } func (p *UpdateHostParams) ResetHosttags() { if p.p != nil && p.p["hosttags"] != nil { delete(p.p, "hosttags") } } func (p *UpdateHostParams) GetHosttags() ([]string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["hosttags"].([]string) return value, ok } func (p *UpdateHostParams) SetId(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["id"] = v } func (p *UpdateHostParams) ResetId() { if p.p != nil && p.p["id"] != nil { delete(p.p, "id") } } func (p *UpdateHostParams) GetId() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["id"].(string) return value, ok } func (p *UpdateHostParams) SetIstagarule(v bool) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["istagarule"] = v } func (p *UpdateHostParams) ResetIstagarule() { if p.p != nil && p.p["istagarule"] != nil { delete(p.p, "istagarule") } } func (p *UpdateHostParams) GetIstagarule() (bool, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["istagarule"].(bool) return value, ok } func (p *UpdateHostParams) SetName(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["name"] = v } func (p *UpdateHostParams) ResetName() { if p.p != nil && p.p["name"] != nil { delete(p.p, "name") } } func (p *UpdateHostParams) GetName() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["name"].(string) return value, ok } func (p *UpdateHostParams) SetOscategoryid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["oscategoryid"] = v } func (p *UpdateHostParams) ResetOscategoryid() { if p.p != nil && p.p["oscategoryid"] != nil { delete(p.p, "oscategoryid") } } func (p *UpdateHostParams) GetOscategoryid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["oscategoryid"].(string) return value, ok } func (p *UpdateHostParams) SetUrl(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["url"] = v } func (p *UpdateHostParams) ResetUrl() { if p.p != nil && p.p["url"] != nil { delete(p.p, "url") } } func (p *UpdateHostParams) GetUrl() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["url"].(string) return value, ok } // You should always use this function to get a new UpdateHostParams instance, // as then you are sure you have configured all required params func (s *HostService) NewUpdateHostParams(id string) *UpdateHostParams { p := &UpdateHostParams{} p.p = make(map[string]interface{}) p.p["id"] = id return p } // Updates a host. func (s *HostService) UpdateHost(p *UpdateHostParams) (*UpdateHostResponse, error) { resp, err := s.cs.newRequest("updateHost", p.toURLValues()) if err != nil { return nil, err } var r UpdateHostResponse if err := json.Unmarshal(resp, &r); err != nil { return nil, err } return &r, nil } type UpdateHostResponse struct { Annotation string `json:"annotation"` Arch string `json:"arch"` Capabilities string `json:"capabilities"` Clusterid string `json:"clusterid"` Clustername string `json:"clustername"` Clustertype string `json:"clustertype"` Cpuallocated string `json:"cpuallocated"` Cpuallocatedpercentage string `json:"cpuallocatedpercentage"` Cpuallocatedvalue int64 `json:"cpuallocatedvalue"` Cpuallocatedwithoverprovisioning string `json:"cpuallocatedwithoverprovisioning"` Cpuloadaverage float64 `json:"cpuloadaverage"` Cpunumber int `json:"cpunumber"` Cpusockets int `json:"cpusockets"` Cpuspeed int64 `json:"cpuspeed"` Cpuused string `json:"cpuused"` Cpuwithoverprovisioning string `json:"cpuwithoverprovisioning"` Created string `json:"created"` Details map[string]string `json:"details"` Disconnected string `json:"disconnected"` Disksizeallocated int64 `json:"disksizeallocated"` Disksizetotal int64 `json:"disksizetotal"` Encryptionsupported bool `json:"encryptionsupported"` Events string `json:"events"` Explicithosttags string `json:"explicithosttags"` Gpugroup []UpdateHostResponseGpugroup `json:"gpugroup"` Hahost bool `json:"hahost"` Hasannotations bool `json:"hasannotations"` Hasenoughcapacity bool `json:"hasenoughcapacity"` Hostha HAForHostResponse `json:"hostha"` Hosttags string `json:"hosttags"` Hypervisor string `json:"hypervisor"` Hypervisorversion string `json:"hypervisorversion"` Id string `json:"id"` Implicithosttags string `json:"implicithosttags"` Instanceconversionsupported bool `json:"instanceconversionsupported"` Ipaddress string `json:"ipaddress"` Islocalstorageactive bool `json:"islocalstorageactive"` Istagarule bool `json:"istagarule"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Lastannotated string `json:"lastannotated"` Lastpinged string `json:"lastpinged"` Managementserverid UUID `json:"managementserverid"` Memoryallocated int64 `json:"memoryallocated"` Memoryallocatedbytes int64 `json:"memoryallocatedbytes"` Memoryallocatedpercentage string `json:"memoryallocatedpercentage"` Memorytotal int64 `json:"memorytotal"` Memoryused int64 `json:"memoryused"` Memorywithoverprovisioning string `json:"memorywithoverprovisioning"` Name string `json:"name"` Networkkbsread int64 `json:"networkkbsread"` Networkkbswrite int64 `json:"networkkbswrite"` Oscategoryid string `json:"oscategoryid"` Oscategoryname string `json:"oscategoryname"` Outofbandmanagement OutOfBandManagementResponse `json:"outofbandmanagement"` Podid string `json:"podid"` Podname string `json:"podname"` Removed string `json:"removed"` Resourcestate string `json:"resourcestate"` State string `json:"state"` Suitableformigration bool `json:"suitableformigration"` Type string `json:"type"` Ueficapability bool `json:"ueficapability"` Username string `json:"username"` Version string `json:"version"` Zoneid string `json:"zoneid"` Zonename string `json:"zonename"` } type UpdateHostResponseGpugroup struct { Gpugroupname string `json:"gpugroupname"` Vgpu []UpdateHostResponseGpugroupVgpu `json:"vgpu"` } type UpdateHostResponseGpugroupVgpu struct { Maxcapacity int64 `json:"maxcapacity"` Maxheads int64 `json:"maxheads"` Maxresolutionx int64 `json:"maxresolutionx"` Maxresolutiony int64 `json:"maxresolutiony"` Maxvgpuperpgpu int64 `json:"maxvgpuperpgpu"` Remainingcapacity int64 `json:"remainingcapacity"` Vgputype string `json:"vgputype"` Videoram int64 `json:"videoram"` } type UpdateHostPasswordParams struct { p map[string]interface{} } func (p *UpdateHostPasswordParams) toURLValues() url.Values { u := url.Values{} if p.p == nil { return u } if v, found := p.p["clusterid"]; found { u.Set("clusterid", v.(string)) } if v, found := p.p["hostid"]; found { u.Set("hostid", v.(string)) } if v, found := p.p["password"]; found { u.Set("password", v.(string)) } if v, found := p.p["update_passwd_on_host"]; found { vv := strconv.FormatBool(v.(bool)) u.Set("update_passwd_on_host", vv) } if v, found := p.p["username"]; found { u.Set("username", v.(string)) } return u } func (p *UpdateHostPasswordParams) SetClusterid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["clusterid"] = v } func (p *UpdateHostPasswordParams) ResetClusterid() { if p.p != nil && p.p["clusterid"] != nil { delete(p.p, "clusterid") } } func (p *UpdateHostPasswordParams) GetClusterid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["clusterid"].(string) return value, ok } func (p *UpdateHostPasswordParams) SetHostid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["hostid"] = v } func (p *UpdateHostPasswordParams) ResetHostid() { if p.p != nil && p.p["hostid"] != nil { delete(p.p, "hostid") } } func (p *UpdateHostPasswordParams) GetHostid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["hostid"].(string) return value, ok } func (p *UpdateHostPasswordParams) SetPassword(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["password"] = v } func (p *UpdateHostPasswordParams) ResetPassword() { if p.p != nil && p.p["password"] != nil { delete(p.p, "password") } } func (p *UpdateHostPasswordParams) GetPassword() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["password"].(string) return value, ok } func (p *UpdateHostPasswordParams) SetUpdate_passwd_on_host(v bool) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["update_passwd_on_host"] = v } func (p *UpdateHostPasswordParams) ResetUpdate_passwd_on_host() { if p.p != nil && p.p["update_passwd_on_host"] != nil { delete(p.p, "update_passwd_on_host") } } func (p *UpdateHostPasswordParams) GetUpdate_passwd_on_host() (bool, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["update_passwd_on_host"].(bool) return value, ok } func (p *UpdateHostPasswordParams) SetUsername(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["username"] = v } func (p *UpdateHostPasswordParams) ResetUsername() { if p.p != nil && p.p["username"] != nil { delete(p.p, "username") } } func (p *UpdateHostPasswordParams) GetUsername() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["username"].(string) return value, ok } // You should always use this function to get a new UpdateHostPasswordParams instance, // as then you are sure you have configured all required params func (s *HostService) NewUpdateHostPasswordParams(password string, username string) *UpdateHostPasswordParams { p := &UpdateHostPasswordParams{} p.p = make(map[string]interface{}) p.p["password"] = password p.p["username"] = username return p } // Update password of a host/pool on management server. func (s *HostService) UpdateHostPassword(p *UpdateHostPasswordParams) (*UpdateHostPasswordResponse, error) { resp, err := s.cs.newRequest("updateHostPassword", p.toURLValues()) if err != nil { return nil, err } var r UpdateHostPasswordResponse if err := json.Unmarshal(resp, &r); err != nil { return nil, err } return &r, nil } type UpdateHostPasswordResponse struct { Displaytext string `json:"displaytext"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Success bool `json:"success"` } func (r *UpdateHostPasswordResponse) 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 } } if ostypeid, ok := m["ostypeid"].(float64); ok { m["ostypeid"] = strconv.Itoa(int(ostypeid)) b, err = json.Marshal(m) if err != nil { return err } } type alias UpdateHostPasswordResponse return json.Unmarshal(b, (*alias)(r)) } type MigrateSecondaryStorageDataParams struct { p map[string]interface{} } func (p *MigrateSecondaryStorageDataParams) toURLValues() url.Values { u := url.Values{} if p.p == nil { return u } if v, found := p.p["destpools"]; found { vv := strings.Join(v.([]string), ",") u.Set("destpools", vv) } if v, found := p.p["migrationtype"]; found { u.Set("migrationtype", v.(string)) } if v, found := p.p["srcpool"]; found { u.Set("srcpool", v.(string)) } return u } func (p *MigrateSecondaryStorageDataParams) SetDestpools(v []string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["destpools"] = v } func (p *MigrateSecondaryStorageDataParams) ResetDestpools() { if p.p != nil && p.p["destpools"] != nil { delete(p.p, "destpools") } } func (p *MigrateSecondaryStorageDataParams) GetDestpools() ([]string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["destpools"].([]string) return value, ok } func (p *MigrateSecondaryStorageDataParams) SetMigrationtype(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["migrationtype"] = v } func (p *MigrateSecondaryStorageDataParams) ResetMigrationtype() { if p.p != nil && p.p["migrationtype"] != nil { delete(p.p, "migrationtype") } } func (p *MigrateSecondaryStorageDataParams) GetMigrationtype() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["migrationtype"].(string) return value, ok } func (p *MigrateSecondaryStorageDataParams) SetSrcpool(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["srcpool"] = v } func (p *MigrateSecondaryStorageDataParams) ResetSrcpool() { if p.p != nil && p.p["srcpool"] != nil { delete(p.p, "srcpool") } } func (p *MigrateSecondaryStorageDataParams) GetSrcpool() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["srcpool"].(string) return value, ok } // You should always use this function to get a new MigrateSecondaryStorageDataParams instance, // as then you are sure you have configured all required params func (s *HostService) NewMigrateSecondaryStorageDataParams(destpools []string, srcpool string) *MigrateSecondaryStorageDataParams { p := &MigrateSecondaryStorageDataParams{} p.p = make(map[string]interface{}) p.p["destpools"] = destpools p.p["srcpool"] = srcpool return p } // migrates data objects from one secondary storage to destination image store(s) func (s *HostService) MigrateSecondaryStorageData(p *MigrateSecondaryStorageDataParams) (*MigrateSecondaryStorageDataResponse, error) { resp, err := s.cs.newRequest("migrateSecondaryStorageData", p.toURLValues()) if err != nil { return nil, err } var r MigrateSecondaryStorageDataResponse 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 MigrateSecondaryStorageDataResponse struct { JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Message string `json:"message"` Migrationtype string `json:"migrationtype"` Success bool `json:"success"` } type CancelHostAsDegradedParams struct { p map[string]interface{} } func (p *CancelHostAsDegradedParams) 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 *CancelHostAsDegradedParams) SetId(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["id"] = v } func (p *CancelHostAsDegradedParams) ResetId() { if p.p != nil && p.p["id"] != nil { delete(p.p, "id") } } func (p *CancelHostAsDegradedParams) GetId() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["id"].(string) return value, ok } // You should always use this function to get a new CancelHostAsDegradedParams instance, // as then you are sure you have configured all required params func (s *HostService) NewCancelHostAsDegradedParams(id string) *CancelHostAsDegradedParams { p := &CancelHostAsDegradedParams{} p.p = make(map[string]interface{}) p.p["id"] = id return p } // Cancel host status from 'Degraded'. Host will transit back to status 'Enabled'. func (s *HostService) CancelHostAsDegraded(p *CancelHostAsDegradedParams) (*CancelHostAsDegradedResponse, error) { resp, err := s.cs.newRequest("cancelHostAsDegraded", p.toURLValues()) if err != nil { return nil, err } var r CancelHostAsDegradedResponse 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 CancelHostAsDegradedResponse struct { Annotation string `json:"annotation"` Arch string `json:"arch"` Capabilities string `json:"capabilities"` Clusterid string `json:"clusterid"` Clustername string `json:"clustername"` Clustertype string `json:"clustertype"` Cpuallocated string `json:"cpuallocated"` Cpuallocatedpercentage string `json:"cpuallocatedpercentage"` Cpuallocatedvalue int64 `json:"cpuallocatedvalue"` Cpuallocatedwithoverprovisioning string `json:"cpuallocatedwithoverprovisioning"` Cpuloadaverage float64 `json:"cpuloadaverage"` Cpunumber int `json:"cpunumber"` Cpusockets int `json:"cpusockets"` Cpuspeed int64 `json:"cpuspeed"` Cpuused string `json:"cpuused"` Cpuwithoverprovisioning string `json:"cpuwithoverprovisioning"` Created string `json:"created"` Details map[string]string `json:"details"` Disconnected string `json:"disconnected"` Disksizeallocated int64 `json:"disksizeallocated"` Disksizetotal int64 `json:"disksizetotal"` Encryptionsupported bool `json:"encryptionsupported"` Events string `json:"events"` Explicithosttags string `json:"explicithosttags"` Gpugroup []CancelHostAsDegradedResponseGpugroup `json:"gpugroup"` Hahost bool `json:"hahost"` Hasannotations bool `json:"hasannotations"` Hasenoughcapacity bool `json:"hasenoughcapacity"` Hostha HAForHostResponse `json:"hostha"` Hosttags string `json:"hosttags"` Hypervisor string `json:"hypervisor"` Hypervisorversion string `json:"hypervisorversion"` Id string `json:"id"` Implicithosttags string `json:"implicithosttags"` Instanceconversionsupported bool `json:"instanceconversionsupported"` Ipaddress string `json:"ipaddress"` Islocalstorageactive bool `json:"islocalstorageactive"` Istagarule bool `json:"istagarule"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Lastannotated string `json:"lastannotated"` Lastpinged string `json:"lastpinged"` Managementserverid UUID `json:"managementserverid"` Memoryallocated int64 `json:"memoryallocated"` Memoryallocatedbytes int64 `json:"memoryallocatedbytes"` Memoryallocatedpercentage string `json:"memoryallocatedpercentage"` Memorytotal int64 `json:"memorytotal"` Memoryused int64 `json:"memoryused"` Memorywithoverprovisioning string `json:"memorywithoverprovisioning"` Name string `json:"name"` Networkkbsread int64 `json:"networkkbsread"` Networkkbswrite int64 `json:"networkkbswrite"` Oscategoryid string `json:"oscategoryid"` Oscategoryname string `json:"oscategoryname"` Outofbandmanagement OutOfBandManagementResponse `json:"outofbandmanagement"` Podid string `json:"podid"` Podname string `json:"podname"` Removed string `json:"removed"` Resourcestate string `json:"resourcestate"` State string `json:"state"` Suitableformigration bool `json:"suitableformigration"` Type string `json:"type"` Ueficapability bool `json:"ueficapability"` Username string `json:"username"` Version string `json:"version"` Zoneid string `json:"zoneid"` Zonename string `json:"zonename"` } type CancelHostAsDegradedResponseGpugroup struct { Gpugroupname string `json:"gpugroupname"` Vgpu []CancelHostAsDegradedResponseGpugroupVgpu `json:"vgpu"` } type CancelHostAsDegradedResponseGpugroupVgpu struct { Maxcapacity int64 `json:"maxcapacity"` Maxheads int64 `json:"maxheads"` Maxresolutionx int64 `json:"maxresolutionx"` Maxresolutiony int64 `json:"maxresolutiony"` Maxvgpuperpgpu int64 `json:"maxvgpuperpgpu"` Remainingcapacity int64 `json:"remainingcapacity"` Vgputype string `json:"vgputype"` Videoram int64 `json:"videoram"` } type ListHostHAProvidersParams struct { p map[string]interface{} } func (p *ListHostHAProvidersParams) toURLValues() url.Values { u := url.Values{} if p.p == nil { return u } if v, found := p.p["hypervisor"]; found { u.Set("hypervisor", v.(string)) } return u } func (p *ListHostHAProvidersParams) SetHypervisor(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["hypervisor"] = v } func (p *ListHostHAProvidersParams) ResetHypervisor() { if p.p != nil && p.p["hypervisor"] != nil { delete(p.p, "hypervisor") } } func (p *ListHostHAProvidersParams) GetHypervisor() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["hypervisor"].(string) return value, ok } // You should always use this function to get a new ListHostHAProvidersParams instance, // as then you are sure you have configured all required params func (s *HostService) NewListHostHAProvidersParams(hypervisor string) *ListHostHAProvidersParams { p := &ListHostHAProvidersParams{} p.p = make(map[string]interface{}) p.p["hypervisor"] = hypervisor return p } // Lists HA providers func (s *HostService) ListHostHAProviders(p *ListHostHAProvidersParams) (*ListHostHAProvidersResponse, error) { resp, err := s.cs.newRequest("listHostHAProviders", p.toURLValues()) if err != nil { return nil, err } var r ListHostHAProvidersResponse if err := json.Unmarshal(resp, &r); err != nil { return nil, err } return &r, nil } type ListHostHAProvidersResponse struct { Count int `json:"count"` HostHAProviders []*HostHAProvider `json:"haprovider"` } type HostHAProvider struct { Haenable bool `json:"haenable"` Haprovider string `json:"haprovider"` Hastate string `json:"hastate"` Hostid string `json:"hostid"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Status bool `json:"status"` } type ListSecondaryStorageSelectorsParams struct { p map[string]interface{} } func (p *ListSecondaryStorageSelectorsParams) 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["showremoved"]; found { vv := strconv.FormatBool(v.(bool)) u.Set("showremoved", vv) } if v, found := p.p["type"]; found { u.Set("type", v.(string)) } if v, found := p.p["zoneid"]; found { u.Set("zoneid", v.(string)) } return u } func (p *ListSecondaryStorageSelectorsParams) SetKeyword(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["keyword"] = v } func (p *ListSecondaryStorageSelectorsParams) ResetKeyword() { if p.p != nil && p.p["keyword"] != nil { delete(p.p, "keyword") } } func (p *ListSecondaryStorageSelectorsParams) GetKeyword() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["keyword"].(string) return value, ok } func (p *ListSecondaryStorageSelectorsParams) SetPage(v int) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["page"] = v } func (p *ListSecondaryStorageSelectorsParams) ResetPage() { if p.p != nil && p.p["page"] != nil { delete(p.p, "page") } } func (p *ListSecondaryStorageSelectorsParams) GetPage() (int, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["page"].(int) return value, ok } func (p *ListSecondaryStorageSelectorsParams) SetPagesize(v int) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["pagesize"] = v } func (p *ListSecondaryStorageSelectorsParams) ResetPagesize() { if p.p != nil && p.p["pagesize"] != nil { delete(p.p, "pagesize") } } func (p *ListSecondaryStorageSelectorsParams) GetPagesize() (int, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["pagesize"].(int) return value, ok } func (p *ListSecondaryStorageSelectorsParams) SetShowremoved(v bool) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["showremoved"] = v } func (p *ListSecondaryStorageSelectorsParams) ResetShowremoved() { if p.p != nil && p.p["showremoved"] != nil { delete(p.p, "showremoved") } } func (p *ListSecondaryStorageSelectorsParams) GetShowremoved() (bool, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["showremoved"].(bool) return value, ok } func (p *ListSecondaryStorageSelectorsParams) SetType(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["type"] = v } func (p *ListSecondaryStorageSelectorsParams) ResetType() { if p.p != nil && p.p["type"] != nil { delete(p.p, "type") } } func (p *ListSecondaryStorageSelectorsParams) GetType() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["type"].(string) return value, ok } func (p *ListSecondaryStorageSelectorsParams) SetZoneid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["zoneid"] = v } func (p *ListSecondaryStorageSelectorsParams) ResetZoneid() { if p.p != nil && p.p["zoneid"] != nil { delete(p.p, "zoneid") } } func (p *ListSecondaryStorageSelectorsParams) GetZoneid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["zoneid"].(string) return value, ok } // You should always use this function to get a new ListSecondaryStorageSelectorsParams instance, // as then you are sure you have configured all required params func (s *HostService) NewListSecondaryStorageSelectorsParams(zoneid string) *ListSecondaryStorageSelectorsParams { p := &ListSecondaryStorageSelectorsParams{} p.p = make(map[string]interface{}) p.p["zoneid"] = zoneid return p } // This is a courtesy helper function, which in some cases may not work as expected! func (s *HostService) GetSecondaryStorageSelectorID(keyword string, zoneid string, opts ...OptionFunc) (string, int, error) { p := &ListSecondaryStorageSelectorsParams{} p.p = make(map[string]interface{}) p.p["keyword"] = keyword p.p["zoneid"] = zoneid for _, fn := range append(s.cs.options, opts...) { if err := fn(s.cs, p); err != nil { return "", -1, err } } l, err := s.ListSecondaryStorageSelectors(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.SecondaryStorageSelectors[0].Id, l.Count, nil } if l.Count > 1 { for _, v := range l.SecondaryStorageSelectors { 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 the secondary storage selectors and their rules. func (s *HostService) ListSecondaryStorageSelectors(p *ListSecondaryStorageSelectorsParams) (*ListSecondaryStorageSelectorsResponse, error) { resp, err := s.cs.newRequest("listSecondaryStorageSelectors", p.toURLValues()) if err != nil { return nil, err } var r ListSecondaryStorageSelectorsResponse if err := json.Unmarshal(resp, &r); err != nil { return nil, err } return &r, nil } type ListSecondaryStorageSelectorsResponse struct { Count int `json:"count"` SecondaryStorageSelectors []*SecondaryStorageSelector `json:"heuristics"` } type SecondaryStorageSelector struct { Created string `json:"created"` Description string `json:"description"` Heuristicrule string `json:"heuristicrule"` Id string `json:"id"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Name string `json:"name"` Removed string `json:"removed"` Type string `json:"type"` Zoneid string `json:"zoneid"` } type CreateSecondaryStorageSelectorParams struct { p map[string]interface{} } func (p *CreateSecondaryStorageSelectorParams) 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["heuristicrule"]; found { u.Set("heuristicrule", 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)) } if v, found := p.p["zoneid"]; found { u.Set("zoneid", v.(string)) } return u } func (p *CreateSecondaryStorageSelectorParams) SetDescription(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["description"] = v } func (p *CreateSecondaryStorageSelectorParams) ResetDescription() { if p.p != nil && p.p["description"] != nil { delete(p.p, "description") } } func (p *CreateSecondaryStorageSelectorParams) GetDescription() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["description"].(string) return value, ok } func (p *CreateSecondaryStorageSelectorParams) SetHeuristicrule(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["heuristicrule"] = v } func (p *CreateSecondaryStorageSelectorParams) ResetHeuristicrule() { if p.p != nil && p.p["heuristicrule"] != nil { delete(p.p, "heuristicrule") } } func (p *CreateSecondaryStorageSelectorParams) GetHeuristicrule() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["heuristicrule"].(string) return value, ok } func (p *CreateSecondaryStorageSelectorParams) SetName(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["name"] = v } func (p *CreateSecondaryStorageSelectorParams) ResetName() { if p.p != nil && p.p["name"] != nil { delete(p.p, "name") } } func (p *CreateSecondaryStorageSelectorParams) GetName() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["name"].(string) return value, ok } func (p *CreateSecondaryStorageSelectorParams) SetType(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["type"] = v } func (p *CreateSecondaryStorageSelectorParams) ResetType() { if p.p != nil && p.p["type"] != nil { delete(p.p, "type") } } func (p *CreateSecondaryStorageSelectorParams) GetType() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["type"].(string) return value, ok } func (p *CreateSecondaryStorageSelectorParams) SetZoneid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["zoneid"] = v } func (p *CreateSecondaryStorageSelectorParams) ResetZoneid() { if p.p != nil && p.p["zoneid"] != nil { delete(p.p, "zoneid") } } func (p *CreateSecondaryStorageSelectorParams) GetZoneid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["zoneid"].(string) return value, ok } // You should always use this function to get a new CreateSecondaryStorageSelectorParams instance, // as then you are sure you have configured all required params func (s *HostService) NewCreateSecondaryStorageSelectorParams(description string, heuristicrule string, name string, hostType string, zoneid string) *CreateSecondaryStorageSelectorParams { p := &CreateSecondaryStorageSelectorParams{} p.p = make(map[string]interface{}) p.p["description"] = description p.p["heuristicrule"] = heuristicrule p.p["name"] = name p.p["type"] = hostType p.p["zoneid"] = zoneid return p } // Creates a secondary storage selector, described by the heuristic rule. func (s *HostService) CreateSecondaryStorageSelector(p *CreateSecondaryStorageSelectorParams) (*CreateSecondaryStorageSelectorResponse, error) { resp, err := s.cs.newRequest("createSecondaryStorageSelector", p.toURLValues()) if err != nil { return nil, err } var nested struct { Response CreateSecondaryStorageSelectorResponse `json:"heuristics"` } if err := json.Unmarshal(resp, &nested); err != nil { return nil, err } r := nested.Response return &r, nil } type CreateSecondaryStorageSelectorResponse struct { Created string `json:"created"` Description string `json:"description"` Heuristicrule string `json:"heuristicrule"` Id string `json:"id"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Name string `json:"name"` Removed string `json:"removed"` Type string `json:"type"` Zoneid string `json:"zoneid"` } type RemoveSecondaryStorageSelectorParams struct { p map[string]interface{} } func (p *RemoveSecondaryStorageSelectorParams) 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 *RemoveSecondaryStorageSelectorParams) SetId(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["id"] = v } func (p *RemoveSecondaryStorageSelectorParams) ResetId() { if p.p != nil && p.p["id"] != nil { delete(p.p, "id") } } func (p *RemoveSecondaryStorageSelectorParams) GetId() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["id"].(string) return value, ok } // You should always use this function to get a new RemoveSecondaryStorageSelectorParams instance, // as then you are sure you have configured all required params func (s *HostService) NewRemoveSecondaryStorageSelectorParams(id string) *RemoveSecondaryStorageSelectorParams { p := &RemoveSecondaryStorageSelectorParams{} p.p = make(map[string]interface{}) p.p["id"] = id return p } // Removes an existing secondary storage selector. func (s *HostService) RemoveSecondaryStorageSelector(p *RemoveSecondaryStorageSelectorParams) (*RemoveSecondaryStorageSelectorResponse, error) { resp, err := s.cs.newRequest("removeSecondaryStorageSelector", p.toURLValues()) if err != nil { return nil, err } var r RemoveSecondaryStorageSelectorResponse if err := json.Unmarshal(resp, &r); err != nil { return nil, err } return &r, nil } type RemoveSecondaryStorageSelectorResponse struct { Displaytext string `json:"displaytext"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Success bool `json:"success"` } func (r *RemoveSecondaryStorageSelectorResponse) 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 } } if ostypeid, ok := m["ostypeid"].(float64); ok { m["ostypeid"] = strconv.Itoa(int(ostypeid)) b, err = json.Marshal(m) if err != nil { return err } } type alias RemoveSecondaryStorageSelectorResponse return json.Unmarshal(b, (*alias)(r)) } type ListHostHAResourcesParams struct { p map[string]interface{} } func (p *ListHostHAResourcesParams) 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 *ListHostHAResourcesParams) SetHostid(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["hostid"] = v } func (p *ListHostHAResourcesParams) ResetHostid() { if p.p != nil && p.p["hostid"] != nil { delete(p.p, "hostid") } } func (p *ListHostHAResourcesParams) GetHostid() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["hostid"].(string) return value, ok } // You should always use this function to get a new ListHostHAResourcesParams instance, // as then you are sure you have configured all required params func (s *HostService) NewListHostHAResourcesParams() *ListHostHAResourcesParams { p := &ListHostHAResourcesParams{} p.p = make(map[string]interface{}) return p } // Lists host HA resources func (s *HostService) ListHostHAResources(p *ListHostHAResourcesParams) (*ListHostHAResourcesResponse, error) { resp, err := s.cs.newRequest("listHostHAResources", p.toURLValues()) if err != nil { return nil, err } var r ListHostHAResourcesResponse if err := json.Unmarshal(resp, &r); err != nil { return nil, err } return &r, nil } type ListHostHAResourcesResponse struct { Count int `json:"count"` HostHAResources []*HostHAResource `json:"hostha"` } type HostHAResource struct { Haenable bool `json:"haenable"` Haprovider string `json:"haprovider"` Hastate string `json:"hastate"` Hostid string `json:"hostid"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Status bool `json:"status"` } type DeclareHostAsDegradedParams struct { p map[string]interface{} } func (p *DeclareHostAsDegradedParams) 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 *DeclareHostAsDegradedParams) SetId(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["id"] = v } func (p *DeclareHostAsDegradedParams) ResetId() { if p.p != nil && p.p["id"] != nil { delete(p.p, "id") } } func (p *DeclareHostAsDegradedParams) GetId() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["id"].(string) return value, ok } // You should always use this function to get a new DeclareHostAsDegradedParams instance, // as then you are sure you have configured all required params func (s *HostService) NewDeclareHostAsDegradedParams(id string) *DeclareHostAsDegradedParams { p := &DeclareHostAsDegradedParams{} p.p = make(map[string]interface{}) p.p["id"] = id return p } // Declare host as 'Degraded'. Host must be on 'Disconnected' or 'Alert' state. The ADMIN must be sure that there are no VMs running on the respective host otherwise this command might corrupted VMs that were running on the 'Degraded' host. func (s *HostService) DeclareHostAsDegraded(p *DeclareHostAsDegradedParams) (*DeclareHostAsDegradedResponse, error) { resp, err := s.cs.newRequest("declareHostAsDegraded", p.toURLValues()) if err != nil { return nil, err } var r DeclareHostAsDegradedResponse 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 DeclareHostAsDegradedResponse struct { Annotation string `json:"annotation"` Arch string `json:"arch"` Capabilities string `json:"capabilities"` Clusterid string `json:"clusterid"` Clustername string `json:"clustername"` Clustertype string `json:"clustertype"` Cpuallocated string `json:"cpuallocated"` Cpuallocatedpercentage string `json:"cpuallocatedpercentage"` Cpuallocatedvalue int64 `json:"cpuallocatedvalue"` Cpuallocatedwithoverprovisioning string `json:"cpuallocatedwithoverprovisioning"` Cpuloadaverage float64 `json:"cpuloadaverage"` Cpunumber int `json:"cpunumber"` Cpusockets int `json:"cpusockets"` Cpuspeed int64 `json:"cpuspeed"` Cpuused string `json:"cpuused"` Cpuwithoverprovisioning string `json:"cpuwithoverprovisioning"` Created string `json:"created"` Details map[string]string `json:"details"` Disconnected string `json:"disconnected"` Disksizeallocated int64 `json:"disksizeallocated"` Disksizetotal int64 `json:"disksizetotal"` Encryptionsupported bool `json:"encryptionsupported"` Events string `json:"events"` Explicithosttags string `json:"explicithosttags"` Gpugroup []DeclareHostAsDegradedResponseGpugroup `json:"gpugroup"` Hahost bool `json:"hahost"` Hasannotations bool `json:"hasannotations"` Hasenoughcapacity bool `json:"hasenoughcapacity"` Hostha HAForHostResponse `json:"hostha"` Hosttags string `json:"hosttags"` Hypervisor string `json:"hypervisor"` Hypervisorversion string `json:"hypervisorversion"` Id string `json:"id"` Implicithosttags string `json:"implicithosttags"` Instanceconversionsupported bool `json:"instanceconversionsupported"` Ipaddress string `json:"ipaddress"` Islocalstorageactive bool `json:"islocalstorageactive"` Istagarule bool `json:"istagarule"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Lastannotated string `json:"lastannotated"` Lastpinged string `json:"lastpinged"` Managementserverid UUID `json:"managementserverid"` Memoryallocated int64 `json:"memoryallocated"` Memoryallocatedbytes int64 `json:"memoryallocatedbytes"` Memoryallocatedpercentage string `json:"memoryallocatedpercentage"` Memorytotal int64 `json:"memorytotal"` Memoryused int64 `json:"memoryused"` Memorywithoverprovisioning string `json:"memorywithoverprovisioning"` Name string `json:"name"` Networkkbsread int64 `json:"networkkbsread"` Networkkbswrite int64 `json:"networkkbswrite"` Oscategoryid string `json:"oscategoryid"` Oscategoryname string `json:"oscategoryname"` Outofbandmanagement OutOfBandManagementResponse `json:"outofbandmanagement"` Podid string `json:"podid"` Podname string `json:"podname"` Removed string `json:"removed"` Resourcestate string `json:"resourcestate"` State string `json:"state"` Suitableformigration bool `json:"suitableformigration"` Type string `json:"type"` Ueficapability bool `json:"ueficapability"` Username string `json:"username"` Version string `json:"version"` Zoneid string `json:"zoneid"` Zonename string `json:"zonename"` } type DeclareHostAsDegradedResponseGpugroup struct { Gpugroupname string `json:"gpugroupname"` Vgpu []DeclareHostAsDegradedResponseGpugroupVgpu `json:"vgpu"` } type DeclareHostAsDegradedResponseGpugroupVgpu struct { Maxcapacity int64 `json:"maxcapacity"` Maxheads int64 `json:"maxheads"` Maxresolutionx int64 `json:"maxresolutionx"` Maxresolutiony int64 `json:"maxresolutiony"` Maxvgpuperpgpu int64 `json:"maxvgpuperpgpu"` Remainingcapacity int64 `json:"remainingcapacity"` Vgputype string `json:"vgputype"` Videoram int64 `json:"videoram"` } type UpdateSecondaryStorageSelectorParams struct { p map[string]interface{} } func (p *UpdateSecondaryStorageSelectorParams) toURLValues() url.Values { u := url.Values{} if p.p == nil { return u } if v, found := p.p["heuristicrule"]; found { u.Set("heuristicrule", v.(string)) } if v, found := p.p["id"]; found { u.Set("id", v.(string)) } return u } func (p *UpdateSecondaryStorageSelectorParams) SetHeuristicrule(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["heuristicrule"] = v } func (p *UpdateSecondaryStorageSelectorParams) ResetHeuristicrule() { if p.p != nil && p.p["heuristicrule"] != nil { delete(p.p, "heuristicrule") } } func (p *UpdateSecondaryStorageSelectorParams) GetHeuristicrule() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["heuristicrule"].(string) return value, ok } func (p *UpdateSecondaryStorageSelectorParams) SetId(v string) { if p.p == nil { p.p = make(map[string]interface{}) } p.p["id"] = v } func (p *UpdateSecondaryStorageSelectorParams) ResetId() { if p.p != nil && p.p["id"] != nil { delete(p.p, "id") } } func (p *UpdateSecondaryStorageSelectorParams) GetId() (string, bool) { if p.p == nil { p.p = make(map[string]interface{}) } value, ok := p.p["id"].(string) return value, ok } // You should always use this function to get a new UpdateSecondaryStorageSelectorParams instance, // as then you are sure you have configured all required params func (s *HostService) NewUpdateSecondaryStorageSelectorParams(heuristicrule string, id string) *UpdateSecondaryStorageSelectorParams { p := &UpdateSecondaryStorageSelectorParams{} p.p = make(map[string]interface{}) p.p["heuristicrule"] = heuristicrule p.p["id"] = id return p } // Updates an existing secondary storage selector. func (s *HostService) UpdateSecondaryStorageSelector(p *UpdateSecondaryStorageSelectorParams) (*UpdateSecondaryStorageSelectorResponse, error) { resp, err := s.cs.newRequest("updateSecondaryStorageSelector", p.toURLValues()) if err != nil { return nil, err } var nested struct { Response UpdateSecondaryStorageSelectorResponse `json:"heuristics"` } if err := json.Unmarshal(resp, &nested); err != nil { return nil, err } r := nested.Response return &r, nil } type UpdateSecondaryStorageSelectorResponse struct { Created string `json:"created"` Description string `json:"description"` Heuristicrule string `json:"heuristicrule"` Id string `json:"id"` JobID string `json:"jobid"` Jobstatus int `json:"jobstatus"` Name string `json:"name"` Removed string `json:"removed"` Type string `json:"type"` Zoneid string `json:"zoneid"` }