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/07/27 06:26:17 UTC

[cloudstack-go] 03/03: cloudstack: auto-generate sdk based on 4.15.1.0 listApis.json

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

commit 2691fd1c8adf9c354f2c72e38ad3da0d4bd635d6
Author: Rohit Yadav <ro...@shapeblue.com>
AuthorDate: Tue Jul 27 11:55:38 2021 +0530

    cloudstack: auto-generate sdk based on 4.15.1.0 listApis.json
    
    Signed-off-by: Rohit Yadav <ro...@shapeblue.com>
---
 cloudstack/AccountService.go         |  150 +++--
 cloudstack/AddressService.go         |   28 +-
 cloudstack/AffinityGroupService.go   |    6 +
 cloudstack/BrocadeVCSService.go      |    3 +
 cloudstack/ConfigurationService.go   |   40 +-
 cloudstack/DiskOfferingService.go    |  227 ++++++-
 cloudstack/HostService.go            | 1080 ++++++++++++++++++----------------
 cloudstack/ISOService.go             |   61 ++
 cloudstack/ImageStoreService.go      |  149 +++--
 cloudstack/InternalLBService.go      |  335 ++++++-----
 cloudstack/LDAPService.go            |   85 ++-
 cloudstack/LoadBalancerService.go    |   11 +
 cloudstack/NetworkACLService.go      |    3 +
 cloudstack/NetworkOfferingService.go |   64 ++
 cloudstack/NetworkService.go         |   65 ++
 cloudstack/NicService.go             |   11 +
 cloudstack/PoolService.go            |   10 +
 cloudstack/ProjectService.go         |  553 +++++++++--------
 cloudstack/RoleService.go            |   53 +-
 cloudstack/RouterService.go          |  659 ++++++++++++---------
 cloudstack/SSHService.go             |    6 +
 cloudstack/ServiceOfferingService.go |  180 +++++-
 cloudstack/SnapshotService.go        |  121 ++--
 cloudstack/SwiftService.go           |   46 +-
 cloudstack/SystemVMService.go        |   40 ++
 cloudstack/TemplateService.go        |   84 ++-
 cloudstack/UsageService.go           |   54 ++
 cloudstack/VPCService.go             |  116 ++++
 cloudstack/VPNService.go             |  179 ++++--
 cloudstack/VirtualMachineService.go  |  300 +++++++++-
 cloudstack/VolumeService.go          |   42 ++
 cloudstack/ZoneService.go            |   11 +
 cloudstack/cloudstack.go             |   10 -
 33 files changed, 3316 insertions(+), 1466 deletions(-)

diff --git a/cloudstack/AccountService.go b/cloudstack/AccountService.go
index ea1f1d0..3b84cd3 100644
--- a/cloudstack/AccountService.go
+++ b/cloudstack/AccountService.go
@@ -45,6 +45,12 @@ func (p *AddAccountToProjectParams) toURLValues() url.Values {
 	if v, found := p.p["projectid"]; found {
 		u.Set("projectid", v.(string))
 	}
+	if v, found := p.p["projectroleid"]; found {
+		u.Set("projectroleid", v.(string))
+	}
+	if v, found := p.p["roletype"]; found {
+		u.Set("roletype", v.(string))
+	}
 	return u
 }
 
@@ -69,6 +75,20 @@ func (p *AddAccountToProjectParams) SetProjectid(v string) {
 	p.p["projectid"] = v
 }
 
+func (p *AddAccountToProjectParams) SetProjectroleid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["projectroleid"] = v
+}
+
+func (p *AddAccountToProjectParams) SetRoletype(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["roletype"] = v
+}
+
 // You should always use this function to get a new AddAccountToProjectParams instance,
 // as then you are sure you have configured all required params
 func (s *AccountService) NewAddAccountToProjectParams(projectid string) *AddAccountToProjectParams {
@@ -313,6 +333,7 @@ type CreateAccountResponse struct {
 	Defaultzoneid             string                      `json:"defaultzoneid"`
 	Domain                    string                      `json:"domain"`
 	Domainid                  string                      `json:"domainid"`
+	Domainpath                string                      `json:"domainpath"`
 	Groups                    []string                    `json:"groups"`
 	Id                        string                      `json:"id"`
 	Ipavailable               string                      `json:"ipavailable"`
@@ -642,6 +663,7 @@ type DisableAccountResponse struct {
 	Defaultzoneid             string                       `json:"defaultzoneid"`
 	Domain                    string                       `json:"domain"`
 	Domainid                  string                       `json:"domainid"`
+	Domainpath                string                       `json:"domainpath"`
 	Groups                    []string                     `json:"groups"`
 	Id                        string                       `json:"id"`
 	Ipavailable               string                       `json:"ipavailable"`
@@ -792,6 +814,7 @@ type EnableAccountResponse struct {
 	Defaultzoneid             string                      `json:"defaultzoneid"`
 	Domain                    string                      `json:"domain"`
 	Domainid                  string                      `json:"domainid"`
+	Domainpath                string                      `json:"domainpath"`
 	Groups                    []string                    `json:"groups"`
 	Id                        string                      `json:"id"`
 	Ipavailable               string                      `json:"ipavailable"`
@@ -944,6 +967,10 @@ func (p *ListAccountsParams) toURLValues() url.Values {
 		vv := strconv.FormatInt(v.(int64), 10)
 		u.Set("accounttype", vv)
 	}
+	if v, found := p.p["details"]; found {
+		vv := strings.Join(v.([]string), ",")
+		u.Set("details", vv)
+	}
 	if v, found := p.p["domainid"]; found {
 		u.Set("domainid", v.(string))
 	}
@@ -989,6 +1016,13 @@ func (p *ListAccountsParams) SetAccounttype(v int64) {
 	p.p["accounttype"] = v
 }
 
+func (p *ListAccountsParams) SetDetails(v []string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["details"] = v
+}
+
 func (p *ListAccountsParams) SetDomainid(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1179,6 +1213,7 @@ type Account struct {
 	Defaultzoneid             string            `json:"defaultzoneid"`
 	Domain                    string            `json:"domain"`
 	Domainid                  string            `json:"domainid"`
+	Domainpath                string            `json:"domainpath"`
 	Groups                    []string          `json:"groups"`
 	Id                        string            `json:"id"`
 	Ipavailable               string            `json:"ipavailable"`
@@ -1281,9 +1316,15 @@ func (p *ListProjectAccountsParams) toURLValues() url.Values {
 	if v, found := p.p["projectid"]; found {
 		u.Set("projectid", v.(string))
 	}
+	if v, found := p.p["projectroleid"]; found {
+		u.Set("projectroleid", v.(string))
+	}
 	if v, found := p.p["role"]; found {
 		u.Set("role", v.(string))
 	}
+	if v, found := p.p["userid"]; found {
+		u.Set("userid", v.(string))
+	}
 	return u
 }
 
@@ -1322,6 +1363,13 @@ func (p *ListProjectAccountsParams) SetProjectid(v string) {
 	p.p["projectid"] = v
 }
 
+func (p *ListProjectAccountsParams) SetProjectroleid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["projectroleid"] = v
+}
+
 func (p *ListProjectAccountsParams) SetRole(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1329,6 +1377,13 @@ func (p *ListProjectAccountsParams) SetRole(v string) {
 	p.p["role"] = v
 }
 
+func (p *ListProjectAccountsParams) SetUserid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["userid"] = v
+}
+
 // You should always use this function to get a new ListProjectAccountsParams instance,
 // as then you are sure you have configured all required params
 func (s *AccountService) NewListProjectAccountsParams(projectid string) *ListProjectAccountsParams {
@@ -1396,52 +1451,52 @@ type ListProjectAccountsResponse struct {
 }
 
 type ProjectAccount struct {
-	Account                   string  `json:"account"`
-	Cpuavailable              string  `json:"cpuavailable"`
-	Cpulimit                  string  `json:"cpulimit"`
-	Cputotal                  int64   `json:"cputotal"`
-	Displaytext               string  `json:"displaytext"`
-	Domain                    string  `json:"domain"`
-	Domainid                  string  `json:"domainid"`
-	Id                        string  `json:"id"`
-	Ipavailable               string  `json:"ipavailable"`
-	Iplimit                   string  `json:"iplimit"`
-	Iptotal                   int64   `json:"iptotal"`
-	JobID                     string  `json:"jobid"`
-	Jobstatus                 int     `json:"jobstatus"`
-	Memoryavailable           string  `json:"memoryavailable"`
-	Memorylimit               string  `json:"memorylimit"`
-	Memorytotal               int64   `json:"memorytotal"`
-	Name                      string  `json:"name"`
-	Networkavailable          string  `json:"networkavailable"`
-	Networklimit              string  `json:"networklimit"`
-	Networktotal              int64   `json:"networktotal"`
-	Primarystorageavailable   string  `json:"primarystorageavailable"`
-	Primarystoragelimit       string  `json:"primarystoragelimit"`
-	Primarystoragetotal       int64   `json:"primarystoragetotal"`
-	Projectaccountname        string  `json:"projectaccountname"`
-	Secondarystorageavailable string  `json:"secondarystorageavailable"`
-	Secondarystoragelimit     string  `json:"secondarystoragelimit"`
-	Secondarystoragetotal     float64 `json:"secondarystoragetotal"`
-	Snapshotavailable         string  `json:"snapshotavailable"`
-	Snapshotlimit             string  `json:"snapshotlimit"`
-	Snapshottotal             int64   `json:"snapshottotal"`
-	State                     string  `json:"state"`
-	Tags                      []Tags  `json:"tags"`
-	Templateavailable         string  `json:"templateavailable"`
-	Templatelimit             string  `json:"templatelimit"`
-	Templatetotal             int64   `json:"templatetotal"`
-	Vmavailable               string  `json:"vmavailable"`
-	Vmlimit                   string  `json:"vmlimit"`
-	Vmrunning                 int     `json:"vmrunning"`
-	Vmstopped                 int     `json:"vmstopped"`
-	Vmtotal                   int64   `json:"vmtotal"`
-	Volumeavailable           string  `json:"volumeavailable"`
-	Volumelimit               string  `json:"volumelimit"`
-	Volumetotal               int64   `json:"volumetotal"`
-	Vpcavailable              string  `json:"vpcavailable"`
-	Vpclimit                  string  `json:"vpclimit"`
-	Vpctotal                  int64   `json:"vpctotal"`
+	Cpuavailable              string   `json:"cpuavailable"`
+	Cpulimit                  string   `json:"cpulimit"`
+	Cputotal                  int64    `json:"cputotal"`
+	Displaytext               string   `json:"displaytext"`
+	Domain                    string   `json:"domain"`
+	Domainid                  string   `json:"domainid"`
+	Id                        string   `json:"id"`
+	Ipavailable               string   `json:"ipavailable"`
+	Iplimit                   string   `json:"iplimit"`
+	Iptotal                   int64    `json:"iptotal"`
+	JobID                     string   `json:"jobid"`
+	Jobstatus                 int      `json:"jobstatus"`
+	Memoryavailable           string   `json:"memoryavailable"`
+	Memorylimit               string   `json:"memorylimit"`
+	Memorytotal               int64    `json:"memorytotal"`
+	Name                      string   `json:"name"`
+	Networkavailable          string   `json:"networkavailable"`
+	Networklimit              string   `json:"networklimit"`
+	Networktotal              int64    `json:"networktotal"`
+	Owner                     []string `json:"owner"`
+	Primarystorageavailable   string   `json:"primarystorageavailable"`
+	Primarystoragelimit       string   `json:"primarystoragelimit"`
+	Primarystoragetotal       int64    `json:"primarystoragetotal"`
+	Projectaccountname        string   `json:"projectaccountname"`
+	Secondarystorageavailable string   `json:"secondarystorageavailable"`
+	Secondarystoragelimit     string   `json:"secondarystoragelimit"`
+	Secondarystoragetotal     float64  `json:"secondarystoragetotal"`
+	Snapshotavailable         string   `json:"snapshotavailable"`
+	Snapshotlimit             string   `json:"snapshotlimit"`
+	Snapshottotal             int64    `json:"snapshottotal"`
+	State                     string   `json:"state"`
+	Tags                      []Tags   `json:"tags"`
+	Templateavailable         string   `json:"templateavailable"`
+	Templatelimit             string   `json:"templatelimit"`
+	Templatetotal             int64    `json:"templatetotal"`
+	Vmavailable               string   `json:"vmavailable"`
+	Vmlimit                   string   `json:"vmlimit"`
+	Vmrunning                 int      `json:"vmrunning"`
+	Vmstopped                 int      `json:"vmstopped"`
+	Vmtotal                   int64    `json:"vmtotal"`
+	Volumeavailable           string   `json:"volumeavailable"`
+	Volumelimit               string   `json:"volumelimit"`
+	Volumetotal               int64    `json:"volumetotal"`
+	Vpcavailable              string   `json:"vpcavailable"`
+	Vpclimit                  string   `json:"vpclimit"`
+	Vpctotal                  int64    `json:"vpctotal"`
 }
 
 type Tags struct {
@@ -1523,6 +1578,7 @@ type LockAccountResponse struct {
 	Defaultzoneid             string                    `json:"defaultzoneid"`
 	Domain                    string                    `json:"domain"`
 	Domainid                  string                    `json:"domainid"`
+	Domainpath                string                    `json:"domainpath"`
 	Groups                    []string                  `json:"groups"`
 	Id                        string                    `json:"id"`
 	Ipavailable               string                    `json:"ipavailable"`
@@ -1696,6 +1752,7 @@ type MarkDefaultZoneForAccountResponse struct {
 	Defaultzoneid             string                                  `json:"defaultzoneid"`
 	Domain                    string                                  `json:"domain"`
 	Domainid                  string                                  `json:"domainid"`
+	Domainpath                string                                  `json:"domainpath"`
 	Groups                    []string                                `json:"groups"`
 	Id                        string                                  `json:"id"`
 	Ipavailable               string                                  `json:"ipavailable"`
@@ -1890,6 +1947,7 @@ type UpdateAccountResponse struct {
 	Defaultzoneid             string                      `json:"defaultzoneid"`
 	Domain                    string                      `json:"domain"`
 	Domainid                  string                      `json:"domainid"`
+	Domainpath                string                      `json:"domainpath"`
 	Groups                    []string                    `json:"groups"`
 	Id                        string                      `json:"id"`
 	Ipavailable               string                      `json:"ipavailable"`
diff --git a/cloudstack/AddressService.go b/cloudstack/AddressService.go
index 9fa79a2..9904168 100644
--- a/cloudstack/AddressService.go
+++ b/cloudstack/AddressService.go
@@ -46,6 +46,9 @@ func (p *AssociateIpAddressParams) toURLValues() url.Values {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("fordisplay", vv)
 	}
+	if v, found := p.p["ipaddress"]; found {
+		u.Set("ipaddress", v.(string))
+	}
 	if v, found := p.p["isportable"]; found {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("isportable", vv)
@@ -90,6 +93,13 @@ func (p *AssociateIpAddressParams) SetFordisplay(v bool) {
 	p.p["fordisplay"] = v
 }
 
+func (p *AssociateIpAddressParams) SetIpaddress(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["ipaddress"] = v
+}
+
 func (p *AssociateIpAddressParams) SetIsportable(v bool) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -140,7 +150,7 @@ func (s *AddressService) NewAssociateIpAddressParams() *AssociateIpAddressParams
 	return p
 }
 
-// Acquires and associates a public IP to an account. Either of the parameters are required, i.e. either zoneId, or networkId, or vpcId
+// Acquires and associates a public IP to an account.
 func (s *AddressService) AssociateIpAddress(p *AssociateIpAddressParams) (*AssociateIpAddressResponse, error) {
 	resp, err := s.cs.newRequest("associateIpAddress", p.toURLValues())
 	if err != nil {
@@ -193,6 +203,7 @@ type AssociateIpAddressResponse struct {
 	JobID                     string `json:"jobid"`
 	Jobstatus                 int    `json:"jobstatus"`
 	Networkid                 string `json:"networkid"`
+	Networkname               string `json:"networkname"`
 	Physicalnetworkid         string `json:"physicalnetworkid"`
 	Project                   string `json:"project"`
 	Projectid                 string `json:"projectid"`
@@ -206,6 +217,7 @@ type AssociateIpAddressResponse struct {
 	Vlanname                  string `json:"vlanname"`
 	Vmipaddress               string `json:"vmipaddress"`
 	Vpcid                     string `json:"vpcid"`
+	Vpcname                   string `json:"vpcname"`
 	Zoneid                    string `json:"zoneid"`
 	Zonename                  string `json:"zonename"`
 }
@@ -337,6 +349,9 @@ func (p *ListPublicIpAddressesParams) toURLValues() url.Values {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("listall", vv)
 	}
+	if v, found := p.p["networkid"]; found {
+		u.Set("networkid", v.(string))
+	}
 	if v, found := p.p["page"]; found {
 		vv := strconv.Itoa(v.(int))
 		u.Set("page", vv)
@@ -471,6 +486,13 @@ func (p *ListPublicIpAddressesParams) SetListall(v bool) {
 	p.p["listall"] = v
 }
 
+func (p *ListPublicIpAddressesParams) SetNetworkid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["networkid"] = v
+}
+
 func (p *ListPublicIpAddressesParams) SetPage(v int) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -613,6 +635,7 @@ type PublicIpAddress struct {
 	JobID                     string `json:"jobid"`
 	Jobstatus                 int    `json:"jobstatus"`
 	Networkid                 string `json:"networkid"`
+	Networkname               string `json:"networkname"`
 	Physicalnetworkid         string `json:"physicalnetworkid"`
 	Project                   string `json:"project"`
 	Projectid                 string `json:"projectid"`
@@ -626,6 +649,7 @@ type PublicIpAddress struct {
 	Vlanname                  string `json:"vlanname"`
 	Vmipaddress               string `json:"vmipaddress"`
 	Vpcid                     string `json:"vpcid"`
+	Vpcname                   string `json:"vpcname"`
 	Zoneid                    string `json:"zoneid"`
 	Zonename                  string `json:"zonename"`
 }
@@ -735,6 +759,7 @@ type UpdateIpAddressResponse struct {
 	JobID                     string `json:"jobid"`
 	Jobstatus                 int    `json:"jobstatus"`
 	Networkid                 string `json:"networkid"`
+	Networkname               string `json:"networkname"`
 	Physicalnetworkid         string `json:"physicalnetworkid"`
 	Project                   string `json:"project"`
 	Projectid                 string `json:"projectid"`
@@ -748,6 +773,7 @@ type UpdateIpAddressResponse struct {
 	Vlanname                  string `json:"vlanname"`
 	Vmipaddress               string `json:"vmipaddress"`
 	Vpcid                     string `json:"vpcid"`
+	Vpcname                   string `json:"vpcname"`
 	Zoneid                    string `json:"zoneid"`
 	Zonename                  string `json:"zonename"`
 }
diff --git a/cloudstack/AffinityGroupService.go b/cloudstack/AffinityGroupService.go
index 45822fe..30d61cc 100644
--- a/cloudstack/AffinityGroupService.go
+++ b/cloudstack/AffinityGroupService.go
@@ -705,6 +705,10 @@ func (s *AffinityGroupService) UpdateVMAffinityGroup(p *UpdateVMAffinityGroupPar
 type UpdateVMAffinityGroupResponse struct {
 	Account               string                                       `json:"account"`
 	Affinitygroup         []UpdateVMAffinityGroupResponseAffinitygroup `json:"affinitygroup"`
+	Backupofferingid      string                                       `json:"backupofferingid"`
+	Backupofferingname    string                                       `json:"backupofferingname"`
+	Bootmode              string                                       `json:"bootmode"`
+	Boottype              string                                       `json:"boottype"`
 	Cpunumber             int                                          `json:"cpunumber"`
 	Cpuspeed              int                                          `json:"cpuspeed"`
 	Cpuused               string                                       `json:"cpuused"`
@@ -745,6 +749,7 @@ type UpdateVMAffinityGroupResponse struct {
 	Networkkbsread        int64                                        `json:"networkkbsread"`
 	Networkkbswrite       int64                                        `json:"networkkbswrite"`
 	Nic                   []Nic                                        `json:"nic"`
+	Osdisplayname         string                                       `json:"osdisplayname"`
 	Ostypeid              string                                       `json:"ostypeid"`
 	Password              string                                       `json:"password"`
 	Passwordenabled       bool                                         `json:"passwordenabled"`
@@ -752,6 +757,7 @@ type UpdateVMAffinityGroupResponse struct {
 	Projectid             string                                       `json:"projectid"`
 	Publicip              string                                       `json:"publicip"`
 	Publicipid            string                                       `json:"publicipid"`
+	Readonlyuidetails     string                                       `json:"readonlyuidetails"`
 	Rootdeviceid          int64                                        `json:"rootdeviceid"`
 	Rootdevicetype        string                                       `json:"rootdevicetype"`
 	Securitygroup         []UpdateVMAffinityGroupResponseSecuritygroup `json:"securitygroup"`
diff --git a/cloudstack/BrocadeVCSService.go b/cloudstack/BrocadeVCSService.go
index c031dc2..cfabd1c 100644
--- a/cloudstack/BrocadeVCSService.go
+++ b/cloudstack/BrocadeVCSService.go
@@ -326,11 +326,13 @@ type ListBrocadeVcsDeviceNetworksResponse struct {
 type BrocadeVcsDeviceNetwork struct {
 	Account                     string                           `json:"account"`
 	Aclid                       string                           `json:"aclid"`
+	Aclname                     string                           `json:"aclname"`
 	Acltype                     string                           `json:"acltype"`
 	Broadcastdomaintype         string                           `json:"broadcastdomaintype"`
 	Broadcasturi                string                           `json:"broadcasturi"`
 	Canusefordeploy             bool                             `json:"canusefordeploy"`
 	Cidr                        string                           `json:"cidr"`
+	Details                     map[string]string                `json:"details"`
 	Displaynetwork              bool                             `json:"displaynetwork"`
 	Displaytext                 string                           `json:"displaytext"`
 	Dns1                        string                           `json:"dns1"`
@@ -373,6 +375,7 @@ type BrocadeVcsDeviceNetwork struct {
 	Type                        string                           `json:"type"`
 	Vlan                        string                           `json:"vlan"`
 	Vpcid                       string                           `json:"vpcid"`
+	Vpcname                     string                           `json:"vpcname"`
 	Zoneid                      string                           `json:"zoneid"`
 	Zonename                    string                           `json:"zonename"`
 	Zonesnetworkspans           []interface{}                    `json:"zonesnetworkspans"`
diff --git a/cloudstack/ConfigurationService.go b/cloudstack/ConfigurationService.go
index 431fe7e..c58cad6 100644
--- a/cloudstack/ConfigurationService.go
+++ b/cloudstack/ConfigurationService.go
@@ -65,23 +65,27 @@ type ListCapabilitiesResponse struct {
 }
 
 type Capability struct {
-	Allowusercreateprojects   bool   `json:"allowusercreateprojects"`
-	Allowuserexpungerecovervm bool   `json:"allowuserexpungerecovervm"`
-	Allowuserviewdestroyedvm  bool   `json:"allowuserviewdestroyedvm"`
-	Apilimitinterval          int    `json:"apilimitinterval"`
-	Apilimitmax               int    `json:"apilimitmax"`
-	Cloudstackversion         string `json:"cloudstackversion"`
-	Customdiskofferingmaxsize int64  `json:"customdiskofferingmaxsize"`
-	Customdiskofferingminsize int64  `json:"customdiskofferingminsize"`
-	Dynamicrolesenabled       bool   `json:"dynamicrolesenabled"`
-	JobID                     string `json:"jobid"`
-	Jobstatus                 int    `json:"jobstatus"`
-	Kvmsnapshotenabled        bool   `json:"kvmsnapshotenabled"`
-	Projectinviterequired     bool   `json:"projectinviterequired"`
-	Regionsecondaryenabled    bool   `json:"regionsecondaryenabled"`
-	Securitygroupsenabled     bool   `json:"securitygroupsenabled"`
-	SupportELB                string `json:"supportELB"`
-	Userpublictemplateenabled bool   `json:"userpublictemplateenabled"`
+	Allowusercreateprojects                      bool   `json:"allowusercreateprojects"`
+	Allowuserexpungerecovervm                    bool   `json:"allowuserexpungerecovervm"`
+	Allowuserexpungerecovervolume                bool   `json:"allowuserexpungerecovervolume"`
+	Allowuserviewalldomainaccounts               bool   `json:"allowuserviewalldomainaccounts"`
+	Allowuserviewdestroyedvm                     bool   `json:"allowuserviewdestroyedvm"`
+	Apilimitinterval                             int    `json:"apilimitinterval"`
+	Apilimitmax                                  int    `json:"apilimitmax"`
+	Cloudstackversion                            string `json:"cloudstackversion"`
+	Customdiskofferingmaxsize                    int64  `json:"customdiskofferingmaxsize"`
+	Customdiskofferingminsize                    int64  `json:"customdiskofferingminsize"`
+	Dynamicrolesenabled                          bool   `json:"dynamicrolesenabled"`
+	JobID                                        string `json:"jobid"`
+	Jobstatus                                    int    `json:"jobstatus"`
+	Kubernetesclusterexperimentalfeaturesenabled bool   `json:"kubernetesclusterexperimentalfeaturesenabled"`
+	Kubernetesserviceenabled                     bool   `json:"kubernetesserviceenabled"`
+	Kvmsnapshotenabled                           bool   `json:"kvmsnapshotenabled"`
+	Projectinviterequired                        bool   `json:"projectinviterequired"`
+	Regionsecondaryenabled                       bool   `json:"regionsecondaryenabled"`
+	Securitygroupsenabled                        bool   `json:"securitygroupsenabled"`
+	SupportELB                                   string `json:"supportELB"`
+	Userpublictemplateenabled                    bool   `json:"userpublictemplateenabled"`
 }
 
 type ListConfigurationsParams struct {
@@ -240,6 +244,7 @@ type Configuration struct {
 	Category    string `json:"category"`
 	Description string `json:"description"`
 	Id          int64  `json:"id"`
+	Isdynamic   bool   `json:"isdynamic"`
 	JobID       string `json:"jobid"`
 	Jobstatus   int    `json:"jobstatus"`
 	Name        string `json:"name"`
@@ -445,6 +450,7 @@ type UpdateConfigurationResponse struct {
 	Category    string `json:"category"`
 	Description string `json:"description"`
 	Id          int64  `json:"id"`
+	Isdynamic   bool   `json:"isdynamic"`
 	JobID       string `json:"jobid"`
 	Jobstatus   int    `json:"jobstatus"`
 	Name        string `json:"name"`
diff --git a/cloudstack/DiskOfferingService.go b/cloudstack/DiskOfferingService.go
index 3dc8bf3..c04c7d4 100644
--- a/cloudstack/DiskOfferingService.go
+++ b/cloudstack/DiskOfferingService.go
@@ -60,6 +60,9 @@ func (p *CreateDiskOfferingParams) toURLValues() url.Values {
 		vv := strconv.FormatInt(v.(int64), 10)
 		u.Set("byteswriteratemaxlength", vv)
 	}
+	if v, found := p.p["cachemode"]; found {
+		u.Set("cachemode", v.(string))
+	}
 	if v, found := p.p["customized"]; found {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("customized", vv)
@@ -80,7 +83,8 @@ func (p *CreateDiskOfferingParams) toURLValues() url.Values {
 		u.Set("displaytext", v.(string))
 	}
 	if v, found := p.p["domainid"]; found {
-		u.Set("domainid", v.(string))
+		vv := strings.Join(v.([]string), ",")
+		u.Set("domainid", vv)
 	}
 	if v, found := p.p["hypervisorsnapshotreserve"]; found {
 		vv := strconv.Itoa(v.(int))
@@ -124,12 +128,19 @@ func (p *CreateDiskOfferingParams) toURLValues() url.Values {
 	if v, found := p.p["provisioningtype"]; found {
 		u.Set("provisioningtype", v.(string))
 	}
+	if v, found := p.p["storagepolicy"]; found {
+		u.Set("storagepolicy", v.(string))
+	}
 	if v, found := p.p["storagetype"]; found {
 		u.Set("storagetype", v.(string))
 	}
 	if v, found := p.p["tags"]; found {
 		u.Set("tags", v.(string))
 	}
+	if v, found := p.p["zoneid"]; found {
+		vv := strings.Join(v.([]string), ",")
+		u.Set("zoneid", vv)
+	}
 	return u
 }
 
@@ -175,6 +186,13 @@ func (p *CreateDiskOfferingParams) SetByteswriteratemaxlength(v int64) {
 	p.p["byteswriteratemaxlength"] = v
 }
 
+func (p *CreateDiskOfferingParams) SetCachemode(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["cachemode"] = v
+}
+
 func (p *CreateDiskOfferingParams) SetCustomized(v bool) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -210,7 +228,7 @@ func (p *CreateDiskOfferingParams) SetDisplaytext(v string) {
 	p.p["displaytext"] = v
 }
 
-func (p *CreateDiskOfferingParams) SetDomainid(v string) {
+func (p *CreateDiskOfferingParams) SetDomainid(v []string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
 	}
@@ -294,6 +312,13 @@ func (p *CreateDiskOfferingParams) SetProvisioningtype(v string) {
 	p.p["provisioningtype"] = v
 }
 
+func (p *CreateDiskOfferingParams) SetStoragepolicy(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["storagepolicy"] = v
+}
+
 func (p *CreateDiskOfferingParams) SetStoragetype(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -308,6 +333,13 @@ func (p *CreateDiskOfferingParams) SetTags(v string) {
 	p.p["tags"] = v
 }
 
+func (p *CreateDiskOfferingParams) 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 CreateDiskOfferingParams instance,
 // as then you are sure you have configured all required params
 func (s *DiskOfferingService) NewCreateDiskOfferingParams(displaytext string, name string) *CreateDiskOfferingParams {
@@ -365,6 +397,9 @@ type CreateDiskOfferingResponse struct {
 	Provisioningtype            string `json:"provisioningtype"`
 	Storagetype                 string `json:"storagetype"`
 	Tags                        string `json:"tags"`
+	Vspherestoragepolicy        string `json:"vspherestoragepolicy"`
+	Zone                        string `json:"zone"`
+	Zoneid                      string `json:"zoneid"`
 }
 
 type DeleteDiskOfferingParams struct {
@@ -484,6 +519,9 @@ func (p *ListDiskOfferingsParams) toURLValues() url.Values {
 		vv := strconv.Itoa(v.(int))
 		u.Set("pagesize", vv)
 	}
+	if v, found := p.p["zoneid"]; found {
+		u.Set("zoneid", v.(string))
+	}
 	return u
 }
 
@@ -543,6 +581,13 @@ func (p *ListDiskOfferingsParams) SetPagesize(v int) {
 	p.p["pagesize"] = v
 }
 
+func (p *ListDiskOfferingsParams) 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 ListDiskOfferingsParams instance,
 // as then you are sure you have configured all required params
 func (s *DiskOfferingService) NewListDiskOfferingsParams() *ListDiskOfferingsParams {
@@ -686,6 +731,9 @@ type DiskOffering struct {
 	Provisioningtype            string `json:"provisioningtype"`
 	Storagetype                 string `json:"storagetype"`
 	Tags                        string `json:"tags"`
+	Vspherestoragepolicy        string `json:"vspherestoragepolicy"`
+	Zone                        string `json:"zone"`
+	Zoneid                      string `json:"zoneid"`
 }
 
 type UpdateDiskOfferingParams struct {
@@ -697,6 +745,33 @@ func (p *UpdateDiskOfferingParams) toURLValues() url.Values {
 	if p.p == nil {
 		return u
 	}
+	if v, found := p.p["bytesreadrate"]; found {
+		vv := strconv.FormatInt(v.(int64), 10)
+		u.Set("bytesreadrate", vv)
+	}
+	if v, found := p.p["bytesreadratemax"]; found {
+		vv := strconv.FormatInt(v.(int64), 10)
+		u.Set("bytesreadratemax", vv)
+	}
+	if v, found := p.p["bytesreadratemaxlength"]; found {
+		vv := strconv.FormatInt(v.(int64), 10)
+		u.Set("bytesreadratemaxlength", vv)
+	}
+	if v, found := p.p["byteswriterate"]; found {
+		vv := strconv.FormatInt(v.(int64), 10)
+		u.Set("byteswriterate", vv)
+	}
+	if v, found := p.p["byteswriteratemax"]; found {
+		vv := strconv.FormatInt(v.(int64), 10)
+		u.Set("byteswriteratemax", vv)
+	}
+	if v, found := p.p["byteswriteratemaxlength"]; found {
+		vv := strconv.FormatInt(v.(int64), 10)
+		u.Set("byteswriteratemaxlength", vv)
+	}
+	if v, found := p.p["cachemode"]; found {
+		u.Set("cachemode", v.(string))
+	}
 	if v, found := p.p["displayoffering"]; found {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("displayoffering", vv)
@@ -704,9 +779,36 @@ func (p *UpdateDiskOfferingParams) toURLValues() url.Values {
 	if v, found := p.p["displaytext"]; found {
 		u.Set("displaytext", v.(string))
 	}
+	if v, found := p.p["domainid"]; found {
+		u.Set("domainid", v.(string))
+	}
 	if v, found := p.p["id"]; found {
 		u.Set("id", v.(string))
 	}
+	if v, found := p.p["iopsreadrate"]; found {
+		vv := strconv.FormatInt(v.(int64), 10)
+		u.Set("iopsreadrate", vv)
+	}
+	if v, found := p.p["iopsreadratemax"]; found {
+		vv := strconv.FormatInt(v.(int64), 10)
+		u.Set("iopsreadratemax", vv)
+	}
+	if v, found := p.p["iopsreadratemaxlength"]; found {
+		vv := strconv.FormatInt(v.(int64), 10)
+		u.Set("iopsreadratemaxlength", vv)
+	}
+	if v, found := p.p["iopswriterate"]; found {
+		vv := strconv.FormatInt(v.(int64), 10)
+		u.Set("iopswriterate", vv)
+	}
+	if v, found := p.p["iopswriteratemax"]; found {
+		vv := strconv.FormatInt(v.(int64), 10)
+		u.Set("iopswriteratemax", vv)
+	}
+	if v, found := p.p["iopswriteratemaxlength"]; found {
+		vv := strconv.FormatInt(v.(int64), 10)
+		u.Set("iopswriteratemaxlength", vv)
+	}
 	if v, found := p.p["name"]; found {
 		u.Set("name", v.(string))
 	}
@@ -714,9 +816,64 @@ func (p *UpdateDiskOfferingParams) toURLValues() url.Values {
 		vv := strconv.Itoa(v.(int))
 		u.Set("sortkey", vv)
 	}
+	if v, found := p.p["tags"]; found {
+		u.Set("tags", v.(string))
+	}
+	if v, found := p.p["zoneid"]; found {
+		u.Set("zoneid", v.(string))
+	}
 	return u
 }
 
+func (p *UpdateDiskOfferingParams) SetBytesreadrate(v int64) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["bytesreadrate"] = v
+}
+
+func (p *UpdateDiskOfferingParams) SetBytesreadratemax(v int64) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["bytesreadratemax"] = v
+}
+
+func (p *UpdateDiskOfferingParams) SetBytesreadratemaxlength(v int64) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["bytesreadratemaxlength"] = v
+}
+
+func (p *UpdateDiskOfferingParams) SetByteswriterate(v int64) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["byteswriterate"] = v
+}
+
+func (p *UpdateDiskOfferingParams) SetByteswriteratemax(v int64) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["byteswriteratemax"] = v
+}
+
+func (p *UpdateDiskOfferingParams) SetByteswriteratemaxlength(v int64) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["byteswriteratemaxlength"] = v
+}
+
+func (p *UpdateDiskOfferingParams) SetCachemode(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["cachemode"] = v
+}
+
 func (p *UpdateDiskOfferingParams) SetDisplayoffering(v bool) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -731,6 +888,13 @@ func (p *UpdateDiskOfferingParams) SetDisplaytext(v string) {
 	p.p["displaytext"] = v
 }
 
+func (p *UpdateDiskOfferingParams) SetDomainid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["domainid"] = v
+}
+
 func (p *UpdateDiskOfferingParams) SetId(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -738,6 +902,48 @@ func (p *UpdateDiskOfferingParams) SetId(v string) {
 	p.p["id"] = v
 }
 
+func (p *UpdateDiskOfferingParams) SetIopsreadrate(v int64) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["iopsreadrate"] = v
+}
+
+func (p *UpdateDiskOfferingParams) SetIopsreadratemax(v int64) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["iopsreadratemax"] = v
+}
+
+func (p *UpdateDiskOfferingParams) SetIopsreadratemaxlength(v int64) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["iopsreadratemaxlength"] = v
+}
+
+func (p *UpdateDiskOfferingParams) SetIopswriterate(v int64) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["iopswriterate"] = v
+}
+
+func (p *UpdateDiskOfferingParams) SetIopswriteratemax(v int64) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["iopswriteratemax"] = v
+}
+
+func (p *UpdateDiskOfferingParams) SetIopswriteratemaxlength(v int64) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["iopswriteratemaxlength"] = v
+}
+
 func (p *UpdateDiskOfferingParams) SetName(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -752,6 +958,20 @@ func (p *UpdateDiskOfferingParams) SetSortkey(v int) {
 	p.p["sortkey"] = v
 }
 
+func (p *UpdateDiskOfferingParams) SetTags(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["tags"] = v
+}
+
+func (p *UpdateDiskOfferingParams) 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 UpdateDiskOfferingParams instance,
 // as then you are sure you have configured all required params
 func (s *DiskOfferingService) NewUpdateDiskOfferingParams(id string) *UpdateDiskOfferingParams {
@@ -808,4 +1028,7 @@ type UpdateDiskOfferingResponse struct {
 	Provisioningtype            string `json:"provisioningtype"`
 	Storagetype                 string `json:"storagetype"`
 	Tags                        string `json:"tags"`
+	Vspherestoragepolicy        string `json:"vspherestoragepolicy"`
+	Zone                        string `json:"zone"`
+	Zoneid                      string `json:"zoneid"`
 }
diff --git a/cloudstack/HostService.go b/cloudstack/HostService.go
index d7e9df8..1abbd5f 100644
--- a/cloudstack/HostService.go
+++ b/cloudstack/HostService.go
@@ -180,60 +180,66 @@ func (s *HostService) AddBaremetalHost(p *AddBaremetalHostParams) (*AddBaremetal
 }
 
 type AddBaremetalHostResponse struct {
-	Annotation                 string                             `json:"annotation"`
-	Averageload                int64                              `json:"averageload"`
-	Capabilities               string                             `json:"capabilities"`
-	Clusterid                  string                             `json:"clusterid"`
-	Clustername                string                             `json:"clustername"`
-	Clustertype                string                             `json:"clustertype"`
-	Cpuallocated               string                             `json:"cpuallocated"`
-	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"`
-	Events                     string                             `json:"events"`
-	Gpugroup                   []AddBaremetalHostResponseGpugroup `json:"gpugroup"`
-	Hahost                     bool                               `json:"hahost"`
-	Hasenoughcapacity          bool                               `json:"hasenoughcapacity"`
-	Hostha                     string                             `json:"hostha"`
-	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"`
-	Lastannotated              string                             `json:"lastannotated"`
-	Lastpinged                 string                             `json:"lastpinged"`
-	Managementserverid         int64                              `json:"managementserverid"`
-	Memoryallocated            int64                              `json:"memoryallocated"`
-	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"`
-	Username                   string                             `json:"username"`
-	Version                    string                             `json:"version"`
-	Zoneid                     string                             `json:"zoneid"`
-	Zonename                   string                             `json:"zonename"`
+	Annotation                       string                             `json:"annotation"`
+	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                   string                             `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"`
+	Events                           string                             `json:"events"`
+	Gpugroup                         []AddBaremetalHostResponseGpugroup `json:"gpugroup"`
+	Hahost                           bool                               `json:"hahost"`
+	Hasenoughcapacity                bool                               `json:"hasenoughcapacity"`
+	Hostha                           string                             `json:"hostha"`
+	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"`
+	Lastannotated                    string                             `json:"lastannotated"`
+	Lastpinged                       string                             `json:"lastpinged"`
+	Managementserverid               string                             `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 {
@@ -496,60 +502,66 @@ func (s *HostService) AddHost(p *AddHostParams) (*AddHostResponse, error) {
 }
 
 type AddHostResponse struct {
-	Annotation                 string                      `json:"annotation"`
-	Averageload                int64                       `json:"averageload"`
-	Capabilities               string                      `json:"capabilities"`
-	Clusterid                  string                      `json:"clusterid"`
-	Clustername                string                      `json:"clustername"`
-	Clustertype                string                      `json:"clustertype"`
-	Cpuallocated               string                      `json:"cpuallocated"`
-	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"`
-	Events                     string                      `json:"events"`
-	Gpugroup                   []AddHostResponseGpugroup   `json:"gpugroup"`
-	Hahost                     bool                        `json:"hahost"`
-	Hasenoughcapacity          bool                        `json:"hasenoughcapacity"`
-	Hostha                     string                      `json:"hostha"`
-	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"`
-	Lastannotated              string                      `json:"lastannotated"`
-	Lastpinged                 string                      `json:"lastpinged"`
-	Managementserverid         int64                       `json:"managementserverid"`
-	Memoryallocated            int64                       `json:"memoryallocated"`
-	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"`
-	Username                   string                      `json:"username"`
-	Version                    string                      `json:"version"`
-	Zoneid                     string                      `json:"zoneid"`
-	Zonename                   string                      `json:"zonename"`
+	Annotation                       string                      `json:"annotation"`
+	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                   string                      `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"`
+	Events                           string                      `json:"events"`
+	Gpugroup                         []AddHostResponseGpugroup   `json:"gpugroup"`
+	Hahost                           bool                        `json:"hahost"`
+	Hasenoughcapacity                bool                        `json:"hasenoughcapacity"`
+	Hostha                           string                      `json:"hostha"`
+	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"`
+	Lastannotated                    string                      `json:"lastannotated"`
+	Lastpinged                       string                      `json:"lastpinged"`
+	Managementserverid               string                      `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 {
@@ -625,16 +637,19 @@ func (s *HostService) AddSecondaryStorage(p *AddSecondaryStorageParams) (*AddSec
 }
 
 type AddSecondaryStorageResponse struct {
-	Id           string `json:"id"`
-	JobID        string `json:"jobid"`
-	Jobstatus    int    `json:"jobstatus"`
-	Name         string `json:"name"`
-	Protocol     string `json:"protocol"`
-	Providername string `json:"providername"`
-	Scope        string `json:"scope"`
-	Url          string `json:"url"`
-	Zoneid       string `json:"zoneid"`
-	Zonename     string `json:"zonename"`
+	Disksizetotal int64  `json:"disksizetotal"`
+	Disksizeused  int64  `json:"disksizeused"`
+	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 {
@@ -704,60 +719,66 @@ func (s *HostService) CancelHostMaintenance(p *CancelHostMaintenanceParams) (*Ca
 }
 
 type CancelHostMaintenanceResponse struct {
-	Annotation                 string                                  `json:"annotation"`
-	Averageload                int64                                   `json:"averageload"`
-	Capabilities               string                                  `json:"capabilities"`
-	Clusterid                  string                                  `json:"clusterid"`
-	Clustername                string                                  `json:"clustername"`
-	Clustertype                string                                  `json:"clustertype"`
-	Cpuallocated               string                                  `json:"cpuallocated"`
-	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"`
-	Events                     string                                  `json:"events"`
-	Gpugroup                   []CancelHostMaintenanceResponseGpugroup `json:"gpugroup"`
-	Hahost                     bool                                    `json:"hahost"`
-	Hasenoughcapacity          bool                                    `json:"hasenoughcapacity"`
-	Hostha                     string                                  `json:"hostha"`
-	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"`
-	Lastannotated              string                                  `json:"lastannotated"`
-	Lastpinged                 string                                  `json:"lastpinged"`
-	Managementserverid         int64                                   `json:"managementserverid"`
-	Memoryallocated            int64                                   `json:"memoryallocated"`
-	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"`
-	Username                   string                                  `json:"username"`
-	Version                    string                                  `json:"version"`
-	Zoneid                     string                                  `json:"zoneid"`
-	Zonename                   string                                  `json:"zonename"`
+	Annotation                       string                                  `json:"annotation"`
+	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                   string                                  `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"`
+	Events                           string                                  `json:"events"`
+	Gpugroup                         []CancelHostMaintenanceResponseGpugroup `json:"gpugroup"`
+	Hahost                           bool                                    `json:"hahost"`
+	Hasenoughcapacity                bool                                    `json:"hasenoughcapacity"`
+	Hostha                           string                                  `json:"hostha"`
+	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"`
+	Lastannotated                    string                                  `json:"lastannotated"`
+	Lastpinged                       string                                  `json:"lastpinged"`
+	Managementserverid               string                                  `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 {
@@ -1219,53 +1240,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"`
-	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"`
-	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 {
@@ -1806,60 +1832,66 @@ type ListHostsResponse struct {
 }
 
 type Host struct {
-	Annotation                 string                      `json:"annotation"`
-	Averageload                int64                       `json:"averageload"`
-	Capabilities               string                      `json:"capabilities"`
-	Clusterid                  string                      `json:"clusterid"`
-	Clustername                string                      `json:"clustername"`
-	Clustertype                string                      `json:"clustertype"`
-	Cpuallocated               string                      `json:"cpuallocated"`
-	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"`
-	Events                     string                      `json:"events"`
-	Gpugroup                   []HostGpugroup              `json:"gpugroup"`
-	Hahost                     bool                        `json:"hahost"`
-	Hasenoughcapacity          bool                        `json:"hasenoughcapacity"`
-	Hostha                     string                      `json:"hostha"`
-	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"`
-	Lastannotated              string                      `json:"lastannotated"`
-	Lastpinged                 string                      `json:"lastpinged"`
-	Managementserverid         int64                       `json:"managementserverid"`
-	Memoryallocated            int64                       `json:"memoryallocated"`
-	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"`
-	Username                   string                      `json:"username"`
-	Version                    string                      `json:"version"`
-	Zoneid                     string                      `json:"zoneid"`
-	Zonename                   string                      `json:"zonename"`
+	Annotation                       string                      `json:"annotation"`
+	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                   string                      `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"`
+	Events                           string                      `json:"events"`
+	Gpugroup                         []HostGpugroup              `json:"gpugroup"`
+	Hahost                           bool                        `json:"hahost"`
+	Hasenoughcapacity                bool                        `json:"hasenoughcapacity"`
+	Hostha                           string                      `json:"hostha"`
+	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"`
+	Lastannotated                    string                      `json:"lastannotated"`
+	Lastpinged                       string                      `json:"lastpinged"`
+	Managementserverid               string                      `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 {
@@ -2177,78 +2209,84 @@ type ListHostsMetricsResponse struct {
 }
 
 type HostsMetric struct {
-	Annotation                      string                      `json:"annotation"`
-	Averageload                     int64                       `json:"averageload"`
-	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"`
-	Cpuallocatedthreshold           bool                        `json:"cpuallocatedthreshold"`
-	Cpudisablethreshold             bool                        `json:"cpudisablethreshold"`
-	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"`
-	Events                          string                      `json:"events"`
-	Gpugroup                        []HostsMetricGpugroup       `json:"gpugroup"`
-	Hahost                          bool                        `json:"hahost"`
-	Hasenoughcapacity               bool                        `json:"hasenoughcapacity"`
-	Hostha                          string                      `json:"hostha"`
-	Hosttags                        string                      `json:"hosttags"`
-	Hypervisor                      string                      `json:"hypervisor"`
-	Hypervisorversion               string                      `json:"hypervisorversion"`
-	Id                              string                      `json:"id"`
-	Instances                       string                      `json:"instances"`
-	Ipaddress                       string                      `json:"ipaddress"`
-	Islocalstorageactive            bool                        `json:"islocalstorageactive"`
-	JobID                           string                      `json:"jobid"`
-	Jobstatus                       int                         `json:"jobstatus"`
-	Lastannotated                   string                      `json:"lastannotated"`
-	Lastpinged                      string                      `json:"lastpinged"`
-	Managementserverid              int64                       `json:"managementserverid"`
-	Memoryallocated                 int64                       `json:"memoryallocated"`
-	Memoryallocateddisablethreshold bool                        `json:"memoryallocateddisablethreshold"`
-	Memoryallocatedgb               string                      `json:"memoryallocatedgb"`
-	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"`
-	Type                            string                      `json:"type"`
-	Username                        string                      `json:"username"`
-	Version                         string                      `json:"version"`
-	Zoneid                          string                      `json:"zoneid"`
-	Zonename                        string                      `json:"zonename"`
+	Annotation                       string                      `json:"annotation"`
+	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                   string                      `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"`
+	Events                           string                      `json:"events"`
+	Gpugroup                         []HostsMetricGpugroup       `json:"gpugroup"`
+	Hahost                           bool                        `json:"hahost"`
+	Hasenoughcapacity                bool                        `json:"hasenoughcapacity"`
+	Hostha                           string                      `json:"hostha"`
+	Hosttags                         string                      `json:"hosttags"`
+	Hypervisor                       string                      `json:"hypervisor"`
+	Hypervisorversion                string                      `json:"hypervisorversion"`
+	Id                               string                      `json:"id"`
+	Instances                        string                      `json:"instances"`
+	Ipaddress                        string                      `json:"ipaddress"`
+	Islocalstorageactive             bool                        `json:"islocalstorageactive"`
+	JobID                            string                      `json:"jobid"`
+	Jobstatus                        int                         `json:"jobstatus"`
+	Lastannotated                    string                      `json:"lastannotated"`
+	Lastpinged                       string                      `json:"lastpinged"`
+	Managementserverid               string                      `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"`
+	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 {
@@ -2334,60 +2372,66 @@ func (s *HostService) PrepareHostForMaintenance(p *PrepareHostForMaintenancePara
 }
 
 type PrepareHostForMaintenanceResponse struct {
-	Annotation                 string                                      `json:"annotation"`
-	Averageload                int64                                       `json:"averageload"`
-	Capabilities               string                                      `json:"capabilities"`
-	Clusterid                  string                                      `json:"clusterid"`
-	Clustername                string                                      `json:"clustername"`
-	Clustertype                string                                      `json:"clustertype"`
-	Cpuallocated               string                                      `json:"cpuallocated"`
-	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"`
-	Events                     string                                      `json:"events"`
-	Gpugroup                   []PrepareHostForMaintenanceResponseGpugroup `json:"gpugroup"`
-	Hahost                     bool                                        `json:"hahost"`
-	Hasenoughcapacity          bool                                        `json:"hasenoughcapacity"`
-	Hostha                     string                                      `json:"hostha"`
-	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"`
-	Lastannotated              string                                      `json:"lastannotated"`
-	Lastpinged                 string                                      `json:"lastpinged"`
-	Managementserverid         int64                                       `json:"managementserverid"`
-	Memoryallocated            int64                                       `json:"memoryallocated"`
-	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"`
-	Username                   string                                      `json:"username"`
-	Version                    string                                      `json:"version"`
-	Zoneid                     string                                      `json:"zoneid"`
-	Zonename                   string                                      `json:"zonename"`
+	Annotation                       string                                      `json:"annotation"`
+	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                   string                                      `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"`
+	Events                           string                                      `json:"events"`
+	Gpugroup                         []PrepareHostForMaintenanceResponseGpugroup `json:"gpugroup"`
+	Hahost                           bool                                        `json:"hahost"`
+	Hasenoughcapacity                bool                                        `json:"hasenoughcapacity"`
+	Hostha                           string                                      `json:"hostha"`
+	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"`
+	Lastannotated                    string                                      `json:"lastannotated"`
+	Lastpinged                       string                                      `json:"lastpinged"`
+	Managementserverid               string                                      `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 {
@@ -2473,60 +2517,66 @@ func (s *HostService) ReconnectHost(p *ReconnectHostParams) (*ReconnectHostRespo
 }
 
 type ReconnectHostResponse struct {
-	Annotation                 string                          `json:"annotation"`
-	Averageload                int64                           `json:"averageload"`
-	Capabilities               string                          `json:"capabilities"`
-	Clusterid                  string                          `json:"clusterid"`
-	Clustername                string                          `json:"clustername"`
-	Clustertype                string                          `json:"clustertype"`
-	Cpuallocated               string                          `json:"cpuallocated"`
-	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"`
-	Events                     string                          `json:"events"`
-	Gpugroup                   []ReconnectHostResponseGpugroup `json:"gpugroup"`
-	Hahost                     bool                            `json:"hahost"`
-	Hasenoughcapacity          bool                            `json:"hasenoughcapacity"`
-	Hostha                     string                          `json:"hostha"`
-	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"`
-	Lastannotated              string                          `json:"lastannotated"`
-	Lastpinged                 string                          `json:"lastpinged"`
-	Managementserverid         int64                           `json:"managementserverid"`
-	Memoryallocated            int64                           `json:"memoryallocated"`
-	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"`
-	Username                   string                          `json:"username"`
-	Version                    string                          `json:"version"`
-	Zoneid                     string                          `json:"zoneid"`
-	Zonename                   string                          `json:"zonename"`
+	Annotation                       string                          `json:"annotation"`
+	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                   string                          `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"`
+	Events                           string                          `json:"events"`
+	Gpugroup                         []ReconnectHostResponseGpugroup `json:"gpugroup"`
+	Hahost                           bool                            `json:"hahost"`
+	Hasenoughcapacity                bool                            `json:"hasenoughcapacity"`
+	Hostha                           string                          `json:"hostha"`
+	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"`
+	Lastannotated                    string                          `json:"lastannotated"`
+	Lastpinged                       string                          `json:"lastpinged"`
+	Managementserverid               string                          `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 {
@@ -2703,6 +2753,9 @@ func (p *UpdateHostParams) toURLValues() url.Values {
 	if v, found := p.p["id"]; found {
 		u.Set("id", v.(string))
 	}
+	if v, found := p.p["name"]; found {
+		u.Set("name", v.(string))
+	}
 	if v, found := p.p["oscategoryid"]; found {
 		u.Set("oscategoryid", v.(string))
 	}
@@ -2740,6 +2793,13 @@ func (p *UpdateHostParams) SetId(v string) {
 	p.p["id"] = v
 }
 
+func (p *UpdateHostParams) SetName(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["name"] = v
+}
+
 func (p *UpdateHostParams) SetOscategoryid(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -2779,60 +2839,66 @@ func (s *HostService) UpdateHost(p *UpdateHostParams) (*UpdateHostResponse, erro
 }
 
 type UpdateHostResponse struct {
-	Annotation                 string                       `json:"annotation"`
-	Averageload                int64                        `json:"averageload"`
-	Capabilities               string                       `json:"capabilities"`
-	Clusterid                  string                       `json:"clusterid"`
-	Clustername                string                       `json:"clustername"`
-	Clustertype                string                       `json:"clustertype"`
-	Cpuallocated               string                       `json:"cpuallocated"`
-	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"`
-	Events                     string                       `json:"events"`
-	Gpugroup                   []UpdateHostResponseGpugroup `json:"gpugroup"`
-	Hahost                     bool                         `json:"hahost"`
-	Hasenoughcapacity          bool                         `json:"hasenoughcapacity"`
-	Hostha                     string                       `json:"hostha"`
-	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"`
-	Lastannotated              string                       `json:"lastannotated"`
-	Lastpinged                 string                       `json:"lastpinged"`
-	Managementserverid         int64                        `json:"managementserverid"`
-	Memoryallocated            int64                        `json:"memoryallocated"`
-	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"`
-	Username                   string                       `json:"username"`
-	Version                    string                       `json:"version"`
-	Zoneid                     string                       `json:"zoneid"`
-	Zonename                   string                       `json:"zonename"`
+	Annotation                       string                       `json:"annotation"`
+	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                   string                       `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"`
+	Events                           string                       `json:"events"`
+	Gpugroup                         []UpdateHostResponseGpugroup `json:"gpugroup"`
+	Hahost                           bool                         `json:"hahost"`
+	Hasenoughcapacity                bool                         `json:"hasenoughcapacity"`
+	Hostha                           string                       `json:"hostha"`
+	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"`
+	Lastannotated                    string                       `json:"lastannotated"`
+	Lastpinged                       string                       `json:"lastpinged"`
+	Managementserverid               string                       `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 {
diff --git a/cloudstack/ISOService.go b/cloudstack/ISOService.go
index 3f53a5d..e31ac1e 100644
--- a/cloudstack/ISOService.go
+++ b/cloudstack/ISOService.go
@@ -36,6 +36,10 @@ func (p *AttachIsoParams) toURLValues() url.Values {
 	if p.p == nil {
 		return u
 	}
+	if v, found := p.p["forced"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("forced", vv)
+	}
 	if v, found := p.p["id"]; found {
 		u.Set("id", v.(string))
 	}
@@ -45,6 +49,13 @@ func (p *AttachIsoParams) toURLValues() url.Values {
 	return u
 }
 
+func (p *AttachIsoParams) SetForced(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["forced"] = v
+}
+
 func (p *AttachIsoParams) SetId(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -107,6 +118,10 @@ func (s *ISOService) AttachIso(p *AttachIsoParams) (*AttachIsoResponse, error) {
 type AttachIsoResponse struct {
 	Account               string                           `json:"account"`
 	Affinitygroup         []AttachIsoResponseAffinitygroup `json:"affinitygroup"`
+	Backupofferingid      string                           `json:"backupofferingid"`
+	Backupofferingname    string                           `json:"backupofferingname"`
+	Bootmode              string                           `json:"bootmode"`
+	Boottype              string                           `json:"boottype"`
 	Cpunumber             int                              `json:"cpunumber"`
 	Cpuspeed              int                              `json:"cpuspeed"`
 	Cpuused               string                           `json:"cpuused"`
@@ -147,6 +162,7 @@ type AttachIsoResponse struct {
 	Networkkbsread        int64                            `json:"networkkbsread"`
 	Networkkbswrite       int64                            `json:"networkkbswrite"`
 	Nic                   []Nic                            `json:"nic"`
+	Osdisplayname         string                           `json:"osdisplayname"`
 	Ostypeid              string                           `json:"ostypeid"`
 	Password              string                           `json:"password"`
 	Passwordenabled       bool                             `json:"passwordenabled"`
@@ -154,6 +170,7 @@ type AttachIsoResponse struct {
 	Projectid             string                           `json:"projectid"`
 	Publicip              string                           `json:"publicip"`
 	Publicipid            string                           `json:"publicipid"`
+	Readonlyuidetails     string                           `json:"readonlyuidetails"`
 	Rootdeviceid          int64                            `json:"rootdeviceid"`
 	Rootdevicetype        string                           `json:"rootdevicetype"`
 	Securitygroup         []AttachIsoResponseSecuritygroup `json:"securitygroup"`
@@ -347,11 +364,14 @@ type CopyIsoResponse struct {
 	Childtemplates        []interface{}     `json:"childtemplates"`
 	Created               string            `json:"created"`
 	CrossZones            bool              `json:"crossZones"`
+	Deployasis            bool              `json:"deployasis"`
+	Deployasisdetails     map[string]string `json:"deployasisdetails"`
 	Details               map[string]string `json:"details"`
 	Directdownload        bool              `json:"directdownload"`
 	Displaytext           string            `json:"displaytext"`
 	Domain                string            `json:"domain"`
 	Domainid              string            `json:"domainid"`
+	Downloaddetails       []string          `json:"downloaddetails"`
 	Format                string            `json:"format"`
 	Hostid                string            `json:"hostid"`
 	Hostname              string            `json:"hostname"`
@@ -381,6 +401,7 @@ type CopyIsoResponse struct {
 	Tags                  []Tags            `json:"tags"`
 	Templatetag           string            `json:"templatetag"`
 	Templatetype          string            `json:"templatetype"`
+	Url                   string            `json:"url"`
 	Zoneid                string            `json:"zoneid"`
 	Zonename              string            `json:"zonename"`
 }
@@ -499,12 +520,23 @@ func (p *DetachIsoParams) toURLValues() 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["virtualmachineid"]; found {
 		u.Set("virtualmachineid", v.(string))
 	}
 	return u
 }
 
+func (p *DetachIsoParams) SetForced(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["forced"] = v
+}
+
 func (p *DetachIsoParams) SetVirtualmachineid(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -559,6 +591,10 @@ func (s *ISOService) DetachIso(p *DetachIsoParams) (*DetachIsoResponse, error) {
 type DetachIsoResponse struct {
 	Account               string                           `json:"account"`
 	Affinitygroup         []DetachIsoResponseAffinitygroup `json:"affinitygroup"`
+	Backupofferingid      string                           `json:"backupofferingid"`
+	Backupofferingname    string                           `json:"backupofferingname"`
+	Bootmode              string                           `json:"bootmode"`
+	Boottype              string                           `json:"boottype"`
 	Cpunumber             int                              `json:"cpunumber"`
 	Cpuspeed              int                              `json:"cpuspeed"`
 	Cpuused               string                           `json:"cpuused"`
@@ -599,6 +635,7 @@ type DetachIsoResponse struct {
 	Networkkbsread        int64                            `json:"networkkbsread"`
 	Networkkbswrite       int64                            `json:"networkkbswrite"`
 	Nic                   []Nic                            `json:"nic"`
+	Osdisplayname         string                           `json:"osdisplayname"`
 	Ostypeid              string                           `json:"ostypeid"`
 	Password              string                           `json:"password"`
 	Passwordenabled       bool                             `json:"passwordenabled"`
@@ -606,6 +643,7 @@ type DetachIsoResponse struct {
 	Projectid             string                           `json:"projectid"`
 	Publicip              string                           `json:"publicip"`
 	Publicipid            string                           `json:"publicipid"`
+	Readonlyuidetails     string                           `json:"readonlyuidetails"`
 	Rootdeviceid          int64                            `json:"rootdeviceid"`
 	Rootdevicetype        string                           `json:"rootdevicetype"`
 	Securitygroup         []DetachIsoResponseSecuritygroup `json:"securitygroup"`
@@ -968,6 +1006,10 @@ func (p *ListIsosParams) toURLValues() url.Values {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("showremoved", vv)
 	}
+	if v, found := p.p["showunique"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("showunique", vv)
+	}
 	if v, found := p.p["tags"]; found {
 		m := v.(map[string]string)
 		for i, k := range getSortedKeysFromMap(m) {
@@ -1093,6 +1135,13 @@ func (p *ListIsosParams) SetShowremoved(v bool) {
 	p.p["showremoved"] = v
 }
 
+func (p *ListIsosParams) SetShowunique(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["showunique"] = v
+}
+
 func (p *ListIsosParams) SetTags(v map[string]string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1229,11 +1278,14 @@ type Iso struct {
 	Childtemplates        []interface{}     `json:"childtemplates"`
 	Created               string            `json:"created"`
 	CrossZones            bool              `json:"crossZones"`
+	Deployasis            bool              `json:"deployasis"`
+	Deployasisdetails     map[string]string `json:"deployasisdetails"`
 	Details               map[string]string `json:"details"`
 	Directdownload        bool              `json:"directdownload"`
 	Displaytext           string            `json:"displaytext"`
 	Domain                string            `json:"domain"`
 	Domainid              string            `json:"domainid"`
+	Downloaddetails       []string          `json:"downloaddetails"`
 	Format                string            `json:"format"`
 	Hostid                string            `json:"hostid"`
 	Hostname              string            `json:"hostname"`
@@ -1263,6 +1315,7 @@ type Iso struct {
 	Tags                  []Tags            `json:"tags"`
 	Templatetag           string            `json:"templatetag"`
 	Templatetype          string            `json:"templatetype"`
+	Url                   string            `json:"url"`
 	Zoneid                string            `json:"zoneid"`
 	Zonename              string            `json:"zonename"`
 }
@@ -1519,11 +1572,14 @@ type RegisterIsoResponse struct {
 	Childtemplates        []interface{}     `json:"childtemplates"`
 	Created               string            `json:"created"`
 	CrossZones            bool              `json:"crossZones"`
+	Deployasis            bool              `json:"deployasis"`
+	Deployasisdetails     map[string]string `json:"deployasisdetails"`
 	Details               map[string]string `json:"details"`
 	Directdownload        bool              `json:"directdownload"`
 	Displaytext           string            `json:"displaytext"`
 	Domain                string            `json:"domain"`
 	Domainid              string            `json:"domainid"`
+	Downloaddetails       []string          `json:"downloaddetails"`
 	Format                string            `json:"format"`
 	Hostid                string            `json:"hostid"`
 	Hostname              string            `json:"hostname"`
@@ -1553,6 +1609,7 @@ type RegisterIsoResponse struct {
 	Tags                  []Tags            `json:"tags"`
 	Templatetag           string            `json:"templatetag"`
 	Templatetype          string            `json:"templatetype"`
+	Url                   string            `json:"url"`
 	Zoneid                string            `json:"zoneid"`
 	Zonename              string            `json:"zonename"`
 }
@@ -1780,11 +1837,14 @@ type UpdateIsoResponse struct {
 	Childtemplates        []interface{}     `json:"childtemplates"`
 	Created               string            `json:"created"`
 	CrossZones            bool              `json:"crossZones"`
+	Deployasis            bool              `json:"deployasis"`
+	Deployasisdetails     map[string]string `json:"deployasisdetails"`
 	Details               map[string]string `json:"details"`
 	Directdownload        bool              `json:"directdownload"`
 	Displaytext           string            `json:"displaytext"`
 	Domain                string            `json:"domain"`
 	Domainid              string            `json:"domainid"`
+	Downloaddetails       []string          `json:"downloaddetails"`
 	Format                string            `json:"format"`
 	Hostid                string            `json:"hostid"`
 	Hostname              string            `json:"hostname"`
@@ -1814,6 +1874,7 @@ type UpdateIsoResponse struct {
 	Tags                  []Tags            `json:"tags"`
 	Templatetag           string            `json:"templatetag"`
 	Templatetype          string            `json:"templatetype"`
+	Url                   string            `json:"url"`
 	Zoneid                string            `json:"zoneid"`
 	Zonename              string            `json:"zonename"`
 }
diff --git a/cloudstack/ImageStoreService.go b/cloudstack/ImageStoreService.go
index e226364..5535b30 100644
--- a/cloudstack/ImageStoreService.go
+++ b/cloudstack/ImageStoreService.go
@@ -118,16 +118,19 @@ func (s *ImageStoreService) AddImageStore(p *AddImageStoreParams) (*AddImageStor
 }
 
 type AddImageStoreResponse struct {
-	Id           string `json:"id"`
-	JobID        string `json:"jobid"`
-	Jobstatus    int    `json:"jobstatus"`
-	Name         string `json:"name"`
-	Protocol     string `json:"protocol"`
-	Providername string `json:"providername"`
-	Scope        string `json:"scope"`
-	Url          string `json:"url"`
-	Zoneid       string `json:"zoneid"`
-	Zonename     string `json:"zonename"`
+	Disksizetotal int64  `json:"disksizetotal"`
+	Disksizeused  int64  `json:"disksizeused"`
+	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 AddImageStoreS3Params struct {
@@ -286,16 +289,19 @@ func (s *ImageStoreService) AddImageStoreS3(p *AddImageStoreS3Params) (*AddImage
 }
 
 type AddImageStoreS3Response struct {
-	Id           string `json:"id"`
-	JobID        string `json:"jobid"`
-	Jobstatus    int    `json:"jobstatus"`
-	Name         string `json:"name"`
-	Protocol     string `json:"protocol"`
-	Providername string `json:"providername"`
-	Scope        string `json:"scope"`
-	Url          string `json:"url"`
-	Zoneid       string `json:"zoneid"`
-	Zonename     string `json:"zonename"`
+	Disksizetotal int64  `json:"disksizetotal"`
+	Disksizeused  int64  `json:"disksizeused"`
+	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 CreateSecondaryStagingStoreParams struct {
@@ -389,16 +395,19 @@ func (s *ImageStoreService) CreateSecondaryStagingStore(p *CreateSecondaryStagin
 }
 
 type CreateSecondaryStagingStoreResponse struct {
-	Id           string `json:"id"`
-	JobID        string `json:"jobid"`
-	Jobstatus    int    `json:"jobstatus"`
-	Name         string `json:"name"`
-	Protocol     string `json:"protocol"`
-	Providername string `json:"providername"`
-	Scope        string `json:"scope"`
-	Url          string `json:"url"`
-	Zoneid       string `json:"zoneid"`
-	Zonename     string `json:"zonename"`
+	Disksizetotal int64  `json:"disksizetotal"`
+	Disksizeused  int64  `json:"disksizeused"`
+	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 DeleteImageStoreParams struct {
@@ -593,6 +602,10 @@ func (p *ListImageStoresParams) toURLValues() url.Values {
 	if v, found := p.p["provider"]; found {
 		u.Set("provider", v.(string))
 	}
+	if v, found := p.p["readonly"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("readonly", vv)
+	}
 	if v, found := p.p["zoneid"]; found {
 		u.Set("zoneid", v.(string))
 	}
@@ -648,6 +661,13 @@ func (p *ListImageStoresParams) SetProvider(v string) {
 	p.p["provider"] = v
 }
 
+func (p *ListImageStoresParams) SetReadonly(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["readonly"] = v
+}
+
 func (p *ListImageStoresParams) SetZoneid(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -767,16 +787,19 @@ type ListImageStoresResponse struct {
 }
 
 type ImageStore struct {
-	Id           string `json:"id"`
-	JobID        string `json:"jobid"`
-	Jobstatus    int    `json:"jobstatus"`
-	Name         string `json:"name"`
-	Protocol     string `json:"protocol"`
-	Providername string `json:"providername"`
-	Scope        string `json:"scope"`
-	Url          string `json:"url"`
-	Zoneid       string `json:"zoneid"`
-	Zonename     string `json:"zonename"`
+	Disksizetotal int64  `json:"disksizetotal"`
+	Disksizeused  int64  `json:"disksizeused"`
+	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 ListSecondaryStagingStoresParams struct {
@@ -985,16 +1008,19 @@ type ListSecondaryStagingStoresResponse struct {
 }
 
 type SecondaryStagingStore struct {
-	Id           string `json:"id"`
-	JobID        string `json:"jobid"`
-	Jobstatus    int    `json:"jobstatus"`
-	Name         string `json:"name"`
-	Protocol     string `json:"protocol"`
-	Providername string `json:"providername"`
-	Scope        string `json:"scope"`
-	Url          string `json:"url"`
-	Zoneid       string `json:"zoneid"`
-	Zonename     string `json:"zonename"`
+	Disksizetotal int64  `json:"disksizetotal"`
+	Disksizeused  int64  `json:"disksizeused"`
+	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 UpdateCloudToUseObjectStoreParams struct {
@@ -1078,14 +1104,17 @@ func (s *ImageStoreService) UpdateCloudToUseObjectStore(p *UpdateCloudToUseObjec
 }
 
 type UpdateCloudToUseObjectStoreResponse struct {
-	Id           string `json:"id"`
-	JobID        string `json:"jobid"`
-	Jobstatus    int    `json:"jobstatus"`
-	Name         string `json:"name"`
-	Protocol     string `json:"protocol"`
-	Providername string `json:"providername"`
-	Scope        string `json:"scope"`
-	Url          string `json:"url"`
-	Zoneid       string `json:"zoneid"`
-	Zonename     string `json:"zonename"`
+	Disksizetotal int64  `json:"disksizetotal"`
+	Disksizeused  int64  `json:"disksizeused"`
+	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"`
 }
diff --git a/cloudstack/InternalLBService.go b/cloudstack/InternalLBService.go
index 80c0c4b..5f8bf41 100644
--- a/cloudstack/InternalLBService.go
+++ b/cloudstack/InternalLBService.go
@@ -346,6 +346,10 @@ func (p *ListInternalLoadBalancerVMsParams) toURLValues() url.Values {
 	if v, found := p.p["domainid"]; found {
 		u.Set("domainid", v.(string))
 	}
+	if v, found := p.p["fetchhealthcheckresults"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("fetchhealthcheckresults", vv)
+	}
 	if v, found := p.p["forvpc"]; found {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("forvpc", vv)
@@ -413,6 +417,13 @@ func (p *ListInternalLoadBalancerVMsParams) SetDomainid(v string) {
 	p.p["domainid"] = v
 }
 
+func (p *ListInternalLoadBalancerVMsParams) SetFetchhealthcheckresults(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["fetchhealthcheckresults"] = v
+}
+
 func (p *ListInternalLoadBalancerVMsParams) SetForvpc(v bool) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -630,54 +641,66 @@ type ListInternalLoadBalancerVMsResponse struct {
 }
 
 type InternalLoadBalancerVM struct {
-	Account             string `json:"account"`
-	Created             string `json:"created"`
-	Dns1                string `json:"dns1"`
-	Dns2                string `json:"dns2"`
-	Domain              string `json:"domain"`
-	Domainid            string `json:"domainid"`
-	Gateway             string `json:"gateway"`
-	Guestipaddress      string `json:"guestipaddress"`
-	Guestmacaddress     string `json:"guestmacaddress"`
-	Guestnetmask        string `json:"guestnetmask"`
-	Guestnetworkid      string `json:"guestnetworkid"`
-	Guestnetworkname    string `json:"guestnetworkname"`
-	Hostid              string `json:"hostid"`
-	Hostname            string `json:"hostname"`
-	Hypervisor          string `json:"hypervisor"`
-	Id                  string `json:"id"`
-	Ip6dns1             string `json:"ip6dns1"`
-	Ip6dns2             string `json:"ip6dns2"`
-	Isredundantrouter   bool   `json:"isredundantrouter"`
-	JobID               string `json:"jobid"`
-	Jobstatus           int    `json:"jobstatus"`
-	Linklocalip         string `json:"linklocalip"`
-	Linklocalmacaddress string `json:"linklocalmacaddress"`
-	Linklocalnetmask    string `json:"linklocalnetmask"`
-	Linklocalnetworkid  string `json:"linklocalnetworkid"`
-	Name                string `json:"name"`
-	Networkdomain       string `json:"networkdomain"`
-	Nic                 []Nic  `json:"nic"`
-	Podid               string `json:"podid"`
-	Project             string `json:"project"`
-	Projectid           string `json:"projectid"`
-	Publicip            string `json:"publicip"`
-	Publicmacaddress    string `json:"publicmacaddress"`
-	Publicnetmask       string `json:"publicnetmask"`
-	Publicnetworkid     string `json:"publicnetworkid"`
-	Redundantstate      string `json:"redundantstate"`
-	Requiresupgrade     bool   `json:"requiresupgrade"`
-	Role                string `json:"role"`
-	Scriptsversion      string `json:"scriptsversion"`
-	Serviceofferingid   string `json:"serviceofferingid"`
-	Serviceofferingname string `json:"serviceofferingname"`
-	State               string `json:"state"`
-	Templateid          string `json:"templateid"`
-	Version             string `json:"version"`
-	Vpcid               string `json:"vpcid"`
-	Vpcname             string `json:"vpcname"`
-	Zoneid              string `json:"zoneid"`
-	Zonename            string `json:"zonename"`
+	Account             string                                     `json:"account"`
+	Created             string                                     `json:"created"`
+	Dns1                string                                     `json:"dns1"`
+	Dns2                string                                     `json:"dns2"`
+	Domain              string                                     `json:"domain"`
+	Domainid            string                                     `json:"domainid"`
+	Gateway             string                                     `json:"gateway"`
+	Guestipaddress      string                                     `json:"guestipaddress"`
+	Guestmacaddress     string                                     `json:"guestmacaddress"`
+	Guestnetmask        string                                     `json:"guestnetmask"`
+	Guestnetworkid      string                                     `json:"guestnetworkid"`
+	Guestnetworkname    string                                     `json:"guestnetworkname"`
+	Healthcheckresults  []InternalLoadBalancerVMHealthcheckresults `json:"healthcheckresults"`
+	Healthchecksfailed  bool                                       `json:"healthchecksfailed"`
+	Hostid              string                                     `json:"hostid"`
+	Hostname            string                                     `json:"hostname"`
+	Hypervisor          string                                     `json:"hypervisor"`
+	Id                  string                                     `json:"id"`
+	Ip6dns1             string                                     `json:"ip6dns1"`
+	Ip6dns2             string                                     `json:"ip6dns2"`
+	Isredundantrouter   bool                                       `json:"isredundantrouter"`
+	JobID               string                                     `json:"jobid"`
+	Jobstatus           int                                        `json:"jobstatus"`
+	Linklocalip         string                                     `json:"linklocalip"`
+	Linklocalmacaddress string                                     `json:"linklocalmacaddress"`
+	Linklocalnetmask    string                                     `json:"linklocalnetmask"`
+	Linklocalnetworkid  string                                     `json:"linklocalnetworkid"`
+	Name                string                                     `json:"name"`
+	Networkdomain       string                                     `json:"networkdomain"`
+	Nic                 []Nic                                      `json:"nic"`
+	Podid               string                                     `json:"podid"`
+	Podname             string                                     `json:"podname"`
+	Project             string                                     `json:"project"`
+	Projectid           string                                     `json:"projectid"`
+	Publicip            string                                     `json:"publicip"`
+	Publicmacaddress    string                                     `json:"publicmacaddress"`
+	Publicnetmask       string                                     `json:"publicnetmask"`
+	Publicnetworkid     string                                     `json:"publicnetworkid"`
+	Redundantstate      string                                     `json:"redundantstate"`
+	Requiresupgrade     bool                                       `json:"requiresupgrade"`
+	Role                string                                     `json:"role"`
+	Scriptsversion      string                                     `json:"scriptsversion"`
+	Serviceofferingid   string                                     `json:"serviceofferingid"`
+	Serviceofferingname string                                     `json:"serviceofferingname"`
+	State               string                                     `json:"state"`
+	Templateid          string                                     `json:"templateid"`
+	Templatename        string                                     `json:"templatename"`
+	Version             string                                     `json:"version"`
+	Vpcid               string                                     `json:"vpcid"`
+	Vpcname             string                                     `json:"vpcname"`
+	Zoneid              string                                     `json:"zoneid"`
+	Zonename            string                                     `json:"zonename"`
+}
+
+type InternalLoadBalancerVMHealthcheckresults struct {
+	Checkname   string `json:"checkname"`
+	Checktype   string `json:"checktype"`
+	Details     string `json:"details"`
+	Lastupdated string `json:"lastupdated"`
+	Success     bool   `json:"success"`
 }
 
 type StartInternalLoadBalancerVMParams struct {
@@ -747,54 +770,66 @@ func (s *InternalLBService) StartInternalLoadBalancerVM(p *StartInternalLoadBala
 }
 
 type StartInternalLoadBalancerVMResponse struct {
-	Account             string `json:"account"`
-	Created             string `json:"created"`
-	Dns1                string `json:"dns1"`
-	Dns2                string `json:"dns2"`
-	Domain              string `json:"domain"`
-	Domainid            string `json:"domainid"`
-	Gateway             string `json:"gateway"`
-	Guestipaddress      string `json:"guestipaddress"`
-	Guestmacaddress     string `json:"guestmacaddress"`
-	Guestnetmask        string `json:"guestnetmask"`
-	Guestnetworkid      string `json:"guestnetworkid"`
-	Guestnetworkname    string `json:"guestnetworkname"`
-	Hostid              string `json:"hostid"`
-	Hostname            string `json:"hostname"`
-	Hypervisor          string `json:"hypervisor"`
-	Id                  string `json:"id"`
-	Ip6dns1             string `json:"ip6dns1"`
-	Ip6dns2             string `json:"ip6dns2"`
-	Isredundantrouter   bool   `json:"isredundantrouter"`
-	JobID               string `json:"jobid"`
-	Jobstatus           int    `json:"jobstatus"`
-	Linklocalip         string `json:"linklocalip"`
-	Linklocalmacaddress string `json:"linklocalmacaddress"`
-	Linklocalnetmask    string `json:"linklocalnetmask"`
-	Linklocalnetworkid  string `json:"linklocalnetworkid"`
-	Name                string `json:"name"`
-	Networkdomain       string `json:"networkdomain"`
-	Nic                 []Nic  `json:"nic"`
-	Podid               string `json:"podid"`
-	Project             string `json:"project"`
-	Projectid           string `json:"projectid"`
-	Publicip            string `json:"publicip"`
-	Publicmacaddress    string `json:"publicmacaddress"`
-	Publicnetmask       string `json:"publicnetmask"`
-	Publicnetworkid     string `json:"publicnetworkid"`
-	Redundantstate      string `json:"redundantstate"`
-	Requiresupgrade     bool   `json:"requiresupgrade"`
-	Role                string `json:"role"`
-	Scriptsversion      string `json:"scriptsversion"`
-	Serviceofferingid   string `json:"serviceofferingid"`
-	Serviceofferingname string `json:"serviceofferingname"`
-	State               string `json:"state"`
-	Templateid          string `json:"templateid"`
-	Version             string `json:"version"`
-	Vpcid               string `json:"vpcid"`
-	Vpcname             string `json:"vpcname"`
-	Zoneid              string `json:"zoneid"`
-	Zonename            string `json:"zonename"`
+	Account             string                                                  `json:"account"`
+	Created             string                                                  `json:"created"`
+	Dns1                string                                                  `json:"dns1"`
+	Dns2                string                                                  `json:"dns2"`
+	Domain              string                                                  `json:"domain"`
+	Domainid            string                                                  `json:"domainid"`
+	Gateway             string                                                  `json:"gateway"`
+	Guestipaddress      string                                                  `json:"guestipaddress"`
+	Guestmacaddress     string                                                  `json:"guestmacaddress"`
+	Guestnetmask        string                                                  `json:"guestnetmask"`
+	Guestnetworkid      string                                                  `json:"guestnetworkid"`
+	Guestnetworkname    string                                                  `json:"guestnetworkname"`
+	Healthcheckresults  []StartInternalLoadBalancerVMResponseHealthcheckresults `json:"healthcheckresults"`
+	Healthchecksfailed  bool                                                    `json:"healthchecksfailed"`
+	Hostid              string                                                  `json:"hostid"`
+	Hostname            string                                                  `json:"hostname"`
+	Hypervisor          string                                                  `json:"hypervisor"`
+	Id                  string                                                  `json:"id"`
+	Ip6dns1             string                                                  `json:"ip6dns1"`
+	Ip6dns2             string                                                  `json:"ip6dns2"`
+	Isredundantrouter   bool                                                    `json:"isredundantrouter"`
+	JobID               string                                                  `json:"jobid"`
+	Jobstatus           int                                                     `json:"jobstatus"`
+	Linklocalip         string                                                  `json:"linklocalip"`
+	Linklocalmacaddress string                                                  `json:"linklocalmacaddress"`
+	Linklocalnetmask    string                                                  `json:"linklocalnetmask"`
+	Linklocalnetworkid  string                                                  `json:"linklocalnetworkid"`
+	Name                string                                                  `json:"name"`
+	Networkdomain       string                                                  `json:"networkdomain"`
+	Nic                 []Nic                                                   `json:"nic"`
+	Podid               string                                                  `json:"podid"`
+	Podname             string                                                  `json:"podname"`
+	Project             string                                                  `json:"project"`
+	Projectid           string                                                  `json:"projectid"`
+	Publicip            string                                                  `json:"publicip"`
+	Publicmacaddress    string                                                  `json:"publicmacaddress"`
+	Publicnetmask       string                                                  `json:"publicnetmask"`
+	Publicnetworkid     string                                                  `json:"publicnetworkid"`
+	Redundantstate      string                                                  `json:"redundantstate"`
+	Requiresupgrade     bool                                                    `json:"requiresupgrade"`
+	Role                string                                                  `json:"role"`
+	Scriptsversion      string                                                  `json:"scriptsversion"`
+	Serviceofferingid   string                                                  `json:"serviceofferingid"`
+	Serviceofferingname string                                                  `json:"serviceofferingname"`
+	State               string                                                  `json:"state"`
+	Templateid          string                                                  `json:"templateid"`
+	Templatename        string                                                  `json:"templatename"`
+	Version             string                                                  `json:"version"`
+	Vpcid               string                                                  `json:"vpcid"`
+	Vpcname             string                                                  `json:"vpcname"`
+	Zoneid              string                                                  `json:"zoneid"`
+	Zonename            string                                                  `json:"zonename"`
+}
+
+type StartInternalLoadBalancerVMResponseHealthcheckresults struct {
+	Checkname   string `json:"checkname"`
+	Checktype   string `json:"checktype"`
+	Details     string `json:"details"`
+	Lastupdated string `json:"lastupdated"`
+	Success     bool   `json:"success"`
 }
 
 type StopInternalLoadBalancerVMParams struct {
@@ -875,52 +910,64 @@ func (s *InternalLBService) StopInternalLoadBalancerVM(p *StopInternalLoadBalanc
 }
 
 type StopInternalLoadBalancerVMResponse struct {
-	Account             string `json:"account"`
-	Created             string `json:"created"`
-	Dns1                string `json:"dns1"`
-	Dns2                string `json:"dns2"`
-	Domain              string `json:"domain"`
-	Domainid            string `json:"domainid"`
-	Gateway             string `json:"gateway"`
-	Guestipaddress      string `json:"guestipaddress"`
-	Guestmacaddress     string `json:"guestmacaddress"`
-	Guestnetmask        string `json:"guestnetmask"`
-	Guestnetworkid      string `json:"guestnetworkid"`
-	Guestnetworkname    string `json:"guestnetworkname"`
-	Hostid              string `json:"hostid"`
-	Hostname            string `json:"hostname"`
-	Hypervisor          string `json:"hypervisor"`
-	Id                  string `json:"id"`
-	Ip6dns1             string `json:"ip6dns1"`
-	Ip6dns2             string `json:"ip6dns2"`
-	Isredundantrouter   bool   `json:"isredundantrouter"`
-	JobID               string `json:"jobid"`
-	Jobstatus           int    `json:"jobstatus"`
-	Linklocalip         string `json:"linklocalip"`
-	Linklocalmacaddress string `json:"linklocalmacaddress"`
-	Linklocalnetmask    string `json:"linklocalnetmask"`
-	Linklocalnetworkid  string `json:"linklocalnetworkid"`
-	Name                string `json:"name"`
-	Networkdomain       string `json:"networkdomain"`
-	Nic                 []Nic  `json:"nic"`
-	Podid               string `json:"podid"`
-	Project             string `json:"project"`
-	Projectid           string `json:"projectid"`
-	Publicip            string `json:"publicip"`
-	Publicmacaddress    string `json:"publicmacaddress"`
-	Publicnetmask       string `json:"publicnetmask"`
-	Publicnetworkid     string `json:"publicnetworkid"`
-	Redundantstate      string `json:"redundantstate"`
-	Requiresupgrade     bool   `json:"requiresupgrade"`
-	Role                string `json:"role"`
-	Scriptsversion      string `json:"scriptsversion"`
-	Serviceofferingid   string `json:"serviceofferingid"`
-	Serviceofferingname string `json:"serviceofferingname"`
-	State               string `json:"state"`
-	Templateid          string `json:"templateid"`
-	Version             string `json:"version"`
-	Vpcid               string `json:"vpcid"`
-	Vpcname             string `json:"vpcname"`
-	Zoneid              string `json:"zoneid"`
-	Zonename            string `json:"zonename"`
+	Account             string                                                 `json:"account"`
+	Created             string                                                 `json:"created"`
+	Dns1                string                                                 `json:"dns1"`
+	Dns2                string                                                 `json:"dns2"`
+	Domain              string                                                 `json:"domain"`
+	Domainid            string                                                 `json:"domainid"`
+	Gateway             string                                                 `json:"gateway"`
+	Guestipaddress      string                                                 `json:"guestipaddress"`
+	Guestmacaddress     string                                                 `json:"guestmacaddress"`
+	Guestnetmask        string                                                 `json:"guestnetmask"`
+	Guestnetworkid      string                                                 `json:"guestnetworkid"`
+	Guestnetworkname    string                                                 `json:"guestnetworkname"`
+	Healthcheckresults  []StopInternalLoadBalancerVMResponseHealthcheckresults `json:"healthcheckresults"`
+	Healthchecksfailed  bool                                                   `json:"healthchecksfailed"`
+	Hostid              string                                                 `json:"hostid"`
+	Hostname            string                                                 `json:"hostname"`
+	Hypervisor          string                                                 `json:"hypervisor"`
+	Id                  string                                                 `json:"id"`
+	Ip6dns1             string                                                 `json:"ip6dns1"`
+	Ip6dns2             string                                                 `json:"ip6dns2"`
+	Isredundantrouter   bool                                                   `json:"isredundantrouter"`
+	JobID               string                                                 `json:"jobid"`
+	Jobstatus           int                                                    `json:"jobstatus"`
+	Linklocalip         string                                                 `json:"linklocalip"`
+	Linklocalmacaddress string                                                 `json:"linklocalmacaddress"`
+	Linklocalnetmask    string                                                 `json:"linklocalnetmask"`
+	Linklocalnetworkid  string                                                 `json:"linklocalnetworkid"`
+	Name                string                                                 `json:"name"`
+	Networkdomain       string                                                 `json:"networkdomain"`
+	Nic                 []Nic                                                  `json:"nic"`
+	Podid               string                                                 `json:"podid"`
+	Podname             string                                                 `json:"podname"`
+	Project             string                                                 `json:"project"`
+	Projectid           string                                                 `json:"projectid"`
+	Publicip            string                                                 `json:"publicip"`
+	Publicmacaddress    string                                                 `json:"publicmacaddress"`
+	Publicnetmask       string                                                 `json:"publicnetmask"`
+	Publicnetworkid     string                                                 `json:"publicnetworkid"`
+	Redundantstate      string                                                 `json:"redundantstate"`
+	Requiresupgrade     bool                                                   `json:"requiresupgrade"`
+	Role                string                                                 `json:"role"`
+	Scriptsversion      string                                                 `json:"scriptsversion"`
+	Serviceofferingid   string                                                 `json:"serviceofferingid"`
+	Serviceofferingname string                                                 `json:"serviceofferingname"`
+	State               string                                                 `json:"state"`
+	Templateid          string                                                 `json:"templateid"`
+	Templatename        string                                                 `json:"templatename"`
+	Version             string                                                 `json:"version"`
+	Vpcid               string                                                 `json:"vpcid"`
+	Vpcname             string                                                 `json:"vpcname"`
+	Zoneid              string                                                 `json:"zoneid"`
+	Zonename            string                                                 `json:"zonename"`
+}
+
+type StopInternalLoadBalancerVMResponseHealthcheckresults struct {
+	Checkname   string `json:"checkname"`
+	Checktype   string `json:"checktype"`
+	Details     string `json:"details"`
+	Lastupdated string `json:"lastupdated"`
+	Success     bool   `json:"success"`
 }
diff --git a/cloudstack/LDAPService.go b/cloudstack/LDAPService.go
index 64a715f..f81fa01 100644
--- a/cloudstack/LDAPService.go
+++ b/cloudstack/LDAPService.go
@@ -320,14 +320,15 @@ func (s *LDAPService) ImportLdapUsers(p *ImportLdapUsersParams) (*ImportLdapUser
 }
 
 type ImportLdapUsersResponse struct {
-	Domain    string `json:"domain"`
-	Email     string `json:"email"`
-	Firstname string `json:"firstname"`
-	JobID     string `json:"jobid"`
-	Jobstatus int    `json:"jobstatus"`
-	Lastname  string `json:"lastname"`
-	Principal string `json:"principal"`
-	Username  string `json:"username"`
+	Conflictingusersource string `json:"conflictingusersource"`
+	Domain                string `json:"domain"`
+	Email                 string `json:"email"`
+	Firstname             string `json:"firstname"`
+	JobID                 string `json:"jobid"`
+	Jobstatus             int    `json:"jobstatus"`
+	Lastname              string `json:"lastname"`
+	Principal             string `json:"principal"`
+	Username              string `json:"username"`
 }
 
 type LdapConfigParams struct {
@@ -630,6 +631,7 @@ type LdapCreateAccountResponse struct {
 	Defaultzoneid             string                          `json:"defaultzoneid"`
 	Domain                    string                          `json:"domain"`
 	Domainid                  string                          `json:"domainid"`
+	Domainpath                string                          `json:"domainpath"`
 	Groups                    []string                        `json:"groups"`
 	Id                        string                          `json:"id"`
 	Ipavailable               string                          `json:"ipavailable"`
@@ -881,6 +883,10 @@ func (p *ListLdapConfigurationsParams) toURLValues() url.Values {
 	if v, found := p.p["keyword"]; found {
 		u.Set("keyword", v.(string))
 	}
+	if v, found := p.p["listall"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("listall", vv)
+	}
 	if v, found := p.p["page"]; found {
 		vv := strconv.Itoa(v.(int))
 		u.Set("page", vv)
@@ -917,6 +923,13 @@ func (p *ListLdapConfigurationsParams) SetKeyword(v string) {
 	p.p["keyword"] = v
 }
 
+func (p *ListLdapConfigurationsParams) SetListall(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["listall"] = v
+}
+
 func (p *ListLdapConfigurationsParams) SetPage(v int) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -983,6 +996,9 @@ func (p *ListLdapUsersParams) toURLValues() url.Values {
 	if p.p == nil {
 		return u
 	}
+	if v, found := p.p["domainid"]; found {
+		u.Set("domainid", v.(string))
+	}
 	if v, found := p.p["keyword"]; found {
 		u.Set("keyword", v.(string))
 	}
@@ -997,9 +1013,19 @@ func (p *ListLdapUsersParams) toURLValues() url.Values {
 		vv := strconv.Itoa(v.(int))
 		u.Set("pagesize", vv)
 	}
+	if v, found := p.p["userfilter"]; found {
+		u.Set("userfilter", v.(string))
+	}
 	return u
 }
 
+func (p *ListLdapUsersParams) SetDomainid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["domainid"] = v
+}
+
 func (p *ListLdapUsersParams) SetKeyword(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1028,6 +1054,13 @@ func (p *ListLdapUsersParams) SetPagesize(v int) {
 	p.p["pagesize"] = v
 }
 
+func (p *ListLdapUsersParams) SetUserfilter(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["userfilter"] = v
+}
+
 // You should always use this function to get a new ListLdapUsersParams instance,
 // as then you are sure you have configured all required params
 func (s *LDAPService) NewListLdapUsersParams() *ListLdapUsersParams {
@@ -1036,7 +1069,7 @@ func (s *LDAPService) NewListLdapUsersParams() *ListLdapUsersParams {
 	return p
 }
 
-// Lists all LDAP Users
+// Lists LDAP Users according to the specifications from the user request.
 func (s *LDAPService) ListLdapUsers(p *ListLdapUsersParams) (*ListLdapUsersResponse, error) {
 	resp, err := s.cs.newRequest("listLdapUsers", p.toURLValues())
 	if err != nil {
@@ -1057,14 +1090,15 @@ type ListLdapUsersResponse struct {
 }
 
 type LdapUser struct {
-	Domain    string `json:"domain"`
-	Email     string `json:"email"`
-	Firstname string `json:"firstname"`
-	JobID     string `json:"jobid"`
-	Jobstatus int    `json:"jobstatus"`
-	Lastname  string `json:"lastname"`
-	Principal string `json:"principal"`
-	Username  string `json:"username"`
+	Conflictingusersource string `json:"conflictingusersource"`
+	Domain                string `json:"domain"`
+	Email                 string `json:"email"`
+	Firstname             string `json:"firstname"`
+	JobID                 string `json:"jobid"`
+	Jobstatus             int    `json:"jobstatus"`
+	Lastname              string `json:"lastname"`
+	Principal             string `json:"principal"`
+	Username              string `json:"username"`
 }
 
 type SearchLdapParams struct {
@@ -1146,12 +1180,13 @@ func (s *LDAPService) SearchLdap(p *SearchLdapParams) (*SearchLdapResponse, erro
 }
 
 type SearchLdapResponse struct {
-	Domain    string `json:"domain"`
-	Email     string `json:"email"`
-	Firstname string `json:"firstname"`
-	JobID     string `json:"jobid"`
-	Jobstatus int    `json:"jobstatus"`
-	Lastname  string `json:"lastname"`
-	Principal string `json:"principal"`
-	Username  string `json:"username"`
+	Conflictingusersource string `json:"conflictingusersource"`
+	Domain                string `json:"domain"`
+	Email                 string `json:"email"`
+	Firstname             string `json:"firstname"`
+	JobID                 string `json:"jobid"`
+	Jobstatus             int    `json:"jobstatus"`
+	Lastname              string `json:"lastname"`
+	Principal             string `json:"principal"`
+	Username              string `json:"username"`
 }
diff --git a/cloudstack/LoadBalancerService.go b/cloudstack/LoadBalancerService.go
index e6a8c60..dc078f3 100644
--- a/cloudstack/LoadBalancerService.go
+++ b/cloudstack/LoadBalancerService.go
@@ -4514,6 +4514,10 @@ func (p *UploadSslCertParams) toURLValues() url.Values {
 	if v, found := p.p["domainid"]; found {
 		u.Set("domainid", v.(string))
 	}
+	if v, found := p.p["enabledrevocationcheck"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("enabledrevocationcheck", vv)
+	}
 	if v, found := p.p["name"]; found {
 		u.Set("name", v.(string))
 	}
@@ -4557,6 +4561,13 @@ func (p *UploadSslCertParams) SetDomainid(v string) {
 	p.p["domainid"] = v
 }
 
+func (p *UploadSslCertParams) SetEnabledrevocationcheck(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["enabledrevocationcheck"] = v
+}
+
 func (p *UploadSslCertParams) SetName(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
diff --git a/cloudstack/NetworkACLService.go b/cloudstack/NetworkACLService.go
index f446736..d8a916f 100644
--- a/cloudstack/NetworkACLService.go
+++ b/cloudstack/NetworkACLService.go
@@ -222,6 +222,7 @@ func (s *NetworkACLService) CreateNetworkACL(p *CreateNetworkACLParams) (*Create
 
 type CreateNetworkACLResponse struct {
 	Aclid       string `json:"aclid"`
+	Aclname     string `json:"aclname"`
 	Action      string `json:"action"`
 	Cidrlist    string `json:"cidrlist"`
 	Endport     string `json:"endport"`
@@ -996,6 +997,7 @@ type ListNetworkACLsResponse struct {
 
 type NetworkACL struct {
 	Aclid       string `json:"aclid"`
+	Aclname     string `json:"aclname"`
 	Action      string `json:"action"`
 	Cidrlist    string `json:"cidrlist"`
 	Endport     string `json:"endport"`
@@ -1308,6 +1310,7 @@ func (s *NetworkACLService) UpdateNetworkACLItem(p *UpdateNetworkACLItemParams)
 
 type UpdateNetworkACLItemResponse struct {
 	Aclid       string `json:"aclid"`
+	Aclname     string `json:"aclname"`
 	Action      string `json:"action"`
 	Cidrlist    string `json:"cidrlist"`
 	Endport     string `json:"endport"`
diff --git a/cloudstack/NetworkOfferingService.go b/cloudstack/NetworkOfferingService.go
index 94d2bcb..5eb3471 100644
--- a/cloudstack/NetworkOfferingService.go
+++ b/cloudstack/NetworkOfferingService.go
@@ -52,6 +52,10 @@ func (p *CreateNetworkOfferingParams) toURLValues() url.Values {
 	if v, found := p.p["displaytext"]; found {
 		u.Set("displaytext", v.(string))
 	}
+	if v, found := p.p["domainid"]; found {
+		vv := strings.Join(v.([]string), ",")
+		u.Set("domainid", vv)
+	}
 	if v, found := p.p["egressdefaultpolicy"]; found {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("egressdefaultpolicy", vv)
@@ -117,6 +121,10 @@ func (p *CreateNetworkOfferingParams) toURLValues() url.Values {
 	if v, found := p.p["traffictype"]; found {
 		u.Set("traffictype", v.(string))
 	}
+	if v, found := p.p["zoneid"]; found {
+		vv := strings.Join(v.([]string), ",")
+		u.Set("zoneid", vv)
+	}
 	return u
 }
 
@@ -148,6 +156,13 @@ func (p *CreateNetworkOfferingParams) SetDisplaytext(v string) {
 	p.p["displaytext"] = v
 }
 
+func (p *CreateNetworkOfferingParams) SetDomainid(v []string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["domainid"] = v
+}
+
 func (p *CreateNetworkOfferingParams) SetEgressdefaultpolicy(v bool) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -260,6 +275,13 @@ func (p *CreateNetworkOfferingParams) SetTraffictype(v string) {
 	p.p["traffictype"] = v
 }
 
+func (p *CreateNetworkOfferingParams) 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 CreateNetworkOfferingParams instance,
 // as then you are sure you have configured all required params
 func (s *NetworkOfferingService) NewCreateNetworkOfferingParams(displaytext string, guestiptype string, name string, supportedservices []string, traffictype string) *CreateNetworkOfferingParams {
@@ -298,6 +320,8 @@ type CreateNetworkOfferingResponse struct {
 	Created                  string                                 `json:"created"`
 	Details                  map[string]string                      `json:"details"`
 	Displaytext              string                                 `json:"displaytext"`
+	Domain                   string                                 `json:"domain"`
+	Domainid                 string                                 `json:"domainid"`
 	Egressdefaultpolicy      bool                                   `json:"egressdefaultpolicy"`
 	Forvpc                   bool                                   `json:"forvpc"`
 	Guestiptype              string                                 `json:"guestiptype"`
@@ -318,6 +342,8 @@ type CreateNetworkOfferingResponse struct {
 	Supportsstrechedl2subnet bool                                   `json:"supportsstrechedl2subnet"`
 	Tags                     string                                 `json:"tags"`
 	Traffictype              string                                 `json:"traffictype"`
+	Zone                     string                                 `json:"zone"`
+	Zoneid                   string                                 `json:"zoneid"`
 }
 
 type CreateNetworkOfferingResponseService struct {
@@ -437,6 +463,9 @@ func (p *ListNetworkOfferingsParams) toURLValues() url.Values {
 	if v, found := p.p["displaytext"]; found {
 		u.Set("displaytext", v.(string))
 	}
+	if v, found := p.p["domainid"]; found {
+		u.Set("domainid", v.(string))
+	}
 	if v, found := p.p["forvpc"]; found {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("forvpc", vv)
@@ -517,6 +546,13 @@ func (p *ListNetworkOfferingsParams) SetDisplaytext(v string) {
 	p.p["displaytext"] = v
 }
 
+func (p *ListNetworkOfferingsParams) SetDomainid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["domainid"] = v
+}
+
 func (p *ListNetworkOfferingsParams) SetForvpc(v bool) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -760,6 +796,8 @@ type NetworkOffering struct {
 	Created                  string                           `json:"created"`
 	Details                  map[string]string                `json:"details"`
 	Displaytext              string                           `json:"displaytext"`
+	Domain                   string                           `json:"domain"`
+	Domainid                 string                           `json:"domainid"`
 	Egressdefaultpolicy      bool                             `json:"egressdefaultpolicy"`
 	Forvpc                   bool                             `json:"forvpc"`
 	Guestiptype              string                           `json:"guestiptype"`
@@ -780,6 +818,8 @@ type NetworkOffering struct {
 	Supportsstrechedl2subnet bool                             `json:"supportsstrechedl2subnet"`
 	Tags                     string                           `json:"tags"`
 	Traffictype              string                           `json:"traffictype"`
+	Zone                     string                           `json:"zone"`
+	Zoneid                   string                           `json:"zoneid"`
 }
 
 type NetworkOfferingServiceInternal struct {
@@ -819,6 +859,9 @@ func (p *UpdateNetworkOfferingParams) toURLValues() url.Values {
 	if v, found := p.p["displaytext"]; found {
 		u.Set("displaytext", v.(string))
 	}
+	if v, found := p.p["domainid"]; found {
+		u.Set("domainid", v.(string))
+	}
 	if v, found := p.p["id"]; found {
 		u.Set("id", v.(string))
 	}
@@ -843,6 +886,9 @@ func (p *UpdateNetworkOfferingParams) toURLValues() url.Values {
 	if v, found := p.p["tags"]; found {
 		u.Set("tags", v.(string))
 	}
+	if v, found := p.p["zoneid"]; found {
+		u.Set("zoneid", v.(string))
+	}
 	return u
 }
 
@@ -860,6 +906,13 @@ func (p *UpdateNetworkOfferingParams) SetDisplaytext(v string) {
 	p.p["displaytext"] = v
 }
 
+func (p *UpdateNetworkOfferingParams) SetDomainid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["domainid"] = v
+}
+
 func (p *UpdateNetworkOfferingParams) SetId(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -909,6 +962,13 @@ func (p *UpdateNetworkOfferingParams) SetTags(v string) {
 	p.p["tags"] = v
 }
 
+func (p *UpdateNetworkOfferingParams) 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 UpdateNetworkOfferingParams instance,
 // as then you are sure you have configured all required params
 func (s *NetworkOfferingService) NewUpdateNetworkOfferingParams() *UpdateNetworkOfferingParams {
@@ -938,6 +998,8 @@ type UpdateNetworkOfferingResponse struct {
 	Created                  string                                 `json:"created"`
 	Details                  map[string]string                      `json:"details"`
 	Displaytext              string                                 `json:"displaytext"`
+	Domain                   string                                 `json:"domain"`
+	Domainid                 string                                 `json:"domainid"`
 	Egressdefaultpolicy      bool                                   `json:"egressdefaultpolicy"`
 	Forvpc                   bool                                   `json:"forvpc"`
 	Guestiptype              string                                 `json:"guestiptype"`
@@ -958,6 +1020,8 @@ type UpdateNetworkOfferingResponse struct {
 	Supportsstrechedl2subnet bool                                   `json:"supportsstrechedl2subnet"`
 	Tags                     string                                 `json:"tags"`
 	Traffictype              string                                 `json:"traffictype"`
+	Zone                     string                                 `json:"zone"`
+	Zoneid                   string                                 `json:"zoneid"`
 }
 
 type UpdateNetworkOfferingResponseService struct {
diff --git a/cloudstack/NetworkService.go b/cloudstack/NetworkService.go
index 629b37d..a6f0037 100644
--- a/cloudstack/NetworkService.go
+++ b/cloudstack/NetworkService.go
@@ -290,6 +290,10 @@ func (p *CreateNetworkParams) toURLValues() url.Values {
 	if v, found := p.p["gateway"]; found {
 		u.Set("gateway", v.(string))
 	}
+	if v, found := p.p["hideipaddressusage"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("hideipaddressusage", vv)
+	}
 	if v, found := p.p["ip6cidr"]; found {
 		u.Set("ip6cidr", v.(string))
 	}
@@ -299,6 +303,9 @@ func (p *CreateNetworkParams) toURLValues() url.Values {
 	if v, found := p.p["isolatedpvlan"]; found {
 		u.Set("isolatedpvlan", v.(string))
 	}
+	if v, found := p.p["isolatedpvlantype"]; found {
+		u.Set("isolatedpvlantype", v.(string))
+	}
 	if v, found := p.p["name"]; found {
 		u.Set("name", v.(string))
 	}
@@ -416,6 +423,13 @@ func (p *CreateNetworkParams) SetGateway(v string) {
 	p.p["gateway"] = v
 }
 
+func (p *CreateNetworkParams) SetHideipaddressusage(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["hideipaddressusage"] = v
+}
+
 func (p *CreateNetworkParams) SetIp6cidr(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -437,6 +451,13 @@ func (p *CreateNetworkParams) SetIsolatedpvlan(v string) {
 	p.p["isolatedpvlan"] = v
 }
 
+func (p *CreateNetworkParams) SetIsolatedpvlantype(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["isolatedpvlantype"] = v
+}
+
 func (p *CreateNetworkParams) SetName(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -555,11 +576,13 @@ func (s *NetworkService) CreateNetwork(p *CreateNetworkParams) (*CreateNetworkRe
 type CreateNetworkResponse struct {
 	Account                     string                         `json:"account"`
 	Aclid                       string                         `json:"aclid"`
+	Aclname                     string                         `json:"aclname"`
 	Acltype                     string                         `json:"acltype"`
 	Broadcastdomaintype         string                         `json:"broadcastdomaintype"`
 	Broadcasturi                string                         `json:"broadcasturi"`
 	Canusefordeploy             bool                           `json:"canusefordeploy"`
 	Cidr                        string                         `json:"cidr"`
+	Details                     map[string]string              `json:"details"`
 	Displaynetwork              bool                           `json:"displaynetwork"`
 	Displaytext                 string                         `json:"displaytext"`
 	Dns1                        string                         `json:"dns1"`
@@ -602,6 +625,7 @@ type CreateNetworkResponse struct {
 	Type                        string                         `json:"type"`
 	Vlan                        string                         `json:"vlan"`
 	Vpcid                       string                         `json:"vpcid"`
+	Vpcname                     string                         `json:"vpcname"`
 	Zoneid                      string                         `json:"zoneid"`
 	Zonename                    string                         `json:"zonename"`
 	Zonesnetworkspans           []interface{}                  `json:"zonesnetworkspans"`
@@ -781,6 +805,7 @@ type CreatePhysicalNetworkResponse struct {
 	Tags                 string `json:"tags"`
 	Vlan                 string `json:"vlan"`
 	Zoneid               string `json:"zoneid"`
+	Zonename             string `json:"zonename"`
 }
 
 type CreateServiceInstanceParams struct {
@@ -1668,11 +1693,13 @@ type ListNetscalerLoadBalancerNetworksResponse struct {
 type NetscalerLoadBalancerNetwork struct {
 	Account                     string                                `json:"account"`
 	Aclid                       string                                `json:"aclid"`
+	Aclname                     string                                `json:"aclname"`
 	Acltype                     string                                `json:"acltype"`
 	Broadcastdomaintype         string                                `json:"broadcastdomaintype"`
 	Broadcasturi                string                                `json:"broadcasturi"`
 	Canusefordeploy             bool                                  `json:"canusefordeploy"`
 	Cidr                        string                                `json:"cidr"`
+	Details                     map[string]string                     `json:"details"`
 	Displaynetwork              bool                                  `json:"displaynetwork"`
 	Displaytext                 string                                `json:"displaytext"`
 	Dns1                        string                                `json:"dns1"`
@@ -1715,6 +1742,7 @@ type NetscalerLoadBalancerNetwork struct {
 	Type                        string                                `json:"type"`
 	Vlan                        string                                `json:"vlan"`
 	Vpcid                       string                                `json:"vpcid"`
+	Vpcname                     string                                `json:"vpcname"`
 	Zoneid                      string                                `json:"zoneid"`
 	Zonename                    string                                `json:"zonename"`
 	Zonesnetworkspans           []interface{}                         `json:"zonesnetworkspans"`
@@ -2018,6 +2046,9 @@ func (p *ListNetworksParams) toURLValues() url.Values {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("listall", vv)
 	}
+	if v, found := p.p["networkofferingid"]; found {
+		u.Set("networkofferingid", v.(string))
+	}
 	if v, found := p.p["page"]; found {
 		vv := strconv.Itoa(v.(int))
 		u.Set("page", vv)
@@ -2143,6 +2174,13 @@ func (p *ListNetworksParams) SetListall(v bool) {
 	p.p["listall"] = v
 }
 
+func (p *ListNetworksParams) SetNetworkofferingid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["networkofferingid"] = v
+}
+
 func (p *ListNetworksParams) SetPage(v int) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -2341,11 +2379,13 @@ type ListNetworksResponse struct {
 type Network struct {
 	Account                     string                   `json:"account"`
 	Aclid                       string                   `json:"aclid"`
+	Aclname                     string                   `json:"aclname"`
 	Acltype                     string                   `json:"acltype"`
 	Broadcastdomaintype         string                   `json:"broadcastdomaintype"`
 	Broadcasturi                string                   `json:"broadcasturi"`
 	Canusefordeploy             bool                     `json:"canusefordeploy"`
 	Cidr                        string                   `json:"cidr"`
+	Details                     map[string]string        `json:"details"`
 	Displaynetwork              bool                     `json:"displaynetwork"`
 	Displaytext                 string                   `json:"displaytext"`
 	Dns1                        string                   `json:"dns1"`
@@ -2388,6 +2428,7 @@ type Network struct {
 	Type                        string                   `json:"type"`
 	Vlan                        string                   `json:"vlan"`
 	Vpcid                       string                   `json:"vpcid"`
+	Vpcname                     string                   `json:"vpcname"`
 	Zoneid                      string                   `json:"zoneid"`
 	Zonename                    string                   `json:"zonename"`
 	Zonesnetworkspans           []interface{}            `json:"zonesnetworkspans"`
@@ -2538,11 +2579,13 @@ type ListNiciraNvpDeviceNetworksResponse struct {
 type NiciraNvpDeviceNetwork struct {
 	Account                     string                          `json:"account"`
 	Aclid                       string                          `json:"aclid"`
+	Aclname                     string                          `json:"aclname"`
 	Acltype                     string                          `json:"acltype"`
 	Broadcastdomaintype         string                          `json:"broadcastdomaintype"`
 	Broadcasturi                string                          `json:"broadcasturi"`
 	Canusefordeploy             bool                            `json:"canusefordeploy"`
 	Cidr                        string                          `json:"cidr"`
+	Details                     map[string]string               `json:"details"`
 	Displaynetwork              bool                            `json:"displaynetwork"`
 	Displaytext                 string                          `json:"displaytext"`
 	Dns1                        string                          `json:"dns1"`
@@ -2585,6 +2628,7 @@ type NiciraNvpDeviceNetwork struct {
 	Type                        string                          `json:"type"`
 	Vlan                        string                          `json:"vlan"`
 	Vpcid                       string                          `json:"vpcid"`
+	Vpcname                     string                          `json:"vpcname"`
 	Zoneid                      string                          `json:"zoneid"`
 	Zonename                    string                          `json:"zonename"`
 	Zonesnetworkspans           []interface{}                   `json:"zonesnetworkspans"`
@@ -2838,11 +2882,13 @@ type ListPaloAltoFirewallNetworksResponse struct {
 type PaloAltoFirewallNetwork struct {
 	Account                     string                           `json:"account"`
 	Aclid                       string                           `json:"aclid"`
+	Aclname                     string                           `json:"aclname"`
 	Acltype                     string                           `json:"acltype"`
 	Broadcastdomaintype         string                           `json:"broadcastdomaintype"`
 	Broadcasturi                string                           `json:"broadcasturi"`
 	Canusefordeploy             bool                             `json:"canusefordeploy"`
 	Cidr                        string                           `json:"cidr"`
+	Details                     map[string]string                `json:"details"`
 	Displaynetwork              bool                             `json:"displaynetwork"`
 	Displaytext                 string                           `json:"displaytext"`
 	Dns1                        string                           `json:"dns1"`
@@ -2885,6 +2931,7 @@ type PaloAltoFirewallNetwork struct {
 	Type                        string                           `json:"type"`
 	Vlan                        string                           `json:"vlan"`
 	Vpcid                       string                           `json:"vpcid"`
+	Vpcname                     string                           `json:"vpcname"`
 	Zoneid                      string                           `json:"zoneid"`
 	Zonename                    string                           `json:"zonename"`
 	Zonesnetworkspans           []interface{}                    `json:"zonesnetworkspans"`
@@ -3110,6 +3157,7 @@ type PhysicalNetwork struct {
 	Tags                 string `json:"tags"`
 	Vlan                 string `json:"vlan"`
 	Zoneid               string `json:"zoneid"`
+	Zonename             string `json:"zonename"`
 }
 
 type ListStorageNetworkIpRangeParams struct {
@@ -3563,6 +3611,7 @@ type RestartNetworkResponse struct {
 	JobID                     string `json:"jobid"`
 	Jobstatus                 int    `json:"jobstatus"`
 	Networkid                 string `json:"networkid"`
+	Networkname               string `json:"networkname"`
 	Physicalnetworkid         string `json:"physicalnetworkid"`
 	Project                   string `json:"project"`
 	Projectid                 string `json:"projectid"`
@@ -3576,6 +3625,7 @@ type RestartNetworkResponse struct {
 	Vlanname                  string `json:"vlanname"`
 	Vmipaddress               string `json:"vmipaddress"`
 	Vpcid                     string `json:"vpcid"`
+	Vpcname                   string `json:"vpcname"`
 	Zoneid                    string `json:"zoneid"`
 	Zonename                  string `json:"zonename"`
 }
@@ -3610,6 +3660,10 @@ func (p *UpdateNetworkParams) toURLValues() url.Values {
 	if v, found := p.p["guestvmcidr"]; found {
 		u.Set("guestvmcidr", v.(string))
 	}
+	if v, found := p.p["hideipaddressusage"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("hideipaddressusage", vv)
+	}
 	if v, found := p.p["id"]; found {
 		u.Set("id", v.(string))
 	}
@@ -3671,6 +3725,13 @@ func (p *UpdateNetworkParams) SetGuestvmcidr(v string) {
 	p.p["guestvmcidr"] = v
 }
 
+func (p *UpdateNetworkParams) SetHideipaddressusage(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["hideipaddressusage"] = v
+}
+
 func (p *UpdateNetworkParams) SetId(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -3753,11 +3814,13 @@ func (s *NetworkService) UpdateNetwork(p *UpdateNetworkParams) (*UpdateNetworkRe
 type UpdateNetworkResponse struct {
 	Account                     string                         `json:"account"`
 	Aclid                       string                         `json:"aclid"`
+	Aclname                     string                         `json:"aclname"`
 	Acltype                     string                         `json:"acltype"`
 	Broadcastdomaintype         string                         `json:"broadcastdomaintype"`
 	Broadcasturi                string                         `json:"broadcasturi"`
 	Canusefordeploy             bool                           `json:"canusefordeploy"`
 	Cidr                        string                         `json:"cidr"`
+	Details                     map[string]string              `json:"details"`
 	Displaynetwork              bool                           `json:"displaynetwork"`
 	Displaytext                 string                         `json:"displaytext"`
 	Dns1                        string                         `json:"dns1"`
@@ -3800,6 +3863,7 @@ type UpdateNetworkResponse struct {
 	Type                        string                         `json:"type"`
 	Vlan                        string                         `json:"vlan"`
 	Vpcid                       string                         `json:"vpcid"`
+	Vpcname                     string                         `json:"vpcname"`
 	Zoneid                      string                         `json:"zoneid"`
 	Zonename                    string                         `json:"zonename"`
 	Zonesnetworkspans           []interface{}                  `json:"zonesnetworkspans"`
@@ -4046,6 +4110,7 @@ type UpdatePhysicalNetworkResponse struct {
 	Tags                 string `json:"tags"`
 	Vlan                 string `json:"vlan"`
 	Zoneid               string `json:"zoneid"`
+	Zonename             string `json:"zonename"`
 }
 
 type UpdateStorageNetworkIpRangeParams struct {
diff --git a/cloudstack/NicService.go b/cloudstack/NicService.go
index 0f8a5f2..953f90c 100644
--- a/cloudstack/NicService.go
+++ b/cloudstack/NicService.go
@@ -230,6 +230,7 @@ type ListNicsResponse struct {
 }
 
 type Nic struct {
+	Adaptertype          string   `json:"adaptertype"`
 	Broadcasturi         string   `json:"broadcasturi"`
 	Deviceid             string   `json:"deviceid"`
 	Extradhcpoption      []string `json:"extradhcpoption"`
@@ -239,7 +240,10 @@ type Nic struct {
 	Ip6cidr              string   `json:"ip6cidr"`
 	Ip6gateway           string   `json:"ip6gateway"`
 	Ipaddress            string   `json:"ipaddress"`
+	Ipaddresses          []string `json:"ipaddresses"`
 	Isdefault            bool     `json:"isdefault"`
+	Isolatedpvlan        int      `json:"isolatedpvlan"`
+	Isolatedpvlantype    string   `json:"isolatedpvlantype"`
 	Isolationuri         string   `json:"isolationuri"`
 	JobID                string   `json:"jobid"`
 	Jobstatus            int      `json:"jobstatus"`
@@ -256,6 +260,7 @@ type Nic struct {
 	Traffictype      string `json:"traffictype"`
 	Type             string `json:"type"`
 	Virtualmachineid string `json:"virtualmachineid"`
+	Vlanid           int    `json:"vlanid"`
 }
 
 type RemoveIpFromNicParams struct {
@@ -405,6 +410,10 @@ func (s *NicService) UpdateVmNicIp(p *UpdateVmNicIpParams) (*UpdateVmNicIpRespon
 type UpdateVmNicIpResponse struct {
 	Account               string                               `json:"account"`
 	Affinitygroup         []UpdateVmNicIpResponseAffinitygroup `json:"affinitygroup"`
+	Backupofferingid      string                               `json:"backupofferingid"`
+	Backupofferingname    string                               `json:"backupofferingname"`
+	Bootmode              string                               `json:"bootmode"`
+	Boottype              string                               `json:"boottype"`
 	Cpunumber             int                                  `json:"cpunumber"`
 	Cpuspeed              int                                  `json:"cpuspeed"`
 	Cpuused               string                               `json:"cpuused"`
@@ -445,6 +454,7 @@ type UpdateVmNicIpResponse struct {
 	Networkkbsread        int64                                `json:"networkkbsread"`
 	Networkkbswrite       int64                                `json:"networkkbswrite"`
 	Nic                   []Nic                                `json:"nic"`
+	Osdisplayname         string                               `json:"osdisplayname"`
 	Ostypeid              string                               `json:"ostypeid"`
 	Password              string                               `json:"password"`
 	Passwordenabled       bool                                 `json:"passwordenabled"`
@@ -452,6 +462,7 @@ type UpdateVmNicIpResponse struct {
 	Projectid             string                               `json:"projectid"`
 	Publicip              string                               `json:"publicip"`
 	Publicipid            string                               `json:"publicipid"`
+	Readonlyuidetails     string                               `json:"readonlyuidetails"`
 	Rootdeviceid          int64                                `json:"rootdeviceid"`
 	Rootdevicetype        string                               `json:"rootdevicetype"`
 	Securitygroup         []UpdateVmNicIpResponseSecuritygroup `json:"securitygroup"`
diff --git a/cloudstack/PoolService.go b/cloudstack/PoolService.go
index 0a90807..2b841c8 100644
--- a/cloudstack/PoolService.go
+++ b/cloudstack/PoolService.go
@@ -719,6 +719,9 @@ func (p *UpdateStoragePoolParams) toURLValues() url.Values {
 	if v, found := p.p["id"]; found {
 		u.Set("id", v.(string))
 	}
+	if v, found := p.p["name"]; found {
+		u.Set("name", v.(string))
+	}
 	if v, found := p.p["tags"]; found {
 		vv := strings.Join(v.([]string), ",")
 		u.Set("tags", vv)
@@ -754,6 +757,13 @@ func (p *UpdateStoragePoolParams) SetId(v string) {
 	p.p["id"] = v
 }
 
+func (p *UpdateStoragePoolParams) SetName(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["name"] = v
+}
+
 func (p *UpdateStoragePoolParams) SetTags(v []string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
diff --git a/cloudstack/ProjectService.go b/cloudstack/ProjectService.go
index d60c17d..c60b8a4 100644
--- a/cloudstack/ProjectService.go
+++ b/cloudstack/ProjectService.go
@@ -94,52 +94,52 @@ func (s *ProjectService) ActivateProject(p *ActivateProjectParams) (*ActivatePro
 }
 
 type ActivateProjectResponse struct {
-	Account                   string  `json:"account"`
-	Cpuavailable              string  `json:"cpuavailable"`
-	Cpulimit                  string  `json:"cpulimit"`
-	Cputotal                  int64   `json:"cputotal"`
-	Displaytext               string  `json:"displaytext"`
-	Domain                    string  `json:"domain"`
-	Domainid                  string  `json:"domainid"`
-	Id                        string  `json:"id"`
-	Ipavailable               string  `json:"ipavailable"`
-	Iplimit                   string  `json:"iplimit"`
-	Iptotal                   int64   `json:"iptotal"`
-	JobID                     string  `json:"jobid"`
-	Jobstatus                 int     `json:"jobstatus"`
-	Memoryavailable           string  `json:"memoryavailable"`
-	Memorylimit               string  `json:"memorylimit"`
-	Memorytotal               int64   `json:"memorytotal"`
-	Name                      string  `json:"name"`
-	Networkavailable          string  `json:"networkavailable"`
-	Networklimit              string  `json:"networklimit"`
-	Networktotal              int64   `json:"networktotal"`
-	Primarystorageavailable   string  `json:"primarystorageavailable"`
-	Primarystoragelimit       string  `json:"primarystoragelimit"`
-	Primarystoragetotal       int64   `json:"primarystoragetotal"`
-	Projectaccountname        string  `json:"projectaccountname"`
-	Secondarystorageavailable string  `json:"secondarystorageavailable"`
-	Secondarystoragelimit     string  `json:"secondarystoragelimit"`
-	Secondarystoragetotal     float64 `json:"secondarystoragetotal"`
-	Snapshotavailable         string  `json:"snapshotavailable"`
-	Snapshotlimit             string  `json:"snapshotlimit"`
-	Snapshottotal             int64   `json:"snapshottotal"`
-	State                     string  `json:"state"`
-	Tags                      []Tags  `json:"tags"`
-	Templateavailable         string  `json:"templateavailable"`
-	Templatelimit             string  `json:"templatelimit"`
-	Templatetotal             int64   `json:"templatetotal"`
-	Vmavailable               string  `json:"vmavailable"`
-	Vmlimit                   string  `json:"vmlimit"`
-	Vmrunning                 int     `json:"vmrunning"`
-	Vmstopped                 int     `json:"vmstopped"`
-	Vmtotal                   int64   `json:"vmtotal"`
-	Volumeavailable           string  `json:"volumeavailable"`
-	Volumelimit               string  `json:"volumelimit"`
-	Volumetotal               int64   `json:"volumetotal"`
-	Vpcavailable              string  `json:"vpcavailable"`
-	Vpclimit                  string  `json:"vpclimit"`
-	Vpctotal                  int64   `json:"vpctotal"`
+	Cpuavailable              string   `json:"cpuavailable"`
+	Cpulimit                  string   `json:"cpulimit"`
+	Cputotal                  int64    `json:"cputotal"`
+	Displaytext               string   `json:"displaytext"`
+	Domain                    string   `json:"domain"`
+	Domainid                  string   `json:"domainid"`
+	Id                        string   `json:"id"`
+	Ipavailable               string   `json:"ipavailable"`
+	Iplimit                   string   `json:"iplimit"`
+	Iptotal                   int64    `json:"iptotal"`
+	JobID                     string   `json:"jobid"`
+	Jobstatus                 int      `json:"jobstatus"`
+	Memoryavailable           string   `json:"memoryavailable"`
+	Memorylimit               string   `json:"memorylimit"`
+	Memorytotal               int64    `json:"memorytotal"`
+	Name                      string   `json:"name"`
+	Networkavailable          string   `json:"networkavailable"`
+	Networklimit              string   `json:"networklimit"`
+	Networktotal              int64    `json:"networktotal"`
+	Owner                     []string `json:"owner"`
+	Primarystorageavailable   string   `json:"primarystorageavailable"`
+	Primarystoragelimit       string   `json:"primarystoragelimit"`
+	Primarystoragetotal       int64    `json:"primarystoragetotal"`
+	Projectaccountname        string   `json:"projectaccountname"`
+	Secondarystorageavailable string   `json:"secondarystorageavailable"`
+	Secondarystoragelimit     string   `json:"secondarystoragelimit"`
+	Secondarystoragetotal     float64  `json:"secondarystoragetotal"`
+	Snapshotavailable         string   `json:"snapshotavailable"`
+	Snapshotlimit             string   `json:"snapshotlimit"`
+	Snapshottotal             int64    `json:"snapshottotal"`
+	State                     string   `json:"state"`
+	Tags                      []Tags   `json:"tags"`
+	Templateavailable         string   `json:"templateavailable"`
+	Templatelimit             string   `json:"templatelimit"`
+	Templatetotal             int64    `json:"templatetotal"`
+	Vmavailable               string   `json:"vmavailable"`
+	Vmlimit                   string   `json:"vmlimit"`
+	Vmrunning                 int      `json:"vmrunning"`
+	Vmstopped                 int      `json:"vmstopped"`
+	Vmtotal                   int64    `json:"vmtotal"`
+	Volumeavailable           string   `json:"volumeavailable"`
+	Volumelimit               string   `json:"volumelimit"`
+	Volumetotal               int64    `json:"volumetotal"`
+	Vpcavailable              string   `json:"vpcavailable"`
+	Vpclimit                  string   `json:"vpclimit"`
+	Vpctotal                  int64    `json:"vpctotal"`
 }
 
 type CreateProjectParams struct {
@@ -154,6 +154,9 @@ func (p *CreateProjectParams) toURLValues() url.Values {
 	if v, found := p.p["account"]; found {
 		u.Set("account", v.(string))
 	}
+	if v, found := p.p["accountid"]; found {
+		u.Set("accountid", v.(string))
+	}
 	if v, found := p.p["displaytext"]; found {
 		u.Set("displaytext", v.(string))
 	}
@@ -163,6 +166,9 @@ func (p *CreateProjectParams) toURLValues() url.Values {
 	if v, found := p.p["name"]; found {
 		u.Set("name", v.(string))
 	}
+	if v, found := p.p["userid"]; found {
+		u.Set("userid", v.(string))
+	}
 	return u
 }
 
@@ -173,6 +179,13 @@ func (p *CreateProjectParams) SetAccount(v string) {
 	p.p["account"] = v
 }
 
+func (p *CreateProjectParams) SetAccountid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["accountid"] = v
+}
+
 func (p *CreateProjectParams) SetDisplaytext(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -194,6 +207,13 @@ func (p *CreateProjectParams) SetName(v string) {
 	p.p["name"] = v
 }
 
+func (p *CreateProjectParams) SetUserid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["userid"] = v
+}
+
 // You should always use this function to get a new CreateProjectParams instance,
 // as then you are sure you have configured all required params
 func (s *ProjectService) NewCreateProjectParams(displaytext string, name string) *CreateProjectParams {
@@ -240,52 +260,52 @@ func (s *ProjectService) CreateProject(p *CreateProjectParams) (*CreateProjectRe
 }
 
 type CreateProjectResponse struct {
-	Account                   string  `json:"account"`
-	Cpuavailable              string  `json:"cpuavailable"`
-	Cpulimit                  string  `json:"cpulimit"`
-	Cputotal                  int64   `json:"cputotal"`
-	Displaytext               string  `json:"displaytext"`
-	Domain                    string  `json:"domain"`
-	Domainid                  string  `json:"domainid"`
-	Id                        string  `json:"id"`
-	Ipavailable               string  `json:"ipavailable"`
-	Iplimit                   string  `json:"iplimit"`
-	Iptotal                   int64   `json:"iptotal"`
-	JobID                     string  `json:"jobid"`
-	Jobstatus                 int     `json:"jobstatus"`
-	Memoryavailable           string  `json:"memoryavailable"`
-	Memorylimit               string  `json:"memorylimit"`
-	Memorytotal               int64   `json:"memorytotal"`
-	Name                      string  `json:"name"`
-	Networkavailable          string  `json:"networkavailable"`
-	Networklimit              string  `json:"networklimit"`
-	Networktotal              int64   `json:"networktotal"`
-	Primarystorageavailable   string  `json:"primarystorageavailable"`
-	Primarystoragelimit       string  `json:"primarystoragelimit"`
-	Primarystoragetotal       int64   `json:"primarystoragetotal"`
-	Projectaccountname        string  `json:"projectaccountname"`
-	Secondarystorageavailable string  `json:"secondarystorageavailable"`
-	Secondarystoragelimit     string  `json:"secondarystoragelimit"`
-	Secondarystoragetotal     float64 `json:"secondarystoragetotal"`
-	Snapshotavailable         string  `json:"snapshotavailable"`
-	Snapshotlimit             string  `json:"snapshotlimit"`
-	Snapshottotal             int64   `json:"snapshottotal"`
-	State                     string  `json:"state"`
-	Tags                      []Tags  `json:"tags"`
-	Templateavailable         string  `json:"templateavailable"`
-	Templatelimit             string  `json:"templatelimit"`
-	Templatetotal             int64   `json:"templatetotal"`
-	Vmavailable               string  `json:"vmavailable"`
-	Vmlimit                   string  `json:"vmlimit"`
-	Vmrunning                 int     `json:"vmrunning"`
-	Vmstopped                 int     `json:"vmstopped"`
-	Vmtotal                   int64   `json:"vmtotal"`
-	Volumeavailable           string  `json:"volumeavailable"`
-	Volumelimit               string  `json:"volumelimit"`
-	Volumetotal               int64   `json:"volumetotal"`
-	Vpcavailable              string  `json:"vpcavailable"`
-	Vpclimit                  string  `json:"vpclimit"`
-	Vpctotal                  int64   `json:"vpctotal"`
+	Cpuavailable              string   `json:"cpuavailable"`
+	Cpulimit                  string   `json:"cpulimit"`
+	Cputotal                  int64    `json:"cputotal"`
+	Displaytext               string   `json:"displaytext"`
+	Domain                    string   `json:"domain"`
+	Domainid                  string   `json:"domainid"`
+	Id                        string   `json:"id"`
+	Ipavailable               string   `json:"ipavailable"`
+	Iplimit                   string   `json:"iplimit"`
+	Iptotal                   int64    `json:"iptotal"`
+	JobID                     string   `json:"jobid"`
+	Jobstatus                 int      `json:"jobstatus"`
+	Memoryavailable           string   `json:"memoryavailable"`
+	Memorylimit               string   `json:"memorylimit"`
+	Memorytotal               int64    `json:"memorytotal"`
+	Name                      string   `json:"name"`
+	Networkavailable          string   `json:"networkavailable"`
+	Networklimit              string   `json:"networklimit"`
+	Networktotal              int64    `json:"networktotal"`
+	Owner                     []string `json:"owner"`
+	Primarystorageavailable   string   `json:"primarystorageavailable"`
+	Primarystoragelimit       string   `json:"primarystoragelimit"`
+	Primarystoragetotal       int64    `json:"primarystoragetotal"`
+	Projectaccountname        string   `json:"projectaccountname"`
+	Secondarystorageavailable string   `json:"secondarystorageavailable"`
+	Secondarystoragelimit     string   `json:"secondarystoragelimit"`
+	Secondarystoragetotal     float64  `json:"secondarystoragetotal"`
+	Snapshotavailable         string   `json:"snapshotavailable"`
+	Snapshotlimit             string   `json:"snapshotlimit"`
+	Snapshottotal             int64    `json:"snapshottotal"`
+	State                     string   `json:"state"`
+	Tags                      []Tags   `json:"tags"`
+	Templateavailable         string   `json:"templateavailable"`
+	Templatelimit             string   `json:"templatelimit"`
+	Templatetotal             int64    `json:"templatetotal"`
+	Vmavailable               string   `json:"vmavailable"`
+	Vmlimit                   string   `json:"vmlimit"`
+	Vmrunning                 int      `json:"vmrunning"`
+	Vmstopped                 int      `json:"vmstopped"`
+	Vmtotal                   int64    `json:"vmtotal"`
+	Volumeavailable           string   `json:"volumeavailable"`
+	Volumelimit               string   `json:"volumelimit"`
+	Volumetotal               int64    `json:"volumetotal"`
+	Vpcavailable              string   `json:"vpcavailable"`
+	Vpclimit                  string   `json:"vpclimit"`
+	Vpctotal                  int64    `json:"vpctotal"`
 }
 
 type DeleteProjectParams struct {
@@ -471,6 +491,9 @@ func (p *ListProjectInvitationsParams) toURLValues() url.Values {
 	if v, found := p.p["state"]; found {
 		u.Set("state", v.(string))
 	}
+	if v, found := p.p["userid"]; found {
+		u.Set("userid", v.(string))
+	}
 	return u
 }
 
@@ -551,6 +574,13 @@ func (p *ListProjectInvitationsParams) SetState(v string) {
 	p.p["state"] = v
 }
 
+func (p *ListProjectInvitationsParams) SetUserid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["userid"] = v
+}
+
 // You should always use this function to get a new ListProjectInvitationsParams instance,
 // as then you are sure you have configured all required params
 func (s *ProjectService) NewListProjectInvitationsParams() *ListProjectInvitationsParams {
@@ -623,6 +653,7 @@ type ProjectInvitation struct {
 	Project   string `json:"project"`
 	Projectid string `json:"projectid"`
 	State     string `json:"state"`
+	Userid    string `json:"userid"`
 }
 
 type ListProjectsParams struct {
@@ -637,6 +668,10 @@ func (p *ListProjectsParams) toURLValues() url.Values {
 	if v, found := p.p["account"]; found {
 		u.Set("account", v.(string))
 	}
+	if v, found := p.p["details"]; found {
+		vv := strings.Join(v.([]string), ",")
+		u.Set("details", vv)
+	}
 	if v, found := p.p["displaytext"]; found {
 		u.Set("displaytext", v.(string))
 	}
@@ -678,6 +713,9 @@ func (p *ListProjectsParams) toURLValues() url.Values {
 			u.Set(fmt.Sprintf("tags[%d].value", i), m[k])
 		}
 	}
+	if v, found := p.p["username"]; found {
+		u.Set("username", v.(string))
+	}
 	return u
 }
 
@@ -688,6 +726,13 @@ func (p *ListProjectsParams) SetAccount(v string) {
 	p.p["account"] = v
 }
 
+func (p *ListProjectsParams) SetDetails(v []string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["details"] = v
+}
+
 func (p *ListProjectsParams) SetDisplaytext(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -765,6 +810,13 @@ func (p *ListProjectsParams) SetTags(v map[string]string) {
 	p.p["tags"] = v
 }
 
+func (p *ListProjectsParams) SetUsername(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["username"] = v
+}
+
 // You should always use this function to get a new ListProjectsParams instance,
 // as then you are sure you have configured all required params
 func (s *ProjectService) NewListProjectsParams() *ListProjectsParams {
@@ -877,52 +929,52 @@ type ListProjectsResponse struct {
 }
 
 type Project struct {
-	Account                   string  `json:"account"`
-	Cpuavailable              string  `json:"cpuavailable"`
-	Cpulimit                  string  `json:"cpulimit"`
-	Cputotal                  int64   `json:"cputotal"`
-	Displaytext               string  `json:"displaytext"`
-	Domain                    string  `json:"domain"`
-	Domainid                  string  `json:"domainid"`
-	Id                        string  `json:"id"`
-	Ipavailable               string  `json:"ipavailable"`
-	Iplimit                   string  `json:"iplimit"`
-	Iptotal                   int64   `json:"iptotal"`
-	JobID                     string  `json:"jobid"`
-	Jobstatus                 int     `json:"jobstatus"`
-	Memoryavailable           string  `json:"memoryavailable"`
-	Memorylimit               string  `json:"memorylimit"`
-	Memorytotal               int64   `json:"memorytotal"`
-	Name                      string  `json:"name"`
-	Networkavailable          string  `json:"networkavailable"`
-	Networklimit              string  `json:"networklimit"`
-	Networktotal              int64   `json:"networktotal"`
-	Primarystorageavailable   string  `json:"primarystorageavailable"`
-	Primarystoragelimit       string  `json:"primarystoragelimit"`
-	Primarystoragetotal       int64   `json:"primarystoragetotal"`
-	Projectaccountname        string  `json:"projectaccountname"`
-	Secondarystorageavailable string  `json:"secondarystorageavailable"`
-	Secondarystoragelimit     string  `json:"secondarystoragelimit"`
-	Secondarystoragetotal     float64 `json:"secondarystoragetotal"`
-	Snapshotavailable         string  `json:"snapshotavailable"`
-	Snapshotlimit             string  `json:"snapshotlimit"`
-	Snapshottotal             int64   `json:"snapshottotal"`
-	State                     string  `json:"state"`
-	Tags                      []Tags  `json:"tags"`
-	Templateavailable         string  `json:"templateavailable"`
-	Templatelimit             string  `json:"templatelimit"`
-	Templatetotal             int64   `json:"templatetotal"`
-	Vmavailable               string  `json:"vmavailable"`
-	Vmlimit                   string  `json:"vmlimit"`
-	Vmrunning                 int     `json:"vmrunning"`
-	Vmstopped                 int     `json:"vmstopped"`
-	Vmtotal                   int64   `json:"vmtotal"`
-	Volumeavailable           string  `json:"volumeavailable"`
-	Volumelimit               string  `json:"volumelimit"`
-	Volumetotal               int64   `json:"volumetotal"`
-	Vpcavailable              string  `json:"vpcavailable"`
-	Vpclimit                  string  `json:"vpclimit"`
-	Vpctotal                  int64   `json:"vpctotal"`
+	Cpuavailable              string   `json:"cpuavailable"`
+	Cpulimit                  string   `json:"cpulimit"`
+	Cputotal                  int64    `json:"cputotal"`
+	Displaytext               string   `json:"displaytext"`
+	Domain                    string   `json:"domain"`
+	Domainid                  string   `json:"domainid"`
+	Id                        string   `json:"id"`
+	Ipavailable               string   `json:"ipavailable"`
+	Iplimit                   string   `json:"iplimit"`
+	Iptotal                   int64    `json:"iptotal"`
+	JobID                     string   `json:"jobid"`
+	Jobstatus                 int      `json:"jobstatus"`
+	Memoryavailable           string   `json:"memoryavailable"`
+	Memorylimit               string   `json:"memorylimit"`
+	Memorytotal               int64    `json:"memorytotal"`
+	Name                      string   `json:"name"`
+	Networkavailable          string   `json:"networkavailable"`
+	Networklimit              string   `json:"networklimit"`
+	Networktotal              int64    `json:"networktotal"`
+	Owner                     []string `json:"owner"`
+	Primarystorageavailable   string   `json:"primarystorageavailable"`
+	Primarystoragelimit       string   `json:"primarystoragelimit"`
+	Primarystoragetotal       int64    `json:"primarystoragetotal"`
+	Projectaccountname        string   `json:"projectaccountname"`
+	Secondarystorageavailable string   `json:"secondarystorageavailable"`
+	Secondarystoragelimit     string   `json:"secondarystoragelimit"`
+	Secondarystoragetotal     float64  `json:"secondarystoragetotal"`
+	Snapshotavailable         string   `json:"snapshotavailable"`
+	Snapshotlimit             string   `json:"snapshotlimit"`
+	Snapshottotal             int64    `json:"snapshottotal"`
+	State                     string   `json:"state"`
+	Tags                      []Tags   `json:"tags"`
+	Templateavailable         string   `json:"templateavailable"`
+	Templatelimit             string   `json:"templatelimit"`
+	Templatetotal             int64    `json:"templatetotal"`
+	Vmavailable               string   `json:"vmavailable"`
+	Vmlimit                   string   `json:"vmlimit"`
+	Vmrunning                 int      `json:"vmrunning"`
+	Vmstopped                 int      `json:"vmstopped"`
+	Vmtotal                   int64    `json:"vmtotal"`
+	Volumeavailable           string   `json:"volumeavailable"`
+	Volumelimit               string   `json:"volumelimit"`
+	Volumetotal               int64    `json:"volumetotal"`
+	Vpcavailable              string   `json:"vpcavailable"`
+	Vpclimit                  string   `json:"vpclimit"`
+	Vpctotal                  int64    `json:"vpctotal"`
 }
 
 type SuspendProjectParams struct {
@@ -992,52 +1044,52 @@ func (s *ProjectService) SuspendProject(p *SuspendProjectParams) (*SuspendProjec
 }
 
 type SuspendProjectResponse struct {
-	Account                   string  `json:"account"`
-	Cpuavailable              string  `json:"cpuavailable"`
-	Cpulimit                  string  `json:"cpulimit"`
-	Cputotal                  int64   `json:"cputotal"`
-	Displaytext               string  `json:"displaytext"`
-	Domain                    string  `json:"domain"`
-	Domainid                  string  `json:"domainid"`
-	Id                        string  `json:"id"`
-	Ipavailable               string  `json:"ipavailable"`
-	Iplimit                   string  `json:"iplimit"`
-	Iptotal                   int64   `json:"iptotal"`
-	JobID                     string  `json:"jobid"`
-	Jobstatus                 int     `json:"jobstatus"`
-	Memoryavailable           string  `json:"memoryavailable"`
-	Memorylimit               string  `json:"memorylimit"`
-	Memorytotal               int64   `json:"memorytotal"`
-	Name                      string  `json:"name"`
-	Networkavailable          string  `json:"networkavailable"`
-	Networklimit              string  `json:"networklimit"`
-	Networktotal              int64   `json:"networktotal"`
-	Primarystorageavailable   string  `json:"primarystorageavailable"`
-	Primarystoragelimit       string  `json:"primarystoragelimit"`
-	Primarystoragetotal       int64   `json:"primarystoragetotal"`
-	Projectaccountname        string  `json:"projectaccountname"`
-	Secondarystorageavailable string  `json:"secondarystorageavailable"`
-	Secondarystoragelimit     string  `json:"secondarystoragelimit"`
-	Secondarystoragetotal     float64 `json:"secondarystoragetotal"`
-	Snapshotavailable         string  `json:"snapshotavailable"`
-	Snapshotlimit             string  `json:"snapshotlimit"`
-	Snapshottotal             int64   `json:"snapshottotal"`
-	State                     string  `json:"state"`
-	Tags                      []Tags  `json:"tags"`
-	Templateavailable         string  `json:"templateavailable"`
-	Templatelimit             string  `json:"templatelimit"`
-	Templatetotal             int64   `json:"templatetotal"`
-	Vmavailable               string  `json:"vmavailable"`
-	Vmlimit                   string  `json:"vmlimit"`
-	Vmrunning                 int     `json:"vmrunning"`
-	Vmstopped                 int     `json:"vmstopped"`
-	Vmtotal                   int64   `json:"vmtotal"`
-	Volumeavailable           string  `json:"volumeavailable"`
-	Volumelimit               string  `json:"volumelimit"`
-	Volumetotal               int64   `json:"volumetotal"`
-	Vpcavailable              string  `json:"vpcavailable"`
-	Vpclimit                  string  `json:"vpclimit"`
-	Vpctotal                  int64   `json:"vpctotal"`
+	Cpuavailable              string   `json:"cpuavailable"`
+	Cpulimit                  string   `json:"cpulimit"`
+	Cputotal                  int64    `json:"cputotal"`
+	Displaytext               string   `json:"displaytext"`
+	Domain                    string   `json:"domain"`
+	Domainid                  string   `json:"domainid"`
+	Id                        string   `json:"id"`
+	Ipavailable               string   `json:"ipavailable"`
+	Iplimit                   string   `json:"iplimit"`
+	Iptotal                   int64    `json:"iptotal"`
+	JobID                     string   `json:"jobid"`
+	Jobstatus                 int      `json:"jobstatus"`
+	Memoryavailable           string   `json:"memoryavailable"`
+	Memorylimit               string   `json:"memorylimit"`
+	Memorytotal               int64    `json:"memorytotal"`
+	Name                      string   `json:"name"`
+	Networkavailable          string   `json:"networkavailable"`
+	Networklimit              string   `json:"networklimit"`
+	Networktotal              int64    `json:"networktotal"`
+	Owner                     []string `json:"owner"`
+	Primarystorageavailable   string   `json:"primarystorageavailable"`
+	Primarystoragelimit       string   `json:"primarystoragelimit"`
+	Primarystoragetotal       int64    `json:"primarystoragetotal"`
+	Projectaccountname        string   `json:"projectaccountname"`
+	Secondarystorageavailable string   `json:"secondarystorageavailable"`
+	Secondarystoragelimit     string   `json:"secondarystoragelimit"`
+	Secondarystoragetotal     float64  `json:"secondarystoragetotal"`
+	Snapshotavailable         string   `json:"snapshotavailable"`
+	Snapshotlimit             string   `json:"snapshotlimit"`
+	Snapshottotal             int64    `json:"snapshottotal"`
+	State                     string   `json:"state"`
+	Tags                      []Tags   `json:"tags"`
+	Templateavailable         string   `json:"templateavailable"`
+	Templatelimit             string   `json:"templatelimit"`
+	Templatetotal             int64    `json:"templatetotal"`
+	Vmavailable               string   `json:"vmavailable"`
+	Vmlimit                   string   `json:"vmlimit"`
+	Vmrunning                 int      `json:"vmrunning"`
+	Vmstopped                 int      `json:"vmstopped"`
+	Vmtotal                   int64    `json:"vmtotal"`
+	Volumeavailable           string   `json:"volumeavailable"`
+	Volumelimit               string   `json:"volumelimit"`
+	Volumetotal               int64    `json:"volumetotal"`
+	Vpcavailable              string   `json:"vpcavailable"`
+	Vpclimit                  string   `json:"vpclimit"`
+	Vpctotal                  int64    `json:"vpctotal"`
 }
 
 type UpdateProjectParams struct {
@@ -1058,6 +1110,16 @@ func (p *UpdateProjectParams) toURLValues() url.Values {
 	if v, found := p.p["id"]; found {
 		u.Set("id", v.(string))
 	}
+	if v, found := p.p["roletype"]; found {
+		u.Set("roletype", v.(string))
+	}
+	if v, found := p.p["swapowner"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("swapowner", vv)
+	}
+	if v, found := p.p["userid"]; found {
+		u.Set("userid", v.(string))
+	}
 	return u
 }
 
@@ -1082,6 +1144,27 @@ func (p *UpdateProjectParams) SetId(v string) {
 	p.p["id"] = v
 }
 
+func (p *UpdateProjectParams) SetRoletype(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["roletype"] = v
+}
+
+func (p *UpdateProjectParams) SetSwapowner(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["swapowner"] = v
+}
+
+func (p *UpdateProjectParams) SetUserid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["userid"] = v
+}
+
 // You should always use this function to get a new UpdateProjectParams instance,
 // as then you are sure you have configured all required params
 func (s *ProjectService) NewUpdateProjectParams(id string) *UpdateProjectParams {
@@ -1127,52 +1210,52 @@ func (s *ProjectService) UpdateProject(p *UpdateProjectParams) (*UpdateProjectRe
 }
 
 type UpdateProjectResponse struct {
-	Account                   string  `json:"account"`
-	Cpuavailable              string  `json:"cpuavailable"`
-	Cpulimit                  string  `json:"cpulimit"`
-	Cputotal                  int64   `json:"cputotal"`
-	Displaytext               string  `json:"displaytext"`
-	Domain                    string  `json:"domain"`
-	Domainid                  string  `json:"domainid"`
-	Id                        string  `json:"id"`
-	Ipavailable               string  `json:"ipavailable"`
-	Iplimit                   string  `json:"iplimit"`
-	Iptotal                   int64   `json:"iptotal"`
-	JobID                     string  `json:"jobid"`
-	Jobstatus                 int     `json:"jobstatus"`
-	Memoryavailable           string  `json:"memoryavailable"`
-	Memorylimit               string  `json:"memorylimit"`
-	Memorytotal               int64   `json:"memorytotal"`
-	Name                      string  `json:"name"`
-	Networkavailable          string  `json:"networkavailable"`
-	Networklimit              string  `json:"networklimit"`
-	Networktotal              int64   `json:"networktotal"`
-	Primarystorageavailable   string  `json:"primarystorageavailable"`
-	Primarystoragelimit       string  `json:"primarystoragelimit"`
-	Primarystoragetotal       int64   `json:"primarystoragetotal"`
-	Projectaccountname        string  `json:"projectaccountname"`
-	Secondarystorageavailable string  `json:"secondarystorageavailable"`
-	Secondarystoragelimit     string  `json:"secondarystoragelimit"`
-	Secondarystoragetotal     float64 `json:"secondarystoragetotal"`
-	Snapshotavailable         string  `json:"snapshotavailable"`
-	Snapshotlimit             string  `json:"snapshotlimit"`
-	Snapshottotal             int64   `json:"snapshottotal"`
-	State                     string  `json:"state"`
-	Tags                      []Tags  `json:"tags"`
-	Templateavailable         string  `json:"templateavailable"`
-	Templatelimit             string  `json:"templatelimit"`
-	Templatetotal             int64   `json:"templatetotal"`
-	Vmavailable               string  `json:"vmavailable"`
-	Vmlimit                   string  `json:"vmlimit"`
-	Vmrunning                 int     `json:"vmrunning"`
-	Vmstopped                 int     `json:"vmstopped"`
-	Vmtotal                   int64   `json:"vmtotal"`
-	Volumeavailable           string  `json:"volumeavailable"`
-	Volumelimit               string  `json:"volumelimit"`
-	Volumetotal               int64   `json:"volumetotal"`
-	Vpcavailable              string  `json:"vpcavailable"`
-	Vpclimit                  string  `json:"vpclimit"`
-	Vpctotal                  int64   `json:"vpctotal"`
+	Cpuavailable              string   `json:"cpuavailable"`
+	Cpulimit                  string   `json:"cpulimit"`
+	Cputotal                  int64    `json:"cputotal"`
+	Displaytext               string   `json:"displaytext"`
+	Domain                    string   `json:"domain"`
+	Domainid                  string   `json:"domainid"`
+	Id                        string   `json:"id"`
+	Ipavailable               string   `json:"ipavailable"`
+	Iplimit                   string   `json:"iplimit"`
+	Iptotal                   int64    `json:"iptotal"`
+	JobID                     string   `json:"jobid"`
+	Jobstatus                 int      `json:"jobstatus"`
+	Memoryavailable           string   `json:"memoryavailable"`
+	Memorylimit               string   `json:"memorylimit"`
+	Memorytotal               int64    `json:"memorytotal"`
+	Name                      string   `json:"name"`
+	Networkavailable          string   `json:"networkavailable"`
+	Networklimit              string   `json:"networklimit"`
+	Networktotal              int64    `json:"networktotal"`
+	Owner                     []string `json:"owner"`
+	Primarystorageavailable   string   `json:"primarystorageavailable"`
+	Primarystoragelimit       string   `json:"primarystoragelimit"`
+	Primarystoragetotal       int64    `json:"primarystoragetotal"`
+	Projectaccountname        string   `json:"projectaccountname"`
+	Secondarystorageavailable string   `json:"secondarystorageavailable"`
+	Secondarystoragelimit     string   `json:"secondarystoragelimit"`
+	Secondarystoragetotal     float64  `json:"secondarystoragetotal"`
+	Snapshotavailable         string   `json:"snapshotavailable"`
+	Snapshotlimit             string   `json:"snapshotlimit"`
+	Snapshottotal             int64    `json:"snapshottotal"`
+	State                     string   `json:"state"`
+	Tags                      []Tags   `json:"tags"`
+	Templateavailable         string   `json:"templateavailable"`
+	Templatelimit             string   `json:"templatelimit"`
+	Templatetotal             int64    `json:"templatetotal"`
+	Vmavailable               string   `json:"vmavailable"`
+	Vmlimit                   string   `json:"vmlimit"`
+	Vmrunning                 int      `json:"vmrunning"`
+	Vmstopped                 int      `json:"vmstopped"`
+	Vmtotal                   int64    `json:"vmtotal"`
+	Volumeavailable           string   `json:"volumeavailable"`
+	Volumelimit               string   `json:"volumelimit"`
+	Volumetotal               int64    `json:"volumetotal"`
+	Vpcavailable              string   `json:"vpcavailable"`
+	Vpclimit                  string   `json:"vpclimit"`
+	Vpctotal                  int64    `json:"vpctotal"`
 }
 
 type UpdateProjectInvitationParams struct {
@@ -1197,6 +1280,9 @@ func (p *UpdateProjectInvitationParams) toURLValues() url.Values {
 	if v, found := p.p["token"]; found {
 		u.Set("token", v.(string))
 	}
+	if v, found := p.p["userid"]; found {
+		u.Set("userid", v.(string))
+	}
 	return u
 }
 
@@ -1228,6 +1314,13 @@ func (p *UpdateProjectInvitationParams) SetToken(v string) {
 	p.p["token"] = v
 }
 
+func (p *UpdateProjectInvitationParams) SetUserid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["userid"] = v
+}
+
 // You should always use this function to get a new UpdateProjectInvitationParams instance,
 // as then you are sure you have configured all required params
 func (s *ProjectService) NewUpdateProjectInvitationParams(projectid string) *UpdateProjectInvitationParams {
diff --git a/cloudstack/RoleService.go b/cloudstack/RoleService.go
index ca4f0b1..215f94a 100644
--- a/cloudstack/RoleService.go
+++ b/cloudstack/RoleService.go
@@ -42,6 +42,9 @@ func (p *CreateRoleParams) toURLValues() url.Values {
 	if v, found := p.p["name"]; found {
 		u.Set("name", v.(string))
 	}
+	if v, found := p.p["roleid"]; found {
+		u.Set("roleid", v.(string))
+	}
 	if v, found := p.p["type"]; found {
 		u.Set("type", v.(string))
 	}
@@ -62,6 +65,13 @@ func (p *CreateRoleParams) SetName(v string) {
 	p.p["name"] = v
 }
 
+func (p *CreateRoleParams) SetRoleid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["roleid"] = v
+}
+
 func (p *CreateRoleParams) SetType(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -71,11 +81,10 @@ func (p *CreateRoleParams) SetType(v string) {
 
 // You should always use this function to get a new CreateRoleParams instance,
 // as then you are sure you have configured all required params
-func (s *RoleService) NewCreateRoleParams(name string, roleType string) *CreateRoleParams {
+func (s *RoleService) NewCreateRoleParams(name string) *CreateRoleParams {
 	p := &CreateRoleParams{}
 	p.p = make(map[string]interface{})
 	p.p["name"] = name
-	p.p["type"] = roleType
 	return p
 }
 
@@ -97,6 +106,7 @@ func (s *RoleService) CreateRole(p *CreateRoleParams) (*CreateRoleResponse, erro
 type CreateRoleResponse struct {
 	Description string `json:"description"`
 	Id          string `json:"id"`
+	Isdefault   bool   `json:"isdefault"`
 	JobID       string `json:"jobid"`
 	Jobstatus   int    `json:"jobstatus"`
 	Name        string `json:"name"`
@@ -166,7 +176,7 @@ func (s *RoleService) NewCreateRolePermissionParams(permission string, roleid st
 	return p
 }
 
-// Adds a API permission to a role
+// Adds an API permission to a role
 func (s *RoleService) CreateRolePermission(p *CreateRolePermissionParams) (*CreateRolePermissionResponse, error) {
 	resp, err := s.cs.newRequest("createRolePermission", p.toURLValues())
 	if err != nil {
@@ -425,9 +435,20 @@ func (p *ListRolesParams) toURLValues() url.Values {
 	if v, found := p.p["id"]; found {
 		u.Set("id", v.(string))
 	}
+	if v, found := p.p["keyword"]; found {
+		u.Set("keyword", v.(string))
+	}
 	if v, found := p.p["name"]; found {
 		u.Set("name", v.(string))
 	}
+	if v, found := p.p["page"]; found {
+		vv := strconv.Itoa(v.(int))
+		u.Set("page", vv)
+	}
+	if v, found := p.p["pagesize"]; found {
+		vv := strconv.Itoa(v.(int))
+		u.Set("pagesize", vv)
+	}
 	if v, found := p.p["type"]; found {
 		u.Set("type", v.(string))
 	}
@@ -441,6 +462,13 @@ func (p *ListRolesParams) SetId(v string) {
 	p.p["id"] = v
 }
 
+func (p *ListRolesParams) SetKeyword(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["keyword"] = v
+}
+
 func (p *ListRolesParams) SetName(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -448,6 +476,20 @@ func (p *ListRolesParams) SetName(v string) {
 	p.p["name"] = v
 }
 
+func (p *ListRolesParams) SetPage(v int) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["page"] = v
+}
+
+func (p *ListRolesParams) SetPagesize(v int) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["pagesize"] = v
+}
+
 func (p *ListRolesParams) SetType(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -569,6 +611,7 @@ type ListRolesResponse struct {
 type Role struct {
 	Description string `json:"description"`
 	Id          string `json:"id"`
+	Isdefault   bool   `json:"isdefault"`
 	JobID       string `json:"jobid"`
 	Jobstatus   int    `json:"jobstatus"`
 	Name        string `json:"name"`
@@ -587,6 +630,9 @@ func (p *UpdateRoleParams) toURLValues() url.Values {
 	if v, found := p.p["description"]; found {
 		u.Set("description", v.(string))
 	}
+	if v, found := p.p["description"]; found {
+		u.Set("description", v.(string))
+	}
 	if v, found := p.p["id"]; found {
 		u.Set("id", v.(string))
 	}
@@ -654,6 +700,7 @@ func (s *RoleService) UpdateRole(p *UpdateRoleParams) (*UpdateRoleResponse, erro
 type UpdateRoleResponse struct {
 	Description string `json:"description"`
 	Id          string `json:"id"`
+	Isdefault   bool   `json:"isdefault"`
 	JobID       string `json:"jobid"`
 	Jobstatus   int    `json:"jobstatus"`
 	Name        string `json:"name"`
diff --git a/cloudstack/RouterService.go b/cloudstack/RouterService.go
index 4e6b2df..802286b 100644
--- a/cloudstack/RouterService.go
+++ b/cloudstack/RouterService.go
@@ -85,54 +85,66 @@ func (s *RouterService) ChangeServiceForRouter(p *ChangeServiceForRouterParams)
 }
 
 type ChangeServiceForRouterResponse struct {
-	Account             string `json:"account"`
-	Created             string `json:"created"`
-	Dns1                string `json:"dns1"`
-	Dns2                string `json:"dns2"`
-	Domain              string `json:"domain"`
-	Domainid            string `json:"domainid"`
-	Gateway             string `json:"gateway"`
-	Guestipaddress      string `json:"guestipaddress"`
-	Guestmacaddress     string `json:"guestmacaddress"`
-	Guestnetmask        string `json:"guestnetmask"`
-	Guestnetworkid      string `json:"guestnetworkid"`
-	Guestnetworkname    string `json:"guestnetworkname"`
-	Hostid              string `json:"hostid"`
-	Hostname            string `json:"hostname"`
-	Hypervisor          string `json:"hypervisor"`
-	Id                  string `json:"id"`
-	Ip6dns1             string `json:"ip6dns1"`
-	Ip6dns2             string `json:"ip6dns2"`
-	Isredundantrouter   bool   `json:"isredundantrouter"`
-	JobID               string `json:"jobid"`
-	Jobstatus           int    `json:"jobstatus"`
-	Linklocalip         string `json:"linklocalip"`
-	Linklocalmacaddress string `json:"linklocalmacaddress"`
-	Linklocalnetmask    string `json:"linklocalnetmask"`
-	Linklocalnetworkid  string `json:"linklocalnetworkid"`
-	Name                string `json:"name"`
-	Networkdomain       string `json:"networkdomain"`
-	Nic                 []Nic  `json:"nic"`
-	Podid               string `json:"podid"`
-	Project             string `json:"project"`
-	Projectid           string `json:"projectid"`
-	Publicip            string `json:"publicip"`
-	Publicmacaddress    string `json:"publicmacaddress"`
-	Publicnetmask       string `json:"publicnetmask"`
-	Publicnetworkid     string `json:"publicnetworkid"`
-	Redundantstate      string `json:"redundantstate"`
-	Requiresupgrade     bool   `json:"requiresupgrade"`
-	Role                string `json:"role"`
-	Scriptsversion      string `json:"scriptsversion"`
-	Serviceofferingid   string `json:"serviceofferingid"`
-	Serviceofferingname string `json:"serviceofferingname"`
-	State               string `json:"state"`
-	Templateid          string `json:"templateid"`
-	Version             string `json:"version"`
-	Vpcid               string `json:"vpcid"`
-	Vpcname             string `json:"vpcname"`
-	Zoneid              string `json:"zoneid"`
-	Zonename            string `json:"zonename"`
+	Account             string                                             `json:"account"`
+	Created             string                                             `json:"created"`
+	Dns1                string                                             `json:"dns1"`
+	Dns2                string                                             `json:"dns2"`
+	Domain              string                                             `json:"domain"`
+	Domainid            string                                             `json:"domainid"`
+	Gateway             string                                             `json:"gateway"`
+	Guestipaddress      string                                             `json:"guestipaddress"`
+	Guestmacaddress     string                                             `json:"guestmacaddress"`
+	Guestnetmask        string                                             `json:"guestnetmask"`
+	Guestnetworkid      string                                             `json:"guestnetworkid"`
+	Guestnetworkname    string                                             `json:"guestnetworkname"`
+	Healthcheckresults  []ChangeServiceForRouterResponseHealthcheckresults `json:"healthcheckresults"`
+	Healthchecksfailed  bool                                               `json:"healthchecksfailed"`
+	Hostid              string                                             `json:"hostid"`
+	Hostname            string                                             `json:"hostname"`
+	Hypervisor          string                                             `json:"hypervisor"`
+	Id                  string                                             `json:"id"`
+	Ip6dns1             string                                             `json:"ip6dns1"`
+	Ip6dns2             string                                             `json:"ip6dns2"`
+	Isredundantrouter   bool                                               `json:"isredundantrouter"`
+	JobID               string                                             `json:"jobid"`
+	Jobstatus           int                                                `json:"jobstatus"`
+	Linklocalip         string                                             `json:"linklocalip"`
+	Linklocalmacaddress string                                             `json:"linklocalmacaddress"`
+	Linklocalnetmask    string                                             `json:"linklocalnetmask"`
+	Linklocalnetworkid  string                                             `json:"linklocalnetworkid"`
+	Name                string                                             `json:"name"`
+	Networkdomain       string                                             `json:"networkdomain"`
+	Nic                 []Nic                                              `json:"nic"`
+	Podid               string                                             `json:"podid"`
+	Podname             string                                             `json:"podname"`
+	Project             string                                             `json:"project"`
+	Projectid           string                                             `json:"projectid"`
+	Publicip            string                                             `json:"publicip"`
+	Publicmacaddress    string                                             `json:"publicmacaddress"`
+	Publicnetmask       string                                             `json:"publicnetmask"`
+	Publicnetworkid     string                                             `json:"publicnetworkid"`
+	Redundantstate      string                                             `json:"redundantstate"`
+	Requiresupgrade     bool                                               `json:"requiresupgrade"`
+	Role                string                                             `json:"role"`
+	Scriptsversion      string                                             `json:"scriptsversion"`
+	Serviceofferingid   string                                             `json:"serviceofferingid"`
+	Serviceofferingname string                                             `json:"serviceofferingname"`
+	State               string                                             `json:"state"`
+	Templateid          string                                             `json:"templateid"`
+	Templatename        string                                             `json:"templatename"`
+	Version             string                                             `json:"version"`
+	Vpcid               string                                             `json:"vpcid"`
+	Vpcname             string                                             `json:"vpcname"`
+	Zoneid              string                                             `json:"zoneid"`
+	Zonename            string                                             `json:"zonename"`
+}
+
+type ChangeServiceForRouterResponseHealthcheckresults struct {
+	Checkname   string `json:"checkname"`
+	Checktype   string `json:"checktype"`
+	Details     string `json:"details"`
+	Lastupdated string `json:"lastupdated"`
+	Success     bool   `json:"success"`
 }
 
 type ConfigureVirtualRouterElementParams struct {
@@ -382,54 +394,66 @@ func (s *RouterService) DestroyRouter(p *DestroyRouterParams) (*DestroyRouterRes
 }
 
 type DestroyRouterResponse struct {
-	Account             string `json:"account"`
-	Created             string `json:"created"`
-	Dns1                string `json:"dns1"`
-	Dns2                string `json:"dns2"`
-	Domain              string `json:"domain"`
-	Domainid            string `json:"domainid"`
-	Gateway             string `json:"gateway"`
-	Guestipaddress      string `json:"guestipaddress"`
-	Guestmacaddress     string `json:"guestmacaddress"`
-	Guestnetmask        string `json:"guestnetmask"`
-	Guestnetworkid      string `json:"guestnetworkid"`
-	Guestnetworkname    string `json:"guestnetworkname"`
-	Hostid              string `json:"hostid"`
-	Hostname            string `json:"hostname"`
-	Hypervisor          string `json:"hypervisor"`
-	Id                  string `json:"id"`
-	Ip6dns1             string `json:"ip6dns1"`
-	Ip6dns2             string `json:"ip6dns2"`
-	Isredundantrouter   bool   `json:"isredundantrouter"`
-	JobID               string `json:"jobid"`
-	Jobstatus           int    `json:"jobstatus"`
-	Linklocalip         string `json:"linklocalip"`
-	Linklocalmacaddress string `json:"linklocalmacaddress"`
-	Linklocalnetmask    string `json:"linklocalnetmask"`
-	Linklocalnetworkid  string `json:"linklocalnetworkid"`
-	Name                string `json:"name"`
-	Networkdomain       string `json:"networkdomain"`
-	Nic                 []Nic  `json:"nic"`
-	Podid               string `json:"podid"`
-	Project             string `json:"project"`
-	Projectid           string `json:"projectid"`
-	Publicip            string `json:"publicip"`
-	Publicmacaddress    string `json:"publicmacaddress"`
-	Publicnetmask       string `json:"publicnetmask"`
-	Publicnetworkid     string `json:"publicnetworkid"`
-	Redundantstate      string `json:"redundantstate"`
-	Requiresupgrade     bool   `json:"requiresupgrade"`
-	Role                string `json:"role"`
-	Scriptsversion      string `json:"scriptsversion"`
-	Serviceofferingid   string `json:"serviceofferingid"`
-	Serviceofferingname string `json:"serviceofferingname"`
-	State               string `json:"state"`
-	Templateid          string `json:"templateid"`
-	Version             string `json:"version"`
-	Vpcid               string `json:"vpcid"`
-	Vpcname             string `json:"vpcname"`
-	Zoneid              string `json:"zoneid"`
-	Zonename            string `json:"zonename"`
+	Account             string                                    `json:"account"`
+	Created             string                                    `json:"created"`
+	Dns1                string                                    `json:"dns1"`
+	Dns2                string                                    `json:"dns2"`
+	Domain              string                                    `json:"domain"`
+	Domainid            string                                    `json:"domainid"`
+	Gateway             string                                    `json:"gateway"`
+	Guestipaddress      string                                    `json:"guestipaddress"`
+	Guestmacaddress     string                                    `json:"guestmacaddress"`
+	Guestnetmask        string                                    `json:"guestnetmask"`
+	Guestnetworkid      string                                    `json:"guestnetworkid"`
+	Guestnetworkname    string                                    `json:"guestnetworkname"`
+	Healthcheckresults  []DestroyRouterResponseHealthcheckresults `json:"healthcheckresults"`
+	Healthchecksfailed  bool                                      `json:"healthchecksfailed"`
+	Hostid              string                                    `json:"hostid"`
+	Hostname            string                                    `json:"hostname"`
+	Hypervisor          string                                    `json:"hypervisor"`
+	Id                  string                                    `json:"id"`
+	Ip6dns1             string                                    `json:"ip6dns1"`
+	Ip6dns2             string                                    `json:"ip6dns2"`
+	Isredundantrouter   bool                                      `json:"isredundantrouter"`
+	JobID               string                                    `json:"jobid"`
+	Jobstatus           int                                       `json:"jobstatus"`
+	Linklocalip         string                                    `json:"linklocalip"`
+	Linklocalmacaddress string                                    `json:"linklocalmacaddress"`
+	Linklocalnetmask    string                                    `json:"linklocalnetmask"`
+	Linklocalnetworkid  string                                    `json:"linklocalnetworkid"`
+	Name                string                                    `json:"name"`
+	Networkdomain       string                                    `json:"networkdomain"`
+	Nic                 []Nic                                     `json:"nic"`
+	Podid               string                                    `json:"podid"`
+	Podname             string                                    `json:"podname"`
+	Project             string                                    `json:"project"`
+	Projectid           string                                    `json:"projectid"`
+	Publicip            string                                    `json:"publicip"`
+	Publicmacaddress    string                                    `json:"publicmacaddress"`
+	Publicnetmask       string                                    `json:"publicnetmask"`
+	Publicnetworkid     string                                    `json:"publicnetworkid"`
+	Redundantstate      string                                    `json:"redundantstate"`
+	Requiresupgrade     bool                                      `json:"requiresupgrade"`
+	Role                string                                    `json:"role"`
+	Scriptsversion      string                                    `json:"scriptsversion"`
+	Serviceofferingid   string                                    `json:"serviceofferingid"`
+	Serviceofferingname string                                    `json:"serviceofferingname"`
+	State               string                                    `json:"state"`
+	Templateid          string                                    `json:"templateid"`
+	Templatename        string                                    `json:"templatename"`
+	Version             string                                    `json:"version"`
+	Vpcid               string                                    `json:"vpcid"`
+	Vpcname             string                                    `json:"vpcname"`
+	Zoneid              string                                    `json:"zoneid"`
+	Zonename            string                                    `json:"zonename"`
+}
+
+type DestroyRouterResponseHealthcheckresults struct {
+	Checkname   string `json:"checkname"`
+	Checktype   string `json:"checktype"`
+	Details     string `json:"details"`
+	Lastupdated string `json:"lastupdated"`
+	Success     bool   `json:"success"`
 }
 
 type ListRoutersParams struct {
@@ -450,6 +474,10 @@ func (p *ListRoutersParams) toURLValues() url.Values {
 	if v, found := p.p["domainid"]; found {
 		u.Set("domainid", v.(string))
 	}
+	if v, found := p.p["fetchhealthcheckresults"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("fetchhealthcheckresults", vv)
+	}
 	if v, found := p.p["forvpc"]; found {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("forvpc", vv)
@@ -527,6 +555,13 @@ func (p *ListRoutersParams) SetDomainid(v string) {
 	p.p["domainid"] = v
 }
 
+func (p *ListRoutersParams) SetFetchhealthcheckresults(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["fetchhealthcheckresults"] = v
+}
+
 func (p *ListRoutersParams) SetForvpc(v bool) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -751,54 +786,66 @@ type ListRoutersResponse struct {
 }
 
 type Router struct {
-	Account             string `json:"account"`
-	Created             string `json:"created"`
-	Dns1                string `json:"dns1"`
-	Dns2                string `json:"dns2"`
-	Domain              string `json:"domain"`
-	Domainid            string `json:"domainid"`
-	Gateway             string `json:"gateway"`
-	Guestipaddress      string `json:"guestipaddress"`
-	Guestmacaddress     string `json:"guestmacaddress"`
-	Guestnetmask        string `json:"guestnetmask"`
-	Guestnetworkid      string `json:"guestnetworkid"`
-	Guestnetworkname    string `json:"guestnetworkname"`
-	Hostid              string `json:"hostid"`
-	Hostname            string `json:"hostname"`
-	Hypervisor          string `json:"hypervisor"`
-	Id                  string `json:"id"`
-	Ip6dns1             string `json:"ip6dns1"`
-	Ip6dns2             string `json:"ip6dns2"`
-	Isredundantrouter   bool   `json:"isredundantrouter"`
-	JobID               string `json:"jobid"`
-	Jobstatus           int    `json:"jobstatus"`
-	Linklocalip         string `json:"linklocalip"`
-	Linklocalmacaddress string `json:"linklocalmacaddress"`
-	Linklocalnetmask    string `json:"linklocalnetmask"`
-	Linklocalnetworkid  string `json:"linklocalnetworkid"`
-	Name                string `json:"name"`
-	Networkdomain       string `json:"networkdomain"`
-	Nic                 []Nic  `json:"nic"`
-	Podid               string `json:"podid"`
-	Project             string `json:"project"`
-	Projectid           string `json:"projectid"`
-	Publicip            string `json:"publicip"`
-	Publicmacaddress    string `json:"publicmacaddress"`
-	Publicnetmask       string `json:"publicnetmask"`
-	Publicnetworkid     string `json:"publicnetworkid"`
-	Redundantstate      string `json:"redundantstate"`
-	Requiresupgrade     bool   `json:"requiresupgrade"`
-	Role                string `json:"role"`
-	Scriptsversion      string `json:"scriptsversion"`
-	Serviceofferingid   string `json:"serviceofferingid"`
-	Serviceofferingname string `json:"serviceofferingname"`
-	State               string `json:"state"`
-	Templateid          string `json:"templateid"`
-	Version             string `json:"version"`
-	Vpcid               string `json:"vpcid"`
-	Vpcname             string `json:"vpcname"`
-	Zoneid              string `json:"zoneid"`
-	Zonename            string `json:"zonename"`
+	Account             string                     `json:"account"`
+	Created             string                     `json:"created"`
+	Dns1                string                     `json:"dns1"`
+	Dns2                string                     `json:"dns2"`
+	Domain              string                     `json:"domain"`
+	Domainid            string                     `json:"domainid"`
+	Gateway             string                     `json:"gateway"`
+	Guestipaddress      string                     `json:"guestipaddress"`
+	Guestmacaddress     string                     `json:"guestmacaddress"`
+	Guestnetmask        string                     `json:"guestnetmask"`
+	Guestnetworkid      string                     `json:"guestnetworkid"`
+	Guestnetworkname    string                     `json:"guestnetworkname"`
+	Healthcheckresults  []RouterHealthcheckresults `json:"healthcheckresults"`
+	Healthchecksfailed  bool                       `json:"healthchecksfailed"`
+	Hostid              string                     `json:"hostid"`
+	Hostname            string                     `json:"hostname"`
+	Hypervisor          string                     `json:"hypervisor"`
+	Id                  string                     `json:"id"`
+	Ip6dns1             string                     `json:"ip6dns1"`
+	Ip6dns2             string                     `json:"ip6dns2"`
+	Isredundantrouter   bool                       `json:"isredundantrouter"`
+	JobID               string                     `json:"jobid"`
+	Jobstatus           int                        `json:"jobstatus"`
+	Linklocalip         string                     `json:"linklocalip"`
+	Linklocalmacaddress string                     `json:"linklocalmacaddress"`
+	Linklocalnetmask    string                     `json:"linklocalnetmask"`
+	Linklocalnetworkid  string                     `json:"linklocalnetworkid"`
+	Name                string                     `json:"name"`
+	Networkdomain       string                     `json:"networkdomain"`
+	Nic                 []Nic                      `json:"nic"`
+	Podid               string                     `json:"podid"`
+	Podname             string                     `json:"podname"`
+	Project             string                     `json:"project"`
+	Projectid           string                     `json:"projectid"`
+	Publicip            string                     `json:"publicip"`
+	Publicmacaddress    string                     `json:"publicmacaddress"`
+	Publicnetmask       string                     `json:"publicnetmask"`
+	Publicnetworkid     string                     `json:"publicnetworkid"`
+	Redundantstate      string                     `json:"redundantstate"`
+	Requiresupgrade     bool                       `json:"requiresupgrade"`
+	Role                string                     `json:"role"`
+	Scriptsversion      string                     `json:"scriptsversion"`
+	Serviceofferingid   string                     `json:"serviceofferingid"`
+	Serviceofferingname string                     `json:"serviceofferingname"`
+	State               string                     `json:"state"`
+	Templateid          string                     `json:"templateid"`
+	Templatename        string                     `json:"templatename"`
+	Version             string                     `json:"version"`
+	Vpcid               string                     `json:"vpcid"`
+	Vpcname             string                     `json:"vpcname"`
+	Zoneid              string                     `json:"zoneid"`
+	Zonename            string                     `json:"zonename"`
+}
+
+type RouterHealthcheckresults struct {
+	Checkname   string `json:"checkname"`
+	Checktype   string `json:"checktype"`
+	Details     string `json:"details"`
+	Lastupdated string `json:"lastupdated"`
+	Success     bool   `json:"success"`
 }
 
 type ListVirtualRouterElementsParams struct {
@@ -1017,54 +1064,66 @@ func (s *RouterService) RebootRouter(p *RebootRouterParams) (*RebootRouterRespon
 }
 
 type RebootRouterResponse struct {
-	Account             string `json:"account"`
-	Created             string `json:"created"`
-	Dns1                string `json:"dns1"`
-	Dns2                string `json:"dns2"`
-	Domain              string `json:"domain"`
-	Domainid            string `json:"domainid"`
-	Gateway             string `json:"gateway"`
-	Guestipaddress      string `json:"guestipaddress"`
-	Guestmacaddress     string `json:"guestmacaddress"`
-	Guestnetmask        string `json:"guestnetmask"`
-	Guestnetworkid      string `json:"guestnetworkid"`
-	Guestnetworkname    string `json:"guestnetworkname"`
-	Hostid              string `json:"hostid"`
-	Hostname            string `json:"hostname"`
-	Hypervisor          string `json:"hypervisor"`
-	Id                  string `json:"id"`
-	Ip6dns1             string `json:"ip6dns1"`
-	Ip6dns2             string `json:"ip6dns2"`
-	Isredundantrouter   bool   `json:"isredundantrouter"`
-	JobID               string `json:"jobid"`
-	Jobstatus           int    `json:"jobstatus"`
-	Linklocalip         string `json:"linklocalip"`
-	Linklocalmacaddress string `json:"linklocalmacaddress"`
-	Linklocalnetmask    string `json:"linklocalnetmask"`
-	Linklocalnetworkid  string `json:"linklocalnetworkid"`
-	Name                string `json:"name"`
-	Networkdomain       string `json:"networkdomain"`
-	Nic                 []Nic  `json:"nic"`
-	Podid               string `json:"podid"`
-	Project             string `json:"project"`
-	Projectid           string `json:"projectid"`
-	Publicip            string `json:"publicip"`
-	Publicmacaddress    string `json:"publicmacaddress"`
-	Publicnetmask       string `json:"publicnetmask"`
-	Publicnetworkid     string `json:"publicnetworkid"`
-	Redundantstate      string `json:"redundantstate"`
-	Requiresupgrade     bool   `json:"requiresupgrade"`
-	Role                string `json:"role"`
-	Scriptsversion      string `json:"scriptsversion"`
-	Serviceofferingid   string `json:"serviceofferingid"`
-	Serviceofferingname string `json:"serviceofferingname"`
-	State               string `json:"state"`
-	Templateid          string `json:"templateid"`
-	Version             string `json:"version"`
-	Vpcid               string `json:"vpcid"`
-	Vpcname             string `json:"vpcname"`
-	Zoneid              string `json:"zoneid"`
-	Zonename            string `json:"zonename"`
+	Account             string                                   `json:"account"`
+	Created             string                                   `json:"created"`
+	Dns1                string                                   `json:"dns1"`
+	Dns2                string                                   `json:"dns2"`
+	Domain              string                                   `json:"domain"`
+	Domainid            string                                   `json:"domainid"`
+	Gateway             string                                   `json:"gateway"`
+	Guestipaddress      string                                   `json:"guestipaddress"`
+	Guestmacaddress     string                                   `json:"guestmacaddress"`
+	Guestnetmask        string                                   `json:"guestnetmask"`
+	Guestnetworkid      string                                   `json:"guestnetworkid"`
+	Guestnetworkname    string                                   `json:"guestnetworkname"`
+	Healthcheckresults  []RebootRouterResponseHealthcheckresults `json:"healthcheckresults"`
+	Healthchecksfailed  bool                                     `json:"healthchecksfailed"`
+	Hostid              string                                   `json:"hostid"`
+	Hostname            string                                   `json:"hostname"`
+	Hypervisor          string                                   `json:"hypervisor"`
+	Id                  string                                   `json:"id"`
+	Ip6dns1             string                                   `json:"ip6dns1"`
+	Ip6dns2             string                                   `json:"ip6dns2"`
+	Isredundantrouter   bool                                     `json:"isredundantrouter"`
+	JobID               string                                   `json:"jobid"`
+	Jobstatus           int                                      `json:"jobstatus"`
+	Linklocalip         string                                   `json:"linklocalip"`
+	Linklocalmacaddress string                                   `json:"linklocalmacaddress"`
+	Linklocalnetmask    string                                   `json:"linklocalnetmask"`
+	Linklocalnetworkid  string                                   `json:"linklocalnetworkid"`
+	Name                string                                   `json:"name"`
+	Networkdomain       string                                   `json:"networkdomain"`
+	Nic                 []Nic                                    `json:"nic"`
+	Podid               string                                   `json:"podid"`
+	Podname             string                                   `json:"podname"`
+	Project             string                                   `json:"project"`
+	Projectid           string                                   `json:"projectid"`
+	Publicip            string                                   `json:"publicip"`
+	Publicmacaddress    string                                   `json:"publicmacaddress"`
+	Publicnetmask       string                                   `json:"publicnetmask"`
+	Publicnetworkid     string                                   `json:"publicnetworkid"`
+	Redundantstate      string                                   `json:"redundantstate"`
+	Requiresupgrade     bool                                     `json:"requiresupgrade"`
+	Role                string                                   `json:"role"`
+	Scriptsversion      string                                   `json:"scriptsversion"`
+	Serviceofferingid   string                                   `json:"serviceofferingid"`
+	Serviceofferingname string                                   `json:"serviceofferingname"`
+	State               string                                   `json:"state"`
+	Templateid          string                                   `json:"templateid"`
+	Templatename        string                                   `json:"templatename"`
+	Version             string                                   `json:"version"`
+	Vpcid               string                                   `json:"vpcid"`
+	Vpcname             string                                   `json:"vpcname"`
+	Zoneid              string                                   `json:"zoneid"`
+	Zonename            string                                   `json:"zonename"`
+}
+
+type RebootRouterResponseHealthcheckresults struct {
+	Checkname   string `json:"checkname"`
+	Checktype   string `json:"checktype"`
+	Details     string `json:"details"`
+	Lastupdated string `json:"lastupdated"`
+	Success     bool   `json:"success"`
 }
 
 type StartRouterParams struct {
@@ -1134,54 +1193,66 @@ func (s *RouterService) StartRouter(p *StartRouterParams) (*StartRouterResponse,
 }
 
 type StartRouterResponse struct {
-	Account             string `json:"account"`
-	Created             string `json:"created"`
-	Dns1                string `json:"dns1"`
-	Dns2                string `json:"dns2"`
-	Domain              string `json:"domain"`
-	Domainid            string `json:"domainid"`
-	Gateway             string `json:"gateway"`
-	Guestipaddress      string `json:"guestipaddress"`
-	Guestmacaddress     string `json:"guestmacaddress"`
-	Guestnetmask        string `json:"guestnetmask"`
-	Guestnetworkid      string `json:"guestnetworkid"`
-	Guestnetworkname    string `json:"guestnetworkname"`
-	Hostid              string `json:"hostid"`
-	Hostname            string `json:"hostname"`
-	Hypervisor          string `json:"hypervisor"`
-	Id                  string `json:"id"`
-	Ip6dns1             string `json:"ip6dns1"`
-	Ip6dns2             string `json:"ip6dns2"`
-	Isredundantrouter   bool   `json:"isredundantrouter"`
-	JobID               string `json:"jobid"`
-	Jobstatus           int    `json:"jobstatus"`
-	Linklocalip         string `json:"linklocalip"`
-	Linklocalmacaddress string `json:"linklocalmacaddress"`
-	Linklocalnetmask    string `json:"linklocalnetmask"`
-	Linklocalnetworkid  string `json:"linklocalnetworkid"`
-	Name                string `json:"name"`
-	Networkdomain       string `json:"networkdomain"`
-	Nic                 []Nic  `json:"nic"`
-	Podid               string `json:"podid"`
-	Project             string `json:"project"`
-	Projectid           string `json:"projectid"`
-	Publicip            string `json:"publicip"`
-	Publicmacaddress    string `json:"publicmacaddress"`
-	Publicnetmask       string `json:"publicnetmask"`
-	Publicnetworkid     string `json:"publicnetworkid"`
-	Redundantstate      string `json:"redundantstate"`
-	Requiresupgrade     bool   `json:"requiresupgrade"`
-	Role                string `json:"role"`
-	Scriptsversion      string `json:"scriptsversion"`
-	Serviceofferingid   string `json:"serviceofferingid"`
-	Serviceofferingname string `json:"serviceofferingname"`
-	State               string `json:"state"`
-	Templateid          string `json:"templateid"`
-	Version             string `json:"version"`
-	Vpcid               string `json:"vpcid"`
-	Vpcname             string `json:"vpcname"`
-	Zoneid              string `json:"zoneid"`
-	Zonename            string `json:"zonename"`
+	Account             string                                  `json:"account"`
+	Created             string                                  `json:"created"`
+	Dns1                string                                  `json:"dns1"`
+	Dns2                string                                  `json:"dns2"`
+	Domain              string                                  `json:"domain"`
+	Domainid            string                                  `json:"domainid"`
+	Gateway             string                                  `json:"gateway"`
+	Guestipaddress      string                                  `json:"guestipaddress"`
+	Guestmacaddress     string                                  `json:"guestmacaddress"`
+	Guestnetmask        string                                  `json:"guestnetmask"`
+	Guestnetworkid      string                                  `json:"guestnetworkid"`
+	Guestnetworkname    string                                  `json:"guestnetworkname"`
+	Healthcheckresults  []StartRouterResponseHealthcheckresults `json:"healthcheckresults"`
+	Healthchecksfailed  bool                                    `json:"healthchecksfailed"`
+	Hostid              string                                  `json:"hostid"`
+	Hostname            string                                  `json:"hostname"`
+	Hypervisor          string                                  `json:"hypervisor"`
+	Id                  string                                  `json:"id"`
+	Ip6dns1             string                                  `json:"ip6dns1"`
+	Ip6dns2             string                                  `json:"ip6dns2"`
+	Isredundantrouter   bool                                    `json:"isredundantrouter"`
+	JobID               string                                  `json:"jobid"`
+	Jobstatus           int                                     `json:"jobstatus"`
+	Linklocalip         string                                  `json:"linklocalip"`
+	Linklocalmacaddress string                                  `json:"linklocalmacaddress"`
+	Linklocalnetmask    string                                  `json:"linklocalnetmask"`
+	Linklocalnetworkid  string                                  `json:"linklocalnetworkid"`
+	Name                string                                  `json:"name"`
+	Networkdomain       string                                  `json:"networkdomain"`
+	Nic                 []Nic                                   `json:"nic"`
+	Podid               string                                  `json:"podid"`
+	Podname             string                                  `json:"podname"`
+	Project             string                                  `json:"project"`
+	Projectid           string                                  `json:"projectid"`
+	Publicip            string                                  `json:"publicip"`
+	Publicmacaddress    string                                  `json:"publicmacaddress"`
+	Publicnetmask       string                                  `json:"publicnetmask"`
+	Publicnetworkid     string                                  `json:"publicnetworkid"`
+	Redundantstate      string                                  `json:"redundantstate"`
+	Requiresupgrade     bool                                    `json:"requiresupgrade"`
+	Role                string                                  `json:"role"`
+	Scriptsversion      string                                  `json:"scriptsversion"`
+	Serviceofferingid   string                                  `json:"serviceofferingid"`
+	Serviceofferingname string                                  `json:"serviceofferingname"`
+	State               string                                  `json:"state"`
+	Templateid          string                                  `json:"templateid"`
+	Templatename        string                                  `json:"templatename"`
+	Version             string                                  `json:"version"`
+	Vpcid               string                                  `json:"vpcid"`
+	Vpcname             string                                  `json:"vpcname"`
+	Zoneid              string                                  `json:"zoneid"`
+	Zonename            string                                  `json:"zonename"`
+}
+
+type StartRouterResponseHealthcheckresults struct {
+	Checkname   string `json:"checkname"`
+	Checktype   string `json:"checktype"`
+	Details     string `json:"details"`
+	Lastupdated string `json:"lastupdated"`
+	Success     bool   `json:"success"`
 }
 
 type StopRouterParams struct {
@@ -1262,52 +1333,64 @@ func (s *RouterService) StopRouter(p *StopRouterParams) (*StopRouterResponse, er
 }
 
 type StopRouterResponse struct {
-	Account             string `json:"account"`
-	Created             string `json:"created"`
-	Dns1                string `json:"dns1"`
-	Dns2                string `json:"dns2"`
-	Domain              string `json:"domain"`
-	Domainid            string `json:"domainid"`
-	Gateway             string `json:"gateway"`
-	Guestipaddress      string `json:"guestipaddress"`
-	Guestmacaddress     string `json:"guestmacaddress"`
-	Guestnetmask        string `json:"guestnetmask"`
-	Guestnetworkid      string `json:"guestnetworkid"`
-	Guestnetworkname    string `json:"guestnetworkname"`
-	Hostid              string `json:"hostid"`
-	Hostname            string `json:"hostname"`
-	Hypervisor          string `json:"hypervisor"`
-	Id                  string `json:"id"`
-	Ip6dns1             string `json:"ip6dns1"`
-	Ip6dns2             string `json:"ip6dns2"`
-	Isredundantrouter   bool   `json:"isredundantrouter"`
-	JobID               string `json:"jobid"`
-	Jobstatus           int    `json:"jobstatus"`
-	Linklocalip         string `json:"linklocalip"`
-	Linklocalmacaddress string `json:"linklocalmacaddress"`
-	Linklocalnetmask    string `json:"linklocalnetmask"`
-	Linklocalnetworkid  string `json:"linklocalnetworkid"`
-	Name                string `json:"name"`
-	Networkdomain       string `json:"networkdomain"`
-	Nic                 []Nic  `json:"nic"`
-	Podid               string `json:"podid"`
-	Project             string `json:"project"`
-	Projectid           string `json:"projectid"`
-	Publicip            string `json:"publicip"`
-	Publicmacaddress    string `json:"publicmacaddress"`
-	Publicnetmask       string `json:"publicnetmask"`
-	Publicnetworkid     string `json:"publicnetworkid"`
-	Redundantstate      string `json:"redundantstate"`
-	Requiresupgrade     bool   `json:"requiresupgrade"`
-	Role                string `json:"role"`
-	Scriptsversion      string `json:"scriptsversion"`
-	Serviceofferingid   string `json:"serviceofferingid"`
-	Serviceofferingname string `json:"serviceofferingname"`
-	State               string `json:"state"`
-	Templateid          string `json:"templateid"`
-	Version             string `json:"version"`
-	Vpcid               string `json:"vpcid"`
-	Vpcname             string `json:"vpcname"`
-	Zoneid              string `json:"zoneid"`
-	Zonename            string `json:"zonename"`
+	Account             string                                 `json:"account"`
+	Created             string                                 `json:"created"`
+	Dns1                string                                 `json:"dns1"`
+	Dns2                string                                 `json:"dns2"`
+	Domain              string                                 `json:"domain"`
+	Domainid            string                                 `json:"domainid"`
+	Gateway             string                                 `json:"gateway"`
+	Guestipaddress      string                                 `json:"guestipaddress"`
+	Guestmacaddress     string                                 `json:"guestmacaddress"`
+	Guestnetmask        string                                 `json:"guestnetmask"`
+	Guestnetworkid      string                                 `json:"guestnetworkid"`
+	Guestnetworkname    string                                 `json:"guestnetworkname"`
+	Healthcheckresults  []StopRouterResponseHealthcheckresults `json:"healthcheckresults"`
+	Healthchecksfailed  bool                                   `json:"healthchecksfailed"`
+	Hostid              string                                 `json:"hostid"`
+	Hostname            string                                 `json:"hostname"`
+	Hypervisor          string                                 `json:"hypervisor"`
+	Id                  string                                 `json:"id"`
+	Ip6dns1             string                                 `json:"ip6dns1"`
+	Ip6dns2             string                                 `json:"ip6dns2"`
+	Isredundantrouter   bool                                   `json:"isredundantrouter"`
+	JobID               string                                 `json:"jobid"`
+	Jobstatus           int                                    `json:"jobstatus"`
+	Linklocalip         string                                 `json:"linklocalip"`
+	Linklocalmacaddress string                                 `json:"linklocalmacaddress"`
+	Linklocalnetmask    string                                 `json:"linklocalnetmask"`
+	Linklocalnetworkid  string                                 `json:"linklocalnetworkid"`
+	Name                string                                 `json:"name"`
+	Networkdomain       string                                 `json:"networkdomain"`
+	Nic                 []Nic                                  `json:"nic"`
+	Podid               string                                 `json:"podid"`
+	Podname             string                                 `json:"podname"`
+	Project             string                                 `json:"project"`
+	Projectid           string                                 `json:"projectid"`
+	Publicip            string                                 `json:"publicip"`
+	Publicmacaddress    string                                 `json:"publicmacaddress"`
+	Publicnetmask       string                                 `json:"publicnetmask"`
+	Publicnetworkid     string                                 `json:"publicnetworkid"`
+	Redundantstate      string                                 `json:"redundantstate"`
+	Requiresupgrade     bool                                   `json:"requiresupgrade"`
+	Role                string                                 `json:"role"`
+	Scriptsversion      string                                 `json:"scriptsversion"`
+	Serviceofferingid   string                                 `json:"serviceofferingid"`
+	Serviceofferingname string                                 `json:"serviceofferingname"`
+	State               string                                 `json:"state"`
+	Templateid          string                                 `json:"templateid"`
+	Templatename        string                                 `json:"templatename"`
+	Version             string                                 `json:"version"`
+	Vpcid               string                                 `json:"vpcid"`
+	Vpcname             string                                 `json:"vpcname"`
+	Zoneid              string                                 `json:"zoneid"`
+	Zonename            string                                 `json:"zonename"`
+}
+
+type StopRouterResponseHealthcheckresults struct {
+	Checkname   string `json:"checkname"`
+	Checktype   string `json:"checktype"`
+	Details     string `json:"details"`
+	Lastupdated string `json:"lastupdated"`
+	Success     bool   `json:"success"`
 }
diff --git a/cloudstack/SSHService.go b/cloudstack/SSHService.go
index c10826e..7469c9f 100644
--- a/cloudstack/SSHService.go
+++ b/cloudstack/SSHService.go
@@ -591,6 +591,10 @@ func (s *SSHService) ResetSSHKeyForVirtualMachine(p *ResetSSHKeyForVirtualMachin
 type ResetSSHKeyForVirtualMachineResponse struct {
 	Account               string                                              `json:"account"`
 	Affinitygroup         []ResetSSHKeyForVirtualMachineResponseAffinitygroup `json:"affinitygroup"`
+	Backupofferingid      string                                              `json:"backupofferingid"`
+	Backupofferingname    string                                              `json:"backupofferingname"`
+	Bootmode              string                                              `json:"bootmode"`
+	Boottype              string                                              `json:"boottype"`
 	Cpunumber             int                                                 `json:"cpunumber"`
 	Cpuspeed              int                                                 `json:"cpuspeed"`
 	Cpuused               string                                              `json:"cpuused"`
@@ -631,6 +635,7 @@ type ResetSSHKeyForVirtualMachineResponse struct {
 	Networkkbsread        int64                                               `json:"networkkbsread"`
 	Networkkbswrite       int64                                               `json:"networkkbswrite"`
 	Nic                   []Nic                                               `json:"nic"`
+	Osdisplayname         string                                              `json:"osdisplayname"`
 	Ostypeid              string                                              `json:"ostypeid"`
 	Password              string                                              `json:"password"`
 	Passwordenabled       bool                                                `json:"passwordenabled"`
@@ -638,6 +643,7 @@ type ResetSSHKeyForVirtualMachineResponse struct {
 	Projectid             string                                              `json:"projectid"`
 	Publicip              string                                              `json:"publicip"`
 	Publicipid            string                                              `json:"publicipid"`
+	Readonlyuidetails     string                                              `json:"readonlyuidetails"`
 	Rootdeviceid          int64                                               `json:"rootdeviceid"`
 	Rootdevicetype        string                                              `json:"rootdevicetype"`
 	Securitygroup         []ResetSSHKeyForVirtualMachineResponseSecuritygroup `json:"securitygroup"`
diff --git a/cloudstack/ServiceOfferingService.go b/cloudstack/ServiceOfferingService.go
index c60ed30..d9abdd4 100644
--- a/cloudstack/ServiceOfferingService.go
+++ b/cloudstack/ServiceOfferingService.go
@@ -60,6 +60,9 @@ func (p *CreateServiceOfferingParams) toURLValues() url.Values {
 		vv := strconv.FormatInt(v.(int64), 10)
 		u.Set("byteswriteratemaxlength", vv)
 	}
+	if v, found := p.p["cachemode"]; found {
+		u.Set("cachemode", v.(string))
+	}
 	if v, found := p.p["cpunumber"]; found {
 		vv := strconv.Itoa(v.(int))
 		u.Set("cpunumber", vv)
@@ -68,6 +71,10 @@ func (p *CreateServiceOfferingParams) toURLValues() url.Values {
 		vv := strconv.Itoa(v.(int))
 		u.Set("cpuspeed", vv)
 	}
+	if v, found := p.p["customized"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("customized", vv)
+	}
 	if v, found := p.p["customizediops"]; found {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("customizediops", vv)
@@ -79,7 +86,8 @@ func (p *CreateServiceOfferingParams) toURLValues() url.Values {
 		u.Set("displaytext", v.(string))
 	}
 	if v, found := p.p["domainid"]; found {
-		u.Set("domainid", v.(string))
+		vv := strings.Join(v.([]string), ",")
+		u.Set("domainid", vv)
 	}
 	if v, found := p.p["hosttags"]; found {
 		u.Set("hosttags", v.(string))
@@ -124,18 +132,34 @@ func (p *CreateServiceOfferingParams) toURLValues() url.Values {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("limitcpuuse", vv)
 	}
+	if v, found := p.p["maxcpunumber"]; found {
+		vv := strconv.Itoa(v.(int))
+		u.Set("maxcpunumber", vv)
+	}
 	if v, found := p.p["maxiops"]; found {
 		vv := strconv.FormatInt(v.(int64), 10)
 		u.Set("maxiops", vv)
 	}
+	if v, found := p.p["maxmemory"]; found {
+		vv := strconv.Itoa(v.(int))
+		u.Set("maxmemory", vv)
+	}
 	if v, found := p.p["memory"]; found {
 		vv := strconv.Itoa(v.(int))
 		u.Set("memory", vv)
 	}
+	if v, found := p.p["mincpunumber"]; found {
+		vv := strconv.Itoa(v.(int))
+		u.Set("mincpunumber", vv)
+	}
 	if v, found := p.p["miniops"]; found {
 		vv := strconv.FormatInt(v.(int64), 10)
 		u.Set("miniops", vv)
 	}
+	if v, found := p.p["minmemory"]; found {
+		vv := strconv.Itoa(v.(int))
+		u.Set("minmemory", vv)
+	}
 	if v, found := p.p["name"]; found {
 		u.Set("name", v.(string))
 	}
@@ -150,6 +174,10 @@ func (p *CreateServiceOfferingParams) toURLValues() url.Values {
 	if v, found := p.p["provisioningtype"]; found {
 		u.Set("provisioningtype", v.(string))
 	}
+	if v, found := p.p["rootdisksize"]; found {
+		vv := strconv.FormatInt(v.(int64), 10)
+		u.Set("rootdisksize", vv)
+	}
 	if v, found := p.p["serviceofferingdetails"]; found {
 		m := v.(map[string]string)
 		for i, k := range getSortedKeysFromMap(m) {
@@ -157,6 +185,9 @@ func (p *CreateServiceOfferingParams) toURLValues() url.Values {
 			u.Set(fmt.Sprintf("serviceofferingdetails[%d].value", i), m[k])
 		}
 	}
+	if v, found := p.p["storagepolicy"]; found {
+		u.Set("storagepolicy", v.(string))
+	}
 	if v, found := p.p["storagetype"]; found {
 		u.Set("storagetype", v.(string))
 	}
@@ -166,6 +197,10 @@ func (p *CreateServiceOfferingParams) toURLValues() url.Values {
 	if v, found := p.p["tags"]; found {
 		u.Set("tags", v.(string))
 	}
+	if v, found := p.p["zoneid"]; found {
+		vv := strings.Join(v.([]string), ",")
+		u.Set("zoneid", vv)
+	}
 	return u
 }
 
@@ -211,6 +246,13 @@ func (p *CreateServiceOfferingParams) SetByteswriteratemaxlength(v int64) {
 	p.p["byteswriteratemaxlength"] = v
 }
 
+func (p *CreateServiceOfferingParams) SetCachemode(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["cachemode"] = v
+}
+
 func (p *CreateServiceOfferingParams) SetCpunumber(v int) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -225,6 +267,13 @@ func (p *CreateServiceOfferingParams) SetCpuspeed(v int) {
 	p.p["cpuspeed"] = v
 }
 
+func (p *CreateServiceOfferingParams) SetCustomized(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["customized"] = v
+}
+
 func (p *CreateServiceOfferingParams) SetCustomizediops(v bool) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -246,7 +295,7 @@ func (p *CreateServiceOfferingParams) SetDisplaytext(v string) {
 	p.p["displaytext"] = v
 }
 
-func (p *CreateServiceOfferingParams) SetDomainid(v string) {
+func (p *CreateServiceOfferingParams) SetDomainid(v []string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
 	}
@@ -330,6 +379,13 @@ func (p *CreateServiceOfferingParams) SetLimitcpuuse(v bool) {
 	p.p["limitcpuuse"] = v
 }
 
+func (p *CreateServiceOfferingParams) SetMaxcpunumber(v int) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["maxcpunumber"] = v
+}
+
 func (p *CreateServiceOfferingParams) SetMaxiops(v int64) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -337,6 +393,13 @@ func (p *CreateServiceOfferingParams) SetMaxiops(v int64) {
 	p.p["maxiops"] = v
 }
 
+func (p *CreateServiceOfferingParams) SetMaxmemory(v int) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["maxmemory"] = v
+}
+
 func (p *CreateServiceOfferingParams) SetMemory(v int) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -344,6 +407,13 @@ func (p *CreateServiceOfferingParams) SetMemory(v int) {
 	p.p["memory"] = v
 }
 
+func (p *CreateServiceOfferingParams) SetMincpunumber(v int) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["mincpunumber"] = v
+}
+
 func (p *CreateServiceOfferingParams) SetMiniops(v int64) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -351,6 +421,13 @@ func (p *CreateServiceOfferingParams) SetMiniops(v int64) {
 	p.p["miniops"] = v
 }
 
+func (p *CreateServiceOfferingParams) SetMinmemory(v int) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["minmemory"] = v
+}
+
 func (p *CreateServiceOfferingParams) SetName(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -379,6 +456,13 @@ func (p *CreateServiceOfferingParams) SetProvisioningtype(v string) {
 	p.p["provisioningtype"] = v
 }
 
+func (p *CreateServiceOfferingParams) SetRootdisksize(v int64) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["rootdisksize"] = v
+}
+
 func (p *CreateServiceOfferingParams) SetServiceofferingdetails(v map[string]string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -386,6 +470,13 @@ func (p *CreateServiceOfferingParams) SetServiceofferingdetails(v map[string]str
 	p.p["serviceofferingdetails"] = v
 }
 
+func (p *CreateServiceOfferingParams) SetStoragepolicy(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["storagepolicy"] = v
+}
+
 func (p *CreateServiceOfferingParams) SetStoragetype(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -407,6 +498,13 @@ func (p *CreateServiceOfferingParams) SetTags(v string) {
 	p.p["tags"] = v
 }
 
+func (p *CreateServiceOfferingParams) 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 CreateServiceOfferingParams instance,
 // as then you are sure you have configured all required params
 func (s *ServiceOfferingService) NewCreateServiceOfferingParams(displaytext string, name string) *CreateServiceOfferingParams {
@@ -437,6 +535,7 @@ func (s *ServiceOfferingService) CreateServiceOffering(p *CreateServiceOfferingP
 }
 
 type CreateServiceOfferingResponse struct {
+	CacheMode                   string            `json:"cacheMode"`
 	Cpunumber                   int               `json:"cpunumber"`
 	Cpuspeed                    int               `json:"cpuspeed"`
 	Created                     string            `json:"created"`
@@ -474,10 +573,14 @@ type CreateServiceOfferingResponse struct {
 	Networkrate                 int               `json:"networkrate"`
 	Offerha                     bool              `json:"offerha"`
 	Provisioningtype            string            `json:"provisioningtype"`
+	Rootdisksize                int64             `json:"rootdisksize"`
 	Serviceofferingdetails      map[string]string `json:"serviceofferingdetails"`
 	Storagetype                 string            `json:"storagetype"`
 	Systemvmtype                string            `json:"systemvmtype"`
 	Tags                        string            `json:"tags"`
+	Vspherestoragepolicy        string            `json:"vspherestoragepolicy"`
+	Zone                        string            `json:"zone"`
+	Zoneid                      string            `json:"zoneid"`
 }
 
 type DeleteServiceOfferingParams struct {
@@ -569,6 +672,14 @@ func (p *ListServiceOfferingsParams) toURLValues() url.Values {
 	if p.p == nil {
 		return u
 	}
+	if v, found := p.p["cpunumber"]; found {
+		vv := strconv.Itoa(v.(int))
+		u.Set("cpunumber", vv)
+	}
+	if v, found := p.p["cpuspeed"]; found {
+		vv := strconv.Itoa(v.(int))
+		u.Set("cpuspeed", vv)
+	}
 	if v, found := p.p["domainid"]; found {
 		u.Set("domainid", v.(string))
 	}
@@ -590,6 +701,10 @@ func (p *ListServiceOfferingsParams) toURLValues() url.Values {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("listall", vv)
 	}
+	if v, found := p.p["memory"]; found {
+		vv := strconv.Itoa(v.(int))
+		u.Set("memory", vv)
+	}
 	if v, found := p.p["name"]; found {
 		u.Set("name", v.(string))
 	}
@@ -607,9 +722,26 @@ func (p *ListServiceOfferingsParams) toURLValues() url.Values {
 	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 *ListServiceOfferingsParams) SetCpunumber(v int) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["cpunumber"] = v
+}
+
+func (p *ListServiceOfferingsParams) SetCpuspeed(v int) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["cpuspeed"] = v
+}
+
 func (p *ListServiceOfferingsParams) SetDomainid(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -652,6 +784,13 @@ func (p *ListServiceOfferingsParams) SetListall(v bool) {
 	p.p["listall"] = v
 }
 
+func (p *ListServiceOfferingsParams) SetMemory(v int) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["memory"] = v
+}
+
 func (p *ListServiceOfferingsParams) SetName(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -687,6 +826,13 @@ func (p *ListServiceOfferingsParams) SetVirtualmachineid(v string) {
 	p.p["virtualmachineid"] = v
 }
 
+func (p *ListServiceOfferingsParams) 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 ListServiceOfferingsParams instance,
 // as then you are sure you have configured all required params
 func (s *ServiceOfferingService) NewListServiceOfferingsParams() *ListServiceOfferingsParams {
@@ -799,6 +945,7 @@ type ListServiceOfferingsResponse struct {
 }
 
 type ServiceOffering struct {
+	CacheMode                   string            `json:"cacheMode"`
 	Cpunumber                   int               `json:"cpunumber"`
 	Cpuspeed                    int               `json:"cpuspeed"`
 	Created                     string            `json:"created"`
@@ -836,10 +983,14 @@ type ServiceOffering struct {
 	Networkrate                 int               `json:"networkrate"`
 	Offerha                     bool              `json:"offerha"`
 	Provisioningtype            string            `json:"provisioningtype"`
+	Rootdisksize                int64             `json:"rootdisksize"`
 	Serviceofferingdetails      map[string]string `json:"serviceofferingdetails"`
 	Storagetype                 string            `json:"storagetype"`
 	Systemvmtype                string            `json:"systemvmtype"`
 	Tags                        string            `json:"tags"`
+	Vspherestoragepolicy        string            `json:"vspherestoragepolicy"`
+	Zone                        string            `json:"zone"`
+	Zoneid                      string            `json:"zoneid"`
 }
 
 type UpdateServiceOfferingParams struct {
@@ -854,6 +1005,9 @@ func (p *UpdateServiceOfferingParams) toURLValues() url.Values {
 	if v, found := p.p["displaytext"]; found {
 		u.Set("displaytext", v.(string))
 	}
+	if v, found := p.p["domainid"]; found {
+		u.Set("domainid", v.(string))
+	}
 	if v, found := p.p["id"]; found {
 		u.Set("id", v.(string))
 	}
@@ -864,6 +1018,9 @@ func (p *UpdateServiceOfferingParams) toURLValues() url.Values {
 		vv := strconv.Itoa(v.(int))
 		u.Set("sortkey", vv)
 	}
+	if v, found := p.p["zoneid"]; found {
+		u.Set("zoneid", v.(string))
+	}
 	return u
 }
 
@@ -874,6 +1031,13 @@ func (p *UpdateServiceOfferingParams) SetDisplaytext(v string) {
 	p.p["displaytext"] = v
 }
 
+func (p *UpdateServiceOfferingParams) SetDomainid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["domainid"] = v
+}
+
 func (p *UpdateServiceOfferingParams) SetId(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -895,6 +1059,13 @@ func (p *UpdateServiceOfferingParams) SetSortkey(v int) {
 	p.p["sortkey"] = v
 }
 
+func (p *UpdateServiceOfferingParams) 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 UpdateServiceOfferingParams instance,
 // as then you are sure you have configured all required params
 func (s *ServiceOfferingService) NewUpdateServiceOfferingParams(id string) *UpdateServiceOfferingParams {
@@ -920,6 +1091,7 @@ func (s *ServiceOfferingService) UpdateServiceOffering(p *UpdateServiceOfferingP
 }
 
 type UpdateServiceOfferingResponse struct {
+	CacheMode                   string            `json:"cacheMode"`
 	Cpunumber                   int               `json:"cpunumber"`
 	Cpuspeed                    int               `json:"cpuspeed"`
 	Created                     string            `json:"created"`
@@ -957,8 +1129,12 @@ type UpdateServiceOfferingResponse struct {
 	Networkrate                 int               `json:"networkrate"`
 	Offerha                     bool              `json:"offerha"`
 	Provisioningtype            string            `json:"provisioningtype"`
+	Rootdisksize                int64             `json:"rootdisksize"`
 	Serviceofferingdetails      map[string]string `json:"serviceofferingdetails"`
 	Storagetype                 string            `json:"storagetype"`
 	Systemvmtype                string            `json:"systemvmtype"`
 	Tags                        string            `json:"tags"`
+	Vspherestoragepolicy        string            `json:"vspherestoragepolicy"`
+	Zone                        string            `json:"zone"`
+	Zoneid                      string            `json:"zoneid"`
 }
diff --git a/cloudstack/SnapshotService.go b/cloudstack/SnapshotService.go
index 671334b..fb80361 100644
--- a/cloudstack/SnapshotService.go
+++ b/cloudstack/SnapshotService.go
@@ -59,6 +59,13 @@ func (p *CreateSnapshotParams) toURLValues() url.Values {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("quiescevm", vv)
 	}
+	if v, found := p.p["tags"]; found {
+		m := v.(map[string]string)
+		for i, k := range getSortedKeysFromMap(m) {
+			u.Set(fmt.Sprintf("tags[%d].key", i), k)
+			u.Set(fmt.Sprintf("tags[%d].value", i), m[k])
+		}
+	}
 	if v, found := p.p["volumeid"]; found {
 		u.Set("volumeid", v.(string))
 	}
@@ -114,6 +121,13 @@ func (p *CreateSnapshotParams) SetQuiescevm(v bool) {
 	p.p["quiescevm"] = v
 }
 
+func (p *CreateSnapshotParams) SetTags(v map[string]string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["tags"] = v
+}
+
 func (p *CreateSnapshotParams) SetVolumeid(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -242,6 +256,13 @@ func (p *CreateSnapshotPolicyParams) toURLValues() url.Values {
 	if v, found := p.p["schedule"]; found {
 		u.Set("schedule", v.(string))
 	}
+	if v, found := p.p["tags"]; found {
+		m := v.(map[string]string)
+		for i, k := range getSortedKeysFromMap(m) {
+			u.Set(fmt.Sprintf("tags[%d].key", i), k)
+			u.Set(fmt.Sprintf("tags[%d].value", i), m[k])
+		}
+	}
 	if v, found := p.p["timezone"]; found {
 		u.Set("timezone", v.(string))
 	}
@@ -279,6 +300,13 @@ func (p *CreateSnapshotPolicyParams) SetSchedule(v string) {
 	p.p["schedule"] = v
 }
 
+func (p *CreateSnapshotPolicyParams) SetTags(v map[string]string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["tags"] = v
+}
+
 func (p *CreateSnapshotPolicyParams) SetTimezone(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -329,6 +357,7 @@ type CreateSnapshotPolicyResponse struct {
 	Jobstatus    int    `json:"jobstatus"`
 	Maxsnaps     int    `json:"maxsnaps"`
 	Schedule     string `json:"schedule"`
+	Tags         []Tags `json:"tags"`
 	Timezone     string `json:"timezone"`
 	Volumeid     string `json:"volumeid"`
 }
@@ -442,25 +471,29 @@ func (s *SnapshotService) CreateVMSnapshot(p *CreateVMSnapshotParams) (*CreateVM
 }
 
 type CreateVMSnapshotResponse struct {
-	Account          string `json:"account"`
-	Created          string `json:"created"`
-	Current          bool   `json:"current"`
-	Description      string `json:"description"`
-	Displayname      string `json:"displayname"`
-	Domain           string `json:"domain"`
-	Domainid         string `json:"domainid"`
-	Id               string `json:"id"`
-	JobID            string `json:"jobid"`
-	Jobstatus        int    `json:"jobstatus"`
-	Name             string `json:"name"`
-	Parent           string `json:"parent"`
-	ParentName       string `json:"parentName"`
-	Project          string `json:"project"`
-	Projectid        string `json:"projectid"`
-	State            string `json:"state"`
-	Type             string `json:"type"`
-	Virtualmachineid string `json:"virtualmachineid"`
-	Zoneid           string `json:"zoneid"`
+	Account            string `json:"account"`
+	Created            string `json:"created"`
+	Current            bool   `json:"current"`
+	Description        string `json:"description"`
+	Displayname        string `json:"displayname"`
+	Domain             string `json:"domain"`
+	Domainid           string `json:"domainid"`
+	Hypervisor         string `json:"hypervisor"`
+	Id                 string `json:"id"`
+	JobID              string `json:"jobid"`
+	Jobstatus          int    `json:"jobstatus"`
+	Name               string `json:"name"`
+	Parent             string `json:"parent"`
+	ParentName         string `json:"parentName"`
+	Project            string `json:"project"`
+	Projectid          string `json:"projectid"`
+	State              string `json:"state"`
+	Tags               []Tags `json:"tags"`
+	Type               string `json:"type"`
+	Virtualmachineid   string `json:"virtualmachineid"`
+	Virtualmachinename string `json:"virtualmachinename"`
+	Zoneid             string `json:"zoneid"`
+	Zonename           string `json:"zonename"`
 }
 
 type DeleteSnapshotParams struct {
@@ -833,6 +866,7 @@ type SnapshotPolicy struct {
 	Jobstatus    int    `json:"jobstatus"`
 	Maxsnaps     int    `json:"maxsnaps"`
 	Schedule     string `json:"schedule"`
+	Tags         []Tags `json:"tags"`
 	Timezone     string `json:"timezone"`
 	Volumeid     string `json:"volumeid"`
 }
@@ -1409,25 +1443,29 @@ type ListVMSnapshotResponse struct {
 }
 
 type VMSnapshot struct {
-	Account          string `json:"account"`
-	Created          string `json:"created"`
-	Current          bool   `json:"current"`
-	Description      string `json:"description"`
-	Displayname      string `json:"displayname"`
-	Domain           string `json:"domain"`
-	Domainid         string `json:"domainid"`
-	Id               string `json:"id"`
-	JobID            string `json:"jobid"`
-	Jobstatus        int    `json:"jobstatus"`
-	Name             string `json:"name"`
-	Parent           string `json:"parent"`
-	ParentName       string `json:"parentName"`
-	Project          string `json:"project"`
-	Projectid        string `json:"projectid"`
-	State            string `json:"state"`
-	Type             string `json:"type"`
-	Virtualmachineid string `json:"virtualmachineid"`
-	Zoneid           string `json:"zoneid"`
+	Account            string `json:"account"`
+	Created            string `json:"created"`
+	Current            bool   `json:"current"`
+	Description        string `json:"description"`
+	Displayname        string `json:"displayname"`
+	Domain             string `json:"domain"`
+	Domainid           string `json:"domainid"`
+	Hypervisor         string `json:"hypervisor"`
+	Id                 string `json:"id"`
+	JobID              string `json:"jobid"`
+	Jobstatus          int    `json:"jobstatus"`
+	Name               string `json:"name"`
+	Parent             string `json:"parent"`
+	ParentName         string `json:"parentName"`
+	Project            string `json:"project"`
+	Projectid          string `json:"projectid"`
+	State              string `json:"state"`
+	Tags               []Tags `json:"tags"`
+	Type               string `json:"type"`
+	Virtualmachineid   string `json:"virtualmachineid"`
+	Virtualmachinename string `json:"virtualmachinename"`
+	Zoneid             string `json:"zoneid"`
+	Zonename           string `json:"zonename"`
 }
 
 type RevertSnapshotParams struct {
@@ -1619,6 +1657,10 @@ func (s *SnapshotService) RevertToVMSnapshot(p *RevertToVMSnapshotParams) (*Reve
 type RevertToVMSnapshotResponse struct {
 	Account               string                                    `json:"account"`
 	Affinitygroup         []RevertToVMSnapshotResponseAffinitygroup `json:"affinitygroup"`
+	Backupofferingid      string                                    `json:"backupofferingid"`
+	Backupofferingname    string                                    `json:"backupofferingname"`
+	Bootmode              string                                    `json:"bootmode"`
+	Boottype              string                                    `json:"boottype"`
 	Cpunumber             int                                       `json:"cpunumber"`
 	Cpuspeed              int                                       `json:"cpuspeed"`
 	Cpuused               string                                    `json:"cpuused"`
@@ -1659,6 +1701,7 @@ type RevertToVMSnapshotResponse struct {
 	Networkkbsread        int64                                     `json:"networkkbsread"`
 	Networkkbswrite       int64                                     `json:"networkkbswrite"`
 	Nic                   []Nic                                     `json:"nic"`
+	Osdisplayname         string                                    `json:"osdisplayname"`
 	Ostypeid              string                                    `json:"ostypeid"`
 	Password              string                                    `json:"password"`
 	Passwordenabled       bool                                      `json:"passwordenabled"`
@@ -1666,6 +1709,7 @@ type RevertToVMSnapshotResponse struct {
 	Projectid             string                                    `json:"projectid"`
 	Publicip              string                                    `json:"publicip"`
 	Publicipid            string                                    `json:"publicipid"`
+	Readonlyuidetails     string                                    `json:"readonlyuidetails"`
 	Rootdeviceid          int64                                     `json:"rootdeviceid"`
 	Rootdevicetype        string                                    `json:"rootdevicetype"`
 	Securitygroup         []RevertToVMSnapshotResponseSecuritygroup `json:"securitygroup"`
@@ -1847,6 +1891,7 @@ type UpdateSnapshotPolicyResponse struct {
 	Jobstatus    int    `json:"jobstatus"`
 	Maxsnaps     int    `json:"maxsnaps"`
 	Schedule     string `json:"schedule"`
+	Tags         []Tags `json:"tags"`
 	Timezone     string `json:"timezone"`
 	Volumeid     string `json:"volumeid"`
 }
diff --git a/cloudstack/SwiftService.go b/cloudstack/SwiftService.go
index 8b659cd..92f6373 100644
--- a/cloudstack/SwiftService.go
+++ b/cloudstack/SwiftService.go
@@ -103,16 +103,19 @@ func (s *SwiftService) AddSwift(p *AddSwiftParams) (*AddSwiftResponse, error) {
 }
 
 type AddSwiftResponse struct {
-	Id           string `json:"id"`
-	JobID        string `json:"jobid"`
-	Jobstatus    int    `json:"jobstatus"`
-	Name         string `json:"name"`
-	Protocol     string `json:"protocol"`
-	Providername string `json:"providername"`
-	Scope        string `json:"scope"`
-	Url          string `json:"url"`
-	Zoneid       string `json:"zoneid"`
-	Zonename     string `json:"zonename"`
+	Disksizetotal int64  `json:"disksizetotal"`
+	Disksizeused  int64  `json:"disksizeused"`
+	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 ListSwiftsParams struct {
@@ -235,14 +238,17 @@ type ListSwiftsResponse struct {
 }
 
 type Swift struct {
-	Id           string `json:"id"`
-	JobID        string `json:"jobid"`
-	Jobstatus    int    `json:"jobstatus"`
-	Name         string `json:"name"`
-	Protocol     string `json:"protocol"`
-	Providername string `json:"providername"`
-	Scope        string `json:"scope"`
-	Url          string `json:"url"`
-	Zoneid       string `json:"zoneid"`
-	Zonename     string `json:"zonename"`
+	Disksizetotal int64  `json:"disksizetotal"`
+	Disksizeused  int64  `json:"disksizeused"`
+	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"`
 }
diff --git a/cloudstack/SystemVMService.go b/cloudstack/SystemVMService.go
index 7d58f36..895ef22 100644
--- a/cloudstack/SystemVMService.go
+++ b/cloudstack/SystemVMService.go
@@ -99,7 +99,9 @@ func (s *SystemVMService) ChangeServiceForSystemVm(p *ChangeServiceForSystemVmPa
 
 type ChangeServiceForSystemVmResponse struct {
 	Activeviewersessions int      `json:"activeviewersessions"`
+	Agentstate           string   `json:"agentstate"`
 	Created              string   `json:"created"`
+	Disconnected         string   `json:"disconnected"`
 	Dns1                 string   `json:"dns1"`
 	Dns2                 string   `json:"dns2"`
 	Gateway              string   `json:"gateway"`
@@ -116,6 +118,7 @@ type ChangeServiceForSystemVmResponse struct {
 	Name                 string   `json:"name"`
 	Networkdomain        string   `json:"networkdomain"`
 	Podid                string   `json:"podid"`
+	Podname              string   `json:"podname"`
 	Privateip            string   `json:"privateip"`
 	Privatemacaddress    string   `json:"privatemacaddress"`
 	Privatenetmask       string   `json:"privatenetmask"`
@@ -126,6 +129,8 @@ type ChangeServiceForSystemVmResponse struct {
 	State                string   `json:"state"`
 	Systemvmtype         string   `json:"systemvmtype"`
 	Templateid           string   `json:"templateid"`
+	Templatename         string   `json:"templatename"`
+	Version              string   `json:"version"`
 	Zoneid               string   `json:"zoneid"`
 	Zonename             string   `json:"zonename"`
 }
@@ -198,7 +203,9 @@ func (s *SystemVMService) DestroySystemVm(p *DestroySystemVmParams) (*DestroySys
 
 type DestroySystemVmResponse struct {
 	Activeviewersessions int      `json:"activeviewersessions"`
+	Agentstate           string   `json:"agentstate"`
 	Created              string   `json:"created"`
+	Disconnected         string   `json:"disconnected"`
 	Dns1                 string   `json:"dns1"`
 	Dns2                 string   `json:"dns2"`
 	Gateway              string   `json:"gateway"`
@@ -215,6 +222,7 @@ type DestroySystemVmResponse struct {
 	Name                 string   `json:"name"`
 	Networkdomain        string   `json:"networkdomain"`
 	Podid                string   `json:"podid"`
+	Podname              string   `json:"podname"`
 	Privateip            string   `json:"privateip"`
 	Privatemacaddress    string   `json:"privatemacaddress"`
 	Privatenetmask       string   `json:"privatenetmask"`
@@ -225,6 +233,8 @@ type DestroySystemVmResponse struct {
 	State                string   `json:"state"`
 	Systemvmtype         string   `json:"systemvmtype"`
 	Templateid           string   `json:"templateid"`
+	Templatename         string   `json:"templatename"`
+	Version              string   `json:"version"`
 	Zoneid               string   `json:"zoneid"`
 	Zonename             string   `json:"zonename"`
 }
@@ -466,7 +476,9 @@ type ListSystemVmsResponse struct {
 
 type SystemVm struct {
 	Activeviewersessions int      `json:"activeviewersessions"`
+	Agentstate           string   `json:"agentstate"`
 	Created              string   `json:"created"`
+	Disconnected         string   `json:"disconnected"`
 	Dns1                 string   `json:"dns1"`
 	Dns2                 string   `json:"dns2"`
 	Gateway              string   `json:"gateway"`
@@ -483,6 +495,7 @@ type SystemVm struct {
 	Name                 string   `json:"name"`
 	Networkdomain        string   `json:"networkdomain"`
 	Podid                string   `json:"podid"`
+	Podname              string   `json:"podname"`
 	Privateip            string   `json:"privateip"`
 	Privatemacaddress    string   `json:"privatemacaddress"`
 	Privatenetmask       string   `json:"privatenetmask"`
@@ -493,6 +506,8 @@ type SystemVm struct {
 	State                string   `json:"state"`
 	Systemvmtype         string   `json:"systemvmtype"`
 	Templateid           string   `json:"templateid"`
+	Templatename         string   `json:"templatename"`
+	Version              string   `json:"version"`
 	Zoneid               string   `json:"zoneid"`
 	Zonename             string   `json:"zonename"`
 }
@@ -576,7 +591,9 @@ func (s *SystemVMService) MigrateSystemVm(p *MigrateSystemVmParams) (*MigrateSys
 
 type MigrateSystemVmResponse struct {
 	Activeviewersessions int      `json:"activeviewersessions"`
+	Agentstate           string   `json:"agentstate"`
 	Created              string   `json:"created"`
+	Disconnected         string   `json:"disconnected"`
 	Dns1                 string   `json:"dns1"`
 	Dns2                 string   `json:"dns2"`
 	Gateway              string   `json:"gateway"`
@@ -593,6 +610,7 @@ type MigrateSystemVmResponse struct {
 	Name                 string   `json:"name"`
 	Networkdomain        string   `json:"networkdomain"`
 	Podid                string   `json:"podid"`
+	Podname              string   `json:"podname"`
 	Privateip            string   `json:"privateip"`
 	Privatemacaddress    string   `json:"privatemacaddress"`
 	Privatenetmask       string   `json:"privatenetmask"`
@@ -603,6 +621,8 @@ type MigrateSystemVmResponse struct {
 	State                string   `json:"state"`
 	Systemvmtype         string   `json:"systemvmtype"`
 	Templateid           string   `json:"templateid"`
+	Templatename         string   `json:"templatename"`
+	Version              string   `json:"version"`
 	Zoneid               string   `json:"zoneid"`
 	Zonename             string   `json:"zonename"`
 }
@@ -675,7 +695,9 @@ func (s *SystemVMService) RebootSystemVm(p *RebootSystemVmParams) (*RebootSystem
 
 type RebootSystemVmResponse struct {
 	Activeviewersessions int      `json:"activeviewersessions"`
+	Agentstate           string   `json:"agentstate"`
 	Created              string   `json:"created"`
+	Disconnected         string   `json:"disconnected"`
 	Dns1                 string   `json:"dns1"`
 	Dns2                 string   `json:"dns2"`
 	Gateway              string   `json:"gateway"`
@@ -692,6 +714,7 @@ type RebootSystemVmResponse struct {
 	Name                 string   `json:"name"`
 	Networkdomain        string   `json:"networkdomain"`
 	Podid                string   `json:"podid"`
+	Podname              string   `json:"podname"`
 	Privateip            string   `json:"privateip"`
 	Privatemacaddress    string   `json:"privatemacaddress"`
 	Privatenetmask       string   `json:"privatenetmask"`
@@ -702,6 +725,8 @@ type RebootSystemVmResponse struct {
 	State                string   `json:"state"`
 	Systemvmtype         string   `json:"systemvmtype"`
 	Templateid           string   `json:"templateid"`
+	Templatename         string   `json:"templatename"`
+	Version              string   `json:"version"`
 	Zoneid               string   `json:"zoneid"`
 	Zonename             string   `json:"zonename"`
 }
@@ -798,7 +823,9 @@ func (s *SystemVMService) ScaleSystemVm(p *ScaleSystemVmParams) (*ScaleSystemVmR
 
 type ScaleSystemVmResponse struct {
 	Activeviewersessions int      `json:"activeviewersessions"`
+	Agentstate           string   `json:"agentstate"`
 	Created              string   `json:"created"`
+	Disconnected         string   `json:"disconnected"`
 	Dns1                 string   `json:"dns1"`
 	Dns2                 string   `json:"dns2"`
 	Gateway              string   `json:"gateway"`
@@ -815,6 +842,7 @@ type ScaleSystemVmResponse struct {
 	Name                 string   `json:"name"`
 	Networkdomain        string   `json:"networkdomain"`
 	Podid                string   `json:"podid"`
+	Podname              string   `json:"podname"`
 	Privateip            string   `json:"privateip"`
 	Privatemacaddress    string   `json:"privatemacaddress"`
 	Privatenetmask       string   `json:"privatenetmask"`
@@ -825,6 +853,8 @@ type ScaleSystemVmResponse struct {
 	State                string   `json:"state"`
 	Systemvmtype         string   `json:"systemvmtype"`
 	Templateid           string   `json:"templateid"`
+	Templatename         string   `json:"templatename"`
+	Version              string   `json:"version"`
 	Zoneid               string   `json:"zoneid"`
 	Zonename             string   `json:"zonename"`
 }
@@ -897,7 +927,9 @@ func (s *SystemVMService) StartSystemVm(p *StartSystemVmParams) (*StartSystemVmR
 
 type StartSystemVmResponse struct {
 	Activeviewersessions int      `json:"activeviewersessions"`
+	Agentstate           string   `json:"agentstate"`
 	Created              string   `json:"created"`
+	Disconnected         string   `json:"disconnected"`
 	Dns1                 string   `json:"dns1"`
 	Dns2                 string   `json:"dns2"`
 	Gateway              string   `json:"gateway"`
@@ -914,6 +946,7 @@ type StartSystemVmResponse struct {
 	Name                 string   `json:"name"`
 	Networkdomain        string   `json:"networkdomain"`
 	Podid                string   `json:"podid"`
+	Podname              string   `json:"podname"`
 	Privateip            string   `json:"privateip"`
 	Privatemacaddress    string   `json:"privatemacaddress"`
 	Privatenetmask       string   `json:"privatenetmask"`
@@ -924,6 +957,8 @@ type StartSystemVmResponse struct {
 	State                string   `json:"state"`
 	Systemvmtype         string   `json:"systemvmtype"`
 	Templateid           string   `json:"templateid"`
+	Templatename         string   `json:"templatename"`
+	Version              string   `json:"version"`
 	Zoneid               string   `json:"zoneid"`
 	Zonename             string   `json:"zonename"`
 }
@@ -1007,7 +1042,9 @@ func (s *SystemVMService) StopSystemVm(p *StopSystemVmParams) (*StopSystemVmResp
 
 type StopSystemVmResponse struct {
 	Activeviewersessions int      `json:"activeviewersessions"`
+	Agentstate           string   `json:"agentstate"`
 	Created              string   `json:"created"`
+	Disconnected         string   `json:"disconnected"`
 	Dns1                 string   `json:"dns1"`
 	Dns2                 string   `json:"dns2"`
 	Gateway              string   `json:"gateway"`
@@ -1024,6 +1061,7 @@ type StopSystemVmResponse struct {
 	Name                 string   `json:"name"`
 	Networkdomain        string   `json:"networkdomain"`
 	Podid                string   `json:"podid"`
+	Podname              string   `json:"podname"`
 	Privateip            string   `json:"privateip"`
 	Privatemacaddress    string   `json:"privatemacaddress"`
 	Privatenetmask       string   `json:"privatenetmask"`
@@ -1034,6 +1072,8 @@ type StopSystemVmResponse struct {
 	State                string   `json:"state"`
 	Systemvmtype         string   `json:"systemvmtype"`
 	Templateid           string   `json:"templateid"`
+	Templatename         string   `json:"templatename"`
+	Version              string   `json:"version"`
 	Zoneid               string   `json:"zoneid"`
 	Zonename             string   `json:"zonename"`
 }
diff --git a/cloudstack/TemplateService.go b/cloudstack/TemplateService.go
index 4cf2057..30198aa 100644
--- a/cloudstack/TemplateService.go
+++ b/cloudstack/TemplateService.go
@@ -133,11 +133,14 @@ type CopyTemplateResponse struct {
 	Childtemplates        []interface{}     `json:"childtemplates"`
 	Created               string            `json:"created"`
 	CrossZones            bool              `json:"crossZones"`
+	Deployasis            bool              `json:"deployasis"`
+	Deployasisdetails     map[string]string `json:"deployasisdetails"`
 	Details               map[string]string `json:"details"`
 	Directdownload        bool              `json:"directdownload"`
 	Displaytext           string            `json:"displaytext"`
 	Domain                string            `json:"domain"`
 	Domainid              string            `json:"domainid"`
+	Downloaddetails       []string          `json:"downloaddetails"`
 	Format                string            `json:"format"`
 	Hostid                string            `json:"hostid"`
 	Hostname              string            `json:"hostname"`
@@ -167,6 +170,7 @@ type CopyTemplateResponse struct {
 	Tags                  []Tags            `json:"tags"`
 	Templatetag           string            `json:"templatetag"`
 	Templatetype          string            `json:"templatetype"`
+	Url                   string            `json:"url"`
 	Zoneid                string            `json:"zoneid"`
 	Zonename              string            `json:"zonename"`
 }
@@ -445,11 +449,14 @@ type CreateTemplateResponse struct {
 	Childtemplates        []interface{}     `json:"childtemplates"`
 	Created               string            `json:"created"`
 	CrossZones            bool              `json:"crossZones"`
+	Deployasis            bool              `json:"deployasis"`
+	Deployasisdetails     map[string]string `json:"deployasisdetails"`
 	Details               map[string]string `json:"details"`
 	Directdownload        bool              `json:"directdownload"`
 	Displaytext           string            `json:"displaytext"`
 	Domain                string            `json:"domain"`
 	Domainid              string            `json:"domainid"`
+	Downloaddetails       []string          `json:"downloaddetails"`
 	Format                string            `json:"format"`
 	Hostid                string            `json:"hostid"`
 	Hostname              string            `json:"hostname"`
@@ -479,6 +486,7 @@ type CreateTemplateResponse struct {
 	Tags                  []Tags            `json:"tags"`
 	Templatetag           string            `json:"templatetag"`
 	Templatetype          string            `json:"templatetype"`
+	Url                   string            `json:"url"`
 	Zoneid                string            `json:"zoneid"`
 	Zonename              string            `json:"zonename"`
 }
@@ -734,6 +742,10 @@ func (p *GetUploadParamsForTemplateParams) toURLValues() url.Values {
 	if v, found := p.p["checksum"]; found {
 		u.Set("checksum", v.(string))
 	}
+	if v, found := p.p["deployasis"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("deployasis", vv)
+	}
 	if v, found := p.p["details"]; found {
 		m := v.(map[string]string)
 		for i, k := range getSortedKeysFromMap(m) {
@@ -823,6 +835,13 @@ func (p *GetUploadParamsForTemplateParams) SetChecksum(v string) {
 	p.p["checksum"] = v
 }
 
+func (p *GetUploadParamsForTemplateParams) SetDeployasis(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["deployasis"] = v
+}
+
 func (p *GetUploadParamsForTemplateParams) SetDetails(v map[string]string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -951,14 +970,13 @@ func (p *GetUploadParamsForTemplateParams) SetZoneid(v string) {
 
 // You should always use this function to get a new GetUploadParamsForTemplateParams instance,
 // as then you are sure you have configured all required params
-func (s *TemplateService) NewGetUploadParamsForTemplateParams(displaytext string, format string, hypervisor string, name string, ostypeid string, zoneid string) *GetUploadParamsForTemplateParams {
+func (s *TemplateService) NewGetUploadParamsForTemplateParams(displaytext string, format string, hypervisor string, name string, zoneid string) *GetUploadParamsForTemplateParams {
 	p := &GetUploadParamsForTemplateParams{}
 	p.p = make(map[string]interface{})
 	p.p["displaytext"] = displaytext
 	p.p["format"] = format
 	p.p["hypervisor"] = hypervisor
 	p.p["name"] = name
-	p.p["ostypeid"] = ostypeid
 	p.p["zoneid"] = zoneid
 	return p
 }
@@ -1094,6 +1112,10 @@ func (p *ListTemplatesParams) toURLValues() url.Values {
 	if v, found := p.p["account"]; found {
 		u.Set("account", v.(string))
 	}
+	if v, found := p.p["details"]; found {
+		vv := strings.Join(v.([]string), ",")
+		u.Set("details", vv)
+	}
 	if v, found := p.p["domainid"]; found {
 		u.Set("domainid", v.(string))
 	}
@@ -1139,6 +1161,10 @@ func (p *ListTemplatesParams) toURLValues() url.Values {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("showremoved", vv)
 	}
+	if v, found := p.p["showunique"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("showunique", vv)
+	}
 	if v, found := p.p["tags"]; found {
 		m := v.(map[string]string)
 		for i, k := range getSortedKeysFromMap(m) {
@@ -1162,6 +1188,13 @@ func (p *ListTemplatesParams) SetAccount(v string) {
 	p.p["account"] = v
 }
 
+func (p *ListTemplatesParams) SetDetails(v []string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["details"] = v
+}
+
 func (p *ListTemplatesParams) SetDomainid(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1253,6 +1286,13 @@ func (p *ListTemplatesParams) SetShowremoved(v bool) {
 	p.p["showremoved"] = v
 }
 
+func (p *ListTemplatesParams) SetShowunique(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["showunique"] = v
+}
+
 func (p *ListTemplatesParams) SetTags(v map[string]string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1398,11 +1438,14 @@ type Template struct {
 	Childtemplates        []interface{}     `json:"childtemplates"`
 	Created               string            `json:"created"`
 	CrossZones            bool              `json:"crossZones"`
+	Deployasis            bool              `json:"deployasis"`
+	Deployasisdetails     map[string]string `json:"deployasisdetails"`
 	Details               map[string]string `json:"details"`
 	Directdownload        bool              `json:"directdownload"`
 	Displaytext           string            `json:"displaytext"`
 	Domain                string            `json:"domain"`
 	Domainid              string            `json:"domainid"`
+	Downloaddetails       []string          `json:"downloaddetails"`
 	Format                string            `json:"format"`
 	Hostid                string            `json:"hostid"`
 	Hostname              string            `json:"hostname"`
@@ -1432,6 +1475,7 @@ type Template struct {
 	Tags                  []Tags            `json:"tags"`
 	Templatetag           string            `json:"templatetag"`
 	Templatetype          string            `json:"templatetype"`
+	Url                   string            `json:"url"`
 	Zoneid                string            `json:"zoneid"`
 	Zonename              string            `json:"zonename"`
 }
@@ -1539,11 +1583,14 @@ type PrepareTemplateResponse struct {
 	Childtemplates        []interface{}     `json:"childtemplates"`
 	Created               string            `json:"created"`
 	CrossZones            bool              `json:"crossZones"`
+	Deployasis            bool              `json:"deployasis"`
+	Deployasisdetails     map[string]string `json:"deployasisdetails"`
 	Details               map[string]string `json:"details"`
 	Directdownload        bool              `json:"directdownload"`
 	Displaytext           string            `json:"displaytext"`
 	Domain                string            `json:"domain"`
 	Domainid              string            `json:"domainid"`
+	Downloaddetails       []string          `json:"downloaddetails"`
 	Format                string            `json:"format"`
 	Hostid                string            `json:"hostid"`
 	Hostname              string            `json:"hostname"`
@@ -1573,6 +1620,7 @@ type PrepareTemplateResponse struct {
 	Tags                  []Tags            `json:"tags"`
 	Templatetag           string            `json:"templatetag"`
 	Templatetype          string            `json:"templatetype"`
+	Url                   string            `json:"url"`
 	Zoneid                string            `json:"zoneid"`
 	Zonename              string            `json:"zonename"`
 }
@@ -1623,6 +1671,10 @@ func (p *RegisterTemplateParams) toURLValues() url.Values {
 	if v, found := p.p["checksum"]; found {
 		u.Set("checksum", v.(string))
 	}
+	if v, found := p.p["deployasis"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("deployasis", vv)
+	}
 	if v, found := p.p["details"]; found {
 		m := v.(map[string]string)
 		for i, k := range getSortedKeysFromMap(m) {
@@ -1723,6 +1775,13 @@ func (p *RegisterTemplateParams) SetChecksum(v string) {
 	p.p["checksum"] = v
 }
 
+func (p *RegisterTemplateParams) SetDeployasis(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["deployasis"] = v
+}
+
 func (p *RegisterTemplateParams) SetDetails(v map[string]string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1872,14 +1931,13 @@ func (p *RegisterTemplateParams) SetZoneids(v []string) {
 
 // You should always use this function to get a new RegisterTemplateParams instance,
 // as then you are sure you have configured all required params
-func (s *TemplateService) NewRegisterTemplateParams(displaytext string, format string, hypervisor string, name string, ostypeid string, url string) *RegisterTemplateParams {
+func (s *TemplateService) NewRegisterTemplateParams(displaytext string, format string, hypervisor string, name string, url string) *RegisterTemplateParams {
 	p := &RegisterTemplateParams{}
 	p.p = make(map[string]interface{})
 	p.p["displaytext"] = displaytext
 	p.p["format"] = format
 	p.p["hypervisor"] = hypervisor
 	p.p["name"] = name
-	p.p["ostypeid"] = ostypeid
 	p.p["url"] = url
 	return p
 }
@@ -1913,11 +1971,14 @@ type RegisterTemplate struct {
 	Childtemplates        []interface{}     `json:"childtemplates"`
 	Created               string            `json:"created"`
 	CrossZones            bool              `json:"crossZones"`
+	Deployasis            bool              `json:"deployasis"`
+	Deployasisdetails     map[string]string `json:"deployasisdetails"`
 	Details               map[string]string `json:"details"`
 	Directdownload        bool              `json:"directdownload"`
 	Displaytext           string            `json:"displaytext"`
 	Domain                string            `json:"domain"`
 	Domainid              string            `json:"domainid"`
+	Downloaddetails       []string          `json:"downloaddetails"`
 	Format                string            `json:"format"`
 	Hostid                string            `json:"hostid"`
 	Hostname              string            `json:"hostname"`
@@ -1947,6 +2008,7 @@ type RegisterTemplate struct {
 	Tags                  []Tags            `json:"tags"`
 	Templatetag           string            `json:"templatetag"`
 	Templatetype          string            `json:"templatetype"`
+	Url                   string            `json:"url"`
 	Zoneid                string            `json:"zoneid"`
 	Zonename              string            `json:"zonename"`
 }
@@ -2040,6 +2102,9 @@ func (p *UpdateTemplateParams) toURLValues() url.Values {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("sshkeyenabled", vv)
 	}
+	if v, found := p.p["templatetype"]; found {
+		u.Set("templatetype", v.(string))
+	}
 	return u
 }
 
@@ -2141,6 +2206,13 @@ func (p *UpdateTemplateParams) SetSshkeyenabled(v bool) {
 	p.p["sshkeyenabled"] = v
 }
 
+func (p *UpdateTemplateParams) SetTemplatetype(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["templatetype"] = v
+}
+
 // You should always use this function to get a new UpdateTemplateParams instance,
 // as then you are sure you have configured all required params
 func (s *TemplateService) NewUpdateTemplateParams(id string) *UpdateTemplateParams {
@@ -2174,11 +2246,14 @@ type UpdateTemplateResponse struct {
 	Childtemplates        []interface{}     `json:"childtemplates"`
 	Created               string            `json:"created"`
 	CrossZones            bool              `json:"crossZones"`
+	Deployasis            bool              `json:"deployasis"`
+	Deployasisdetails     map[string]string `json:"deployasisdetails"`
 	Details               map[string]string `json:"details"`
 	Directdownload        bool              `json:"directdownload"`
 	Displaytext           string            `json:"displaytext"`
 	Domain                string            `json:"domain"`
 	Domainid              string            `json:"domainid"`
+	Downloaddetails       []string          `json:"downloaddetails"`
 	Format                string            `json:"format"`
 	Hostid                string            `json:"hostid"`
 	Hostname              string            `json:"hostname"`
@@ -2208,6 +2283,7 @@ type UpdateTemplateResponse struct {
 	Tags                  []Tags            `json:"tags"`
 	Templatetag           string            `json:"templatetag"`
 	Templatetype          string            `json:"templatetype"`
+	Url                   string            `json:"url"`
 	Zoneid                string            `json:"zoneid"`
 	Zonename              string            `json:"zonename"`
 }
diff --git a/cloudstack/UsageService.go b/cloudstack/UsageService.go
index 57c7a9b..6a3748b 100644
--- a/cloudstack/UsageService.go
+++ b/cloudstack/UsageService.go
@@ -861,9 +861,17 @@ func (p *ListUsageRecordsParams) toURLValues() url.Values {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("includetags", vv)
 	}
+	if v, found := p.p["isrecursive"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("isrecursive", vv)
+	}
 	if v, found := p.p["keyword"]; found {
 		u.Set("keyword", v.(string))
 	}
+	if v, found := p.p["oldformat"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("oldformat", vv)
+	}
 	if v, found := p.p["page"]; found {
 		vv := strconv.Itoa(v.(int))
 		u.Set("page", vv)
@@ -923,6 +931,13 @@ func (p *ListUsageRecordsParams) SetIncludetags(v bool) {
 	p.p["includetags"] = v
 }
 
+func (p *ListUsageRecordsParams) SetIsrecursive(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["isrecursive"] = v
+}
+
 func (p *ListUsageRecordsParams) SetKeyword(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -930,6 +945,13 @@ func (p *ListUsageRecordsParams) SetKeyword(v string) {
 	p.p["keyword"] = v
 }
 
+func (p *ListUsageRecordsParams) SetOldformat(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["oldformat"] = v
+}
+
 func (p *ListUsageRecordsParams) SetPage(v int) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1020,6 +1042,10 @@ type UsageRecord struct {
 	Name             string `json:"name"`
 	Networkid        string `json:"networkid"`
 	Offeringid       string `json:"offeringid"`
+	Oscategoryid     string `json:"oscategoryid"`
+	Oscategoryname   string `json:"oscategoryname"`
+	Osdisplayname    string `json:"osdisplayname"`
+	Ostypeid         string `json:"ostypeid"`
 	Project          string `json:"project"`
 	Projectid        string `json:"projectid"`
 	Rawusage         string `json:"rawusage"`
@@ -1033,9 +1059,37 @@ type UsageRecord struct {
 	Usagetype        int    `json:"usagetype"`
 	Virtualmachineid string `json:"virtualmachineid"`
 	Virtualsize      int64  `json:"virtualsize"`
+	Vpcid            string `json:"vpcid"`
 	Zoneid           string `json:"zoneid"`
 }
 
+func (r *UsageRecord) 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 UsageRecord
+	return json.Unmarshal(b, (*alias)(r))
+}
+
 type ListUsageTypesParams struct {
 	p map[string]interface{}
 }
diff --git a/cloudstack/VPCService.go b/cloudstack/VPCService.go
index 178c03a..8418df6 100644
--- a/cloudstack/VPCService.go
+++ b/cloudstack/VPCService.go
@@ -39,6 +39,10 @@ func (p *CreatePrivateGatewayParams) toURLValues() url.Values {
 	if v, found := p.p["aclid"]; found {
 		u.Set("aclid", v.(string))
 	}
+	if v, found := p.p["bypassvlanoverlapcheck"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("bypassvlanoverlapcheck", vv)
+	}
 	if v, found := p.p["gateway"]; found {
 		u.Set("gateway", v.(string))
 	}
@@ -74,6 +78,13 @@ func (p *CreatePrivateGatewayParams) SetAclid(v string) {
 	p.p["aclid"] = v
 }
 
+func (p *CreatePrivateGatewayParams) SetBypassvlanoverlapcheck(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["bypassvlanoverlapcheck"] = v
+}
+
 func (p *CreatePrivateGatewayParams) SetGateway(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -181,6 +192,7 @@ func (s *VPCService) CreatePrivateGateway(p *CreatePrivateGatewayParams) (*Creat
 type CreatePrivateGatewayResponse struct {
 	Account            string `json:"account"`
 	Aclid              string `json:"aclid"`
+	Aclname            string `json:"aclname"`
 	Domain             string `json:"domain"`
 	Domainid           string `json:"domainid"`
 	Gateway            string `json:"gateway"`
@@ -196,6 +208,7 @@ type CreatePrivateGatewayResponse struct {
 	State              string `json:"state"`
 	Vlan               string `json:"vlan"`
 	Vpcid              string `json:"vpcid"`
+	Vpcname            string `json:"vpcname"`
 	Zoneid             string `json:"zoneid"`
 	Zonename           string `json:"zonename"`
 }
@@ -489,6 +502,7 @@ type CreateVPCResponse struct {
 	State                string                     `json:"state"`
 	Tags                 []Tags                     `json:"tags"`
 	Vpcofferingid        string                     `json:"vpcofferingid"`
+	Vpcofferingname      string                     `json:"vpcofferingname"`
 	Zoneid               string                     `json:"zoneid"`
 	Zonename             string                     `json:"zonename"`
 }
@@ -518,11 +532,13 @@ type CreateVPCResponseServiceCapability struct {
 type CreateVPCResponseNetwork struct {
 	Account                     string                            `json:"account"`
 	Aclid                       string                            `json:"aclid"`
+	Aclname                     string                            `json:"aclname"`
 	Acltype                     string                            `json:"acltype"`
 	Broadcastdomaintype         string                            `json:"broadcastdomaintype"`
 	Broadcasturi                string                            `json:"broadcasturi"`
 	Canusefordeploy             bool                              `json:"canusefordeploy"`
 	Cidr                        string                            `json:"cidr"`
+	Details                     map[string]string                 `json:"details"`
 	Displaynetwork              bool                              `json:"displaynetwork"`
 	Displaytext                 string                            `json:"displaytext"`
 	Dns1                        string                            `json:"dns1"`
@@ -563,6 +579,7 @@ type CreateVPCResponseNetwork struct {
 	Type                        string                            `json:"type"`
 	Vlan                        string                            `json:"vlan"`
 	Vpcid                       string                            `json:"vpcid"`
+	Vpcname                     string                            `json:"vpcname"`
 	Zoneid                      string                            `json:"zoneid"`
 	Zonename                    string                            `json:"zonename"`
 	Zonesnetworkspans           []interface{}                     `json:"zonesnetworkspans"`
@@ -602,6 +619,10 @@ func (p *CreateVPCOfferingParams) toURLValues() url.Values {
 	if v, found := p.p["displaytext"]; found {
 		u.Set("displaytext", v.(string))
 	}
+	if v, found := p.p["domainid"]; found {
+		vv := strings.Join(v.([]string), ",")
+		u.Set("domainid", vv)
+	}
 	if v, found := p.p["name"]; found {
 		u.Set("name", v.(string))
 	}
@@ -626,6 +647,10 @@ func (p *CreateVPCOfferingParams) toURLValues() url.Values {
 		vv := strings.Join(v.([]string), ",")
 		u.Set("supportedservices", vv)
 	}
+	if v, found := p.p["zoneid"]; found {
+		vv := strings.Join(v.([]string), ",")
+		u.Set("zoneid", vv)
+	}
 	return u
 }
 
@@ -636,6 +661,13 @@ func (p *CreateVPCOfferingParams) SetDisplaytext(v string) {
 	p.p["displaytext"] = v
 }
 
+func (p *CreateVPCOfferingParams) SetDomainid(v []string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["domainid"] = v
+}
+
 func (p *CreateVPCOfferingParams) SetName(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -671,6 +703,13 @@ func (p *CreateVPCOfferingParams) SetSupportedservices(v []string) {
 	p.p["supportedservices"] = v
 }
 
+func (p *CreateVPCOfferingParams) 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 CreateVPCOfferingParams instance,
 // as then you are sure you have configured all required params
 func (s *VPCService) NewCreateVPCOfferingParams(displaytext string, name string, supportedservices []string) *CreateVPCOfferingParams {
@@ -721,6 +760,8 @@ type CreateVPCOfferingResponse struct {
 	Created                string                             `json:"created"`
 	Displaytext            string                             `json:"displaytext"`
 	Distributedvpcrouter   bool                               `json:"distributedvpcrouter"`
+	Domain                 string                             `json:"domain"`
+	Domainid               string                             `json:"domainid"`
 	Id                     string                             `json:"id"`
 	Isdefault              bool                               `json:"isdefault"`
 	JobID                  string                             `json:"jobid"`
@@ -729,6 +770,8 @@ type CreateVPCOfferingResponse struct {
 	Service                []CreateVPCOfferingResponseService `json:"service"`
 	State                  string                             `json:"state"`
 	SupportsregionLevelvpc bool                               `json:"supportsregionLevelvpc"`
+	Zone                   string                             `json:"zone"`
+	Zoneid                 string                             `json:"zoneid"`
 }
 
 type CreateVPCOfferingResponseService struct {
@@ -1235,6 +1278,7 @@ type ListPrivateGatewaysResponse struct {
 type PrivateGateway struct {
 	Account            string `json:"account"`
 	Aclid              string `json:"aclid"`
+	Aclname            string `json:"aclname"`
 	Domain             string `json:"domain"`
 	Domainid           string `json:"domainid"`
 	Gateway            string `json:"gateway"`
@@ -1250,6 +1294,7 @@ type PrivateGateway struct {
 	State              string `json:"state"`
 	Vlan               string `json:"vlan"`
 	Vpcid              string `json:"vpcid"`
+	Vpcname            string `json:"vpcname"`
 	Zoneid             string `json:"zoneid"`
 	Zonename           string `json:"zonename"`
 }
@@ -1297,6 +1342,9 @@ func (p *ListStaticRoutesParams) toURLValues() url.Values {
 	if v, found := p.p["projectid"]; found {
 		u.Set("projectid", v.(string))
 	}
+	if v, found := p.p["state"]; found {
+		u.Set("state", v.(string))
+	}
 	if v, found := p.p["tags"]; found {
 		m := v.(map[string]string)
 		for i, k := range getSortedKeysFromMap(m) {
@@ -1380,6 +1428,13 @@ func (p *ListStaticRoutesParams) SetProjectid(v string) {
 	p.p["projectid"] = v
 }
 
+func (p *ListStaticRoutesParams) SetState(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["state"] = v
+}
+
 func (p *ListStaticRoutesParams) SetTags(v map[string]string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1511,6 +1566,9 @@ func (p *ListVPCOfferingsParams) toURLValues() url.Values {
 		vv := strings.Join(v.([]string), ",")
 		u.Set("supportedservices", vv)
 	}
+	if v, found := p.p["zoneid"]; found {
+		u.Set("zoneid", v.(string))
+	}
 	return u
 }
 
@@ -1577,6 +1635,13 @@ func (p *ListVPCOfferingsParams) SetSupportedservices(v []string) {
 	p.p["supportedservices"] = v
 }
 
+func (p *ListVPCOfferingsParams) 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 ListVPCOfferingsParams instance,
 // as then you are sure you have configured all required params
 func (s *VPCService) NewListVPCOfferingsParams() *ListVPCOfferingsParams {
@@ -1692,6 +1757,8 @@ type VPCOffering struct {
 	Created                string               `json:"created"`
 	Displaytext            string               `json:"displaytext"`
 	Distributedvpcrouter   bool                 `json:"distributedvpcrouter"`
+	Domain                 string               `json:"domain"`
+	Domainid               string               `json:"domainid"`
 	Id                     string               `json:"id"`
 	Isdefault              bool                 `json:"isdefault"`
 	JobID                  string               `json:"jobid"`
@@ -1700,6 +1767,8 @@ type VPCOffering struct {
 	Service                []VPCOfferingService `json:"service"`
 	State                  string               `json:"state"`
 	SupportsregionLevelvpc bool                 `json:"supportsregionLevelvpc"`
+	Zone                   string               `json:"zone"`
+	Zoneid                 string               `json:"zoneid"`
 }
 
 type VPCOfferingService struct {
@@ -2072,6 +2141,7 @@ type VPC struct {
 	State                string               `json:"state"`
 	Tags                 []Tags               `json:"tags"`
 	Vpcofferingid        string               `json:"vpcofferingid"`
+	Vpcofferingname      string               `json:"vpcofferingname"`
 	Zoneid               string               `json:"zoneid"`
 	Zonename             string               `json:"zonename"`
 }
@@ -2101,11 +2171,13 @@ type VPCServiceInternalCapability struct {
 type VPCNetwork struct {
 	Account                     string              `json:"account"`
 	Aclid                       string              `json:"aclid"`
+	Aclname                     string              `json:"aclname"`
 	Acltype                     string              `json:"acltype"`
 	Broadcastdomaintype         string              `json:"broadcastdomaintype"`
 	Broadcasturi                string              `json:"broadcasturi"`
 	Canusefordeploy             bool                `json:"canusefordeploy"`
 	Cidr                        string              `json:"cidr"`
+	Details                     map[string]string   `json:"details"`
 	Displaynetwork              bool                `json:"displaynetwork"`
 	Displaytext                 string              `json:"displaytext"`
 	Dns1                        string              `json:"dns1"`
@@ -2146,6 +2218,7 @@ type VPCNetwork struct {
 	Type                        string              `json:"type"`
 	Vlan                        string              `json:"vlan"`
 	Vpcid                       string              `json:"vpcid"`
+	Vpcname                     string              `json:"vpcname"`
 	Zoneid                      string              `json:"zoneid"`
 	Zonename                    string              `json:"zonename"`
 	Zonesnetworkspans           []interface{}       `json:"zonesnetworkspans"`
@@ -2285,6 +2358,7 @@ type RestartVPCResponse struct {
 	State                string                      `json:"state"`
 	Tags                 []Tags                      `json:"tags"`
 	Vpcofferingid        string                      `json:"vpcofferingid"`
+	Vpcofferingname      string                      `json:"vpcofferingname"`
 	Zoneid               string                      `json:"zoneid"`
 	Zonename             string                      `json:"zonename"`
 }
@@ -2314,11 +2388,13 @@ type RestartVPCResponseServiceCapability struct {
 type RestartVPCResponseNetwork struct {
 	Account                     string                             `json:"account"`
 	Aclid                       string                             `json:"aclid"`
+	Aclname                     string                             `json:"aclname"`
 	Acltype                     string                             `json:"acltype"`
 	Broadcastdomaintype         string                             `json:"broadcastdomaintype"`
 	Broadcasturi                string                             `json:"broadcasturi"`
 	Canusefordeploy             bool                               `json:"canusefordeploy"`
 	Cidr                        string                             `json:"cidr"`
+	Details                     map[string]string                  `json:"details"`
 	Displaynetwork              bool                               `json:"displaynetwork"`
 	Displaytext                 string                             `json:"displaytext"`
 	Dns1                        string                             `json:"dns1"`
@@ -2359,6 +2435,7 @@ type RestartVPCResponseNetwork struct {
 	Type                        string                             `json:"type"`
 	Vlan                        string                             `json:"vlan"`
 	Vpcid                       string                             `json:"vpcid"`
+	Vpcname                     string                             `json:"vpcname"`
 	Zoneid                      string                             `json:"zoneid"`
 	Zonename                    string                             `json:"zonename"`
 	Zonesnetworkspans           []interface{}                      `json:"zonesnetworkspans"`
@@ -2517,6 +2594,7 @@ type UpdateVPCResponse struct {
 	State                string                     `json:"state"`
 	Tags                 []Tags                     `json:"tags"`
 	Vpcofferingid        string                     `json:"vpcofferingid"`
+	Vpcofferingname      string                     `json:"vpcofferingname"`
 	Zoneid               string                     `json:"zoneid"`
 	Zonename             string                     `json:"zonename"`
 }
@@ -2546,11 +2624,13 @@ type UpdateVPCResponseServiceCapability struct {
 type UpdateVPCResponseNetwork struct {
 	Account                     string                            `json:"account"`
 	Aclid                       string                            `json:"aclid"`
+	Aclname                     string                            `json:"aclname"`
 	Acltype                     string                            `json:"acltype"`
 	Broadcastdomaintype         string                            `json:"broadcastdomaintype"`
 	Broadcasturi                string                            `json:"broadcasturi"`
 	Canusefordeploy             bool                              `json:"canusefordeploy"`
 	Cidr                        string                            `json:"cidr"`
+	Details                     map[string]string                 `json:"details"`
 	Displaynetwork              bool                              `json:"displaynetwork"`
 	Displaytext                 string                            `json:"displaytext"`
 	Dns1                        string                            `json:"dns1"`
@@ -2591,6 +2671,7 @@ type UpdateVPCResponseNetwork struct {
 	Type                        string                            `json:"type"`
 	Vlan                        string                            `json:"vlan"`
 	Vpcid                       string                            `json:"vpcid"`
+	Vpcname                     string                            `json:"vpcname"`
 	Zoneid                      string                            `json:"zoneid"`
 	Zonename                    string                            `json:"zonename"`
 	Zonesnetworkspans           []interface{}                     `json:"zonesnetworkspans"`
@@ -2630,15 +2711,25 @@ func (p *UpdateVPCOfferingParams) toURLValues() url.Values {
 	if v, found := p.p["displaytext"]; found {
 		u.Set("displaytext", v.(string))
 	}
+	if v, found := p.p["domainid"]; found {
+		u.Set("domainid", v.(string))
+	}
 	if v, found := p.p["id"]; found {
 		u.Set("id", v.(string))
 	}
 	if v, found := p.p["name"]; found {
 		u.Set("name", v.(string))
 	}
+	if v, found := p.p["sortkey"]; found {
+		vv := strconv.Itoa(v.(int))
+		u.Set("sortkey", vv)
+	}
 	if v, found := p.p["state"]; found {
 		u.Set("state", v.(string))
 	}
+	if v, found := p.p["zoneid"]; found {
+		u.Set("zoneid", v.(string))
+	}
 	return u
 }
 
@@ -2649,6 +2740,13 @@ func (p *UpdateVPCOfferingParams) SetDisplaytext(v string) {
 	p.p["displaytext"] = v
 }
 
+func (p *UpdateVPCOfferingParams) SetDomainid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["domainid"] = v
+}
+
 func (p *UpdateVPCOfferingParams) SetId(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -2663,6 +2761,13 @@ func (p *UpdateVPCOfferingParams) SetName(v string) {
 	p.p["name"] = v
 }
 
+func (p *UpdateVPCOfferingParams) SetSortkey(v int) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["sortkey"] = v
+}
+
 func (p *UpdateVPCOfferingParams) SetState(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -2670,6 +2775,13 @@ func (p *UpdateVPCOfferingParams) SetState(v string) {
 	p.p["state"] = v
 }
 
+func (p *UpdateVPCOfferingParams) 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 UpdateVPCOfferingParams instance,
 // as then you are sure you have configured all required params
 func (s *VPCService) NewUpdateVPCOfferingParams(id string) *UpdateVPCOfferingParams {
@@ -2718,6 +2830,8 @@ type UpdateVPCOfferingResponse struct {
 	Created                string                             `json:"created"`
 	Displaytext            string                             `json:"displaytext"`
 	Distributedvpcrouter   bool                               `json:"distributedvpcrouter"`
+	Domain                 string                             `json:"domain"`
+	Domainid               string                             `json:"domainid"`
 	Id                     string                             `json:"id"`
 	Isdefault              bool                               `json:"isdefault"`
 	JobID                  string                             `json:"jobid"`
@@ -2726,6 +2840,8 @@ type UpdateVPCOfferingResponse struct {
 	Service                []UpdateVPCOfferingResponseService `json:"service"`
 	State                  string                             `json:"state"`
 	SupportsregionLevelvpc bool                               `json:"supportsregionLevelvpc"`
+	Zone                   string                             `json:"zone"`
+	Zoneid                 string                             `json:"zoneid"`
 }
 
 type UpdateVPCOfferingResponseService struct {
diff --git a/cloudstack/VPNService.go b/cloudstack/VPNService.go
index 147c00e..005c957 100644
--- a/cloudstack/VPNService.go
+++ b/cloudstack/VPNService.go
@@ -396,6 +396,7 @@ type CreateVpnConnectionResponse struct {
 	Id                   string `json:"id"`
 	Ikelifetime          int64  `json:"ikelifetime"`
 	Ikepolicy            string `json:"ikepolicy"`
+	Ikeversion           string `json:"ikeversion"`
 	Ipsecpsk             string `json:"ipsecpsk"`
 	JobID                string `json:"jobid"`
 	Jobstatus            int    `json:"jobstatus"`
@@ -406,6 +407,7 @@ type CreateVpnConnectionResponse struct {
 	Removed              string `json:"removed"`
 	S2scustomergatewayid string `json:"s2scustomergatewayid"`
 	S2svpngatewayid      string `json:"s2svpngatewayid"`
+	Splitconnections     bool   `json:"splitconnections"`
 	State                string `json:"state"`
 }
 
@@ -452,6 +454,9 @@ func (p *CreateVpnCustomerGatewayParams) toURLValues() url.Values {
 	if v, found := p.p["ikepolicy"]; found {
 		u.Set("ikepolicy", v.(string))
 	}
+	if v, found := p.p["ikeversion"]; found {
+		u.Set("ikeversion", v.(string))
+	}
 	if v, found := p.p["ipsecpsk"]; found {
 		u.Set("ipsecpsk", v.(string))
 	}
@@ -461,6 +466,10 @@ func (p *CreateVpnCustomerGatewayParams) toURLValues() url.Values {
 	if v, found := p.p["projectid"]; found {
 		u.Set("projectid", v.(string))
 	}
+	if v, found := p.p["splitconnections"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("splitconnections", vv)
+	}
 	return u
 }
 
@@ -534,6 +543,13 @@ func (p *CreateVpnCustomerGatewayParams) SetIkepolicy(v string) {
 	p.p["ikepolicy"] = v
 }
 
+func (p *CreateVpnCustomerGatewayParams) SetIkeversion(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["ikeversion"] = v
+}
+
 func (p *CreateVpnCustomerGatewayParams) SetIpsecpsk(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -555,6 +571,13 @@ func (p *CreateVpnCustomerGatewayParams) SetProjectid(v string) {
 	p.p["projectid"] = v
 }
 
+func (p *CreateVpnCustomerGatewayParams) SetSplitconnections(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["splitconnections"] = v
+}
+
 // You should always use this function to get a new CreateVpnCustomerGatewayParams instance,
 // as then you are sure you have configured all required params
 func (s *VPNService) NewCreateVpnCustomerGatewayParams(cidrlist string, esppolicy string, gateway string, ikepolicy string, ipsecpsk string) *CreateVpnCustomerGatewayParams {
@@ -604,26 +627,28 @@ func (s *VPNService) CreateVpnCustomerGateway(p *CreateVpnCustomerGatewayParams)
 }
 
 type CreateVpnCustomerGatewayResponse struct {
-	Account     string `json:"account"`
-	Cidrlist    string `json:"cidrlist"`
-	Domain      string `json:"domain"`
-	Domainid    string `json:"domainid"`
-	Dpd         bool   `json:"dpd"`
-	Esplifetime int64  `json:"esplifetime"`
-	Esppolicy   string `json:"esppolicy"`
-	Forceencap  bool   `json:"forceencap"`
-	Gateway     string `json:"gateway"`
-	Id          string `json:"id"`
-	Ikelifetime int64  `json:"ikelifetime"`
-	Ikepolicy   string `json:"ikepolicy"`
-	Ipaddress   string `json:"ipaddress"`
-	Ipsecpsk    string `json:"ipsecpsk"`
-	JobID       string `json:"jobid"`
-	Jobstatus   int    `json:"jobstatus"`
-	Name        string `json:"name"`
-	Project     string `json:"project"`
-	Projectid   string `json:"projectid"`
-	Removed     string `json:"removed"`
+	Account          string `json:"account"`
+	Cidrlist         string `json:"cidrlist"`
+	Domain           string `json:"domain"`
+	Domainid         string `json:"domainid"`
+	Dpd              bool   `json:"dpd"`
+	Esplifetime      int64  `json:"esplifetime"`
+	Esppolicy        string `json:"esppolicy"`
+	Forceencap       bool   `json:"forceencap"`
+	Gateway          string `json:"gateway"`
+	Id               string `json:"id"`
+	Ikelifetime      int64  `json:"ikelifetime"`
+	Ikepolicy        string `json:"ikepolicy"`
+	Ikeversion       string `json:"ikeversion"`
+	Ipaddress        string `json:"ipaddress"`
+	Ipsecpsk         string `json:"ipsecpsk"`
+	JobID            string `json:"jobid"`
+	Jobstatus        int    `json:"jobstatus"`
+	Name             string `json:"name"`
+	Project          string `json:"project"`
+	Projectid        string `json:"projectid"`
+	Removed          string `json:"removed"`
+	Splitconnections bool   `json:"splitconnections"`
 }
 
 type CreateVpnGatewayParams struct {
@@ -716,6 +741,7 @@ type CreateVpnGatewayResponse struct {
 	Publicip   string `json:"publicip"`
 	Removed    string `json:"removed"`
 	Vpcid      string `json:"vpcid"`
+	Vpcname    string `json:"vpcname"`
 }
 
 type DeleteRemoteAccessVpnParams struct {
@@ -1408,6 +1434,7 @@ type VpnConnection struct {
 	Id                   string `json:"id"`
 	Ikelifetime          int64  `json:"ikelifetime"`
 	Ikepolicy            string `json:"ikepolicy"`
+	Ikeversion           string `json:"ikeversion"`
 	Ipsecpsk             string `json:"ipsecpsk"`
 	JobID                string `json:"jobid"`
 	Jobstatus            int    `json:"jobstatus"`
@@ -1418,6 +1445,7 @@ type VpnConnection struct {
 	Removed              string `json:"removed"`
 	S2scustomergatewayid string `json:"s2scustomergatewayid"`
 	S2svpngatewayid      string `json:"s2svpngatewayid"`
+	Splitconnections     bool   `json:"splitconnections"`
 	State                string `json:"state"`
 }
 
@@ -1639,26 +1667,28 @@ type ListVpnCustomerGatewaysResponse struct {
 }
 
 type VpnCustomerGateway struct {
-	Account     string `json:"account"`
-	Cidrlist    string `json:"cidrlist"`
-	Domain      string `json:"domain"`
-	Domainid    string `json:"domainid"`
-	Dpd         bool   `json:"dpd"`
-	Esplifetime int64  `json:"esplifetime"`
-	Esppolicy   string `json:"esppolicy"`
-	Forceencap  bool   `json:"forceencap"`
-	Gateway     string `json:"gateway"`
-	Id          string `json:"id"`
-	Ikelifetime int64  `json:"ikelifetime"`
-	Ikepolicy   string `json:"ikepolicy"`
-	Ipaddress   string `json:"ipaddress"`
-	Ipsecpsk    string `json:"ipsecpsk"`
-	JobID       string `json:"jobid"`
-	Jobstatus   int    `json:"jobstatus"`
-	Name        string `json:"name"`
-	Project     string `json:"project"`
-	Projectid   string `json:"projectid"`
-	Removed     string `json:"removed"`
+	Account          string `json:"account"`
+	Cidrlist         string `json:"cidrlist"`
+	Domain           string `json:"domain"`
+	Domainid         string `json:"domainid"`
+	Dpd              bool   `json:"dpd"`
+	Esplifetime      int64  `json:"esplifetime"`
+	Esppolicy        string `json:"esppolicy"`
+	Forceencap       bool   `json:"forceencap"`
+	Gateway          string `json:"gateway"`
+	Id               string `json:"id"`
+	Ikelifetime      int64  `json:"ikelifetime"`
+	Ikepolicy        string `json:"ikepolicy"`
+	Ikeversion       string `json:"ikeversion"`
+	Ipaddress        string `json:"ipaddress"`
+	Ipsecpsk         string `json:"ipsecpsk"`
+	JobID            string `json:"jobid"`
+	Jobstatus        int    `json:"jobstatus"`
+	Name             string `json:"name"`
+	Project          string `json:"project"`
+	Projectid        string `json:"projectid"`
+	Removed          string `json:"removed"`
+	Splitconnections bool   `json:"splitconnections"`
 }
 
 type ListVpnGatewaysParams struct {
@@ -1862,6 +1892,7 @@ type VpnGateway struct {
 	Publicip   string `json:"publicip"`
 	Removed    string `json:"removed"`
 	Vpcid      string `json:"vpcid"`
+	Vpcname    string `json:"vpcname"`
 }
 
 type ListVpnUsersParams struct {
@@ -2253,6 +2284,7 @@ type ResetVpnConnectionResponse struct {
 	Id                   string `json:"id"`
 	Ikelifetime          int64  `json:"ikelifetime"`
 	Ikepolicy            string `json:"ikepolicy"`
+	Ikeversion           string `json:"ikeversion"`
 	Ipsecpsk             string `json:"ipsecpsk"`
 	JobID                string `json:"jobid"`
 	Jobstatus            int    `json:"jobstatus"`
@@ -2263,6 +2295,7 @@ type ResetVpnConnectionResponse struct {
 	Removed              string `json:"removed"`
 	S2scustomergatewayid string `json:"s2scustomergatewayid"`
 	S2svpngatewayid      string `json:"s2svpngatewayid"`
+	Splitconnections     bool   `json:"splitconnections"`
 	State                string `json:"state"`
 }
 
@@ -2472,6 +2505,7 @@ type UpdateVpnConnectionResponse struct {
 	Id                   string `json:"id"`
 	Ikelifetime          int64  `json:"ikelifetime"`
 	Ikepolicy            string `json:"ikepolicy"`
+	Ikeversion           string `json:"ikeversion"`
 	Ipsecpsk             string `json:"ipsecpsk"`
 	JobID                string `json:"jobid"`
 	Jobstatus            int    `json:"jobstatus"`
@@ -2482,6 +2516,7 @@ type UpdateVpnConnectionResponse struct {
 	Removed              string `json:"removed"`
 	S2scustomergatewayid string `json:"s2scustomergatewayid"`
 	S2svpngatewayid      string `json:"s2svpngatewayid"`
+	Splitconnections     bool   `json:"splitconnections"`
 	State                string `json:"state"`
 }
 
@@ -2531,12 +2566,19 @@ func (p *UpdateVpnCustomerGatewayParams) toURLValues() url.Values {
 	if v, found := p.p["ikepolicy"]; found {
 		u.Set("ikepolicy", v.(string))
 	}
+	if v, found := p.p["ikeversion"]; found {
+		u.Set("ikeversion", v.(string))
+	}
 	if v, found := p.p["ipsecpsk"]; found {
 		u.Set("ipsecpsk", v.(string))
 	}
 	if v, found := p.p["name"]; found {
 		u.Set("name", v.(string))
 	}
+	if v, found := p.p["splitconnections"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("splitconnections", vv)
+	}
 	return u
 }
 
@@ -2617,6 +2659,13 @@ func (p *UpdateVpnCustomerGatewayParams) SetIkepolicy(v string) {
 	p.p["ikepolicy"] = v
 }
 
+func (p *UpdateVpnCustomerGatewayParams) SetIkeversion(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["ikeversion"] = v
+}
+
 func (p *UpdateVpnCustomerGatewayParams) SetIpsecpsk(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -2631,6 +2680,13 @@ func (p *UpdateVpnCustomerGatewayParams) SetName(v string) {
 	p.p["name"] = v
 }
 
+func (p *UpdateVpnCustomerGatewayParams) SetSplitconnections(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["splitconnections"] = v
+}
+
 // You should always use this function to get a new UpdateVpnCustomerGatewayParams instance,
 // as then you are sure you have configured all required params
 func (s *VPNService) NewUpdateVpnCustomerGatewayParams(cidrlist string, esppolicy string, gateway string, id string, ikepolicy string, ipsecpsk string) *UpdateVpnCustomerGatewayParams {
@@ -2681,26 +2737,28 @@ func (s *VPNService) UpdateVpnCustomerGateway(p *UpdateVpnCustomerGatewayParams)
 }
 
 type UpdateVpnCustomerGatewayResponse struct {
-	Account     string `json:"account"`
-	Cidrlist    string `json:"cidrlist"`
-	Domain      string `json:"domain"`
-	Domainid    string `json:"domainid"`
-	Dpd         bool   `json:"dpd"`
-	Esplifetime int64  `json:"esplifetime"`
-	Esppolicy   string `json:"esppolicy"`
-	Forceencap  bool   `json:"forceencap"`
-	Gateway     string `json:"gateway"`
-	Id          string `json:"id"`
-	Ikelifetime int64  `json:"ikelifetime"`
-	Ikepolicy   string `json:"ikepolicy"`
-	Ipaddress   string `json:"ipaddress"`
-	Ipsecpsk    string `json:"ipsecpsk"`
-	JobID       string `json:"jobid"`
-	Jobstatus   int    `json:"jobstatus"`
-	Name        string `json:"name"`
-	Project     string `json:"project"`
-	Projectid   string `json:"projectid"`
-	Removed     string `json:"removed"`
+	Account          string `json:"account"`
+	Cidrlist         string `json:"cidrlist"`
+	Domain           string `json:"domain"`
+	Domainid         string `json:"domainid"`
+	Dpd              bool   `json:"dpd"`
+	Esplifetime      int64  `json:"esplifetime"`
+	Esppolicy        string `json:"esppolicy"`
+	Forceencap       bool   `json:"forceencap"`
+	Gateway          string `json:"gateway"`
+	Id               string `json:"id"`
+	Ikelifetime      int64  `json:"ikelifetime"`
+	Ikepolicy        string `json:"ikepolicy"`
+	Ikeversion       string `json:"ikeversion"`
+	Ipaddress        string `json:"ipaddress"`
+	Ipsecpsk         string `json:"ipsecpsk"`
+	JobID            string `json:"jobid"`
+	Jobstatus        int    `json:"jobstatus"`
+	Name             string `json:"name"`
+	Project          string `json:"project"`
+	Projectid        string `json:"projectid"`
+	Removed          string `json:"removed"`
+	Splitconnections bool   `json:"splitconnections"`
 }
 
 type UpdateVpnGatewayParams struct {
@@ -2803,4 +2861,5 @@ type UpdateVpnGatewayResponse struct {
 	Publicip   string `json:"publicip"`
 	Removed    string `json:"removed"`
 	Vpcid      string `json:"vpcid"`
+	Vpcname    string `json:"vpcname"`
 }
diff --git a/cloudstack/VirtualMachineService.go b/cloudstack/VirtualMachineService.go
index d478294..600fe96 100644
--- a/cloudstack/VirtualMachineService.go
+++ b/cloudstack/VirtualMachineService.go
@@ -141,6 +141,10 @@ func (s *VirtualMachineService) AddNicToVirtualMachine(p *AddNicToVirtualMachine
 type AddNicToVirtualMachineResponse struct {
 	Account               string                                        `json:"account"`
 	Affinitygroup         []AddNicToVirtualMachineResponseAffinitygroup `json:"affinitygroup"`
+	Backupofferingid      string                                        `json:"backupofferingid"`
+	Backupofferingname    string                                        `json:"backupofferingname"`
+	Bootmode              string                                        `json:"bootmode"`
+	Boottype              string                                        `json:"boottype"`
 	Cpunumber             int                                           `json:"cpunumber"`
 	Cpuspeed              int                                           `json:"cpuspeed"`
 	Cpuused               string                                        `json:"cpuused"`
@@ -181,6 +185,7 @@ type AddNicToVirtualMachineResponse struct {
 	Networkkbsread        int64                                         `json:"networkkbsread"`
 	Networkkbswrite       int64                                         `json:"networkkbswrite"`
 	Nic                   []Nic                                         `json:"nic"`
+	Osdisplayname         string                                        `json:"osdisplayname"`
 	Ostypeid              string                                        `json:"ostypeid"`
 	Password              string                                        `json:"password"`
 	Passwordenabled       bool                                          `json:"passwordenabled"`
@@ -188,6 +193,7 @@ type AddNicToVirtualMachineResponse struct {
 	Projectid             string                                        `json:"projectid"`
 	Publicip              string                                        `json:"publicip"`
 	Publicipid            string                                        `json:"publicipid"`
+	Readonlyuidetails     string                                        `json:"readonlyuidetails"`
 	Rootdeviceid          int64                                         `json:"rootdeviceid"`
 	Rootdevicetype        string                                        `json:"rootdevicetype"`
 	Securitygroup         []AddNicToVirtualMachineResponseSecuritygroup `json:"securitygroup"`
@@ -376,6 +382,10 @@ func (s *VirtualMachineService) AssignVirtualMachine(p *AssignVirtualMachinePara
 type AssignVirtualMachineResponse struct {
 	Account               string                                      `json:"account"`
 	Affinitygroup         []AssignVirtualMachineResponseAffinitygroup `json:"affinitygroup"`
+	Backupofferingid      string                                      `json:"backupofferingid"`
+	Backupofferingname    string                                      `json:"backupofferingname"`
+	Bootmode              string                                      `json:"bootmode"`
+	Boottype              string                                      `json:"boottype"`
 	Cpunumber             int                                         `json:"cpunumber"`
 	Cpuspeed              int                                         `json:"cpuspeed"`
 	Cpuused               string                                      `json:"cpuused"`
@@ -416,6 +426,7 @@ type AssignVirtualMachineResponse struct {
 	Networkkbsread        int64                                       `json:"networkkbsread"`
 	Networkkbswrite       int64                                       `json:"networkkbswrite"`
 	Nic                   []Nic                                       `json:"nic"`
+	Osdisplayname         string                                      `json:"osdisplayname"`
 	Ostypeid              string                                      `json:"ostypeid"`
 	Password              string                                      `json:"password"`
 	Passwordenabled       bool                                        `json:"passwordenabled"`
@@ -423,6 +434,7 @@ type AssignVirtualMachineResponse struct {
 	Projectid             string                                      `json:"projectid"`
 	Publicip              string                                      `json:"publicip"`
 	Publicipid            string                                      `json:"publicipid"`
+	Readonlyuidetails     string                                      `json:"readonlyuidetails"`
 	Rootdeviceid          int64                                       `json:"rootdeviceid"`
 	Rootdevicetype        string                                      `json:"rootdevicetype"`
 	Securitygroup         []AssignVirtualMachineResponseSecuritygroup `json:"securitygroup"`
@@ -583,6 +595,10 @@ func (s *VirtualMachineService) ChangeServiceForVirtualMachine(p *ChangeServiceF
 type ChangeServiceForVirtualMachineResponse struct {
 	Account               string                                                `json:"account"`
 	Affinitygroup         []ChangeServiceForVirtualMachineResponseAffinitygroup `json:"affinitygroup"`
+	Backupofferingid      string                                                `json:"backupofferingid"`
+	Backupofferingname    string                                                `json:"backupofferingname"`
+	Bootmode              string                                                `json:"bootmode"`
+	Boottype              string                                                `json:"boottype"`
 	Cpunumber             int                                                   `json:"cpunumber"`
 	Cpuspeed              int                                                   `json:"cpuspeed"`
 	Cpuused               string                                                `json:"cpuused"`
@@ -623,6 +639,7 @@ type ChangeServiceForVirtualMachineResponse struct {
 	Networkkbsread        int64                                                 `json:"networkkbsread"`
 	Networkkbswrite       int64                                                 `json:"networkkbswrite"`
 	Nic                   []Nic                                                 `json:"nic"`
+	Osdisplayname         string                                                `json:"osdisplayname"`
 	Ostypeid              string                                                `json:"ostypeid"`
 	Password              string                                                `json:"password"`
 	Passwordenabled       bool                                                  `json:"passwordenabled"`
@@ -630,6 +647,7 @@ type ChangeServiceForVirtualMachineResponse struct {
 	Projectid             string                                                `json:"projectid"`
 	Publicip              string                                                `json:"publicip"`
 	Publicipid            string                                                `json:"publicipid"`
+	Readonlyuidetails     string                                                `json:"readonlyuidetails"`
 	Rootdeviceid          int64                                                 `json:"rootdeviceid"`
 	Rootdevicetype        string                                                `json:"rootdevicetype"`
 	Securitygroup         []ChangeServiceForVirtualMachineResponseSecuritygroup `json:"securitygroup"`
@@ -794,6 +812,23 @@ func (p *DeployVirtualMachineParams) toURLValues() url.Values {
 		vv := strings.Join(v.([]string), ",")
 		u.Set("affinitygroupnames", vv)
 	}
+	if v, found := p.p["bootintosetup"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("bootintosetup", vv)
+	}
+	if v, found := p.p["bootmode"]; found {
+		u.Set("bootmode", v.(string))
+	}
+	if v, found := p.p["boottype"]; found {
+		u.Set("boottype", v.(string))
+	}
+	if v, found := p.p["clusterid"]; found {
+		u.Set("clusterid", v.(string))
+	}
+	if v, found := p.p["copyimagetags"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("copyimagetags", vv)
+	}
 	if v, found := p.p["customid"]; found {
 		u.Set("customid", v.(string))
 	}
@@ -874,9 +909,26 @@ func (p *DeployVirtualMachineParams) toURLValues() url.Values {
 		vv := strings.Join(v.([]string), ",")
 		u.Set("networkids", vv)
 	}
+	if v, found := p.p["nicnetworklist"]; found {
+		m := v.(map[string]string)
+		for i, k := range getSortedKeysFromMap(m) {
+			u.Set(fmt.Sprintf("nicnetworklist[%d].key", i), k)
+			u.Set(fmt.Sprintf("nicnetworklist[%d].value", i), m[k])
+		}
+	}
+	if v, found := p.p["podid"]; found {
+		u.Set("podid", v.(string))
+	}
 	if v, found := p.p["projectid"]; found {
 		u.Set("projectid", v.(string))
 	}
+	if v, found := p.p["properties"]; found {
+		m := v.(map[string]string)
+		for i, k := range getSortedKeysFromMap(m) {
+			u.Set(fmt.Sprintf("properties[%d].key", i), k)
+			u.Set(fmt.Sprintf("properties[%d].value", i), m[k])
+		}
+	}
 	if v, found := p.p["rootdisksize"]; found {
 		vv := strconv.FormatInt(v.(int64), 10)
 		u.Set("rootdisksize", vv)
@@ -933,6 +985,41 @@ func (p *DeployVirtualMachineParams) SetAffinitygroupnames(v []string) {
 	p.p["affinitygroupnames"] = v
 }
 
+func (p *DeployVirtualMachineParams) SetBootintosetup(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["bootintosetup"] = v
+}
+
+func (p *DeployVirtualMachineParams) SetBootmode(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["bootmode"] = v
+}
+
+func (p *DeployVirtualMachineParams) SetBoottype(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["boottype"] = v
+}
+
+func (p *DeployVirtualMachineParams) SetClusterid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["clusterid"] = v
+}
+
+func (p *DeployVirtualMachineParams) SetCopyimagetags(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["copyimagetags"] = v
+}
+
 func (p *DeployVirtualMachineParams) SetCustomid(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1080,6 +1167,20 @@ func (p *DeployVirtualMachineParams) SetNetworkids(v []string) {
 	p.p["networkids"] = v
 }
 
+func (p *DeployVirtualMachineParams) SetNicnetworklist(v map[string]string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["nicnetworklist"] = v
+}
+
+func (p *DeployVirtualMachineParams) SetPodid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["podid"] = v
+}
+
 func (p *DeployVirtualMachineParams) SetProjectid(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1087,6 +1188,13 @@ func (p *DeployVirtualMachineParams) SetProjectid(v string) {
 	p.p["projectid"] = v
 }
 
+func (p *DeployVirtualMachineParams) SetProperties(v map[string]string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["properties"] = v
+}
+
 func (p *DeployVirtualMachineParams) SetRootdisksize(v int64) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1199,6 +1307,10 @@ func (s *VirtualMachineService) DeployVirtualMachine(p *DeployVirtualMachinePara
 type DeployVirtualMachineResponse struct {
 	Account               string                                      `json:"account"`
 	Affinitygroup         []DeployVirtualMachineResponseAffinitygroup `json:"affinitygroup"`
+	Backupofferingid      string                                      `json:"backupofferingid"`
+	Backupofferingname    string                                      `json:"backupofferingname"`
+	Bootmode              string                                      `json:"bootmode"`
+	Boottype              string                                      `json:"boottype"`
 	Cpunumber             int                                         `json:"cpunumber"`
 	Cpuspeed              int                                         `json:"cpuspeed"`
 	Cpuused               string                                      `json:"cpuused"`
@@ -1239,6 +1351,7 @@ type DeployVirtualMachineResponse struct {
 	Networkkbsread        int64                                       `json:"networkkbsread"`
 	Networkkbswrite       int64                                       `json:"networkkbswrite"`
 	Nic                   []Nic                                       `json:"nic"`
+	Osdisplayname         string                                      `json:"osdisplayname"`
 	Ostypeid              string                                      `json:"ostypeid"`
 	Password              string                                      `json:"password"`
 	Passwordenabled       bool                                        `json:"passwordenabled"`
@@ -1246,6 +1359,7 @@ type DeployVirtualMachineResponse struct {
 	Projectid             string                                      `json:"projectid"`
 	Publicip              string                                      `json:"publicip"`
 	Publicipid            string                                      `json:"publicipid"`
+	Readonlyuidetails     string                                      `json:"readonlyuidetails"`
 	Rootdeviceid          int64                                       `json:"rootdeviceid"`
 	Rootdevicetype        string                                      `json:"rootdevicetype"`
 	Securitygroup         []DeployVirtualMachineResponseSecuritygroup `json:"securitygroup"`
@@ -1386,7 +1500,7 @@ func (s *VirtualMachineService) NewDestroyVirtualMachineParams(id string) *Destr
 	return p
 }
 
-// Destroys a virtual machine.
+// Destroys a virtual machine. Once destroyed, only the administrator can recover it.
 func (s *VirtualMachineService) DestroyVirtualMachine(p *DestroyVirtualMachineParams) (*DestroyVirtualMachineResponse, error) {
 	resp, err := s.cs.newRequest("destroyVirtualMachine", p.toURLValues())
 	if err != nil {
@@ -1424,6 +1538,10 @@ func (s *VirtualMachineService) DestroyVirtualMachine(p *DestroyVirtualMachinePa
 type DestroyVirtualMachineResponse struct {
 	Account               string                                       `json:"account"`
 	Affinitygroup         []DestroyVirtualMachineResponseAffinitygroup `json:"affinitygroup"`
+	Backupofferingid      string                                       `json:"backupofferingid"`
+	Backupofferingname    string                                       `json:"backupofferingname"`
+	Bootmode              string                                       `json:"bootmode"`
+	Boottype              string                                       `json:"boottype"`
 	Cpunumber             int                                          `json:"cpunumber"`
 	Cpuspeed              int                                          `json:"cpuspeed"`
 	Cpuused               string                                       `json:"cpuused"`
@@ -1464,6 +1582,7 @@ type DestroyVirtualMachineResponse struct {
 	Networkkbsread        int64                                        `json:"networkkbsread"`
 	Networkkbswrite       int64                                        `json:"networkkbswrite"`
 	Nic                   []Nic                                        `json:"nic"`
+	Osdisplayname         string                                       `json:"osdisplayname"`
 	Ostypeid              string                                       `json:"ostypeid"`
 	Password              string                                       `json:"password"`
 	Passwordenabled       bool                                         `json:"passwordenabled"`
@@ -1471,6 +1590,7 @@ type DestroyVirtualMachineResponse struct {
 	Projectid             string                                       `json:"projectid"`
 	Publicip              string                                       `json:"publicip"`
 	Publicipid            string                                       `json:"publicipid"`
+	Readonlyuidetails     string                                       `json:"readonlyuidetails"`
 	Rootdeviceid          int64                                        `json:"rootdeviceid"`
 	Rootdevicetype        string                                       `json:"rootdevicetype"`
 	Securitygroup         []DestroyVirtualMachineResponseSecuritygroup `json:"securitygroup"`
@@ -1711,6 +1831,13 @@ func (p *ListVirtualMachinesParams) toURLValues() url.Values {
 	if v, found := p.p["groupid"]; found {
 		u.Set("groupid", v.(string))
 	}
+	if v, found := p.p["haenable"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("haenable", vv)
+	}
+	if v, found := p.p["hostid"]; found {
+		u.Set("hostid", v.(string))
+	}
 	if v, found := p.p["hostid"]; found {
 		u.Set("hostid", v.(string))
 	}
@@ -1758,9 +1885,15 @@ func (p *ListVirtualMachinesParams) toURLValues() url.Values {
 	if v, found := p.p["podid"]; found {
 		u.Set("podid", v.(string))
 	}
+	if v, found := p.p["podid"]; found {
+		u.Set("podid", v.(string))
+	}
 	if v, found := p.p["projectid"]; found {
 		u.Set("projectid", v.(string))
 	}
+	if v, found := p.p["securitygroupid"]; found {
+		u.Set("securitygroupid", v.(string))
+	}
 	if v, found := p.p["serviceofferingid"]; found {
 		u.Set("serviceofferingid", v.(string))
 	}
@@ -1770,6 +1903,9 @@ func (p *ListVirtualMachinesParams) toURLValues() url.Values {
 	if v, found := p.p["storageid"]; found {
 		u.Set("storageid", v.(string))
 	}
+	if v, found := p.p["storageid"]; found {
+		u.Set("storageid", v.(string))
+	}
 	if v, found := p.p["tags"]; found {
 		m := v.(map[string]string)
 		for i, k := range getSortedKeysFromMap(m) {
@@ -1841,6 +1977,13 @@ func (p *ListVirtualMachinesParams) SetGroupid(v string) {
 	p.p["groupid"] = v
 }
 
+func (p *ListVirtualMachinesParams) SetHaenable(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["haenable"] = v
+}
+
 func (p *ListVirtualMachinesParams) SetHostid(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1946,6 +2089,13 @@ func (p *ListVirtualMachinesParams) SetProjectid(v string) {
 	p.p["projectid"] = v
 }
 
+func (p *ListVirtualMachinesParams) SetSecuritygroupid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["securitygroupid"] = v
+}
+
 func (p *ListVirtualMachinesParams) SetServiceofferingid(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -2116,6 +2266,10 @@ type ListVirtualMachinesResponse struct {
 type VirtualMachine struct {
 	Account               string                        `json:"account"`
 	Affinitygroup         []VirtualMachineAffinitygroup `json:"affinitygroup"`
+	Backupofferingid      string                        `json:"backupofferingid"`
+	Backupofferingname    string                        `json:"backupofferingname"`
+	Bootmode              string                        `json:"bootmode"`
+	Boottype              string                        `json:"boottype"`
 	Cpunumber             int                           `json:"cpunumber"`
 	Cpuspeed              int                           `json:"cpuspeed"`
 	Cpuused               string                        `json:"cpuused"`
@@ -2156,6 +2310,7 @@ type VirtualMachine struct {
 	Networkkbsread        int64                         `json:"networkkbsread"`
 	Networkkbswrite       int64                         `json:"networkkbswrite"`
 	Nic                   []Nic                         `json:"nic"`
+	Osdisplayname         string                        `json:"osdisplayname"`
 	Ostypeid              string                        `json:"ostypeid"`
 	Password              string                        `json:"password"`
 	Passwordenabled       bool                          `json:"passwordenabled"`
@@ -2163,6 +2318,7 @@ type VirtualMachine struct {
 	Projectid             string                        `json:"projectid"`
 	Publicip              string                        `json:"publicip"`
 	Publicipid            string                        `json:"publicipid"`
+	Readonlyuidetails     string                        `json:"readonlyuidetails"`
 	Rootdeviceid          int64                         `json:"rootdeviceid"`
 	Rootdevicetype        string                        `json:"rootdevicetype"`
 	Securitygroup         []VirtualMachineSecuritygroup `json:"securitygroup"`
@@ -2283,8 +2439,9 @@ func (p *ListVirtualMachinesMetricsParams) toURLValues() url.Values {
 	if v, found := p.p["groupid"]; found {
 		u.Set("groupid", v.(string))
 	}
-	if v, found := p.p["hostid"]; found {
-		u.Set("hostid", v.(string))
+	if v, found := p.p["haenable"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("haenable", vv)
 	}
 	if v, found := p.p["hostid"]; found {
 		u.Set("hostid", v.(string))
@@ -2333,12 +2490,12 @@ func (p *ListVirtualMachinesMetricsParams) toURLValues() url.Values {
 	if v, found := p.p["podid"]; found {
 		u.Set("podid", v.(string))
 	}
-	if v, found := p.p["podid"]; found {
-		u.Set("podid", v.(string))
-	}
 	if v, found := p.p["projectid"]; found {
 		u.Set("projectid", v.(string))
 	}
+	if v, found := p.p["securitygroupid"]; found {
+		u.Set("securitygroupid", v.(string))
+	}
 	if v, found := p.p["serviceofferingid"]; found {
 		u.Set("serviceofferingid", v.(string))
 	}
@@ -2348,9 +2505,6 @@ func (p *ListVirtualMachinesMetricsParams) toURLValues() url.Values {
 	if v, found := p.p["storageid"]; found {
 		u.Set("storageid", v.(string))
 	}
-	if v, found := p.p["storageid"]; found {
-		u.Set("storageid", v.(string))
-	}
 	if v, found := p.p["tags"]; found {
 		m := v.(map[string]string)
 		for i, k := range getSortedKeysFromMap(m) {
@@ -2422,6 +2576,13 @@ func (p *ListVirtualMachinesMetricsParams) SetGroupid(v string) {
 	p.p["groupid"] = v
 }
 
+func (p *ListVirtualMachinesMetricsParams) SetHaenable(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["haenable"] = v
+}
+
 func (p *ListVirtualMachinesMetricsParams) SetHostid(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -2527,6 +2688,13 @@ func (p *ListVirtualMachinesMetricsParams) SetProjectid(v string) {
 	p.p["projectid"] = v
 }
 
+func (p *ListVirtualMachinesMetricsParams) SetSecuritygroupid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["securitygroupid"] = v
+}
+
 func (p *ListVirtualMachinesMetricsParams) SetServiceofferingid(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -2697,6 +2865,10 @@ type ListVirtualMachinesMetricsResponse struct {
 type VirtualMachinesMetric struct {
 	Account               string                               `json:"account"`
 	Affinitygroup         []VirtualMachinesMetricAffinitygroup `json:"affinitygroup"`
+	Backupofferingid      string                               `json:"backupofferingid"`
+	Backupofferingname    string                               `json:"backupofferingname"`
+	Bootmode              string                               `json:"bootmode"`
+	Boottype              string                               `json:"boottype"`
 	Cpunumber             int                                  `json:"cpunumber"`
 	Cpuspeed              int                                  `json:"cpuspeed"`
 	Cputotal              string                               `json:"cputotal"`
@@ -2745,6 +2917,7 @@ type VirtualMachinesMetric struct {
 	Networkread           string                               `json:"networkread"`
 	Networkwrite          string                               `json:"networkwrite"`
 	Nic                   []Nic                                `json:"nic"`
+	Osdisplayname         string                               `json:"osdisplayname"`
 	Ostypeid              string                               `json:"ostypeid"`
 	Password              string                               `json:"password"`
 	Passwordenabled       bool                                 `json:"passwordenabled"`
@@ -2752,6 +2925,7 @@ type VirtualMachinesMetric struct {
 	Projectid             string                               `json:"projectid"`
 	Publicip              string                               `json:"publicip"`
 	Publicipid            string                               `json:"publicipid"`
+	Readonlyuidetails     string                               `json:"readonlyuidetails"`
 	Rootdeviceid          int64                                `json:"rootdeviceid"`
 	Rootdevicetype        string                               `json:"rootdevicetype"`
 	Securitygroup         []VirtualMachinesMetricSecuritygroup `json:"securitygroup"`
@@ -2928,6 +3102,10 @@ func (s *VirtualMachineService) MigrateVirtualMachine(p *MigrateVirtualMachinePa
 type MigrateVirtualMachineResponse struct {
 	Account               string                                       `json:"account"`
 	Affinitygroup         []MigrateVirtualMachineResponseAffinitygroup `json:"affinitygroup"`
+	Backupofferingid      string                                       `json:"backupofferingid"`
+	Backupofferingname    string                                       `json:"backupofferingname"`
+	Bootmode              string                                       `json:"bootmode"`
+	Boottype              string                                       `json:"boottype"`
 	Cpunumber             int                                          `json:"cpunumber"`
 	Cpuspeed              int                                          `json:"cpuspeed"`
 	Cpuused               string                                       `json:"cpuused"`
@@ -2968,6 +3146,7 @@ type MigrateVirtualMachineResponse struct {
 	Networkkbsread        int64                                        `json:"networkkbsread"`
 	Networkkbswrite       int64                                        `json:"networkkbswrite"`
 	Nic                   []Nic                                        `json:"nic"`
+	Osdisplayname         string                                       `json:"osdisplayname"`
 	Ostypeid              string                                       `json:"ostypeid"`
 	Password              string                                       `json:"password"`
 	Passwordenabled       bool                                         `json:"passwordenabled"`
@@ -2975,6 +3154,7 @@ type MigrateVirtualMachineResponse struct {
 	Projectid             string                                       `json:"projectid"`
 	Publicip              string                                       `json:"publicip"`
 	Publicipid            string                                       `json:"publicipid"`
+	Readonlyuidetails     string                                       `json:"readonlyuidetails"`
 	Rootdeviceid          int64                                        `json:"rootdeviceid"`
 	Rootdevicetype        string                                       `json:"rootdevicetype"`
 	Securitygroup         []MigrateVirtualMachineResponseSecuritygroup `json:"securitygroup"`
@@ -3156,6 +3336,10 @@ func (s *VirtualMachineService) MigrateVirtualMachineWithVolume(p *MigrateVirtua
 type MigrateVirtualMachineWithVolumeResponse struct {
 	Account               string                                                 `json:"account"`
 	Affinitygroup         []MigrateVirtualMachineWithVolumeResponseAffinitygroup `json:"affinitygroup"`
+	Backupofferingid      string                                                 `json:"backupofferingid"`
+	Backupofferingname    string                                                 `json:"backupofferingname"`
+	Bootmode              string                                                 `json:"bootmode"`
+	Boottype              string                                                 `json:"boottype"`
 	Cpunumber             int                                                    `json:"cpunumber"`
 	Cpuspeed              int                                                    `json:"cpuspeed"`
 	Cpuused               string                                                 `json:"cpuused"`
@@ -3196,6 +3380,7 @@ type MigrateVirtualMachineWithVolumeResponse struct {
 	Networkkbsread        int64                                                  `json:"networkkbsread"`
 	Networkkbswrite       int64                                                  `json:"networkkbswrite"`
 	Nic                   []Nic                                                  `json:"nic"`
+	Osdisplayname         string                                                 `json:"osdisplayname"`
 	Ostypeid              string                                                 `json:"ostypeid"`
 	Password              string                                                 `json:"password"`
 	Passwordenabled       bool                                                   `json:"passwordenabled"`
@@ -3203,6 +3388,7 @@ type MigrateVirtualMachineWithVolumeResponse struct {
 	Projectid             string                                                 `json:"projectid"`
 	Publicip              string                                                 `json:"publicip"`
 	Publicipid            string                                                 `json:"publicipid"`
+	Readonlyuidetails     string                                                 `json:"readonlyuidetails"`
 	Rootdeviceid          int64                                                  `json:"rootdeviceid"`
 	Rootdevicetype        string                                                 `json:"rootdevicetype"`
 	Securitygroup         []MigrateVirtualMachineWithVolumeResponseSecuritygroup `json:"securitygroup"`
@@ -3299,12 +3485,23 @@ func (p *RebootVirtualMachineParams) toURLValues() url.Values {
 	if p.p == nil {
 		return u
 	}
+	if v, found := p.p["bootintosetup"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("bootintosetup", vv)
+	}
 	if v, found := p.p["id"]; found {
 		u.Set("id", v.(string))
 	}
 	return u
 }
 
+func (p *RebootVirtualMachineParams) SetBootintosetup(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["bootintosetup"] = v
+}
+
 func (p *RebootVirtualMachineParams) SetId(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -3359,6 +3556,10 @@ func (s *VirtualMachineService) RebootVirtualMachine(p *RebootVirtualMachinePara
 type RebootVirtualMachineResponse struct {
 	Account               string                                      `json:"account"`
 	Affinitygroup         []RebootVirtualMachineResponseAffinitygroup `json:"affinitygroup"`
+	Backupofferingid      string                                      `json:"backupofferingid"`
+	Backupofferingname    string                                      `json:"backupofferingname"`
+	Bootmode              string                                      `json:"bootmode"`
+	Boottype              string                                      `json:"boottype"`
 	Cpunumber             int                                         `json:"cpunumber"`
 	Cpuspeed              int                                         `json:"cpuspeed"`
 	Cpuused               string                                      `json:"cpuused"`
@@ -3399,6 +3600,7 @@ type RebootVirtualMachineResponse struct {
 	Networkkbsread        int64                                       `json:"networkkbsread"`
 	Networkkbswrite       int64                                       `json:"networkkbswrite"`
 	Nic                   []Nic                                       `json:"nic"`
+	Osdisplayname         string                                      `json:"osdisplayname"`
 	Ostypeid              string                                      `json:"ostypeid"`
 	Password              string                                      `json:"password"`
 	Passwordenabled       bool                                        `json:"passwordenabled"`
@@ -3406,6 +3608,7 @@ type RebootVirtualMachineResponse struct {
 	Projectid             string                                      `json:"projectid"`
 	Publicip              string                                      `json:"publicip"`
 	Publicipid            string                                      `json:"publicipid"`
+	Readonlyuidetails     string                                      `json:"readonlyuidetails"`
 	Rootdeviceid          int64                                       `json:"rootdeviceid"`
 	Rootdevicetype        string                                      `json:"rootdevicetype"`
 	Securitygroup         []RebootVirtualMachineResponseSecuritygroup `json:"securitygroup"`
@@ -3542,6 +3745,10 @@ func (s *VirtualMachineService) RecoverVirtualMachine(p *RecoverVirtualMachinePa
 type RecoverVirtualMachineResponse struct {
 	Account               string                                       `json:"account"`
 	Affinitygroup         []RecoverVirtualMachineResponseAffinitygroup `json:"affinitygroup"`
+	Backupofferingid      string                                       `json:"backupofferingid"`
+	Backupofferingname    string                                       `json:"backupofferingname"`
+	Bootmode              string                                       `json:"bootmode"`
+	Boottype              string                                       `json:"boottype"`
 	Cpunumber             int                                          `json:"cpunumber"`
 	Cpuspeed              int                                          `json:"cpuspeed"`
 	Cpuused               string                                       `json:"cpuused"`
@@ -3582,6 +3789,7 @@ type RecoverVirtualMachineResponse struct {
 	Networkkbsread        int64                                        `json:"networkkbsread"`
 	Networkkbswrite       int64                                        `json:"networkkbswrite"`
 	Nic                   []Nic                                        `json:"nic"`
+	Osdisplayname         string                                       `json:"osdisplayname"`
 	Ostypeid              string                                       `json:"ostypeid"`
 	Password              string                                       `json:"password"`
 	Passwordenabled       bool                                         `json:"passwordenabled"`
@@ -3589,6 +3797,7 @@ type RecoverVirtualMachineResponse struct {
 	Projectid             string                                       `json:"projectid"`
 	Publicip              string                                       `json:"publicip"`
 	Publicipid            string                                       `json:"publicipid"`
+	Readonlyuidetails     string                                       `json:"readonlyuidetails"`
 	Rootdeviceid          int64                                        `json:"rootdeviceid"`
 	Rootdevicetype        string                                       `json:"rootdevicetype"`
 	Securitygroup         []RecoverVirtualMachineResponseSecuritygroup `json:"securitygroup"`
@@ -3756,6 +3965,10 @@ func (s *VirtualMachineService) RemoveNicFromVirtualMachine(p *RemoveNicFromVirt
 type RemoveNicFromVirtualMachineResponse struct {
 	Account               string                                             `json:"account"`
 	Affinitygroup         []RemoveNicFromVirtualMachineResponseAffinitygroup `json:"affinitygroup"`
+	Backupofferingid      string                                             `json:"backupofferingid"`
+	Backupofferingname    string                                             `json:"backupofferingname"`
+	Bootmode              string                                             `json:"bootmode"`
+	Boottype              string                                             `json:"boottype"`
 	Cpunumber             int                                                `json:"cpunumber"`
 	Cpuspeed              int                                                `json:"cpuspeed"`
 	Cpuused               string                                             `json:"cpuused"`
@@ -3796,6 +4009,7 @@ type RemoveNicFromVirtualMachineResponse struct {
 	Networkkbsread        int64                                              `json:"networkkbsread"`
 	Networkkbswrite       int64                                              `json:"networkkbswrite"`
 	Nic                   []Nic                                              `json:"nic"`
+	Osdisplayname         string                                             `json:"osdisplayname"`
 	Ostypeid              string                                             `json:"ostypeid"`
 	Password              string                                             `json:"password"`
 	Passwordenabled       bool                                               `json:"passwordenabled"`
@@ -3803,6 +4017,7 @@ type RemoveNicFromVirtualMachineResponse struct {
 	Projectid             string                                             `json:"projectid"`
 	Publicip              string                                             `json:"publicip"`
 	Publicipid            string                                             `json:"publicipid"`
+	Readonlyuidetails     string                                             `json:"readonlyuidetails"`
 	Rootdeviceid          int64                                              `json:"rootdeviceid"`
 	Rootdevicetype        string                                             `json:"rootdevicetype"`
 	Securitygroup         []RemoveNicFromVirtualMachineResponseSecuritygroup `json:"securitygroup"`
@@ -3959,6 +4174,10 @@ func (s *VirtualMachineService) ResetPasswordForVirtualMachine(p *ResetPasswordF
 type ResetPasswordForVirtualMachineResponse struct {
 	Account               string                                                `json:"account"`
 	Affinitygroup         []ResetPasswordForVirtualMachineResponseAffinitygroup `json:"affinitygroup"`
+	Backupofferingid      string                                                `json:"backupofferingid"`
+	Backupofferingname    string                                                `json:"backupofferingname"`
+	Bootmode              string                                                `json:"bootmode"`
+	Boottype              string                                                `json:"boottype"`
 	Cpunumber             int                                                   `json:"cpunumber"`
 	Cpuspeed              int                                                   `json:"cpuspeed"`
 	Cpuused               string                                                `json:"cpuused"`
@@ -3999,6 +4218,7 @@ type ResetPasswordForVirtualMachineResponse struct {
 	Networkkbsread        int64                                                 `json:"networkkbsread"`
 	Networkkbswrite       int64                                                 `json:"networkkbswrite"`
 	Nic                   []Nic                                                 `json:"nic"`
+	Osdisplayname         string                                                `json:"osdisplayname"`
 	Ostypeid              string                                                `json:"ostypeid"`
 	Password              string                                                `json:"password"`
 	Passwordenabled       bool                                                  `json:"passwordenabled"`
@@ -4006,6 +4226,7 @@ type ResetPasswordForVirtualMachineResponse struct {
 	Projectid             string                                                `json:"projectid"`
 	Publicip              string                                                `json:"publicip"`
 	Publicipid            string                                                `json:"publicipid"`
+	Readonlyuidetails     string                                                `json:"readonlyuidetails"`
 	Rootdeviceid          int64                                                 `json:"rootdeviceid"`
 	Rootdevicetype        string                                                `json:"rootdevicetype"`
 	Securitygroup         []ResetPasswordForVirtualMachineResponseSecuritygroup `json:"securitygroup"`
@@ -4172,6 +4393,10 @@ func (s *VirtualMachineService) RestoreVirtualMachine(p *RestoreVirtualMachinePa
 type RestoreVirtualMachineResponse struct {
 	Account               string                                       `json:"account"`
 	Affinitygroup         []RestoreVirtualMachineResponseAffinitygroup `json:"affinitygroup"`
+	Backupofferingid      string                                       `json:"backupofferingid"`
+	Backupofferingname    string                                       `json:"backupofferingname"`
+	Bootmode              string                                       `json:"bootmode"`
+	Boottype              string                                       `json:"boottype"`
 	Cpunumber             int                                          `json:"cpunumber"`
 	Cpuspeed              int                                          `json:"cpuspeed"`
 	Cpuused               string                                       `json:"cpuused"`
@@ -4212,6 +4437,7 @@ type RestoreVirtualMachineResponse struct {
 	Networkkbsread        int64                                        `json:"networkkbsread"`
 	Networkkbswrite       int64                                        `json:"networkkbswrite"`
 	Nic                   []Nic                                        `json:"nic"`
+	Osdisplayname         string                                       `json:"osdisplayname"`
 	Ostypeid              string                                       `json:"ostypeid"`
 	Password              string                                       `json:"password"`
 	Passwordenabled       bool                                         `json:"passwordenabled"`
@@ -4219,6 +4445,7 @@ type RestoreVirtualMachineResponse struct {
 	Projectid             string                                       `json:"projectid"`
 	Publicip              string                                       `json:"publicip"`
 	Publicipid            string                                       `json:"publicipid"`
+	Readonlyuidetails     string                                       `json:"readonlyuidetails"`
 	Rootdeviceid          int64                                        `json:"rootdeviceid"`
 	Rootdevicetype        string                                       `json:"rootdevicetype"`
 	Securitygroup         []RestoreVirtualMachineResponseSecuritygroup `json:"securitygroup"`
@@ -4407,6 +4634,13 @@ func (p *StartVirtualMachineParams) toURLValues() url.Values {
 	if p.p == nil {
 		return u
 	}
+	if v, found := p.p["bootintosetup"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("bootintosetup", vv)
+	}
+	if v, found := p.p["clusterid"]; found {
+		u.Set("clusterid", v.(string))
+	}
 	if v, found := p.p["deploymentplanner"]; found {
 		u.Set("deploymentplanner", v.(string))
 	}
@@ -4416,9 +4650,26 @@ func (p *StartVirtualMachineParams) toURLValues() url.Values {
 	if v, found := p.p["id"]; found {
 		u.Set("id", v.(string))
 	}
+	if v, found := p.p["podid"]; found {
+		u.Set("podid", v.(string))
+	}
 	return u
 }
 
+func (p *StartVirtualMachineParams) SetBootintosetup(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["bootintosetup"] = v
+}
+
+func (p *StartVirtualMachineParams) SetClusterid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["clusterid"] = v
+}
+
 func (p *StartVirtualMachineParams) SetDeploymentplanner(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -4440,6 +4691,13 @@ func (p *StartVirtualMachineParams) SetId(v string) {
 	p.p["id"] = v
 }
 
+func (p *StartVirtualMachineParams) SetPodid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["podid"] = v
+}
+
 // You should always use this function to get a new StartVirtualMachineParams instance,
 // as then you are sure you have configured all required params
 func (s *VirtualMachineService) NewStartVirtualMachineParams(id string) *StartVirtualMachineParams {
@@ -4487,6 +4745,10 @@ func (s *VirtualMachineService) StartVirtualMachine(p *StartVirtualMachineParams
 type StartVirtualMachineResponse struct {
 	Account               string                                     `json:"account"`
 	Affinitygroup         []StartVirtualMachineResponseAffinitygroup `json:"affinitygroup"`
+	Backupofferingid      string                                     `json:"backupofferingid"`
+	Backupofferingname    string                                     `json:"backupofferingname"`
+	Bootmode              string                                     `json:"bootmode"`
+	Boottype              string                                     `json:"boottype"`
 	Cpunumber             int                                        `json:"cpunumber"`
 	Cpuspeed              int                                        `json:"cpuspeed"`
 	Cpuused               string                                     `json:"cpuused"`
@@ -4527,6 +4789,7 @@ type StartVirtualMachineResponse struct {
 	Networkkbsread        int64                                      `json:"networkkbsread"`
 	Networkkbswrite       int64                                      `json:"networkkbswrite"`
 	Nic                   []Nic                                      `json:"nic"`
+	Osdisplayname         string                                     `json:"osdisplayname"`
 	Ostypeid              string                                     `json:"ostypeid"`
 	Password              string                                     `json:"password"`
 	Passwordenabled       bool                                       `json:"passwordenabled"`
@@ -4534,6 +4797,7 @@ type StartVirtualMachineResponse struct {
 	Projectid             string                                     `json:"projectid"`
 	Publicip              string                                     `json:"publicip"`
 	Publicipid            string                                     `json:"publicipid"`
+	Readonlyuidetails     string                                     `json:"readonlyuidetails"`
 	Rootdeviceid          int64                                      `json:"rootdeviceid"`
 	Rootdevicetype        string                                     `json:"rootdevicetype"`
 	Securitygroup         []StartVirtualMachineResponseSecuritygroup `json:"securitygroup"`
@@ -4701,6 +4965,10 @@ func (s *VirtualMachineService) StopVirtualMachine(p *StopVirtualMachineParams)
 type StopVirtualMachineResponse struct {
 	Account               string                                    `json:"account"`
 	Affinitygroup         []StopVirtualMachineResponseAffinitygroup `json:"affinitygroup"`
+	Backupofferingid      string                                    `json:"backupofferingid"`
+	Backupofferingname    string                                    `json:"backupofferingname"`
+	Bootmode              string                                    `json:"bootmode"`
+	Boottype              string                                    `json:"boottype"`
 	Cpunumber             int                                       `json:"cpunumber"`
 	Cpuspeed              int                                       `json:"cpuspeed"`
 	Cpuused               string                                    `json:"cpuused"`
@@ -4741,6 +5009,7 @@ type StopVirtualMachineResponse struct {
 	Networkkbsread        int64                                     `json:"networkkbsread"`
 	Networkkbswrite       int64                                     `json:"networkkbswrite"`
 	Nic                   []Nic                                     `json:"nic"`
+	Osdisplayname         string                                    `json:"osdisplayname"`
 	Ostypeid              string                                    `json:"ostypeid"`
 	Password              string                                    `json:"password"`
 	Passwordenabled       bool                                      `json:"passwordenabled"`
@@ -4748,6 +5017,7 @@ type StopVirtualMachineResponse struct {
 	Projectid             string                                    `json:"projectid"`
 	Publicip              string                                    `json:"publicip"`
 	Publicipid            string                                    `json:"publicipid"`
+	Readonlyuidetails     string                                    `json:"readonlyuidetails"`
 	Rootdeviceid          int64                                     `json:"rootdeviceid"`
 	Rootdevicetype        string                                    `json:"rootdevicetype"`
 	Securitygroup         []StopVirtualMachineResponseSecuritygroup `json:"securitygroup"`
@@ -4915,6 +5185,10 @@ func (s *VirtualMachineService) UpdateDefaultNicForVirtualMachine(p *UpdateDefau
 type UpdateDefaultNicForVirtualMachineResponse struct {
 	Account               string                                                   `json:"account"`
 	Affinitygroup         []UpdateDefaultNicForVirtualMachineResponseAffinitygroup `json:"affinitygroup"`
+	Backupofferingid      string                                                   `json:"backupofferingid"`
+	Backupofferingname    string                                                   `json:"backupofferingname"`
+	Bootmode              string                                                   `json:"bootmode"`
+	Boottype              string                                                   `json:"boottype"`
 	Cpunumber             int                                                      `json:"cpunumber"`
 	Cpuspeed              int                                                      `json:"cpuspeed"`
 	Cpuused               string                                                   `json:"cpuused"`
@@ -4955,6 +5229,7 @@ type UpdateDefaultNicForVirtualMachineResponse struct {
 	Networkkbsread        int64                                                    `json:"networkkbsread"`
 	Networkkbswrite       int64                                                    `json:"networkkbswrite"`
 	Nic                   []Nic                                                    `json:"nic"`
+	Osdisplayname         string                                                   `json:"osdisplayname"`
 	Ostypeid              string                                                   `json:"ostypeid"`
 	Password              string                                                   `json:"password"`
 	Passwordenabled       bool                                                     `json:"passwordenabled"`
@@ -4962,6 +5237,7 @@ type UpdateDefaultNicForVirtualMachineResponse struct {
 	Projectid             string                                                   `json:"projectid"`
 	Publicip              string                                                   `json:"publicip"`
 	Publicipid            string                                                   `json:"publicipid"`
+	Readonlyuidetails     string                                                   `json:"readonlyuidetails"`
 	Rootdeviceid          int64                                                    `json:"rootdeviceid"`
 	Rootdevicetype        string                                                   `json:"rootdevicetype"`
 	Securitygroup         []UpdateDefaultNicForVirtualMachineResponseSecuritygroup `json:"securitygroup"`
@@ -5271,6 +5547,10 @@ func (s *VirtualMachineService) UpdateVirtualMachine(p *UpdateVirtualMachinePara
 type UpdateVirtualMachineResponse struct {
 	Account               string                                      `json:"account"`
 	Affinitygroup         []UpdateVirtualMachineResponseAffinitygroup `json:"affinitygroup"`
+	Backupofferingid      string                                      `json:"backupofferingid"`
+	Backupofferingname    string                                      `json:"backupofferingname"`
+	Bootmode              string                                      `json:"bootmode"`
+	Boottype              string                                      `json:"boottype"`
 	Cpunumber             int                                         `json:"cpunumber"`
 	Cpuspeed              int                                         `json:"cpuspeed"`
 	Cpuused               string                                      `json:"cpuused"`
@@ -5311,6 +5591,7 @@ type UpdateVirtualMachineResponse struct {
 	Networkkbsread        int64                                       `json:"networkkbsread"`
 	Networkkbswrite       int64                                       `json:"networkkbswrite"`
 	Nic                   []Nic                                       `json:"nic"`
+	Osdisplayname         string                                      `json:"osdisplayname"`
 	Ostypeid              string                                      `json:"ostypeid"`
 	Password              string                                      `json:"password"`
 	Passwordenabled       bool                                        `json:"passwordenabled"`
@@ -5318,6 +5599,7 @@ type UpdateVirtualMachineResponse struct {
 	Projectid             string                                      `json:"projectid"`
 	Publicip              string                                      `json:"publicip"`
 	Publicipid            string                                      `json:"publicipid"`
+	Readonlyuidetails     string                                      `json:"readonlyuidetails"`
 	Rootdeviceid          int64                                       `json:"rootdeviceid"`
 	Rootdevicetype        string                                      `json:"rootdevicetype"`
 	Securitygroup         []UpdateVirtualMachineResponseSecuritygroup `json:"securitygroup"`
diff --git a/cloudstack/VolumeService.go b/cloudstack/VolumeService.go
index 435dfd1..9298078 100644
--- a/cloudstack/VolumeService.go
+++ b/cloudstack/VolumeService.go
@@ -128,6 +128,10 @@ type AttachVolumeResponse struct {
 	DiskBytesWriteRate         int64  `json:"diskBytesWriteRate"`
 	DiskIopsReadRate           int64  `json:"diskIopsReadRate"`
 	DiskIopsWriteRate          int64  `json:"diskIopsWriteRate"`
+	Diskioread                 int64  `json:"diskioread"`
+	Diskiowrite                int64  `json:"diskiowrite"`
+	Diskkbsread                int64  `json:"diskkbsread"`
+	Diskkbswrite               int64  `json:"diskkbswrite"`
 	Diskofferingdisplaytext    string `json:"diskofferingdisplaytext"`
 	Diskofferingid             string `json:"diskofferingid"`
 	Diskofferingname           string `json:"diskofferingname"`
@@ -380,6 +384,10 @@ type CreateVolumeResponse struct {
 	DiskBytesWriteRate         int64  `json:"diskBytesWriteRate"`
 	DiskIopsReadRate           int64  `json:"diskIopsReadRate"`
 	DiskIopsWriteRate          int64  `json:"diskIopsWriteRate"`
+	Diskioread                 int64  `json:"diskioread"`
+	Diskiowrite                int64  `json:"diskiowrite"`
+	Diskkbsread                int64  `json:"diskkbsread"`
+	Diskkbswrite               int64  `json:"diskkbswrite"`
 	Diskofferingdisplaytext    string `json:"diskofferingdisplaytext"`
 	Diskofferingid             string `json:"diskofferingid"`
 	Diskofferingname           string `json:"diskofferingname"`
@@ -609,6 +617,10 @@ type DetachVolumeResponse struct {
 	DiskBytesWriteRate         int64  `json:"diskBytesWriteRate"`
 	DiskIopsReadRate           int64  `json:"diskIopsReadRate"`
 	DiskIopsWriteRate          int64  `json:"diskIopsWriteRate"`
+	Diskioread                 int64  `json:"diskioread"`
+	Diskiowrite                int64  `json:"diskiowrite"`
+	Diskkbsread                int64  `json:"diskkbsread"`
+	Diskkbswrite               int64  `json:"diskkbswrite"`
 	Diskofferingdisplaytext    string `json:"diskofferingdisplaytext"`
 	Diskofferingid             string `json:"diskofferingid"`
 	Diskofferingname           string `json:"diskofferingname"`
@@ -1133,6 +1145,9 @@ func (p *ListVolumesParams) toURLValues() url.Values {
 	if v, found := p.p["projectid"]; found {
 		u.Set("projectid", v.(string))
 	}
+	if v, found := p.p["state"]; found {
+		u.Set("state", v.(string))
+	}
 	if v, found := p.p["storageid"]; found {
 		u.Set("storageid", v.(string))
 	}
@@ -1267,6 +1282,13 @@ func (p *ListVolumesParams) SetProjectid(v string) {
 	p.p["projectid"] = v
 }
 
+func (p *ListVolumesParams) SetState(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["state"] = v
+}
+
 func (p *ListVolumesParams) SetStorageid(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1426,6 +1448,10 @@ type Volume struct {
 	DiskBytesWriteRate         int64  `json:"diskBytesWriteRate"`
 	DiskIopsReadRate           int64  `json:"diskIopsReadRate"`
 	DiskIopsWriteRate          int64  `json:"diskIopsWriteRate"`
+	Diskioread                 int64  `json:"diskioread"`
+	Diskiowrite                int64  `json:"diskiowrite"`
+	Diskkbsread                int64  `json:"diskkbsread"`
+	Diskkbswrite               int64  `json:"diskkbswrite"`
 	Diskofferingdisplaytext    string `json:"diskofferingdisplaytext"`
 	Diskofferingid             string `json:"diskofferingid"`
 	Diskofferingname           string `json:"diskofferingname"`
@@ -1587,6 +1613,10 @@ type MigrateVolumeResponse struct {
 	DiskBytesWriteRate         int64  `json:"diskBytesWriteRate"`
 	DiskIopsReadRate           int64  `json:"diskIopsReadRate"`
 	DiskIopsWriteRate          int64  `json:"diskIopsWriteRate"`
+	Diskioread                 int64  `json:"diskioread"`
+	Diskiowrite                int64  `json:"diskiowrite"`
+	Diskkbsread                int64  `json:"diskkbsread"`
+	Diskkbswrite               int64  `json:"diskkbswrite"`
 	Diskofferingdisplaytext    string `json:"diskofferingdisplaytext"`
 	Diskofferingid             string `json:"diskofferingid"`
 	Diskofferingname           string `json:"diskofferingname"`
@@ -1770,6 +1800,10 @@ type ResizeVolumeResponse struct {
 	DiskBytesWriteRate         int64  `json:"diskBytesWriteRate"`
 	DiskIopsReadRate           int64  `json:"diskIopsReadRate"`
 	DiskIopsWriteRate          int64  `json:"diskIopsWriteRate"`
+	Diskioread                 int64  `json:"diskioread"`
+	Diskiowrite                int64  `json:"diskiowrite"`
+	Diskkbsread                int64  `json:"diskkbsread"`
+	Diskkbswrite               int64  `json:"diskkbswrite"`
 	Diskofferingdisplaytext    string `json:"diskofferingdisplaytext"`
 	Diskofferingid             string `json:"diskofferingid"`
 	Diskofferingname           string `json:"diskofferingname"`
@@ -1959,6 +1993,10 @@ type UpdateVolumeResponse struct {
 	DiskBytesWriteRate         int64  `json:"diskBytesWriteRate"`
 	DiskIopsReadRate           int64  `json:"diskIopsReadRate"`
 	DiskIopsWriteRate          int64  `json:"diskIopsWriteRate"`
+	Diskioread                 int64  `json:"diskioread"`
+	Diskiowrite                int64  `json:"diskiowrite"`
+	Diskkbsread                int64  `json:"diskkbsread"`
+	Diskkbswrite               int64  `json:"diskkbswrite"`
 	Diskofferingdisplaytext    string `json:"diskofferingdisplaytext"`
 	Diskofferingid             string `json:"diskofferingid"`
 	Diskofferingname           string `json:"diskofferingname"`
@@ -2181,6 +2219,10 @@ type UploadVolumeResponse struct {
 	DiskBytesWriteRate         int64  `json:"diskBytesWriteRate"`
 	DiskIopsReadRate           int64  `json:"diskIopsReadRate"`
 	DiskIopsWriteRate          int64  `json:"diskIopsWriteRate"`
+	Diskioread                 int64  `json:"diskioread"`
+	Diskiowrite                int64  `json:"diskiowrite"`
+	Diskkbsread                int64  `json:"diskkbsread"`
+	Diskkbswrite               int64  `json:"diskkbswrite"`
 	Diskofferingdisplaytext    string `json:"diskofferingdisplaytext"`
 	Diskofferingid             string `json:"diskofferingid"`
 	Diskofferingname           string `json:"diskofferingname"`
diff --git a/cloudstack/ZoneService.go b/cloudstack/ZoneService.go
index a121544..d0b2d59 100644
--- a/cloudstack/ZoneService.go
+++ b/cloudstack/ZoneService.go
@@ -1122,6 +1122,10 @@ func (p *UpdateZoneParams) toURLValues() url.Values {
 	if v, found := p.p["name"]; found {
 		u.Set("name", v.(string))
 	}
+	if v, found := p.p["sortkey"]; found {
+		vv := strconv.Itoa(v.(int))
+		u.Set("sortkey", vv)
+	}
 	return u
 }
 
@@ -1237,6 +1241,13 @@ func (p *UpdateZoneParams) SetName(v string) {
 	p.p["name"] = v
 }
 
+func (p *UpdateZoneParams) SetSortkey(v int) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["sortkey"] = v
+}
+
 // You should always use this function to get a new UpdateZoneParams instance,
 // as then you are sure you have configured all required params
 func (s *ZoneService) NewUpdateZoneParams(id string) *UpdateZoneParams {
diff --git a/cloudstack/cloudstack.go b/cloudstack/cloudstack.go
index 6b98415..5b6b0ed 100644
--- a/cloudstack/cloudstack.go
+++ b/cloudstack/cloudstack.go
@@ -112,7 +112,6 @@ type CloudStackClient struct {
 	Network             *NetworkService
 	Nic                 *NicService
 	NiciraNVP           *NiciraNVPService
-	NuageVSP            *NuageVSPService
 	OutofbandManagement *OutofbandManagementService
 	OvsElement          *OvsElementService
 	Pod                 *PodService
@@ -216,7 +215,6 @@ func newClient(apiurl string, apikey string, secret string, async bool, verifyss
 	cs.Network = NewNetworkService(cs)
 	cs.Nic = NewNicService(cs)
 	cs.NiciraNVP = NewNiciraNVPService(cs)
-	cs.NuageVSP = NewNuageVSPService(cs)
 	cs.OutofbandManagement = NewOutofbandManagementService(cs)
 	cs.OvsElement = NewOvsElementService(cs)
 	cs.Pod = NewPodService(cs)
@@ -853,14 +851,6 @@ func NewNiciraNVPService(cs *CloudStackClient) *NiciraNVPService {
 	return &NiciraNVPService{cs: cs}
 }
 
-type NuageVSPService struct {
-	cs *CloudStackClient
-}
-
-func NewNuageVSPService(cs *CloudStackClient) *NuageVSPService {
-	return &NuageVSPService{cs: cs}
-}
-
 type OutofbandManagementService struct {
 	cs *CloudStackClient
 }