You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ro...@apache.org on 2021/09/30 09:34:49 UTC

[cloudstack-go] branch main updated: Use autogenerated code for hostservice (#9)

This is an automated email from the ASF dual-hosted git repository.

rohit pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack-go.git


The following commit(s) were added to refs/heads/main by this push:
     new a7f57d1  Use autogenerated code for hostservice (#9)
a7f57d1 is described below

commit a7f57d13a44b86243c179118bf55076726be93a2
Author: Pearl Dsilva <pe...@gmail.com>
AuthorDate: Thu Sep 30 15:04:44 2021 +0530

    Use autogenerated code for hostservice (#9)
---
 cloudstack/ClusterService.go | 136 +++++++++++++++++++
 cloudstack/HostService.go    | 316 +++++++++++++++++++++++++++++++------------
 cloudstack/ZoneService.go    | 136 +++++++++++++++++++
 generate/generate.go         |   8 +-
 generate/layout.go           |   6 +
 5 files changed, 514 insertions(+), 88 deletions(-)

diff --git a/cloudstack/ClusterService.go b/cloudstack/ClusterService.go
index ec08f2c..ba0e5f9 100644
--- a/cloudstack/ClusterService.go
+++ b/cloudstack/ClusterService.go
@@ -634,6 +634,142 @@ type EnableOutOfBandManagementForClusterResponse struct {
 	Username    string `json:"username"`
 }
 
+type EnableHAForClusterParams struct {
+	p map[string]interface{}
+}
+
+func (p *EnableHAForClusterParams) toURLValues() url.Values {
+	u := url.Values{}
+	if p.p == nil {
+		return u
+	}
+	if v, found := p.p["clusterid"]; found {
+		u.Set("clusterid", v.(string))
+	}
+	return u
+}
+
+func (p *EnableHAForClusterParams) SetClusterid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["clusterid"] = v
+}
+
+// You should always use this function to get a new EnableHAForClusterParams instance,
+// as then you are sure you have configured all required params
+func (s *ClusterService) NewEnableHAForClusterParams(clusterid string) *EnableHAForClusterParams {
+	p := &EnableHAForClusterParams{}
+	p.p = make(map[string]interface{})
+	p.p["clusterid"] = clusterid
+	return p
+}
+
+// Enables HA cluster-wide
+func (s *ClusterService) EnableHAForCluster(p *EnableHAForClusterParams) (*EnableHAForClusterResponse, error) {
+	resp, err := s.cs.newRequest("enableHAForCluster", p.toURLValues())
+	if err != nil {
+		return nil, err
+	}
+
+	var r EnableHAForClusterResponse
+	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 EnableHAForClusterResponse struct {
+	Displaytext string `json:"displaytext"`
+	JobID       string `json:"jobid"`
+	Jobstatus   int    `json:"jobstatus"`
+	Success     bool   `json:"success"`
+}
+
+type DisableHAForClusterParams struct {
+	p map[string]interface{}
+}
+
+func (p *DisableHAForClusterParams) toURLValues() url.Values {
+	u := url.Values{}
+	if p.p == nil {
+		return u
+	}
+	if v, found := p.p["clusterid"]; found {
+		u.Set("clusterid", v.(string))
+	}
+	return u
+}
+
+func (p *DisableHAForClusterParams) SetClusterid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["clusterid"] = v
+}
+
+// You should always use this function to get a new DisableHAForClusterParams instance,
+// as then you are sure you have configured all required params
+func (s *ClusterService) NewDisableHAForClusterParams(clusterid string) *DisableHAForClusterParams {
+	p := &DisableHAForClusterParams{}
+	p.p = make(map[string]interface{})
+	p.p["clusterid"] = clusterid
+	return p
+}
+
+// Disables HA cluster-wide
+func (s *ClusterService) DisableHAForCluster(p *DisableHAForClusterParams) (*DisableHAForClusterResponse, error) {
+	resp, err := s.cs.newRequest("disableHAForCluster", p.toURLValues())
+	if err != nil {
+		return nil, err
+	}
+
+	var r DisableHAForClusterResponse
+	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 DisableHAForClusterResponse struct {
+	Displaytext string `json:"displaytext"`
+	JobID       string `json:"jobid"`
+	Jobstatus   int    `json:"jobstatus"`
+	Success     bool   `json:"success"`
+}
+
 type ListClustersParams struct {
 	p map[string]interface{}
 }
diff --git a/cloudstack/HostService.go b/cloudstack/HostService.go
index b8d4f2b..bd9f320 100644
--- a/cloudstack/HostService.go
+++ b/cloudstack/HostService.go
@@ -204,7 +204,7 @@ type AddBaremetalHostResponse struct {
 	Gpugroup                         []AddBaremetalHostResponseGpugroup `json:"gpugroup"`
 	Hahost                           bool                               `json:"hahost"`
 	Hasenoughcapacity                bool                               `json:"hasenoughcapacity"`
-	Hostha                           HostHostha                         `json:"hostha"`
+	Hostha                           HAForHostResponse                  `json:"hostha"`
 	Hosttags                         string                             `json:"hosttags"`
 	Hypervisor                       string                             `json:"hypervisor"`
 	Hypervisorversion                string                             `json:"hypervisorversion"`
@@ -215,7 +215,7 @@ type AddBaremetalHostResponse struct {
 	Jobstatus                        int                                `json:"jobstatus"`
 	Lastannotated                    string                             `json:"lastannotated"`
 	Lastpinged                       string                             `json:"lastpinged"`
-	Managementserverid               ManagementServerId                 `json:"managementserverid"`
+	Managementserverid               string                             `json:"managementserverid"`
 	Memoryallocated                  int64                              `json:"memoryallocated"`
 	Memoryallocatedbytes             int64                              `json:"memoryallocatedbytes"`
 	Memoryallocatedpercentage        string                             `json:"memoryallocatedpercentage"`
@@ -526,7 +526,7 @@ type AddHostResponse struct {
 	Gpugroup                         []AddHostResponseGpugroup   `json:"gpugroup"`
 	Hahost                           bool                        `json:"hahost"`
 	Hasenoughcapacity                bool                        `json:"hasenoughcapacity"`
-	Hostha                           HostHostha                  `json:"hostha"`
+	Hostha                           HAForHostResponse           `json:"hostha"`
 	Hosttags                         string                      `json:"hosttags"`
 	Hypervisor                       string                      `json:"hypervisor"`
 	Hypervisorversion                string                      `json:"hypervisorversion"`
@@ -537,7 +537,7 @@ type AddHostResponse struct {
 	Jobstatus                        int                         `json:"jobstatus"`
 	Lastannotated                    string                      `json:"lastannotated"`
 	Lastpinged                       string                      `json:"lastpinged"`
-	Managementserverid               ManagementServerId          `json:"managementserverid"`
+	Managementserverid               string                      `json:"managementserverid"`
 	Memoryallocated                  int64                       `json:"memoryallocated"`
 	Memoryallocatedbytes             int64                       `json:"memoryallocatedbytes"`
 	Memoryallocatedpercentage        string                      `json:"memoryallocatedpercentage"`
@@ -743,7 +743,7 @@ type CancelHostMaintenanceResponse struct {
 	Gpugroup                         []CancelHostMaintenanceResponseGpugroup `json:"gpugroup"`
 	Hahost                           bool                                    `json:"hahost"`
 	Hasenoughcapacity                bool                                    `json:"hasenoughcapacity"`
-	Hostha                           HostHostha                              `json:"hostha"`
+	Hostha                           HAForHostResponse                       `json:"hostha"`
 	Hosttags                         string                                  `json:"hosttags"`
 	Hypervisor                       string                                  `json:"hypervisor"`
 	Hypervisorversion                string                                  `json:"hypervisorversion"`
@@ -754,7 +754,7 @@ type CancelHostMaintenanceResponse struct {
 	Jobstatus                        int                                     `json:"jobstatus"`
 	Lastannotated                    string                                  `json:"lastannotated"`
 	Lastpinged                       string                                  `json:"lastpinged"`
-	Managementserverid               ManagementServerId                      `json:"managementserverid"`
+	Managementserverid               string                                  `json:"managementserverid"`
 	Memoryallocated                  int64                                   `json:"memoryallocated"`
 	Memoryallocatedbytes             int64                                   `json:"memoryallocatedbytes"`
 	Memoryallocatedpercentage        string                                  `json:"memoryallocatedpercentage"`
@@ -797,6 +797,169 @@ type CancelHostMaintenanceResponseGpugroupVgpu struct {
 	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) SetProvider(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["provider"] = v
+}
+
+// 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
+}
+
+// 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{}
 }
@@ -1240,58 +1403,58 @@ func (s *HostService) FindHostsForMigration(p *FindHostsForMigrationParams) (*Fi
 }
 
 type FindHostsForMigrationResponse 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"`
-	Hahost                           bool               `json:"hahost"`
-	Hasenoughcapacity                bool               `json:"hasenoughcapacity"`
-	Hosttags                         string             `json:"hosttags"`
-	Hypervisor                       string             `json:"hypervisor"`
-	Hypervisorversion                string             `json:"hypervisorversion"`
-	Id                               string             `json:"id"`
-	Ipaddress                        string             `json:"ipaddress"`
-	Islocalstorageactive             bool               `json:"islocalstorageactive"`
-	JobID                            string             `json:"jobid"`
-	Jobstatus                        int                `json:"jobstatus"`
-	Lastpinged                       string             `json:"lastpinged"`
-	Managementserverid               ManagementServerId `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"`
+	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"`
+	Hahost                           bool   `json:"hahost"`
+	Hasenoughcapacity                bool   `json:"hasenoughcapacity"`
+	Hosttags                         string `json:"hosttags"`
+	Hypervisor                       string `json:"hypervisor"`
+	Hypervisorversion                string `json:"hypervisorversion"`
+	Id                               string `json:"id"`
+	Ipaddress                        string `json:"ipaddress"`
+	Islocalstorageactive             bool   `json:"islocalstorageactive"`
+	JobID                            string `json:"jobid"`
+	Jobstatus                        int    `json:"jobstatus"`
+	Lastpinged                       string `json:"lastpinged"`
+	Managementserverid               int64  `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 {
@@ -1856,7 +2019,7 @@ type Host struct {
 	Gpugroup                         []HostGpugroup              `json:"gpugroup"`
 	Hahost                           bool                        `json:"hahost"`
 	Hasenoughcapacity                bool                        `json:"hasenoughcapacity"`
-	Hostha                           HostHostha                  `json:"hostha"`
+	Hostha                           HAForHostResponse           `json:"hostha"`
 	Hosttags                         string                      `json:"hosttags"`
 	Hypervisor                       string                      `json:"hypervisor"`
 	Hypervisorversion                string                      `json:"hypervisorversion"`
@@ -1867,7 +2030,7 @@ type Host struct {
 	Jobstatus                        int                         `json:"jobstatus"`
 	Lastannotated                    string                      `json:"lastannotated"`
 	Lastpinged                       string                      `json:"lastpinged"`
-	Managementserverid               ManagementServerId          `json:"managementserverid"`
+	Managementserverid               string                      `json:"managementserverid"`
 	Memoryallocated                  int64                       `json:"memoryallocated"`
 	Memoryallocatedbytes             int64                       `json:"memoryallocatedbytes"`
 	Memoryallocatedpercentage        string                      `json:"memoryallocatedpercentage"`
@@ -1910,23 +2073,6 @@ type HostGpugroupVgpu struct {
 	Videoram          int64  `json:"videoram"`
 }
 
-type HostHostha struct {
-	Haenable bool   `json:"haenable"`
-	Hastate  string `json:"hastate"`
-}
-
-type ManagementServerId string
-
-func (id *ManagementServerId) UnmarshalJSON(b []byte) error {
-	unquoted, err := strconv.Unquote(string(b))
-	if err != nil {
-		*id = ManagementServerId(string(b))
-		return nil
-	}
-	*id = ManagementServerId(unquoted)
-	return nil
-}
-
 type ListHostsMetricsParams struct {
 	p map[string]interface{}
 }
@@ -2257,7 +2403,7 @@ type HostsMetric struct {
 	Gpugroup                         []HostsMetricGpugroup       `json:"gpugroup"`
 	Hahost                           bool                        `json:"hahost"`
 	Hasenoughcapacity                bool                        `json:"hasenoughcapacity"`
-	Hostha                           HostHostha                  `json:"hostha"`
+	Hostha                           HAForHostResponse           `json:"hostha"`
 	Hosttags                         string                      `json:"hosttags"`
 	Hypervisor                       string                      `json:"hypervisor"`
 	Hypervisorversion                string                      `json:"hypervisorversion"`
@@ -2269,7 +2415,7 @@ type HostsMetric struct {
 	Jobstatus                        int                         `json:"jobstatus"`
 	Lastannotated                    string                      `json:"lastannotated"`
 	Lastpinged                       string                      `json:"lastpinged"`
-	Managementserverid               ManagementServerId          `json:"managementserverid"`
+	Managementserverid               string                      `json:"managementserverid"`
 	Memoryallocated                  int64                       `json:"memoryallocated"`
 	Memoryallocatedbytes             int64                       `json:"memoryallocatedbytes"`
 	Memoryallocateddisablethreshold  bool                        `json:"memoryallocateddisablethreshold"`
@@ -2413,7 +2559,7 @@ type PrepareHostForMaintenanceResponse struct {
 	Gpugroup                         []PrepareHostForMaintenanceResponseGpugroup `json:"gpugroup"`
 	Hahost                           bool                                        `json:"hahost"`
 	Hasenoughcapacity                bool                                        `json:"hasenoughcapacity"`
-	Hostha                           HostHostha                                  `json:"hostha"`
+	Hostha                           HAForHostResponse                           `json:"hostha"`
 	Hosttags                         string                                      `json:"hosttags"`
 	Hypervisor                       string                                      `json:"hypervisor"`
 	Hypervisorversion                string                                      `json:"hypervisorversion"`
@@ -2424,7 +2570,7 @@ type PrepareHostForMaintenanceResponse struct {
 	Jobstatus                        int                                         `json:"jobstatus"`
 	Lastannotated                    string                                      `json:"lastannotated"`
 	Lastpinged                       string                                      `json:"lastpinged"`
-	Managementserverid               ManagementServerId                          `json:"managementserverid"`
+	Managementserverid               string                                      `json:"managementserverid"`
 	Memoryallocated                  int64                                       `json:"memoryallocated"`
 	Memoryallocatedbytes             int64                                       `json:"memoryallocatedbytes"`
 	Memoryallocatedpercentage        string                                      `json:"memoryallocatedpercentage"`
@@ -2558,7 +2704,7 @@ type ReconnectHostResponse struct {
 	Gpugroup                         []ReconnectHostResponseGpugroup `json:"gpugroup"`
 	Hahost                           bool                            `json:"hahost"`
 	Hasenoughcapacity                bool                            `json:"hasenoughcapacity"`
-	Hostha                           HostHostha                      `json:"hostha"`
+	Hostha                           HAForHostResponse               `json:"hostha"`
 	Hosttags                         string                          `json:"hosttags"`
 	Hypervisor                       string                          `json:"hypervisor"`
 	Hypervisorversion                string                          `json:"hypervisorversion"`
@@ -2569,7 +2715,7 @@ type ReconnectHostResponse struct {
 	Jobstatus                        int                             `json:"jobstatus"`
 	Lastannotated                    string                          `json:"lastannotated"`
 	Lastpinged                       string                          `json:"lastpinged"`
-	Managementserverid               ManagementServerId              `json:"managementserverid"`
+	Managementserverid               string                          `json:"managementserverid"`
 	Memoryallocated                  int64                           `json:"memoryallocated"`
 	Memoryallocatedbytes             int64                           `json:"memoryallocatedbytes"`
 	Memoryallocatedpercentage        string                          `json:"memoryallocatedpercentage"`
@@ -2880,7 +3026,7 @@ type UpdateHostResponse struct {
 	Gpugroup                         []UpdateHostResponseGpugroup `json:"gpugroup"`
 	Hahost                           bool                         `json:"hahost"`
 	Hasenoughcapacity                bool                         `json:"hasenoughcapacity"`
-	Hostha                           HostHostha                   `json:"hostha"`
+	Hostha                           HAForHostResponse            `json:"hostha"`
 	Hosttags                         string                       `json:"hosttags"`
 	Hypervisor                       string                       `json:"hypervisor"`
 	Hypervisorversion                string                       `json:"hypervisorversion"`
@@ -2891,7 +3037,7 @@ type UpdateHostResponse struct {
 	Jobstatus                        int                          `json:"jobstatus"`
 	Lastannotated                    string                       `json:"lastannotated"`
 	Lastpinged                       string                       `json:"lastpinged"`
-	Managementserverid               ManagementServerId           `json:"managementserverid"`
+	Managementserverid               string                       `json:"managementserverid"`
 	Memoryallocated                  int64                        `json:"memoryallocated"`
 	Memoryallocatedbytes             int64                        `json:"memoryallocatedbytes"`
 	Memoryallocatedpercentage        string                       `json:"memoryallocatedpercentage"`
diff --git a/cloudstack/ZoneService.go b/cloudstack/ZoneService.go
index d0b2d59..534bd89 100644
--- a/cloudstack/ZoneService.go
+++ b/cloudstack/ZoneService.go
@@ -593,6 +593,142 @@ type EnableOutOfBandManagementForZoneResponse struct {
 	Username    string `json:"username"`
 }
 
+type DisableHAForZoneParams struct {
+	p map[string]interface{}
+}
+
+func (p *DisableHAForZoneParams) toURLValues() url.Values {
+	u := url.Values{}
+	if p.p == nil {
+		return u
+	}
+	if v, found := p.p["zoneid"]; found {
+		u.Set("zoneid", v.(string))
+	}
+	return u
+}
+
+func (p *DisableHAForZoneParams) SetZoneid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["zoneid"] = v
+}
+
+// You should always use this function to get a new DisableHAForZoneParams instance,
+// as then you are sure you have configured all required params
+func (s *ZoneService) NewDisableHAForZoneParams(zoneid string) *DisableHAForZoneParams {
+	p := &DisableHAForZoneParams{}
+	p.p = make(map[string]interface{})
+	p.p["zoneid"] = zoneid
+	return p
+}
+
+// Disables HA for a zone
+func (s *ZoneService) DisableHAForZone(p *DisableHAForZoneParams) (*DisableHAForZoneResponse, error) {
+	resp, err := s.cs.newRequest("disableHAForZone", p.toURLValues())
+	if err != nil {
+		return nil, err
+	}
+
+	var r DisableHAForZoneResponse
+	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 DisableHAForZoneResponse struct {
+	Displaytext string `json:"displaytext"`
+	JobID       string `json:"jobid"`
+	Jobstatus   int    `json:"jobstatus"`
+	Success     bool   `json:"success"`
+}
+
+type EnableHAForZoneParams struct {
+	p map[string]interface{}
+}
+
+func (p *EnableHAForZoneParams) toURLValues() url.Values {
+	u := url.Values{}
+	if p.p == nil {
+		return u
+	}
+	if v, found := p.p["zoneid"]; found {
+		u.Set("zoneid", v.(string))
+	}
+	return u
+}
+
+func (p *EnableHAForZoneParams) SetZoneid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["zoneid"] = v
+}
+
+// You should always use this function to get a new EnableHAForZoneParams instance,
+// as then you are sure you have configured all required params
+func (s *ZoneService) NewEnableHAForZoneParams(zoneid string) *EnableHAForZoneParams {
+	p := &EnableHAForZoneParams{}
+	p.p = make(map[string]interface{})
+	p.p["zoneid"] = zoneid
+	return p
+}
+
+// Enables HA for a zone
+func (s *ZoneService) EnableHAForZone(p *EnableHAForZoneParams) (*EnableHAForZoneResponse, error) {
+	resp, err := s.cs.newRequest("enableHAForZone", p.toURLValues())
+	if err != nil {
+		return nil, err
+	}
+
+	var r EnableHAForZoneResponse
+	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 EnableHAForZoneResponse struct {
+	Displaytext string `json:"displaytext"`
+	JobID       string `json:"jobid"`
+	Jobstatus   int    `json:"jobstatus"`
+	Success     bool   `json:"success"`
+}
+
 type ListDedicatedZonesParams struct {
 	p map[string]interface{}
 }
diff --git a/generate/generate.go b/generate/generate.go
index 0898e20..20d6f97 100644
--- a/generate/generate.go
+++ b/generate/generate.go
@@ -52,8 +52,8 @@ var detailsRequireKeyValue = map[string]bool{
 var mapRequireList = map[string]map[string]bool{
 	"deployVirtualMachine": map[string]bool{
 		"dhcpoptionsnetworklist": true,
-		"iptonetworklist": true,
-		"nicnetworklist": true,
+		"iptonetworklist":        true,
+		"nicnetworklist":         true,
 	},
 	"updateVirtualMachine": map[string]bool{
 		"dhcpoptionsnetworklist": true,
@@ -1633,7 +1633,7 @@ func mapType(aName string, pName string, pType string) string {
 		return "int"
 	case "long":
 		return "int64"
-	case "float":
+	case "float", "double":
 		return "float64"
 	case "list":
 		return "[]string"
@@ -1651,6 +1651,8 @@ func mapType(aName string, pName string, pType string) string {
 		return "*VirtualMachine"
 	case "outofbandmanagementresponse":
 		return "OutOfBandManagementResponse"
+	case "hostharesponse":
+		return "HAForHostResponse"
 	default:
 		return "string"
 	}
diff --git a/generate/layout.go b/generate/layout.go
index 3a648d7..fa82c51 100644
--- a/generate/layout.go
+++ b/generate/layout.go
@@ -178,6 +178,8 @@ var layout = apiInfo{
 		"addHost",
 		"addSecondaryStorage",
 		"cancelHostMaintenance",
+		"configureHAForHost",
+		"enableHAForHost",
 		"dedicateHost",
 		"deleteHost",
 		"disableOutOfBandManagementForHost",
@@ -261,6 +263,8 @@ var layout = apiInfo{
 		"deleteZone",
 		"disableOutOfBandManagementForZone",
 		"enableOutOfBandManagementForZone",
+		"disableHAForZone",
+		"enableHAForZone",
 		"listDedicatedZones",
 		"listZones",
 		"releaseDedicatedZone",
@@ -387,6 +391,8 @@ var layout = apiInfo{
 		"deleteCluster",
 		"disableOutOfBandManagementForCluster",
 		"enableOutOfBandManagementForCluster",
+		"enableHAForCluster",
+		"disableHAForCluster",
 		"listClusters",
 		"listClustersMetrics",
 		"listDedicatedClusters",