Browse Source

Update emr go api.

sdk-team 6 years ago
parent
commit
483f37ef16
100 changed files with 6628 additions and 86 deletions
  1. 3 0
      ChangeLog.txt
  2. 107 0
      services/emr/add_cluster_service_for_admin.go
  3. 131 0
      services/emr/add_hp_host.go
  4. 109 0
      services/emr/add_resource_to_users.go
  5. 109 0
      services/emr/add_user_resource_role.go
  6. 53 5
      services/emr/client.go
  7. 1 0
      services/emr/clone_data_source.go
  8. 1 0
      services/emr/clone_etl_job.go
  9. 1 1
      services/emr/create_alert_contact.go
  10. 1 1
      services/emr/create_alert_ding_ding_group.go
  11. 1 1
      services/emr/create_alert_user_group.go
  12. 121 0
      services/emr/create_backup.go
  13. 112 0
      services/emr/create_backup_plan.go
  14. 114 0
      services/emr/create_backup_rule.go
  15. 117 0
      services/emr/create_batch_users.go
  16. 3 0
      services/emr/create_cluster_template.go
  17. 2 0
      services/emr/create_cluster_v2.go
  18. 156 0
      services/emr/create_cluster_with_host_pool.go
  19. 1 0
      services/emr/create_cluster_with_template.go
  20. 1 0
      services/emr/create_etl_job.go
  21. 116 0
      services/emr/create_host_pool.go
  22. 31 12
      services/emr/create_scaling_task_group.go
  23. 120 0
      services/emr/create_user.go
  24. 109 0
      services/emr/create_user_group.go
  25. 1 1
      services/emr/create_verification_code.go
  26. 108 0
      services/emr/delete_batch_resource_users.go
  27. 104 0
      services/emr/delete_host_pool.go
  28. 108 0
      services/emr/delete_resource_user.go
  29. 106 0
      services/emr/delete_user_group.go
  30. 109 0
      services/emr/delete_user_resource_role.go
  31. 108 0
      services/emr/describe_cluster_resource_pool_scheduler_type_for_admin.go
  32. 2 2
      services/emr/describe_cluster_service_config.go
  33. 111 0
      services/emr/describe_cluster_service_config_for_admin.go
  34. 2 2
      services/emr/describe_cluster_service_config_history.go
  35. 2 2
      services/emr/describe_cluster_service_config_tag.go
  36. 108 0
      services/emr/describe_cluster_service_config_tag_for_admin.go
  37. 2 2
      services/emr/describe_data_source.go
  38. 2 2
      services/emr/describe_data_source_command.go
  39. 2 2
      services/emr/describe_etl_job_instance.go
  40. 2 2
      services/emr/describe_execution_plan.go
  41. 4 4
      services/emr/describe_flow.go
  42. 2 2
      services/emr/describe_flow_category.go
  43. 6 6
      services/emr/describe_flow_instance.go
  44. 3 3
      services/emr/describe_flow_job.go
  45. 5 5
      services/emr/describe_flow_node_instance.go
  46. 2 2
      services/emr/describe_flow_project.go
  47. 2 2
      services/emr/describe_flow_project_cluster_setting.go
  48. 112 0
      services/emr/describe_host_pool.go
  49. 118 0
      services/emr/describe_hp_host.go
  50. 119 0
      services/emr/describe_kafka_broker.go
  51. 112 0
      services/emr/describe_kafka_reassign.go
  52. 2 2
      services/emr/describe_scaling_activity.go
  53. 116 0
      services/emr/describe_user.go
  54. 110 0
      services/emr/describe_user_group.go
  55. 1 1
      services/emr/describe_user_statistics.go
  56. 106 0
      services/emr/describe_workspace_repo_setting.go
  57. 105 0
      services/emr/describe_workspace_resource_setting.go
  58. 27 0
      services/emr/endpoint.go
  59. 116 0
      services/emr/get_audit_logs.go
  60. 112 0
      services/emr/get_back_info.go
  61. 109 0
      services/emr/get_back_plan_info.go
  62. 113 0
      services/emr/get_backup_info.go
  63. 110 0
      services/emr/get_backup_rule_info.go
  64. 120 0
      services/emr/get_flow_audit_logs.go
  65. 1 1
      services/emr/get_log_histogram.go
  66. 104 0
      services/emr/get_metadata_type_list.go
  67. 1 1
      services/emr/get_ops_command_detail.go
  68. 1 1
      services/emr/get_ops_command_result.go
  69. 123 0
      services/emr/list_apm_application.go
  70. 118 0
      services/emr/list_backup_plans.go
  71. 118 0
      services/emr/list_backup_rules.go
  72. 122 0
      services/emr/list_backups.go
  73. 5 5
      services/emr/list_cluster_host_component.go
  74. 117 0
      services/emr/list_cluster_host_component_for_admin.go
  75. 107 0
      services/emr/list_cluster_installed_service.go
  76. 5 5
      services/emr/list_cluster_service_config_history.go
  77. 113 0
      services/emr/list_cluster_service_config_history_for_admin.go
  78. 2 2
      services/emr/list_cluster_service_custom_action_support_config.go
  79. 108 0
      services/emr/list_cluster_service_custom_action_support_config_for_admin.go
  80. 107 0
      services/emr/list_cluster_support_service.go
  81. 2 2
      services/emr/list_cluster_tag.go
  82. 106 0
      services/emr/list_cluster_tag_for_admin.go
  83. 1 0
      services/emr/list_clusters.go
  84. 113 0
      services/emr/list_etl_job_release.go
  85. 1 1
      services/emr/list_execute_plan_migrate_info.go
  86. 4 0
      services/emr/list_flow_job_history.go
  87. 109 0
      services/emr/list_host_pool.go
  88. 112 0
      services/emr/list_hp_host.go
  89. 1 1
      services/emr/list_job_migrate_info.go
  90. 110 0
      services/emr/list_kafka_broker.go
  91. 111 0
      services/emr/list_kafka_reassign.go
  92. 110 0
      services/emr/list_kafka_reassign_topic.go
  93. 114 0
      services/emr/list_kafka_topic_statistics.go
  94. 3 0
      services/emr/list_nav_sub_tree.go
  95. 5 5
      services/emr/list_resource_pool.go
  96. 112 0
      services/emr/list_resource_pool_for_admin.go
  97. 106 0
      services/emr/list_roles.go
  98. 111 0
      services/emr/list_stack.go
  99. 108 0
      services/emr/list_stack_service.go
  100. 108 0
      services/emr/list_streaming_sql_query.go

+ 3 - 0
ChangeLog.txt

@@ -1,3 +1,6 @@
+2019-08-28 Version: 1.60.123
+- Update emr go api.
+
 2019-08-28 Version: 1.60.122
 2019-08-28 Version: 1.60.122
 - Add DBS API UpgradeBackupPlan.
 - Add DBS API UpgradeBackupPlan.
 - Add DBS API DescribePreCheckProgressList.
 - Add DBS API DescribePreCheckProgressList.

+ 107 - 0
services/emr/add_cluster_service_for_admin.go

@@ -0,0 +1,107 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// AddClusterServiceForAdmin invokes the emr.AddClusterServiceForAdmin API synchronously
+// api document: https://help.aliyun.com/api/emr/addclusterserviceforadmin.html
+func (client *Client) AddClusterServiceForAdmin(request *AddClusterServiceForAdminRequest) (response *AddClusterServiceForAdminResponse, err error) {
+	response = CreateAddClusterServiceForAdminResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddClusterServiceForAdminWithChan invokes the emr.AddClusterServiceForAdmin API asynchronously
+// api document: https://help.aliyun.com/api/emr/addclusterserviceforadmin.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddClusterServiceForAdminWithChan(request *AddClusterServiceForAdminRequest) (<-chan *AddClusterServiceForAdminResponse, <-chan error) {
+	responseChan := make(chan *AddClusterServiceForAdminResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddClusterServiceForAdmin(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddClusterServiceForAdminWithCallback invokes the emr.AddClusterServiceForAdmin API asynchronously
+// api document: https://help.aliyun.com/api/emr/addclusterserviceforadmin.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddClusterServiceForAdminWithCallback(request *AddClusterServiceForAdminRequest, callback func(response *AddClusterServiceForAdminResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddClusterServiceForAdminResponse
+		var err error
+		defer close(result)
+		response, err = client.AddClusterServiceForAdmin(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddClusterServiceForAdminRequest is the request struct for api AddClusterServiceForAdmin
+type AddClusterServiceForAdminRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ServiceList     string           `position:"Query" name:"ServiceList"`
+	Comment         string           `position:"Query" name:"Comment"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+	UserId          string           `position:"Query" name:"UserId"`
+}
+
+// AddClusterServiceForAdminResponse is the response struct for api AddClusterServiceForAdmin
+type AddClusterServiceForAdminResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateAddClusterServiceForAdminRequest creates a request to invoke AddClusterServiceForAdmin API
+func CreateAddClusterServiceForAdminRequest() (request *AddClusterServiceForAdminRequest) {
+	request = &AddClusterServiceForAdminRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "AddClusterServiceForAdmin", "emr", "openAPI")
+	return
+}
+
+// CreateAddClusterServiceForAdminResponse creates a response to parse from AddClusterServiceForAdmin response
+func CreateAddClusterServiceForAdminResponse() (response *AddClusterServiceForAdminResponse) {
+	response = &AddClusterServiceForAdminResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 131 - 0
services/emr/add_hp_host.go

@@ -0,0 +1,131 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// AddHpHost invokes the emr.AddHpHost API synchronously
+// api document: https://help.aliyun.com/api/emr/addhphost.html
+func (client *Client) AddHpHost(request *AddHpHostRequest) (response *AddHpHostResponse, err error) {
+	response = CreateAddHpHostResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddHpHostWithChan invokes the emr.AddHpHost API asynchronously
+// api document: https://help.aliyun.com/api/emr/addhphost.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddHpHostWithChan(request *AddHpHostRequest) (<-chan *AddHpHostResponse, <-chan error) {
+	responseChan := make(chan *AddHpHostResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddHpHost(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddHpHostWithCallback invokes the emr.AddHpHost API asynchronously
+// api document: https://help.aliyun.com/api/emr/addhphost.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddHpHostWithCallback(request *AddHpHostRequest, callback func(response *AddHpHostResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddHpHostResponse
+		var err error
+		defer close(result)
+		response, err = client.AddHpHost(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddHpHostRequest is the request struct for api AddHpHost
+type AddHpHostRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer   `position:"Query" name:"ResourceOwnerId"`
+	HpHost          *[]AddHpHostHpHost `position:"Query" name:"HpHost"  type:"Repeated"`
+	HpBizId         string             `position:"Query" name:"HpBizId"`
+}
+
+// AddHpHostHpHost is a repeated param struct in AddHpHostRequest
+type AddHpHostHpHost struct {
+	CpuCore         string                 `name:"CpuCore"`
+	MemSize         string                 `name:"MemSize"`
+	RackInfo        string                 `name:"RackInfo"`
+	Role            string                 `name:"Role"`
+	SerialNumber    string                 `name:"SerialNumber"`
+	HostType        string                 `name:"HostType"`
+	SecurityGroupId string                 `name:"SecurityGroupId"`
+	HpHostDisk      *[]AddHpHostHpHostDisk `name:"HpHostDisk" type:"Repeated"`
+	VswitchId       string                 `name:"VswitchId"`
+	ExternalKey     string                 `name:"ExternalKey"`
+	HostName        string                 `name:"HostName"`
+	VpcId           string                 `name:"VpcId"`
+	InnerIp         string                 `name:"InnerIp"`
+	ExternalIp      string                 `name:"ExternalIp"`
+}
+
+// AddHpHostHpHostDisk is a repeated param struct in AddHpHostRequest
+type AddHpHostHpHostDisk struct {
+	DiskSize   string `name:"DiskSize"`
+	MountPath  string `name:"MountPath"`
+	DiskDevice string `name:"DiskDevice"`
+}
+
+// AddHpHostResponse is the response struct for api AddHpHost
+type AddHpHostResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	BizId     string `json:"BizId" xml:"BizId"`
+}
+
+// CreateAddHpHostRequest creates a request to invoke AddHpHost API
+func CreateAddHpHostRequest() (request *AddHpHostRequest) {
+	request = &AddHpHostRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "AddHpHost", "emr", "openAPI")
+	return
+}
+
+// CreateAddHpHostResponse creates a response to parse from AddHpHost response
+func CreateAddHpHostResponse() (response *AddHpHostResponse) {
+	response = &AddHpHostResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/emr/add_resource_to_users.go

@@ -0,0 +1,109 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// AddResourceToUsers invokes the emr.AddResourceToUsers API synchronously
+// api document: https://help.aliyun.com/api/emr/addresourcetousers.html
+func (client *Client) AddResourceToUsers(request *AddResourceToUsersRequest) (response *AddResourceToUsersResponse, err error) {
+	response = CreateAddResourceToUsersResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddResourceToUsersWithChan invokes the emr.AddResourceToUsers API asynchronously
+// api document: https://help.aliyun.com/api/emr/addresourcetousers.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddResourceToUsersWithChan(request *AddResourceToUsersRequest) (<-chan *AddResourceToUsersResponse, <-chan error) {
+	responseChan := make(chan *AddResourceToUsersResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddResourceToUsers(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddResourceToUsersWithCallback invokes the emr.AddResourceToUsers API asynchronously
+// api document: https://help.aliyun.com/api/emr/addresourcetousers.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddResourceToUsersWithCallback(request *AddResourceToUsersRequest, callback func(response *AddResourceToUsersResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddResourceToUsersResponse
+		var err error
+		defer close(result)
+		response, err = client.AddResourceToUsers(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddResourceToUsersRequest is the request struct for api AddResourceToUsers
+type AddResourceToUsersRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceId      string           `position:"Query" name:"ResourceId"`
+	UserIdList      *[]string        `position:"Query" name:"UserIdList"  type:"Repeated"`
+	ResourceType    string           `position:"Query" name:"ResourceType"`
+	RoleIdList      *[]string        `position:"Query" name:"RoleIdList"  type:"Repeated"`
+}
+
+// AddResourceToUsersResponse is the response struct for api AddResourceToUsers
+type AddResourceToUsersResponse struct {
+	*responses.BaseResponse
+	Paging    bool   `json:"Paging" xml:"Paging"`
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Data      bool   `json:"Data" xml:"Data"`
+}
+
+// CreateAddResourceToUsersRequest creates a request to invoke AddResourceToUsers API
+func CreateAddResourceToUsersRequest() (request *AddResourceToUsersRequest) {
+	request = &AddResourceToUsersRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "AddResourceToUsers", "emr", "openAPI")
+	return
+}
+
+// CreateAddResourceToUsersResponse creates a response to parse from AddResourceToUsers response
+func CreateAddResourceToUsersResponse() (response *AddResourceToUsersResponse) {
+	response = &AddResourceToUsersResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/emr/add_user_resource_role.go

@@ -0,0 +1,109 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// AddUserResourceRole invokes the emr.AddUserResourceRole API synchronously
+// api document: https://help.aliyun.com/api/emr/adduserresourcerole.html
+func (client *Client) AddUserResourceRole(request *AddUserResourceRoleRequest) (response *AddUserResourceRoleResponse, err error) {
+	response = CreateAddUserResourceRoleResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddUserResourceRoleWithChan invokes the emr.AddUserResourceRole API asynchronously
+// api document: https://help.aliyun.com/api/emr/adduserresourcerole.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddUserResourceRoleWithChan(request *AddUserResourceRoleRequest) (<-chan *AddUserResourceRoleResponse, <-chan error) {
+	responseChan := make(chan *AddUserResourceRoleResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddUserResourceRole(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddUserResourceRoleWithCallback invokes the emr.AddUserResourceRole API asynchronously
+// api document: https://help.aliyun.com/api/emr/adduserresourcerole.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddUserResourceRoleWithCallback(request *AddUserResourceRoleRequest, callback func(response *AddUserResourceRoleResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddUserResourceRoleResponse
+		var err error
+		defer close(result)
+		response, err = client.AddUserResourceRole(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddUserResourceRoleRequest is the request struct for api AddUserResourceRole
+type AddUserResourceRoleRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceId      string           `position:"Query" name:"ResourceId"`
+	RoleId          requests.Integer `position:"Query" name:"RoleId"`
+	ResourceType    string           `position:"Query" name:"ResourceType"`
+	AliyunUserId    string           `position:"Query" name:"AliyunUserId"`
+}
+
+// AddUserResourceRoleResponse is the response struct for api AddUserResourceRole
+type AddUserResourceRoleResponse struct {
+	*responses.BaseResponse
+	Paging    bool   `json:"Paging" xml:"Paging"`
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Data      bool   `json:"Data" xml:"Data"`
+}
+
+// CreateAddUserResourceRoleRequest creates a request to invoke AddUserResourceRole API
+func CreateAddUserResourceRoleRequest() (request *AddUserResourceRoleRequest) {
+	request = &AddUserResourceRoleRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "AddUserResourceRole", "emr", "openAPI")
+	return
+}
+
+// CreateAddUserResourceRoleResponse creates a response to parse from AddUserResourceRole response
+func CreateAddUserResourceRoleResponse() (response *AddUserResourceRoleResponse) {
+	response = &AddUserResourceRoleResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 53 - 5
services/emr/client.go

@@ -16,8 +16,11 @@ package emr
 // Changes may cause incorrect behavior and will be lost if the code is regenerated.
 // Changes may cause incorrect behavior and will be lost if the code is regenerated.
 
 
 import (
 import (
+	"reflect"
+
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/provider"
 )
 )
 
 
 // Client is the sdk client struct, each func corresponds to an OpenAPI
 // Client is the sdk client struct, each func corresponds to an OpenAPI
@@ -25,10 +28,40 @@ type Client struct {
 	sdk.Client
 	sdk.Client
 }
 }
 
 
+// SetClientProperty Set Property by Reflect
+func SetClientProperty(client *Client, propertyName string, propertyValue interface{}) {
+	v := reflect.ValueOf(client).Elem()
+	if v.FieldByName(propertyName).IsValid() && v.FieldByName(propertyName).CanSet() {
+		v.FieldByName(propertyName).Set(reflect.ValueOf(propertyValue))
+	}
+}
+
+// SetEndpointDataToClient Set EndpointMap and ENdpointType
+func SetEndpointDataToClient(client *Client) {
+	SetClientProperty(client, "EndpointMap", GetEndpointMap())
+	SetClientProperty(client, "EndpointType", GetEndpointType())
+}
+
 // NewClient creates a sdk client with environment variables
 // NewClient creates a sdk client with environment variables
 func NewClient() (client *Client, err error) {
 func NewClient() (client *Client, err error) {
 	client = &Client{}
 	client = &Client{}
 	err = client.Init()
 	err = client.Init()
+	SetEndpointDataToClient(client)
+	return
+}
+
+// NewClientWithProvider creates a sdk client with providers
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithProvider(regionId string, providers ...provider.Provider) (client *Client, err error) {
+	client = &Client{}
+	var pc provider.Provider
+	if len(providers) == 0 {
+		pc = provider.DefaultChain
+	} else {
+		pc = provider.NewProviderChain(providers)
+	}
+	err = client.InitWithProviderChain(regionId, pc)
+	SetEndpointDataToClient(client)
 	return
 	return
 }
 }
 
 
@@ -37,45 +70,60 @@ func NewClient() (client *Client, err error) {
 func NewClientWithOptions(regionId string, config *sdk.Config, credential auth.Credential) (client *Client, err error) {
 func NewClientWithOptions(regionId string, config *sdk.Config, credential auth.Credential) (client *Client, err error) {
 	client = &Client{}
 	client = &Client{}
 	err = client.InitWithOptions(regionId, config, credential)
 	err = client.InitWithOptions(regionId, config, credential)
+	SetEndpointDataToClient(client)
 	return
 	return
 }
 }
 
 
 // NewClientWithAccessKey is a shortcut to create sdk client with accesskey
 // NewClientWithAccessKey is a shortcut to create sdk client with accesskey
-// usage: https://help.aliyun.com/document_detail/66217.html
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
 func NewClientWithAccessKey(regionId, accessKeyId, accessKeySecret string) (client *Client, err error) {
 func NewClientWithAccessKey(regionId, accessKeyId, accessKeySecret string) (client *Client, err error) {
 	client = &Client{}
 	client = &Client{}
 	err = client.InitWithAccessKey(regionId, accessKeyId, accessKeySecret)
 	err = client.InitWithAccessKey(regionId, accessKeyId, accessKeySecret)
+	SetEndpointDataToClient(client)
 	return
 	return
 }
 }
 
 
 // NewClientWithStsToken is a shortcut to create sdk client with sts token
 // NewClientWithStsToken is a shortcut to create sdk client with sts token
-// usage: https://help.aliyun.com/document_detail/66222.html
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
 func NewClientWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken string) (client *Client, err error) {
 func NewClientWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken string) (client *Client, err error) {
 	client = &Client{}
 	client = &Client{}
 	err = client.InitWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken)
 	err = client.InitWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken)
+	SetEndpointDataToClient(client)
 	return
 	return
 }
 }
 
 
 // NewClientWithRamRoleArn is a shortcut to create sdk client with ram roleArn
 // NewClientWithRamRoleArn is a shortcut to create sdk client with ram roleArn
-// usage: https://help.aliyun.com/document_detail/66222.html
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
 func NewClientWithRamRoleArn(regionId string, accessKeyId, accessKeySecret, roleArn, roleSessionName string) (client *Client, err error) {
 func NewClientWithRamRoleArn(regionId string, accessKeyId, accessKeySecret, roleArn, roleSessionName string) (client *Client, err error) {
 	client = &Client{}
 	client = &Client{}
 	err = client.InitWithRamRoleArn(regionId, accessKeyId, accessKeySecret, roleArn, roleSessionName)
 	err = client.InitWithRamRoleArn(regionId, accessKeyId, accessKeySecret, roleArn, roleSessionName)
+	SetEndpointDataToClient(client)
+	return
+}
+
+// NewClientWithRamRoleArn is a shortcut to create sdk client with ram roleArn and policy
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithRamRoleArnAndPolicy(regionId string, accessKeyId, accessKeySecret, roleArn, roleSessionName, policy string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithRamRoleArnAndPolicy(regionId, accessKeyId, accessKeySecret, roleArn, roleSessionName, policy)
+	SetEndpointDataToClient(client)
 	return
 	return
 }
 }
 
 
 // NewClientWithEcsRamRole is a shortcut to create sdk client with ecs ram role
 // NewClientWithEcsRamRole is a shortcut to create sdk client with ecs ram role
-// usage: https://help.aliyun.com/document_detail/66223.html
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
 func NewClientWithEcsRamRole(regionId string, roleName string) (client *Client, err error) {
 func NewClientWithEcsRamRole(regionId string, roleName string) (client *Client, err error) {
 	client = &Client{}
 	client = &Client{}
 	err = client.InitWithEcsRamRole(regionId, roleName)
 	err = client.InitWithEcsRamRole(regionId, roleName)
+	SetEndpointDataToClient(client)
 	return
 	return
 }
 }
 
 
 // NewClientWithRsaKeyPair is a shortcut to create sdk client with rsa key pair
 // NewClientWithRsaKeyPair is a shortcut to create sdk client with rsa key pair
-// attention: rsa key pair auth is only Japan regions available
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
 func NewClientWithRsaKeyPair(regionId string, publicKeyId, privateKey string, sessionExpiration int) (client *Client, err error) {
 func NewClientWithRsaKeyPair(regionId string, publicKeyId, privateKey string, sessionExpiration int) (client *Client, err error) {
 	client = &Client{}
 	client = &Client{}
 	err = client.InitWithRsaKeyPair(regionId, publicKeyId, privateKey, sessionExpiration)
 	err = client.InitWithRsaKeyPair(regionId, publicKeyId, privateKey, sessionExpiration)
+	SetEndpointDataToClient(client)
 	return
 	return
 }
 }

+ 1 - 0
services/emr/clone_data_source.go

@@ -77,6 +77,7 @@ func (client *Client) CloneDataSourceWithCallback(request *CloneDataSourceReques
 type CloneDataSourceRequest struct {
 type CloneDataSourceRequest struct {
 	*requests.RpcRequest
 	*requests.RpcRequest
 	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Name            string           `position:"Query" name:"Name"`
 	Id              string           `position:"Query" name:"Id"`
 	Id              string           `position:"Query" name:"Id"`
 }
 }
 
 

+ 1 - 0
services/emr/clone_etl_job.go

@@ -77,6 +77,7 @@ func (client *Client) CloneETLJobWithCallback(request *CloneETLJobRequest, callb
 type CloneETLJobRequest struct {
 type CloneETLJobRequest struct {
 	*requests.RpcRequest
 	*requests.RpcRequest
 	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Name            string           `position:"Query" name:"Name"`
 	Id              string           `position:"Query" name:"Id"`
 	Id              string           `position:"Query" name:"Id"`
 }
 }
 
 

+ 1 - 1
services/emr/create_alert_contact.go

@@ -87,7 +87,7 @@ type CreateAlertContactRequest struct {
 // CreateAlertContactResponse is the response struct for api CreateAlertContact
 // CreateAlertContactResponse is the response struct for api CreateAlertContact
 type CreateAlertContactResponse struct {
 type CreateAlertContactResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
-	Id int `json:"Id" xml:"Id"`
+	Id int64 `json:"Id" xml:"Id"`
 }
 }
 
 
 // CreateCreateAlertContactRequest creates a request to invoke CreateAlertContact API
 // CreateCreateAlertContactRequest creates a request to invoke CreateAlertContact API

+ 1 - 1
services/emr/create_alert_ding_ding_group.go

@@ -85,7 +85,7 @@ type CreateAlertDingDingGroupRequest struct {
 // CreateAlertDingDingGroupResponse is the response struct for api CreateAlertDingDingGroup
 // CreateAlertDingDingGroupResponse is the response struct for api CreateAlertDingDingGroup
 type CreateAlertDingDingGroupResponse struct {
 type CreateAlertDingDingGroupResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
-	Id int `json:"Id" xml:"Id"`
+	Id int64 `json:"Id" xml:"Id"`
 }
 }
 
 
 // CreateCreateAlertDingDingGroupRequest creates a request to invoke CreateAlertDingDingGroup API
 // CreateCreateAlertDingDingGroupRequest creates a request to invoke CreateAlertDingDingGroup API

+ 1 - 1
services/emr/create_alert_user_group.go

@@ -85,7 +85,7 @@ type CreateAlertUserGroupRequest struct {
 // CreateAlertUserGroupResponse is the response struct for api CreateAlertUserGroup
 // CreateAlertUserGroupResponse is the response struct for api CreateAlertUserGroup
 type CreateAlertUserGroupResponse struct {
 type CreateAlertUserGroupResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
-	Id int `json:"Id" xml:"Id"`
+	Id int64 `json:"Id" xml:"Id"`
 }
 }
 
 
 // CreateCreateAlertUserGroupRequest creates a request to invoke CreateAlertUserGroup API
 // CreateCreateAlertUserGroupRequest creates a request to invoke CreateAlertUserGroup API

+ 121 - 0
services/emr/create_backup.go

@@ -0,0 +1,121 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateBackup invokes the emr.CreateBackup API synchronously
+// api document: https://help.aliyun.com/api/emr/createbackup.html
+func (client *Client) CreateBackup(request *CreateBackupRequest) (response *CreateBackupResponse, err error) {
+	response = CreateCreateBackupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateBackupWithChan invokes the emr.CreateBackup API asynchronously
+// api document: https://help.aliyun.com/api/emr/createbackup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateBackupWithChan(request *CreateBackupRequest) (<-chan *CreateBackupResponse, <-chan error) {
+	responseChan := make(chan *CreateBackupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateBackup(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateBackupWithCallback invokes the emr.CreateBackup API asynchronously
+// api document: https://help.aliyun.com/api/emr/createbackup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateBackupWithCallback(request *CreateBackupRequest, callback func(response *CreateBackupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateBackupResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateBackup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateBackupRequest is the request struct for api CreateBackup
+type CreateBackupRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	BackupPlanId    string           `position:"Query" name:"BackupPlanId"`
+	MetadataType    string           `position:"Query" name:"MetadataType"`
+}
+
+// CreateBackupResponse is the response struct for api CreateBackup
+type CreateBackupResponse struct {
+	*responses.BaseResponse
+	RequestId        string `json:"RequestId" xml:"RequestId"`
+	BizId            string `json:"BizId" xml:"BizId"`
+	DataSourceId     int64  `json:"DataSourceId" xml:"DataSourceId"`
+	TaskType         string `json:"TaskType" xml:"TaskType"`
+	TaskStatus       string `json:"TaskStatus" xml:"TaskStatus"`
+	StartTime        int64  `json:"StartTime" xml:"StartTime"`
+	EndTime          int64  `json:"EndTime" xml:"EndTime"`
+	TaskDetail       string `json:"TaskDetail" xml:"TaskDetail"`
+	TaskResultDetail string `json:"TaskResultDetail" xml:"TaskResultDetail"`
+	TaskProcess      int    `json:"TaskProcess" xml:"TaskProcess"`
+	TriggerUser      string `json:"TriggerUser" xml:"TriggerUser"`
+	TriggerType      string `json:"TriggerType" xml:"TriggerType"`
+	GmtCreate        int64  `json:"GmtCreate" xml:"GmtCreate"`
+	GmtModified      int64  `json:"GmtModified" xml:"GmtModified"`
+	ClusterBizId     string `json:"ClusterBizId" xml:"ClusterBizId"`
+	HostName         string `json:"HostName" xml:"HostName"`
+	EcmTaskId        int64  `json:"EcmTaskId" xml:"EcmTaskId"`
+}
+
+// CreateCreateBackupRequest creates a request to invoke CreateBackup API
+func CreateCreateBackupRequest() (request *CreateBackupRequest) {
+	request = &CreateBackupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateBackup", "emr", "openAPI")
+	return
+}
+
+// CreateCreateBackupResponse creates a response to parse from CreateBackup response
+func CreateCreateBackupResponse() (response *CreateBackupResponse) {
+	response = &CreateBackupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/emr/create_backup_plan.go

@@ -0,0 +1,112 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateBackupPlan invokes the emr.CreateBackupPlan API synchronously
+// api document: https://help.aliyun.com/api/emr/createbackupplan.html
+func (client *Client) CreateBackupPlan(request *CreateBackupPlanRequest) (response *CreateBackupPlanResponse, err error) {
+	response = CreateCreateBackupPlanResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateBackupPlanWithChan invokes the emr.CreateBackupPlan API asynchronously
+// api document: https://help.aliyun.com/api/emr/createbackupplan.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateBackupPlanWithChan(request *CreateBackupPlanRequest) (<-chan *CreateBackupPlanResponse, <-chan error) {
+	responseChan := make(chan *CreateBackupPlanResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateBackupPlan(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateBackupPlanWithCallback invokes the emr.CreateBackupPlan API asynchronously
+// api document: https://help.aliyun.com/api/emr/createbackupplan.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateBackupPlanWithCallback(request *CreateBackupPlanRequest, callback func(response *CreateBackupPlanResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateBackupPlanResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateBackupPlan(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateBackupPlanRequest is the request struct for api CreateBackupPlan
+type CreateBackupPlanRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Description     string           `position:"Query" name:"Description"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+	Name            string           `position:"Query" name:"Name"`
+	RootPath        string           `position:"Query" name:"RootPath"`
+}
+
+// CreateBackupPlanResponse is the response struct for api CreateBackupPlan
+type CreateBackupPlanResponse struct {
+	*responses.BaseResponse
+	RequestId   string `json:"RequestId" xml:"RequestId"`
+	Id          string `json:"Id" xml:"Id"`
+	Name        string `json:"Name" xml:"Name"`
+	Description string `json:"Description" xml:"Description"`
+	ClusterId   string `json:"ClusterId" xml:"ClusterId"`
+	RootPath    string `json:"RootPath" xml:"RootPath"`
+}
+
+// CreateCreateBackupPlanRequest creates a request to invoke CreateBackupPlan API
+func CreateCreateBackupPlanRequest() (request *CreateBackupPlanRequest) {
+	request = &CreateBackupPlanRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateBackupPlan", "emr", "openAPI")
+	return
+}
+
+// CreateCreateBackupPlanResponse creates a response to parse from CreateBackupPlan response
+func CreateCreateBackupPlanResponse() (response *CreateBackupPlanResponse) {
+	response = &CreateBackupPlanResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 114 - 0
services/emr/create_backup_rule.go

@@ -0,0 +1,114 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateBackupRule invokes the emr.CreateBackupRule API synchronously
+// api document: https://help.aliyun.com/api/emr/createbackuprule.html
+func (client *Client) CreateBackupRule(request *CreateBackupRuleRequest) (response *CreateBackupRuleResponse, err error) {
+	response = CreateCreateBackupRuleResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateBackupRuleWithChan invokes the emr.CreateBackupRule API asynchronously
+// api document: https://help.aliyun.com/api/emr/createbackuprule.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateBackupRuleWithChan(request *CreateBackupRuleRequest) (<-chan *CreateBackupRuleResponse, <-chan error) {
+	responseChan := make(chan *CreateBackupRuleResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateBackupRule(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateBackupRuleWithCallback invokes the emr.CreateBackupRule API asynchronously
+// api document: https://help.aliyun.com/api/emr/createbackuprule.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateBackupRuleWithCallback(request *CreateBackupRuleRequest, callback func(response *CreateBackupRuleResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateBackupRuleResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateBackupRule(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateBackupRuleRequest is the request struct for api CreateBackupRule
+type CreateBackupRuleRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId  requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	BackupMethodType string           `position:"Query" name:"BackupMethodType"`
+	Description      string           `position:"Query" name:"Description"`
+	BackupPlanId     string           `position:"Query" name:"BackupPlanId"`
+	MetadataType     string           `position:"Query" name:"MetadataType"`
+	Name             string           `position:"Query" name:"Name"`
+}
+
+// CreateBackupRuleResponse is the response struct for api CreateBackupRule
+type CreateBackupRuleResponse struct {
+	*responses.BaseResponse
+	RequestId        string `json:"RequestId" xml:"RequestId"`
+	Id               string `json:"Id" xml:"Id"`
+	Name             string `json:"Name" xml:"Name"`
+	Description      string `json:"Description" xml:"Description"`
+	MetadataType     string `json:"MetadataType" xml:"MetadataType"`
+	BackupMethodType string `json:"BackupMethodType" xml:"BackupMethodType"`
+	BackupPlanId     string `json:"BackupPlanId" xml:"BackupPlanId"`
+}
+
+// CreateCreateBackupRuleRequest creates a request to invoke CreateBackupRule API
+func CreateCreateBackupRuleRequest() (request *CreateBackupRuleRequest) {
+	request = &CreateBackupRuleRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateBackupRule", "emr", "openAPI")
+	return
+}
+
+// CreateCreateBackupRuleResponse creates a response to parse from CreateBackupRule response
+func CreateCreateBackupRuleResponse() (response *CreateBackupRuleResponse) {
+	response = &CreateBackupRuleResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 117 - 0
services/emr/create_batch_users.go

@@ -0,0 +1,117 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateBatchUsers invokes the emr.CreateBatchUsers API synchronously
+// api document: https://help.aliyun.com/api/emr/createbatchusers.html
+func (client *Client) CreateBatchUsers(request *CreateBatchUsersRequest) (response *CreateBatchUsersResponse, err error) {
+	response = CreateCreateBatchUsersResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateBatchUsersWithChan invokes the emr.CreateBatchUsers API asynchronously
+// api document: https://help.aliyun.com/api/emr/createbatchusers.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateBatchUsersWithChan(request *CreateBatchUsersRequest) (<-chan *CreateBatchUsersResponse, <-chan error) {
+	responseChan := make(chan *CreateBatchUsersResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateBatchUsers(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateBatchUsersWithCallback invokes the emr.CreateBatchUsers API asynchronously
+// api document: https://help.aliyun.com/api/emr/createbatchusers.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateBatchUsersWithCallback(request *CreateBatchUsersRequest, callback func(response *CreateBatchUsersResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateBatchUsersResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateBatchUsers(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateBatchUsersRequest is the request struct for api CreateBatchUsers
+type CreateBatchUsersRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId   requests.Integer                     `position:"Query" name:"ResourceOwnerId"`
+	UserBaseParamList *[]CreateBatchUsersUserBaseParamList `position:"Query" name:"UserBaseParamList"  type:"Repeated"`
+	RoleId            *[]string                            `position:"Query" name:"RoleId"  type:"Repeated"`
+	GroupId           *[]string                            `position:"Query" name:"GroupId"  type:"Repeated"`
+	Description       string                               `position:"Query" name:"Description"`
+}
+
+// CreateBatchUsersUserBaseParamList is a repeated param struct in CreateBatchUsersRequest
+type CreateBatchUsersUserBaseParamList struct {
+	AliyunUserId string `name:"AliyunUserId"`
+	UserName     string `name:"UserName"`
+	UserType     string `name:"UserType"`
+	IsSuperAdmin string `name:"IsSuperAdmin"`
+}
+
+// CreateBatchUsersResponse is the response struct for api CreateBatchUsers
+type CreateBatchUsersResponse struct {
+	*responses.BaseResponse
+	Paging    bool   `json:"Paging" xml:"Paging"`
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Data      bool   `json:"Data" xml:"Data"`
+}
+
+// CreateCreateBatchUsersRequest creates a request to invoke CreateBatchUsers API
+func CreateCreateBatchUsersRequest() (request *CreateBatchUsersRequest) {
+	request = &CreateBatchUsersRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateBatchUsers", "emr", "openAPI")
+	return
+}
+
+// CreateCreateBatchUsersResponse creates a response to parse from CreateBatchUsers response
+func CreateCreateBatchUsersResponse() (response *CreateBatchUsersResponse) {
+	response = &CreateBatchUsersResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 3 - 0
services/emr/create_cluster_template.go

@@ -84,11 +84,14 @@ type CreateClusterTemplateRequest struct {
 	SecurityGroupId        string                                  `position:"Query" name:"SecurityGroupId"`
 	SecurityGroupId        string                                  `position:"Query" name:"SecurityGroupId"`
 	SshEnable              requests.Boolean                        `position:"Query" name:"SshEnable"`
 	SshEnable              requests.Boolean                        `position:"Query" name:"SshEnable"`
 	EasEnable              requests.Boolean                        `position:"Query" name:"EasEnable"`
 	EasEnable              requests.Boolean                        `position:"Query" name:"EasEnable"`
+	KeyPairName            string                                  `position:"Query" name:"KeyPairName"`
+	MetaStoreType          string                                  `position:"Query" name:"MetaStoreType"`
 	SecurityGroupName      string                                  `position:"Query" name:"SecurityGroupName"`
 	SecurityGroupName      string                                  `position:"Query" name:"SecurityGroupName"`
 	DepositType            string                                  `position:"Query" name:"DepositType"`
 	DepositType            string                                  `position:"Query" name:"DepositType"`
 	MachineType            string                                  `position:"Query" name:"MachineType"`
 	MachineType            string                                  `position:"Query" name:"MachineType"`
 	BootstrapAction        *[]CreateClusterTemplateBootstrapAction `position:"Query" name:"BootstrapAction"  type:"Repeated"`
 	BootstrapAction        *[]CreateClusterTemplateBootstrapAction `position:"Query" name:"BootstrapAction"  type:"Repeated"`
 	UseLocalMetaDb         requests.Boolean                        `position:"Query" name:"UseLocalMetaDb"`
 	UseLocalMetaDb         requests.Boolean                        `position:"Query" name:"UseLocalMetaDb"`
+	MetaStoreConf          string                                  `position:"Query" name:"MetaStoreConf"`
 	EmrVer                 string                                  `position:"Query" name:"EmrVer"`
 	EmrVer                 string                                  `position:"Query" name:"EmrVer"`
 	TemplateName           string                                  `position:"Query" name:"TemplateName"`
 	TemplateName           string                                  `position:"Query" name:"TemplateName"`
 	UserDefinedEmrEcsRole  string                                  `position:"Query" name:"UserDefinedEmrEcsRole"`
 	UserDefinedEmrEcsRole  string                                  `position:"Query" name:"UserDefinedEmrEcsRole"`

+ 2 - 0
services/emr/create_cluster_v2.go

@@ -86,12 +86,14 @@ type CreateClusterV2Request struct {
 	SshEnable              requests.Boolean                    `position:"Query" name:"SshEnable"`
 	SshEnable              requests.Boolean                    `position:"Query" name:"SshEnable"`
 	EasEnable              requests.Boolean                    `position:"Query" name:"EasEnable"`
 	EasEnable              requests.Boolean                    `position:"Query" name:"EasEnable"`
 	KeyPairName            string                              `position:"Query" name:"KeyPairName"`
 	KeyPairName            string                              `position:"Query" name:"KeyPairName"`
+	MetaStoreType          string                              `position:"Query" name:"MetaStoreType"`
 	SecurityGroupName      string                              `position:"Query" name:"SecurityGroupName"`
 	SecurityGroupName      string                              `position:"Query" name:"SecurityGroupName"`
 	DepositType            string                              `position:"Query" name:"DepositType"`
 	DepositType            string                              `position:"Query" name:"DepositType"`
 	MachineType            string                              `position:"Query" name:"MachineType"`
 	MachineType            string                              `position:"Query" name:"MachineType"`
 	HostComponentInfo      *[]CreateClusterV2HostComponentInfo `position:"Query" name:"HostComponentInfo"  type:"Repeated"`
 	HostComponentInfo      *[]CreateClusterV2HostComponentInfo `position:"Query" name:"HostComponentInfo"  type:"Repeated"`
 	BootstrapAction        *[]CreateClusterV2BootstrapAction   `position:"Query" name:"BootstrapAction"  type:"Repeated"`
 	BootstrapAction        *[]CreateClusterV2BootstrapAction   `position:"Query" name:"BootstrapAction"  type:"Repeated"`
 	UseLocalMetaDb         requests.Boolean                    `position:"Query" name:"UseLocalMetaDb"`
 	UseLocalMetaDb         requests.Boolean                    `position:"Query" name:"UseLocalMetaDb"`
+	MetaStoreConf          string                              `position:"Query" name:"MetaStoreConf"`
 	EmrVer                 string                              `position:"Query" name:"EmrVer"`
 	EmrVer                 string                              `position:"Query" name:"EmrVer"`
 	UserInfo               *[]CreateClusterV2UserInfo          `position:"Query" name:"UserInfo"  type:"Repeated"`
 	UserInfo               *[]CreateClusterV2UserInfo          `position:"Query" name:"UserInfo"  type:"Repeated"`
 	UserDefinedEmrEcsRole  string                              `position:"Query" name:"UserDefinedEmrEcsRole"`
 	UserDefinedEmrEcsRole  string                              `position:"Query" name:"UserDefinedEmrEcsRole"`

+ 156 - 0
services/emr/create_cluster_with_host_pool.go

@@ -0,0 +1,156 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateClusterWithHostPool invokes the emr.CreateClusterWithHostPool API synchronously
+// api document: https://help.aliyun.com/api/emr/createclusterwithhostpool.html
+func (client *Client) CreateClusterWithHostPool(request *CreateClusterWithHostPoolRequest) (response *CreateClusterWithHostPoolResponse, err error) {
+	response = CreateCreateClusterWithHostPoolResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateClusterWithHostPoolWithChan invokes the emr.CreateClusterWithHostPool API asynchronously
+// api document: https://help.aliyun.com/api/emr/createclusterwithhostpool.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateClusterWithHostPoolWithChan(request *CreateClusterWithHostPoolRequest) (<-chan *CreateClusterWithHostPoolResponse, <-chan error) {
+	responseChan := make(chan *CreateClusterWithHostPoolResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateClusterWithHostPool(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateClusterWithHostPoolWithCallback invokes the emr.CreateClusterWithHostPool API asynchronously
+// api document: https://help.aliyun.com/api/emr/createclusterwithhostpool.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateClusterWithHostPoolWithCallback(request *CreateClusterWithHostPoolRequest, callback func(response *CreateClusterWithHostPoolResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateClusterWithHostPoolResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateClusterWithHostPool(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateClusterWithHostPoolRequest is the request struct for api CreateClusterWithHostPool
+type CreateClusterWithHostPoolRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId  requests.Integer                        `position:"Query" name:"ResourceOwnerId"`
+	ClusterName      string                                  `position:"Query" name:"ClusterName"`
+	EasEnable        requests.Boolean                        `position:"Query" name:"EasEnable"`
+	HostInfo         *[]CreateClusterWithHostPoolHostInfo    `position:"Query" name:"HostInfo"  type:"Repeated"`
+	RelatedClusterId string                                  `position:"Query" name:"RelatedClusterId"`
+	ClusterType      string                                  `position:"Query" name:"ClusterType"`
+	HostGroup        *[]CreateClusterWithHostPoolHostGroup   `position:"Query" name:"HostGroup"  type:"Repeated"`
+	StackName        string                                  `position:"Query" name:"StackName"`
+	StackVersion     string                                  `position:"Query" name:"StackVersion"`
+	ServiceInfo      *[]CreateClusterWithHostPoolServiceInfo `position:"Query" name:"ServiceInfo"  type:"Repeated"`
+	Config           *[]CreateClusterWithHostPoolConfig      `position:"Query" name:"Config"  type:"Repeated"`
+}
+
+// CreateClusterWithHostPoolHostInfo is a repeated param struct in CreateClusterWithHostPoolRequest
+type CreateClusterWithHostPoolHostInfo struct {
+	HpHostBizId          string                                           `name:"HpHostBizId"`
+	HostName             string                                           `name:"HostName"`
+	Role                 string                                           `name:"Role"`
+	GroupId              string                                           `name:"GroupId"`
+	PrivateIp            string                                           `name:"PrivateIp"`
+	ServiceComponentInfo *[]CreateClusterWithHostPoolServiceComponentInfo `name:"ServiceComponentInfo" type:"Repeated"`
+	HostGroupName        string                                           `name:"HostGroupName"`
+}
+
+// CreateClusterWithHostPoolHostGroup is a repeated param struct in CreateClusterWithHostPoolRequest
+type CreateClusterWithHostPoolHostGroup struct {
+	GroupType string `name:"GroupType"`
+	GroupId   string `name:"GroupId"`
+	GroupName string `name:"GroupName"`
+}
+
+// CreateClusterWithHostPoolServiceInfo is a repeated param struct in CreateClusterWithHostPoolRequest
+type CreateClusterWithHostPoolServiceInfo struct {
+	ServiceEcmVersion string `name:"ServiceEcmVersion"`
+	ServiceVersion    string `name:"ServiceVersion"`
+	ServiceName       string `name:"ServiceName"`
+}
+
+// CreateClusterWithHostPoolConfig is a repeated param struct in CreateClusterWithHostPoolRequest
+type CreateClusterWithHostPoolConfig struct {
+	ConfigKey   string `name:"ConfigKey"`
+	FileName    string `name:"FileName"`
+	ConfigValue string `name:"ConfigValue"`
+	ServiceName string `name:"ServiceName"`
+}
+
+// CreateClusterWithHostPoolServiceComponentInfo is a repeated param struct in CreateClusterWithHostPoolRequest
+type CreateClusterWithHostPoolServiceComponentInfo struct {
+	ServiceEcmVersion string `name:"ServiceEcmVersion"`
+	ComponentName     string `name:"ComponentName"`
+	ServiceName       string `name:"ServiceName"`
+}
+
+// CreateClusterWithHostPoolResponse is the response struct for api CreateClusterWithHostPool
+type CreateClusterWithHostPoolResponse struct {
+	*responses.BaseResponse
+	RequestId          string `json:"RequestId" xml:"RequestId"`
+	ClusterId          string `json:"ClusterId" xml:"ClusterId"`
+	WorkFlowInstanceId string `json:"WorkFlowInstanceId" xml:"WorkFlowInstanceId"`
+	OperationId        string `json:"OperationId" xml:"OperationId"`
+}
+
+// CreateCreateClusterWithHostPoolRequest creates a request to invoke CreateClusterWithHostPool API
+func CreateCreateClusterWithHostPoolRequest() (request *CreateClusterWithHostPoolRequest) {
+	request = &CreateClusterWithHostPoolRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateClusterWithHostPool", "emr", "openAPI")
+	return
+}
+
+// CreateCreateClusterWithHostPoolResponse creates a response to parse from CreateClusterWithHostPool response
+func CreateCreateClusterWithHostPoolResponse() (response *CreateClusterWithHostPoolResponse) {
+	response = &CreateClusterWithHostPoolResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 1 - 0
services/emr/create_cluster_with_template.go

@@ -78,6 +78,7 @@ type CreateClusterWithTemplateRequest struct {
 	*requests.RpcRequest
 	*requests.RpcRequest
 	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	UniqueTag       string           `position:"Query" name:"UniqueTag"`
 	UniqueTag       string           `position:"Query" name:"UniqueTag"`
+	ClusterName     string           `position:"Query" name:"ClusterName"`
 	TemplateBizId   string           `position:"Query" name:"TemplateBizId"`
 	TemplateBizId   string           `position:"Query" name:"TemplateBizId"`
 }
 }
 
 

+ 1 - 0
services/emr/create_etl_job.go

@@ -80,6 +80,7 @@ type CreateETLJobRequest struct {
 	NavParentId     string           `position:"Query" name:"NavParentId"`
 	NavParentId     string           `position:"Query" name:"NavParentId"`
 	Name            string           `position:"Query" name:"Name"`
 	Name            string           `position:"Query" name:"Name"`
 	Description     string           `position:"Query" name:"Description"`
 	Description     string           `position:"Query" name:"Description"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
 	Type            string           `position:"Query" name:"Type"`
 	Type            string           `position:"Query" name:"Type"`
 	ProjectId       string           `position:"Query" name:"ProjectId"`
 	ProjectId       string           `position:"Query" name:"ProjectId"`
 }
 }

+ 116 - 0
services/emr/create_host_pool.go

@@ -0,0 +1,116 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateHostPool invokes the emr.CreateHostPool API synchronously
+// api document: https://help.aliyun.com/api/emr/createhostpool.html
+func (client *Client) CreateHostPool(request *CreateHostPoolRequest) (response *CreateHostPoolResponse, err error) {
+	response = CreateCreateHostPoolResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateHostPoolWithChan invokes the emr.CreateHostPool API asynchronously
+// api document: https://help.aliyun.com/api/emr/createhostpool.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateHostPoolWithChan(request *CreateHostPoolRequest) (<-chan *CreateHostPoolResponse, <-chan error) {
+	responseChan := make(chan *CreateHostPoolResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateHostPool(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateHostPoolWithCallback invokes the emr.CreateHostPool API asynchronously
+// api document: https://help.aliyun.com/api/emr/createhostpool.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateHostPoolWithCallback(request *CreateHostPoolRequest, callback func(response *CreateHostPoolResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateHostPoolResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateHostPool(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateHostPoolRequest is the request struct for api CreateHostPool
+type CreateHostPoolRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer                 `position:"Query" name:"ResourceOwnerId"`
+	Name            string                           `position:"Query" name:"Name"`
+	Description     string                           `position:"Query" name:"Description"`
+	KubeClusterInfo *[]CreateHostPoolKubeClusterInfo `position:"Query" name:"KubeClusterInfo"  type:"Repeated"`
+	Type            string                           `position:"Query" name:"Type"`
+}
+
+// CreateHostPoolKubeClusterInfo is a repeated param struct in CreateHostPoolRequest
+type CreateHostPoolKubeClusterInfo struct {
+	ExternalKey    string `name:"ExternalKey"`
+	InternalConfig string `name:"InternalConfig"`
+	PublicConfig   string `name:"PublicConfig"`
+	SshConfig      string `name:"SshConfig"`
+}
+
+// CreateHostPoolResponse is the response struct for api CreateHostPool
+type CreateHostPoolResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	BizId     string `json:"BizId" xml:"BizId"`
+}
+
+// CreateCreateHostPoolRequest creates a request to invoke CreateHostPool API
+func CreateCreateHostPoolRequest() (request *CreateHostPoolRequest) {
+	request = &CreateHostPoolRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateHostPool", "emr", "openAPI")
+	return
+}
+
+// CreateCreateHostPoolResponse creates a response to parse from CreateHostPool response
+func CreateCreateHostPoolResponse() (response *CreateHostPoolResponse) {
+	response = &CreateHostPoolResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 31 - 12
services/emr/create_scaling_task_group.go

@@ -100,18 +100,37 @@ type CreateScalingTaskGroupSpotPriceLimits struct {
 
 
 // CreateScalingTaskGroupScalingRule is a repeated param struct in CreateScalingTaskGroupRequest
 // CreateScalingTaskGroupScalingRule is a repeated param struct in CreateScalingTaskGroupRequest
 type CreateScalingTaskGroupScalingRule struct {
 type CreateScalingTaskGroupScalingRule struct {
-	LaunchTime           string    `name:"LaunchTime"`
-	RuleCategory         string    `name:"RuleCategory"`
-	AdjustmentValue      string    `name:"AdjustmentValue"`
-	SchedulerTrigger     *[]string `name:"SchedulerTrigger" type:"Repeated"`
-	AdjustmentType       string    `name:"AdjustmentType"`
-	Cooldown             string    `name:"Cooldown"`
-	RuleName             string    `name:"RuleName"`
-	LaunchExpirationTime string    `name:"LaunchExpirationTime"`
-	RecurrenceValue      string    `name:"RecurrenceValue"`
-	RecurrenceEndTime    string    `name:"RecurrenceEndTime"`
-	CloudWatchTrigger    *[]string `name:"CloudWatchTrigger" type:"Repeated"`
-	RecurrenceType       string    `name:"RecurrenceType"`
+	LaunchTime           string                                     `name:"LaunchTime"`
+	RuleCategory         string                                     `name:"RuleCategory"`
+	AdjustmentValue      string                                     `name:"AdjustmentValue"`
+	SchedulerTrigger     *[]CreateScalingTaskGroupSchedulerTrigger  `name:"SchedulerTrigger" type:"Repeated"`
+	AdjustmentType       string                                     `name:"AdjustmentType"`
+	Cooldown             string                                     `name:"Cooldown"`
+	RuleName             string                                     `name:"RuleName"`
+	LaunchExpirationTime string                                     `name:"LaunchExpirationTime"`
+	RecurrenceValue      string                                     `name:"RecurrenceValue"`
+	RecurrenceEndTime    string                                     `name:"RecurrenceEndTime"`
+	CloudWatchTrigger    *[]CreateScalingTaskGroupCloudWatchTrigger `name:"CloudWatchTrigger" type:"Repeated"`
+	RecurrenceType       string                                     `name:"RecurrenceType"`
+}
+
+// CreateScalingTaskGroupSchedulerTrigger is a repeated param struct in CreateScalingTaskGroupRequest
+type CreateScalingTaskGroupSchedulerTrigger struct {
+	LaunchTime           string `name:"LaunchTime"`
+	LaunchExpirationTime string `name:"LaunchExpirationTime"`
+	RecurrenceValue      string `name:"RecurrenceValue"`
+	RecurrenceEndTime    string `name:"RecurrenceEndTime"`
+	RecurrenceType       string `name:"RecurrenceType"`
+}
+
+// CreateScalingTaskGroupCloudWatchTrigger is a repeated param struct in CreateScalingTaskGroupRequest
+type CreateScalingTaskGroupCloudWatchTrigger struct {
+	Period             string `name:"Period"`
+	EvaluationCount    string `name:"EvaluationCount"`
+	Threshold          string `name:"Threshold"`
+	MetricName         string `name:"MetricName"`
+	ComparisonOperator string `name:"ComparisonOperator"`
+	Statistics         string `name:"Statistics"`
 }
 }
 
 
 // CreateScalingTaskGroupResponse is the response struct for api CreateScalingTaskGroup
 // CreateScalingTaskGroupResponse is the response struct for api CreateScalingTaskGroup

+ 120 - 0
services/emr/create_user.go

@@ -0,0 +1,120 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateUser invokes the emr.CreateUser API synchronously
+// api document: https://help.aliyun.com/api/emr/createuser.html
+func (client *Client) CreateUser(request *CreateUserRequest) (response *CreateUserResponse, err error) {
+	response = CreateCreateUserResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateUserWithChan invokes the emr.CreateUser API asynchronously
+// api document: https://help.aliyun.com/api/emr/createuser.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateUserWithChan(request *CreateUserRequest) (<-chan *CreateUserResponse, <-chan error) {
+	responseChan := make(chan *CreateUserResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateUser(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateUserWithCallback invokes the emr.CreateUser API asynchronously
+// api document: https://help.aliyun.com/api/emr/createuser.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateUserWithCallback(request *CreateUserRequest, callback func(response *CreateUserResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateUserResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateUser(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateUserRequest is the request struct for api CreateUser
+type CreateUserRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer                  `position:"Query" name:"ResourceOwnerId"`
+	UserType             string                            `position:"Query" name:"UserType"`
+	Description          string                            `position:"Query" name:"Description"`
+	UserAccountParamList *[]CreateUserUserAccountParamList `position:"Query" name:"UserAccountParamList"  type:"Repeated"`
+	GroupIdList          *[]string                         `position:"Query" name:"GroupIdList"  type:"Repeated"`
+	RoleIdList           *[]string                         `position:"Query" name:"RoleIdList"  type:"Repeated"`
+	AliyunUserId         string                            `position:"Query" name:"AliyunUserId"`
+	UserName             string                            `position:"Query" name:"UserName"`
+	Status               string                            `position:"Query" name:"Status"`
+}
+
+// CreateUserUserAccountParamList is a repeated param struct in CreateUserRequest
+type CreateUserUserAccountParamList struct {
+	AccountType     string `name:"AccountType"`
+	AuthType        string `name:"AuthType"`
+	AccountPassword string `name:"AccountPassword"`
+}
+
+// CreateUserResponse is the response struct for api CreateUser
+type CreateUserResponse struct {
+	*responses.BaseResponse
+	Paging    bool   `json:"Paging" xml:"Paging"`
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Data      bool   `json:"Data" xml:"Data"`
+}
+
+// CreateCreateUserRequest creates a request to invoke CreateUser API
+func CreateCreateUserRequest() (request *CreateUserRequest) {
+	request = &CreateUserRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateUser", "emr", "openAPI")
+	return
+}
+
+// CreateCreateUserResponse creates a response to parse from CreateUser response
+func CreateCreateUserResponse() (response *CreateUserResponse) {
+	response = &CreateUserResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/emr/create_user_group.go

@@ -0,0 +1,109 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateUserGroup invokes the emr.CreateUserGroup API synchronously
+// api document: https://help.aliyun.com/api/emr/createusergroup.html
+func (client *Client) CreateUserGroup(request *CreateUserGroupRequest) (response *CreateUserGroupResponse, err error) {
+	response = CreateCreateUserGroupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateUserGroupWithChan invokes the emr.CreateUserGroup API asynchronously
+// api document: https://help.aliyun.com/api/emr/createusergroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateUserGroupWithChan(request *CreateUserGroupRequest) (<-chan *CreateUserGroupResponse, <-chan error) {
+	responseChan := make(chan *CreateUserGroupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateUserGroup(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateUserGroupWithCallback invokes the emr.CreateUserGroup API asynchronously
+// api document: https://help.aliyun.com/api/emr/createusergroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateUserGroupWithCallback(request *CreateUserGroupRequest, callback func(response *CreateUserGroupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateUserGroupResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateUserGroup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateUserGroupRequest is the request struct for api CreateUserGroup
+type CreateUserGroupRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Description     string           `position:"Query" name:"Description"`
+	Type            string           `position:"Query" name:"Type"`
+	Name            string           `position:"Query" name:"Name"`
+	RoleIdList      *[]string        `position:"Query" name:"RoleIdList"  type:"Repeated"`
+}
+
+// CreateUserGroupResponse is the response struct for api CreateUserGroup
+type CreateUserGroupResponse struct {
+	*responses.BaseResponse
+	Paging    bool   `json:"Paging" xml:"Paging"`
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Data      bool   `json:"Data" xml:"Data"`
+}
+
+// CreateCreateUserGroupRequest creates a request to invoke CreateUserGroup API
+func CreateCreateUserGroupRequest() (request *CreateUserGroupRequest) {
+	request = &CreateUserGroupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateUserGroup", "emr", "openAPI")
+	return
+}
+
+// CreateCreateUserGroupResponse creates a response to parse from CreateUserGroup response
+func CreateCreateUserGroupResponse() (response *CreateUserGroupResponse) {
+	response = &CreateUserGroupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 1 - 1
services/emr/create_verification_code.go

@@ -84,7 +84,7 @@ type CreateVerificationCodeRequest struct {
 // CreateVerificationCodeResponse is the response struct for api CreateVerificationCode
 // CreateVerificationCodeResponse is the response struct for api CreateVerificationCode
 type CreateVerificationCodeResponse struct {
 type CreateVerificationCodeResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
-	Status int `json:"Status" xml:"Status"`
+	Status int64 `json:"Status" xml:"Status"`
 }
 }
 
 
 // CreateCreateVerificationCodeRequest creates a request to invoke CreateVerificationCode API
 // CreateCreateVerificationCodeRequest creates a request to invoke CreateVerificationCode API

+ 108 - 0
services/emr/delete_batch_resource_users.go

@@ -0,0 +1,108 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteBatchResourceUsers invokes the emr.DeleteBatchResourceUsers API synchronously
+// api document: https://help.aliyun.com/api/emr/deletebatchresourceusers.html
+func (client *Client) DeleteBatchResourceUsers(request *DeleteBatchResourceUsersRequest) (response *DeleteBatchResourceUsersResponse, err error) {
+	response = CreateDeleteBatchResourceUsersResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteBatchResourceUsersWithChan invokes the emr.DeleteBatchResourceUsers API asynchronously
+// api document: https://help.aliyun.com/api/emr/deletebatchresourceusers.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteBatchResourceUsersWithChan(request *DeleteBatchResourceUsersRequest) (<-chan *DeleteBatchResourceUsersResponse, <-chan error) {
+	responseChan := make(chan *DeleteBatchResourceUsersResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteBatchResourceUsers(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteBatchResourceUsersWithCallback invokes the emr.DeleteBatchResourceUsers API asynchronously
+// api document: https://help.aliyun.com/api/emr/deletebatchresourceusers.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteBatchResourceUsersWithCallback(request *DeleteBatchResourceUsersRequest, callback func(response *DeleteBatchResourceUsersResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteBatchResourceUsersResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteBatchResourceUsers(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteBatchResourceUsersRequest is the request struct for api DeleteBatchResourceUsers
+type DeleteBatchResourceUsersRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceId      string           `position:"Query" name:"ResourceId"`
+	UserIdList      *[]string        `position:"Query" name:"UserIdList"  type:"Repeated"`
+	ResourceType    string           `position:"Query" name:"ResourceType"`
+}
+
+// DeleteBatchResourceUsersResponse is the response struct for api DeleteBatchResourceUsers
+type DeleteBatchResourceUsersResponse struct {
+	*responses.BaseResponse
+	Paging    bool   `json:"Paging" xml:"Paging"`
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Data      bool   `json:"Data" xml:"Data"`
+}
+
+// CreateDeleteBatchResourceUsersRequest creates a request to invoke DeleteBatchResourceUsers API
+func CreateDeleteBatchResourceUsersRequest() (request *DeleteBatchResourceUsersRequest) {
+	request = &DeleteBatchResourceUsersRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteBatchResourceUsers", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteBatchResourceUsersResponse creates a response to parse from DeleteBatchResourceUsers response
+func CreateDeleteBatchResourceUsersResponse() (response *DeleteBatchResourceUsersResponse) {
+	response = &DeleteBatchResourceUsersResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/emr/delete_host_pool.go

@@ -0,0 +1,104 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteHostPool invokes the emr.DeleteHostPool API synchronously
+// api document: https://help.aliyun.com/api/emr/deletehostpool.html
+func (client *Client) DeleteHostPool(request *DeleteHostPoolRequest) (response *DeleteHostPoolResponse, err error) {
+	response = CreateDeleteHostPoolResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteHostPoolWithChan invokes the emr.DeleteHostPool API asynchronously
+// api document: https://help.aliyun.com/api/emr/deletehostpool.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteHostPoolWithChan(request *DeleteHostPoolRequest) (<-chan *DeleteHostPoolResponse, <-chan error) {
+	responseChan := make(chan *DeleteHostPoolResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteHostPool(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteHostPoolWithCallback invokes the emr.DeleteHostPool API asynchronously
+// api document: https://help.aliyun.com/api/emr/deletehostpool.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteHostPoolWithCallback(request *DeleteHostPoolRequest, callback func(response *DeleteHostPoolResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteHostPoolResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteHostPool(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteHostPoolRequest is the request struct for api DeleteHostPool
+type DeleteHostPoolRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	BizId           string           `position:"Query" name:"BizId"`
+}
+
+// DeleteHostPoolResponse is the response struct for api DeleteHostPool
+type DeleteHostPoolResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteHostPoolRequest creates a request to invoke DeleteHostPool API
+func CreateDeleteHostPoolRequest() (request *DeleteHostPoolRequest) {
+	request = &DeleteHostPoolRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteHostPool", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteHostPoolResponse creates a response to parse from DeleteHostPool response
+func CreateDeleteHostPoolResponse() (response *DeleteHostPoolResponse) {
+	response = &DeleteHostPoolResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/emr/delete_resource_user.go

@@ -0,0 +1,108 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteResourceUser invokes the emr.DeleteResourceUser API synchronously
+// api document: https://help.aliyun.com/api/emr/deleteresourceuser.html
+func (client *Client) DeleteResourceUser(request *DeleteResourceUserRequest) (response *DeleteResourceUserResponse, err error) {
+	response = CreateDeleteResourceUserResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteResourceUserWithChan invokes the emr.DeleteResourceUser API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteresourceuser.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteResourceUserWithChan(request *DeleteResourceUserRequest) (<-chan *DeleteResourceUserResponse, <-chan error) {
+	responseChan := make(chan *DeleteResourceUserResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteResourceUser(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteResourceUserWithCallback invokes the emr.DeleteResourceUser API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteresourceuser.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteResourceUserWithCallback(request *DeleteResourceUserRequest, callback func(response *DeleteResourceUserResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteResourceUserResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteResourceUser(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteResourceUserRequest is the request struct for api DeleteResourceUser
+type DeleteResourceUserRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceId      string           `position:"Query" name:"ResourceId"`
+	ResourceType    string           `position:"Query" name:"ResourceType"`
+	AliyunUserId    string           `position:"Query" name:"AliyunUserId"`
+}
+
+// DeleteResourceUserResponse is the response struct for api DeleteResourceUser
+type DeleteResourceUserResponse struct {
+	*responses.BaseResponse
+	Paging    bool   `json:"Paging" xml:"Paging"`
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Data      bool   `json:"Data" xml:"Data"`
+}
+
+// CreateDeleteResourceUserRequest creates a request to invoke DeleteResourceUser API
+func CreateDeleteResourceUserRequest() (request *DeleteResourceUserRequest) {
+	request = &DeleteResourceUserRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteResourceUser", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteResourceUserResponse creates a response to parse from DeleteResourceUser response
+func CreateDeleteResourceUserResponse() (response *DeleteResourceUserResponse) {
+	response = &DeleteResourceUserResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/emr/delete_user_group.go

@@ -0,0 +1,106 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteUserGroup invokes the emr.DeleteUserGroup API synchronously
+// api document: https://help.aliyun.com/api/emr/deleteusergroup.html
+func (client *Client) DeleteUserGroup(request *DeleteUserGroupRequest) (response *DeleteUserGroupResponse, err error) {
+	response = CreateDeleteUserGroupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteUserGroupWithChan invokes the emr.DeleteUserGroup API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteusergroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteUserGroupWithChan(request *DeleteUserGroupRequest) (<-chan *DeleteUserGroupResponse, <-chan error) {
+	responseChan := make(chan *DeleteUserGroupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteUserGroup(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteUserGroupWithCallback invokes the emr.DeleteUserGroup API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteusergroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteUserGroupWithCallback(request *DeleteUserGroupRequest, callback func(response *DeleteUserGroupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteUserGroupResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteUserGroup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteUserGroupRequest is the request struct for api DeleteUserGroup
+type DeleteUserGroupRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	GroupId         requests.Integer `position:"Query" name:"GroupId"`
+}
+
+// DeleteUserGroupResponse is the response struct for api DeleteUserGroup
+type DeleteUserGroupResponse struct {
+	*responses.BaseResponse
+	Paging    bool   `json:"Paging" xml:"Paging"`
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Data      bool   `json:"Data" xml:"Data"`
+}
+
+// CreateDeleteUserGroupRequest creates a request to invoke DeleteUserGroup API
+func CreateDeleteUserGroupRequest() (request *DeleteUserGroupRequest) {
+	request = &DeleteUserGroupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteUserGroup", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteUserGroupResponse creates a response to parse from DeleteUserGroup response
+func CreateDeleteUserGroupResponse() (response *DeleteUserGroupResponse) {
+	response = &DeleteUserGroupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/emr/delete_user_resource_role.go

@@ -0,0 +1,109 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteUserResourceRole invokes the emr.DeleteUserResourceRole API synchronously
+// api document: https://help.aliyun.com/api/emr/deleteuserresourcerole.html
+func (client *Client) DeleteUserResourceRole(request *DeleteUserResourceRoleRequest) (response *DeleteUserResourceRoleResponse, err error) {
+	response = CreateDeleteUserResourceRoleResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteUserResourceRoleWithChan invokes the emr.DeleteUserResourceRole API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteuserresourcerole.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteUserResourceRoleWithChan(request *DeleteUserResourceRoleRequest) (<-chan *DeleteUserResourceRoleResponse, <-chan error) {
+	responseChan := make(chan *DeleteUserResourceRoleResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteUserResourceRole(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteUserResourceRoleWithCallback invokes the emr.DeleteUserResourceRole API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteuserresourcerole.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteUserResourceRoleWithCallback(request *DeleteUserResourceRoleRequest, callback func(response *DeleteUserResourceRoleResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteUserResourceRoleResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteUserResourceRole(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteUserResourceRoleRequest is the request struct for api DeleteUserResourceRole
+type DeleteUserResourceRoleRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceId      string           `position:"Query" name:"ResourceId"`
+	RoleId          requests.Integer `position:"Query" name:"RoleId"`
+	ResourceType    string           `position:"Query" name:"ResourceType"`
+	AliyunUserId    string           `position:"Query" name:"AliyunUserId"`
+}
+
+// DeleteUserResourceRoleResponse is the response struct for api DeleteUserResourceRole
+type DeleteUserResourceRoleResponse struct {
+	*responses.BaseResponse
+	Paging    bool   `json:"Paging" xml:"Paging"`
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Data      bool   `json:"Data" xml:"Data"`
+}
+
+// CreateDeleteUserResourceRoleRequest creates a request to invoke DeleteUserResourceRole API
+func CreateDeleteUserResourceRoleRequest() (request *DeleteUserResourceRoleRequest) {
+	request = &DeleteUserResourceRoleRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteUserResourceRole", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteUserResourceRoleResponse creates a response to parse from DeleteUserResourceRole response
+func CreateDeleteUserResourceRoleResponse() (response *DeleteUserResourceRoleResponse) {
+	response = &DeleteUserResourceRoleResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/emr/describe_cluster_resource_pool_scheduler_type_for_admin.go

@@ -0,0 +1,108 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeClusterResourcePoolSchedulerTypeForAdmin invokes the emr.DescribeClusterResourcePoolSchedulerTypeForAdmin API synchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterresourcepoolschedulertypeforadmin.html
+func (client *Client) DescribeClusterResourcePoolSchedulerTypeForAdmin(request *DescribeClusterResourcePoolSchedulerTypeForAdminRequest) (response *DescribeClusterResourcePoolSchedulerTypeForAdminResponse, err error) {
+	response = CreateDescribeClusterResourcePoolSchedulerTypeForAdminResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeClusterResourcePoolSchedulerTypeForAdminWithChan invokes the emr.DescribeClusterResourcePoolSchedulerTypeForAdmin API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterresourcepoolschedulertypeforadmin.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterResourcePoolSchedulerTypeForAdminWithChan(request *DescribeClusterResourcePoolSchedulerTypeForAdminRequest) (<-chan *DescribeClusterResourcePoolSchedulerTypeForAdminResponse, <-chan error) {
+	responseChan := make(chan *DescribeClusterResourcePoolSchedulerTypeForAdminResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeClusterResourcePoolSchedulerTypeForAdmin(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeClusterResourcePoolSchedulerTypeForAdminWithCallback invokes the emr.DescribeClusterResourcePoolSchedulerTypeForAdmin API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterresourcepoolschedulertypeforadmin.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterResourcePoolSchedulerTypeForAdminWithCallback(request *DescribeClusterResourcePoolSchedulerTypeForAdminRequest, callback func(response *DescribeClusterResourcePoolSchedulerTypeForAdminResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeClusterResourcePoolSchedulerTypeForAdminResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeClusterResourcePoolSchedulerTypeForAdmin(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeClusterResourcePoolSchedulerTypeForAdminRequest is the request struct for api DescribeClusterResourcePoolSchedulerTypeForAdmin
+type DescribeClusterResourcePoolSchedulerTypeForAdminRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+	UserId          string           `position:"Query" name:"UserId"`
+}
+
+// DescribeClusterResourcePoolSchedulerTypeForAdminResponse is the response struct for api DescribeClusterResourcePoolSchedulerTypeForAdmin
+type DescribeClusterResourcePoolSchedulerTypeForAdminResponse struct {
+	*responses.BaseResponse
+	RequestId            string `json:"RequestId" xml:"RequestId"`
+	CurrentSchedulerType string `json:"CurrentSchedulerType" xml:"CurrentSchedulerType"`
+	SupportSchedulerType string `json:"SupportSchedulerType" xml:"SupportSchedulerType"`
+	DefaultSchedulerType string `json:"DefaultSchedulerType" xml:"DefaultSchedulerType"`
+}
+
+// CreateDescribeClusterResourcePoolSchedulerTypeForAdminRequest creates a request to invoke DescribeClusterResourcePoolSchedulerTypeForAdmin API
+func CreateDescribeClusterResourcePoolSchedulerTypeForAdminRequest() (request *DescribeClusterResourcePoolSchedulerTypeForAdminRequest) {
+	request = &DescribeClusterResourcePoolSchedulerTypeForAdminRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeClusterResourcePoolSchedulerTypeForAdmin", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeClusterResourcePoolSchedulerTypeForAdminResponse creates a response to parse from DescribeClusterResourcePoolSchedulerTypeForAdmin response
+func CreateDescribeClusterResourcePoolSchedulerTypeForAdminResponse() (response *DescribeClusterResourcePoolSchedulerTypeForAdminResponse) {
+	response = &DescribeClusterResourcePoolSchedulerTypeForAdminResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 2 - 2
services/emr/describe_cluster_service_config.go

@@ -88,8 +88,8 @@ type DescribeClusterServiceConfigRequest struct {
 // DescribeClusterServiceConfigResponse is the response struct for api DescribeClusterServiceConfig
 // DescribeClusterServiceConfigResponse is the response struct for api DescribeClusterServiceConfig
 type DescribeClusterServiceConfigResponse struct {
 type DescribeClusterServiceConfigResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
-	RequestId string                               `json:"RequestId" xml:"RequestId"`
-	Config    ConfigInDescribeClusterServiceConfig `json:"Config" xml:"Config"`
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Config    Config `json:"Config" xml:"Config"`
 }
 }
 
 
 // CreateDescribeClusterServiceConfigRequest creates a request to invoke DescribeClusterServiceConfig API
 // CreateDescribeClusterServiceConfigRequest creates a request to invoke DescribeClusterServiceConfig API

+ 111 - 0
services/emr/describe_cluster_service_config_for_admin.go

@@ -0,0 +1,111 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeClusterServiceConfigForAdmin invokes the emr.DescribeClusterServiceConfigForAdmin API synchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterserviceconfigforadmin.html
+func (client *Client) DescribeClusterServiceConfigForAdmin(request *DescribeClusterServiceConfigForAdminRequest) (response *DescribeClusterServiceConfigForAdminResponse, err error) {
+	response = CreateDescribeClusterServiceConfigForAdminResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeClusterServiceConfigForAdminWithChan invokes the emr.DescribeClusterServiceConfigForAdmin API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterserviceconfigforadmin.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterServiceConfigForAdminWithChan(request *DescribeClusterServiceConfigForAdminRequest) (<-chan *DescribeClusterServiceConfigForAdminResponse, <-chan error) {
+	responseChan := make(chan *DescribeClusterServiceConfigForAdminResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeClusterServiceConfigForAdmin(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeClusterServiceConfigForAdminWithCallback invokes the emr.DescribeClusterServiceConfigForAdmin API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterserviceconfigforadmin.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterServiceConfigForAdminWithCallback(request *DescribeClusterServiceConfigForAdminRequest, callback func(response *DescribeClusterServiceConfigForAdminResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeClusterServiceConfigForAdminResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeClusterServiceConfigForAdmin(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeClusterServiceConfigForAdminRequest is the request struct for api DescribeClusterServiceConfigForAdmin
+type DescribeClusterServiceConfigForAdminRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	HostInstanceId  string           `position:"Query" name:"HostInstanceId"`
+	TagValue        string           `position:"Query" name:"TagValue"`
+	GroupId         string           `position:"Query" name:"GroupId"`
+	ServiceName     string           `position:"Query" name:"ServiceName"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+	UserId          string           `position:"Query" name:"UserId"`
+	ConfigVersion   string           `position:"Query" name:"ConfigVersion"`
+}
+
+// DescribeClusterServiceConfigForAdminResponse is the response struct for api DescribeClusterServiceConfigForAdmin
+type DescribeClusterServiceConfigForAdminResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Config    Config `json:"Config" xml:"Config"`
+}
+
+// CreateDescribeClusterServiceConfigForAdminRequest creates a request to invoke DescribeClusterServiceConfigForAdmin API
+func CreateDescribeClusterServiceConfigForAdminRequest() (request *DescribeClusterServiceConfigForAdminRequest) {
+	request = &DescribeClusterServiceConfigForAdminRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeClusterServiceConfigForAdmin", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeClusterServiceConfigForAdminResponse creates a response to parse from DescribeClusterServiceConfigForAdmin response
+func CreateDescribeClusterServiceConfigForAdminResponse() (response *DescribeClusterServiceConfigForAdminResponse) {
+	response = &DescribeClusterServiceConfigForAdminResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 2 - 2
services/emr/describe_cluster_service_config_history.go

@@ -85,8 +85,8 @@ type DescribeClusterServiceConfigHistoryRequest struct {
 // DescribeClusterServiceConfigHistoryResponse is the response struct for api DescribeClusterServiceConfigHistory
 // DescribeClusterServiceConfigHistoryResponse is the response struct for api DescribeClusterServiceConfigHistory
 type DescribeClusterServiceConfigHistoryResponse struct {
 type DescribeClusterServiceConfigHistoryResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
-	RequestId string `json:"RequestId" xml:"RequestId"`
-	Config    Config `json:"Config" xml:"Config"`
+	RequestId string                                      `json:"RequestId" xml:"RequestId"`
+	Config    ConfigInDescribeClusterServiceConfigHistory `json:"Config" xml:"Config"`
 }
 }
 
 
 // CreateDescribeClusterServiceConfigHistoryRequest creates a request to invoke DescribeClusterServiceConfigHistory API
 // CreateDescribeClusterServiceConfigHistoryRequest creates a request to invoke DescribeClusterServiceConfigHistory API

+ 2 - 2
services/emr/describe_cluster_service_config_tag.go

@@ -85,8 +85,8 @@ type DescribeClusterServiceConfigTagRequest struct {
 // DescribeClusterServiceConfigTagResponse is the response struct for api DescribeClusterServiceConfigTag
 // DescribeClusterServiceConfigTagResponse is the response struct for api DescribeClusterServiceConfigTag
 type DescribeClusterServiceConfigTagResponse struct {
 type DescribeClusterServiceConfigTagResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
-	RequestId     string        `json:"RequestId" xml:"RequestId"`
-	ConfigTagList ConfigTagList `json:"ConfigTagList" xml:"ConfigTagList"`
+	RequestId     string                                         `json:"RequestId" xml:"RequestId"`
+	ConfigTagList ConfigTagListInDescribeClusterServiceConfigTag `json:"ConfigTagList" xml:"ConfigTagList"`
 }
 }
 
 
 // CreateDescribeClusterServiceConfigTagRequest creates a request to invoke DescribeClusterServiceConfigTag API
 // CreateDescribeClusterServiceConfigTagRequest creates a request to invoke DescribeClusterServiceConfigTag API

+ 108 - 0
services/emr/describe_cluster_service_config_tag_for_admin.go

@@ -0,0 +1,108 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeClusterServiceConfigTagForAdmin invokes the emr.DescribeClusterServiceConfigTagForAdmin API synchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterserviceconfigtagforadmin.html
+func (client *Client) DescribeClusterServiceConfigTagForAdmin(request *DescribeClusterServiceConfigTagForAdminRequest) (response *DescribeClusterServiceConfigTagForAdminResponse, err error) {
+	response = CreateDescribeClusterServiceConfigTagForAdminResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeClusterServiceConfigTagForAdminWithChan invokes the emr.DescribeClusterServiceConfigTagForAdmin API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterserviceconfigtagforadmin.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterServiceConfigTagForAdminWithChan(request *DescribeClusterServiceConfigTagForAdminRequest) (<-chan *DescribeClusterServiceConfigTagForAdminResponse, <-chan error) {
+	responseChan := make(chan *DescribeClusterServiceConfigTagForAdminResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeClusterServiceConfigTagForAdmin(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeClusterServiceConfigTagForAdminWithCallback invokes the emr.DescribeClusterServiceConfigTagForAdmin API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterserviceconfigtagforadmin.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterServiceConfigTagForAdminWithCallback(request *DescribeClusterServiceConfigTagForAdminRequest, callback func(response *DescribeClusterServiceConfigTagForAdminResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeClusterServiceConfigTagForAdminResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeClusterServiceConfigTagForAdmin(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeClusterServiceConfigTagForAdminRequest is the request struct for api DescribeClusterServiceConfigTagForAdmin
+type DescribeClusterServiceConfigTagForAdminRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ConfigTag       string           `position:"Query" name:"ConfigTag"`
+	ServiceName     string           `position:"Query" name:"ServiceName"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+	UserId          string           `position:"Query" name:"UserId"`
+}
+
+// DescribeClusterServiceConfigTagForAdminResponse is the response struct for api DescribeClusterServiceConfigTagForAdmin
+type DescribeClusterServiceConfigTagForAdminResponse struct {
+	*responses.BaseResponse
+	RequestId     string                                                 `json:"RequestId" xml:"RequestId"`
+	ConfigTagList ConfigTagListInDescribeClusterServiceConfigTagForAdmin `json:"ConfigTagList" xml:"ConfigTagList"`
+}
+
+// CreateDescribeClusterServiceConfigTagForAdminRequest creates a request to invoke DescribeClusterServiceConfigTagForAdmin API
+func CreateDescribeClusterServiceConfigTagForAdminRequest() (request *DescribeClusterServiceConfigTagForAdminRequest) {
+	request = &DescribeClusterServiceConfigTagForAdminRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeClusterServiceConfigTagForAdmin", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeClusterServiceConfigTagForAdminResponse creates a response to parse from DescribeClusterServiceConfigTagForAdmin response
+func CreateDescribeClusterServiceConfigTagForAdminResponse() (response *DescribeClusterServiceConfigTagForAdminResponse) {
+	response = &DescribeClusterServiceConfigTagForAdminResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 2 - 2
services/emr/describe_data_source.go

@@ -95,8 +95,8 @@ type DescribeDataSourceResponse struct {
 	ClusterId   string `json:"ClusterId" xml:"ClusterId"`
 	ClusterId   string `json:"ClusterId" xml:"ClusterId"`
 	Creator     string `json:"Creator" xml:"Creator"`
 	Creator     string `json:"Creator" xml:"Creator"`
 	Modifier    string `json:"Modifier" xml:"Modifier"`
 	Modifier    string `json:"Modifier" xml:"Modifier"`
-	GmtCreate   int    `json:"GmtCreate" xml:"GmtCreate"`
-	GmtModified int    `json:"GmtModified" xml:"GmtModified"`
+	GmtCreate   int64  `json:"GmtCreate" xml:"GmtCreate"`
+	GmtModified int64  `json:"GmtModified" xml:"GmtModified"`
 }
 }
 
 
 // CreateDescribeDataSourceRequest creates a request to invoke DescribeDataSource API
 // CreateDescribeDataSourceRequest creates a request to invoke DescribeDataSource API

+ 2 - 2
services/emr/describe_data_source_command.go

@@ -87,8 +87,8 @@ type DescribeDataSourceCommandResponse struct {
 	CommandId string                              `json:"CommandId" xml:"CommandId"`
 	CommandId string                              `json:"CommandId" xml:"CommandId"`
 	HostName  string                              `json:"HostName" xml:"HostName"`
 	HostName  string                              `json:"HostName" xml:"HostName"`
 	State     string                              `json:"State" xml:"State"`
 	State     string                              `json:"State" xml:"State"`
-	StartTime int                                 `json:"StartTime" xml:"StartTime"`
-	EndTime   int                                 `json:"EndTime" xml:"EndTime"`
+	StartTime int64                               `json:"StartTime" xml:"StartTime"`
+	EndTime   int64                               `json:"EndTime" xml:"EndTime"`
 	Message   string                              `json:"Message" xml:"Message"`
 	Message   string                              `json:"Message" xml:"Message"`
 	Data      string                              `json:"Data" xml:"Data"`
 	Data      string                              `json:"Data" xml:"Data"`
 	HostList  HostListInDescribeDataSourceCommand `json:"HostList" xml:"HostList"`
 	HostList  HostListInDescribeDataSourceCommand `json:"HostList" xml:"HostList"`

+ 2 - 2
services/emr/describe_etl_job_instance.go

@@ -88,8 +88,8 @@ type DescribeETLJobInstanceResponse struct {
 	EtlJobId          string                                    `json:"EtlJobId" xml:"EtlJobId"`
 	EtlJobId          string                                    `json:"EtlJobId" xml:"EtlJobId"`
 	InstanceStatus    string                                    `json:"InstanceStatus" xml:"InstanceStatus"`
 	InstanceStatus    string                                    `json:"InstanceStatus" xml:"InstanceStatus"`
 	TriggerUser       string                                    `json:"TriggerUser" xml:"TriggerUser"`
 	TriggerUser       string                                    `json:"TriggerUser" xml:"TriggerUser"`
-	StartTime         int                                       `json:"StartTime" xml:"StartTime"`
-	EndTime           int                                       `json:"EndTime" xml:"EndTime"`
+	StartTime         int64                                     `json:"StartTime" xml:"StartTime"`
+	EndTime           int64                                     `json:"EndTime" xml:"EndTime"`
 	TriggerHistory    TriggerHistory                            `json:"TriggerHistory" xml:"TriggerHistory"`
 	TriggerHistory    TriggerHistory                            `json:"TriggerHistory" xml:"TriggerHistory"`
 	Arguments         Arguments                                 `json:"Arguments" xml:"Arguments"`
 	Arguments         Arguments                                 `json:"Arguments" xml:"Arguments"`
 	Metrics           Metrics                                   `json:"Metrics" xml:"Metrics"`
 	Metrics           Metrics                                   `json:"Metrics" xml:"Metrics"`

+ 2 - 2
services/emr/describe_execution_plan.go

@@ -89,7 +89,7 @@ type DescribeExecutionPlanResponse struct {
 	Status                string      `json:"Status" xml:"Status"`
 	Status                string      `json:"Status" xml:"Status"`
 	Strategy              string      `json:"Strategy" xml:"Strategy"`
 	Strategy              string      `json:"Strategy" xml:"Strategy"`
 	TimeInterval          int         `json:"TimeInterval" xml:"TimeInterval"`
 	TimeInterval          int         `json:"TimeInterval" xml:"TimeInterval"`
-	StartTime             int         `json:"StartTime" xml:"StartTime"`
+	StartTime             int64       `json:"StartTime" xml:"StartTime"`
 	TimeUnit              string      `json:"TimeUnit" xml:"TimeUnit"`
 	TimeUnit              string      `json:"TimeUnit" xml:"TimeUnit"`
 	DayOfWeek             string      `json:"DayOfWeek" xml:"DayOfWeek"`
 	DayOfWeek             string      `json:"DayOfWeek" xml:"DayOfWeek"`
 	DayOfMonth            string      `json:"DayOfMonth" xml:"DayOfMonth"`
 	DayOfMonth            string      `json:"DayOfMonth" xml:"DayOfMonth"`
@@ -97,7 +97,7 @@ type DescribeExecutionPlanResponse struct {
 	ClusterId             string      `json:"ClusterId" xml:"ClusterId"`
 	ClusterId             string      `json:"ClusterId" xml:"ClusterId"`
 	ClusterName           string      `json:"ClusterName" xml:"ClusterName"`
 	ClusterName           string      `json:"ClusterName" xml:"ClusterName"`
 	WorkflowApp           string      `json:"WorkflowApp" xml:"WorkflowApp"`
 	WorkflowApp           string      `json:"WorkflowApp" xml:"WorkflowApp"`
-	ExecutionPlanVersion  int         `json:"ExecutionPlanVersion" xml:"ExecutionPlanVersion"`
+	ExecutionPlanVersion  int64       `json:"ExecutionPlanVersion" xml:"ExecutionPlanVersion"`
 	ClusterInfo           ClusterInfo `json:"ClusterInfo" xml:"ClusterInfo"`
 	ClusterInfo           ClusterInfo `json:"ClusterInfo" xml:"ClusterInfo"`
 	JobInfoList           JobInfoList `json:"JobInfoList" xml:"JobInfoList"`
 	JobInfoList           JobInfoList `json:"JobInfoList" xml:"JobInfoList"`
 }
 }

+ 4 - 4
services/emr/describe_flow.go

@@ -85,15 +85,15 @@ type DescribeFlowResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
 	RequestId               string         `json:"RequestId" xml:"RequestId"`
 	RequestId               string         `json:"RequestId" xml:"RequestId"`
 	Id                      string         `json:"Id" xml:"Id"`
 	Id                      string         `json:"Id" xml:"Id"`
-	GmtCreate               int            `json:"GmtCreate" xml:"GmtCreate"`
-	GmtModified             int            `json:"GmtModified" xml:"GmtModified"`
+	GmtCreate               int64          `json:"GmtCreate" xml:"GmtCreate"`
+	GmtModified             int64          `json:"GmtModified" xml:"GmtModified"`
 	Name                    string         `json:"Name" xml:"Name"`
 	Name                    string         `json:"Name" xml:"Name"`
 	Description             string         `json:"Description" xml:"Description"`
 	Description             string         `json:"Description" xml:"Description"`
 	Type                    string         `json:"Type" xml:"Type"`
 	Type                    string         `json:"Type" xml:"Type"`
 	Status                  string         `json:"Status" xml:"Status"`
 	Status                  string         `json:"Status" xml:"Status"`
 	Periodic                bool           `json:"Periodic" xml:"Periodic"`
 	Periodic                bool           `json:"Periodic" xml:"Periodic"`
-	StartSchedule           int            `json:"StartSchedule" xml:"StartSchedule"`
-	EndSchedule             int            `json:"EndSchedule" xml:"EndSchedule"`
+	StartSchedule           int64          `json:"StartSchedule" xml:"StartSchedule"`
+	EndSchedule             int64          `json:"EndSchedule" xml:"EndSchedule"`
 	CronExpr                string         `json:"CronExpr" xml:"CronExpr"`
 	CronExpr                string         `json:"CronExpr" xml:"CronExpr"`
 	CreateCluster           bool           `json:"CreateCluster" xml:"CreateCluster"`
 	CreateCluster           bool           `json:"CreateCluster" xml:"CreateCluster"`
 	ClusterId               string         `json:"ClusterId" xml:"ClusterId"`
 	ClusterId               string         `json:"ClusterId" xml:"ClusterId"`

+ 2 - 2
services/emr/describe_flow_category.go

@@ -85,8 +85,8 @@ type DescribeFlowCategoryResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
 	RequestId    string `json:"RequestId" xml:"RequestId"`
 	RequestId    string `json:"RequestId" xml:"RequestId"`
 	Id           string `json:"Id" xml:"Id"`
 	Id           string `json:"Id" xml:"Id"`
-	GmtCreate    int    `json:"GmtCreate" xml:"GmtCreate"`
-	GmtModified  int    `json:"GmtModified" xml:"GmtModified"`
+	GmtCreate    int64  `json:"GmtCreate" xml:"GmtCreate"`
+	GmtModified  int64  `json:"GmtModified" xml:"GmtModified"`
 	Name         string `json:"Name" xml:"Name"`
 	Name         string `json:"Name" xml:"Name"`
 	ParentId     string `json:"ParentId" xml:"ParentId"`
 	ParentId     string `json:"ParentId" xml:"ParentId"`
 	Type         string `json:"Type" xml:"Type"`
 	Type         string `json:"Type" xml:"Type"`

+ 6 - 6
services/emr/describe_flow_instance.go

@@ -85,17 +85,17 @@ type DescribeFlowInstanceResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
 	RequestId          string                             `json:"RequestId" xml:"RequestId"`
 	RequestId          string                             `json:"RequestId" xml:"RequestId"`
 	Id                 string                             `json:"Id" xml:"Id"`
 	Id                 string                             `json:"Id" xml:"Id"`
-	GmtCreate          int                                `json:"GmtCreate" xml:"GmtCreate"`
-	GmtModified        int                                `json:"GmtModified" xml:"GmtModified"`
+	GmtCreate          int64                              `json:"GmtCreate" xml:"GmtCreate"`
+	GmtModified        int64                              `json:"GmtModified" xml:"GmtModified"`
 	FlowId             string                             `json:"FlowId" xml:"FlowId"`
 	FlowId             string                             `json:"FlowId" xml:"FlowId"`
 	FlowName           string                             `json:"FlowName" xml:"FlowName"`
 	FlowName           string                             `json:"FlowName" xml:"FlowName"`
 	ProjectId          string                             `json:"ProjectId" xml:"ProjectId"`
 	ProjectId          string                             `json:"ProjectId" xml:"ProjectId"`
 	Status             string                             `json:"Status" xml:"Status"`
 	Status             string                             `json:"Status" xml:"Status"`
 	ClusterId          string                             `json:"ClusterId" xml:"ClusterId"`
 	ClusterId          string                             `json:"ClusterId" xml:"ClusterId"`
-	StartTime          int                                `json:"StartTime" xml:"StartTime"`
-	EndTime            int                                `json:"EndTime" xml:"EndTime"`
-	Duration           int                                `json:"Duration" xml:"Duration"`
-	ScheduleTime       int                                `json:"ScheduleTime" xml:"ScheduleTime"`
+	StartTime          int64                              `json:"StartTime" xml:"StartTime"`
+	EndTime            int64                              `json:"EndTime" xml:"EndTime"`
+	Duration           int64                              `json:"Duration" xml:"Duration"`
+	ScheduleTime       int64                              `json:"ScheduleTime" xml:"ScheduleTime"`
 	Graph              string                             `json:"Graph" xml:"Graph"`
 	Graph              string                             `json:"Graph" xml:"Graph"`
 	CronExpression     string                             `json:"CronExpression" xml:"CronExpression"`
 	CronExpression     string                             `json:"CronExpression" xml:"CronExpression"`
 	HasNodeFailed      bool                               `json:"HasNodeFailed" xml:"HasNodeFailed"`
 	HasNodeFailed      bool                               `json:"HasNodeFailed" xml:"HasNodeFailed"`

+ 3 - 3
services/emr/describe_flow_job.go

@@ -85,14 +85,14 @@ type DescribeFlowJobResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
 	RequestId       string                        `json:"RequestId" xml:"RequestId"`
 	RequestId       string                        `json:"RequestId" xml:"RequestId"`
 	Id              string                        `json:"Id" xml:"Id"`
 	Id              string                        `json:"Id" xml:"Id"`
-	GmtCreate       int                           `json:"GmtCreate" xml:"GmtCreate"`
-	GmtModified     int                           `json:"GmtModified" xml:"GmtModified"`
+	GmtCreate       int64                         `json:"GmtCreate" xml:"GmtCreate"`
+	GmtModified     int64                         `json:"GmtModified" xml:"GmtModified"`
 	Name            string                        `json:"Name" xml:"Name"`
 	Name            string                        `json:"Name" xml:"Name"`
 	Type            string                        `json:"Type" xml:"Type"`
 	Type            string                        `json:"Type" xml:"Type"`
 	Description     string                        `json:"Description" xml:"Description"`
 	Description     string                        `json:"Description" xml:"Description"`
 	FailAct         string                        `json:"FailAct" xml:"FailAct"`
 	FailAct         string                        `json:"FailAct" xml:"FailAct"`
 	MaxRetry        int                           `json:"MaxRetry" xml:"MaxRetry"`
 	MaxRetry        int                           `json:"MaxRetry" xml:"MaxRetry"`
-	RetryInterval   int                           `json:"RetryInterval" xml:"RetryInterval"`
+	RetryInterval   int64                         `json:"RetryInterval" xml:"RetryInterval"`
 	Params          string                        `json:"Params" xml:"Params"`
 	Params          string                        `json:"Params" xml:"Params"`
 	ParamConf       string                        `json:"ParamConf" xml:"ParamConf"`
 	ParamConf       string                        `json:"ParamConf" xml:"ParamConf"`
 	CustomVariables string                        `json:"CustomVariables" xml:"CustomVariables"`
 	CustomVariables string                        `json:"CustomVariables" xml:"CustomVariables"`

+ 5 - 5
services/emr/describe_flow_node_instance.go

@@ -85,8 +85,8 @@ type DescribeFlowNodeInstanceResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
 	RequestId        string `json:"RequestId" xml:"RequestId"`
 	RequestId        string `json:"RequestId" xml:"RequestId"`
 	Id               string `json:"Id" xml:"Id"`
 	Id               string `json:"Id" xml:"Id"`
-	GmtCreate        int    `json:"GmtCreate" xml:"GmtCreate"`
-	GmtModified      int    `json:"GmtModified" xml:"GmtModified"`
+	GmtCreate        int64  `json:"GmtCreate" xml:"GmtCreate"`
+	GmtModified      int64  `json:"GmtModified" xml:"GmtModified"`
 	Type             string `json:"Type" xml:"Type"`
 	Type             string `json:"Type" xml:"Type"`
 	Status           string `json:"Status" xml:"Status"`
 	Status           string `json:"Status" xml:"Status"`
 	JobId            string `json:"JobId" xml:"JobId"`
 	JobId            string `json:"JobId" xml:"JobId"`
@@ -103,9 +103,9 @@ type DescribeFlowNodeInstanceResponse struct {
 	HostName         string `json:"HostName" xml:"HostName"`
 	HostName         string `json:"HostName" xml:"HostName"`
 	ProjectId        string `json:"ProjectId" xml:"ProjectId"`
 	ProjectId        string `json:"ProjectId" xml:"ProjectId"`
 	Pending          bool   `json:"Pending" xml:"Pending"`
 	Pending          bool   `json:"Pending" xml:"Pending"`
-	StartTime        int    `json:"StartTime" xml:"StartTime"`
-	EndTime          int    `json:"EndTime" xml:"EndTime"`
-	Duration         int    `json:"Duration" xml:"Duration"`
+	StartTime        int64  `json:"StartTime" xml:"StartTime"`
+	EndTime          int64  `json:"EndTime" xml:"EndTime"`
+	Duration         int64  `json:"Duration" xml:"Duration"`
 	Retries          int    `json:"Retries" xml:"Retries"`
 	Retries          int    `json:"Retries" xml:"Retries"`
 	ExternalId       string `json:"ExternalId" xml:"ExternalId"`
 	ExternalId       string `json:"ExternalId" xml:"ExternalId"`
 	ExternalSubId    string `json:"ExternalSubId" xml:"ExternalSubId"`
 	ExternalSubId    string `json:"ExternalSubId" xml:"ExternalSubId"`

+ 2 - 2
services/emr/describe_flow_project.go

@@ -84,8 +84,8 @@ type DescribeFlowProjectResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
 	RequestId   string `json:"RequestId" xml:"RequestId"`
 	RequestId   string `json:"RequestId" xml:"RequestId"`
 	Id          string `json:"Id" xml:"Id"`
 	Id          string `json:"Id" xml:"Id"`
-	GmtCreate   int    `json:"GmtCreate" xml:"GmtCreate"`
-	GmtModified int    `json:"GmtModified" xml:"GmtModified"`
+	GmtCreate   int64  `json:"GmtCreate" xml:"GmtCreate"`
+	GmtModified int64  `json:"GmtModified" xml:"GmtModified"`
 	UserId      string `json:"UserId" xml:"UserId"`
 	UserId      string `json:"UserId" xml:"UserId"`
 	Name        string `json:"Name" xml:"Name"`
 	Name        string `json:"Name" xml:"Name"`
 	Description string `json:"Description" xml:"Description"`
 	Description string `json:"Description" xml:"Description"`

+ 2 - 2
services/emr/describe_flow_project_cluster_setting.go

@@ -84,8 +84,8 @@ type DescribeFlowProjectClusterSettingRequest struct {
 type DescribeFlowProjectClusterSettingResponse struct {
 type DescribeFlowProjectClusterSettingResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
 	RequestId    string                                       `json:"RequestId" xml:"RequestId"`
 	RequestId    string                                       `json:"RequestId" xml:"RequestId"`
-	GmtCreate    int                                          `json:"GmtCreate" xml:"GmtCreate"`
-	GmtModified  int                                          `json:"GmtModified" xml:"GmtModified"`
+	GmtCreate    int64                                        `json:"GmtCreate" xml:"GmtCreate"`
+	GmtModified  int64                                        `json:"GmtModified" xml:"GmtModified"`
 	ProjectId    string                                       `json:"ProjectId" xml:"ProjectId"`
 	ProjectId    string                                       `json:"ProjectId" xml:"ProjectId"`
 	ClusterId    string                                       `json:"ClusterId" xml:"ClusterId"`
 	ClusterId    string                                       `json:"ClusterId" xml:"ClusterId"`
 	DefaultUser  string                                       `json:"DefaultUser" xml:"DefaultUser"`
 	DefaultUser  string                                       `json:"DefaultUser" xml:"DefaultUser"`

+ 112 - 0
services/emr/describe_host_pool.go

@@ -0,0 +1,112 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeHostPool invokes the emr.DescribeHostPool API synchronously
+// api document: https://help.aliyun.com/api/emr/describehostpool.html
+func (client *Client) DescribeHostPool(request *DescribeHostPoolRequest) (response *DescribeHostPoolResponse, err error) {
+	response = CreateDescribeHostPoolResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeHostPoolWithChan invokes the emr.DescribeHostPool API asynchronously
+// api document: https://help.aliyun.com/api/emr/describehostpool.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeHostPoolWithChan(request *DescribeHostPoolRequest) (<-chan *DescribeHostPoolResponse, <-chan error) {
+	responseChan := make(chan *DescribeHostPoolResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeHostPool(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeHostPoolWithCallback invokes the emr.DescribeHostPool API asynchronously
+// api document: https://help.aliyun.com/api/emr/describehostpool.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeHostPoolWithCallback(request *DescribeHostPoolRequest, callback func(response *DescribeHostPoolResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeHostPoolResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeHostPool(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeHostPoolRequest is the request struct for api DescribeHostPool
+type DescribeHostPoolRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	BizId           string           `position:"Query" name:"BizId"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+}
+
+// DescribeHostPoolResponse is the response struct for api DescribeHostPool
+type DescribeHostPoolResponse struct {
+	*responses.BaseResponse
+	RequestId   string `json:"RequestId" xml:"RequestId"`
+	Name        string `json:"Name" xml:"Name"`
+	BizId       string `json:"BizId" xml:"BizId"`
+	Status      string `json:"Status" xml:"Status"`
+	Type        string `json:"Type" xml:"Type"`
+	Description string `json:"Description" xml:"Description"`
+	HostCount   int    `json:"HostCount" xml:"HostCount"`
+	GmtCreate   int64  `json:"GmtCreate" xml:"GmtCreate"`
+}
+
+// CreateDescribeHostPoolRequest creates a request to invoke DescribeHostPool API
+func CreateDescribeHostPoolRequest() (request *DescribeHostPoolRequest) {
+	request = &DescribeHostPoolRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeHostPool", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeHostPoolResponse creates a response to parse from DescribeHostPool response
+func CreateDescribeHostPoolResponse() (response *DescribeHostPoolResponse) {
+	response = &DescribeHostPoolResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 118 - 0
services/emr/describe_hp_host.go

@@ -0,0 +1,118 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeHpHost invokes the emr.DescribeHpHost API synchronously
+// api document: https://help.aliyun.com/api/emr/describehphost.html
+func (client *Client) DescribeHpHost(request *DescribeHpHostRequest) (response *DescribeHpHostResponse, err error) {
+	response = CreateDescribeHpHostResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeHpHostWithChan invokes the emr.DescribeHpHost API asynchronously
+// api document: https://help.aliyun.com/api/emr/describehphost.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeHpHostWithChan(request *DescribeHpHostRequest) (<-chan *DescribeHpHostResponse, <-chan error) {
+	responseChan := make(chan *DescribeHpHostResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeHpHost(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeHpHostWithCallback invokes the emr.DescribeHpHost API asynchronously
+// api document: https://help.aliyun.com/api/emr/describehphost.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeHpHostWithCallback(request *DescribeHpHostRequest, callback func(response *DescribeHpHostResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeHpHostResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeHpHost(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeHpHostRequest is the request struct for api DescribeHpHost
+type DescribeHpHostRequest struct {
+	*requests.RpcRequest
+	HpHostBizId     string           `position:"Query" name:"HpHostBizId"`
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+}
+
+// DescribeHpHostResponse is the response struct for api DescribeHpHost
+type DescribeHpHostResponse struct {
+	*responses.BaseResponse
+	RequestId           string                              `json:"RequestId" xml:"RequestId"`
+	BizId               string                              `json:"BizId" xml:"BizId"`
+	HostName            string                              `json:"HostName" xml:"HostName"`
+	InnerIp             string                              `json:"InnerIp" xml:"InnerIp"`
+	Role                string                              `json:"Role" xml:"Role"`
+	Status              string                              `json:"Status" xml:"Status"`
+	CpuCore             int                                 `json:"CpuCore" xml:"CpuCore"`
+	MemSize             int                                 `json:"MemSize" xml:"MemSize"`
+	VpcId               string                              `json:"VpcId" xml:"VpcId"`
+	VswitchId           string                              `json:"VswitchId" xml:"VswitchId"`
+	SecurityGroupId     string                              `json:"SecurityGroupId" xml:"SecurityGroupId"`
+	ExternalIp          string                              `json:"ExternalIp" xml:"ExternalIp"`
+	ExternalKey         string                              `json:"ExternalKey" xml:"ExternalKey"`
+	InstalledComponents InstalledComponentsInDescribeHpHost `json:"InstalledComponents" xml:"InstalledComponents"`
+	DiskList            DiskListInDescribeHpHost            `json:"DiskList" xml:"DiskList"`
+}
+
+// CreateDescribeHpHostRequest creates a request to invoke DescribeHpHost API
+func CreateDescribeHpHostRequest() (request *DescribeHpHostRequest) {
+	request = &DescribeHpHostRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeHpHost", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeHpHostResponse creates a response to parse from DescribeHpHost response
+func CreateDescribeHpHostResponse() (response *DescribeHpHostResponse) {
+	response = &DescribeHpHostResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 119 - 0
services/emr/describe_kafka_broker.go

@@ -0,0 +1,119 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeKafkaBroker invokes the emr.DescribeKafkaBroker API synchronously
+// api document: https://help.aliyun.com/api/emr/describekafkabroker.html
+func (client *Client) DescribeKafkaBroker(request *DescribeKafkaBrokerRequest) (response *DescribeKafkaBrokerResponse, err error) {
+	response = CreateDescribeKafkaBrokerResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeKafkaBrokerWithChan invokes the emr.DescribeKafkaBroker API asynchronously
+// api document: https://help.aliyun.com/api/emr/describekafkabroker.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeKafkaBrokerWithChan(request *DescribeKafkaBrokerRequest) (<-chan *DescribeKafkaBrokerResponse, <-chan error) {
+	responseChan := make(chan *DescribeKafkaBrokerResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeKafkaBroker(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeKafkaBrokerWithCallback invokes the emr.DescribeKafkaBroker API asynchronously
+// api document: https://help.aliyun.com/api/emr/describekafkabroker.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeKafkaBrokerWithCallback(request *DescribeKafkaBrokerRequest, callback func(response *DescribeKafkaBrokerResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeKafkaBrokerResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeKafkaBroker(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeKafkaBrokerRequest is the request struct for api DescribeKafkaBroker
+type DescribeKafkaBrokerRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	HostId          string           `position:"Query" name:"HostId"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+}
+
+// DescribeKafkaBrokerResponse is the response struct for api DescribeKafkaBroker
+type DescribeKafkaBrokerResponse struct {
+	*responses.BaseResponse
+	RequestId         string                         `json:"RequestId" xml:"RequestId"`
+	BrokerId          int                            `json:"BrokerId" xml:"BrokerId"`
+	HostId            string                         `json:"HostId" xml:"HostId"`
+	HostName          string                         `json:"HostName" xml:"HostName"`
+	HostIp            string                         `json:"HostIp" xml:"HostIp"`
+	Status            string                         `json:"Status" xml:"Status"`
+	PartitionCount    int                            `json:"PartitionCount" xml:"PartitionCount"`
+	LeaderCount       int                            `json:"LeaderCount" xml:"LeaderCount"`
+	TopicCount        int                            `json:"TopicCount" xml:"TopicCount"`
+	DiskUnbalanceRate string                         `json:"DiskUnbalanceRate" xml:"DiskUnbalanceRate"`
+	DiskUsageMean     string                         `json:"DiskUsageMean" xml:"DiskUsageMean"`
+	DiskUsageMax      string                         `json:"DiskUsageMax" xml:"DiskUsageMax"`
+	DiskCapacity      int                            `json:"DiskCapacity" xml:"DiskCapacity"`
+	Traffic           string                         `json:"Traffic" xml:"Traffic"`
+	TopicList         TopicListInDescribeKafkaBroker `json:"TopicList" xml:"TopicList"`
+}
+
+// CreateDescribeKafkaBrokerRequest creates a request to invoke DescribeKafkaBroker API
+func CreateDescribeKafkaBrokerRequest() (request *DescribeKafkaBrokerRequest) {
+	request = &DescribeKafkaBrokerRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeKafkaBroker", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeKafkaBrokerResponse creates a response to parse from DescribeKafkaBroker response
+func CreateDescribeKafkaBrokerResponse() (response *DescribeKafkaBrokerResponse) {
+	response = &DescribeKafkaBrokerResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/emr/describe_kafka_reassign.go

@@ -0,0 +1,112 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeKafkaReassign invokes the emr.DescribeKafkaReassign API synchronously
+// api document: https://help.aliyun.com/api/emr/describekafkareassign.html
+func (client *Client) DescribeKafkaReassign(request *DescribeKafkaReassignRequest) (response *DescribeKafkaReassignResponse, err error) {
+	response = CreateDescribeKafkaReassignResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeKafkaReassignWithChan invokes the emr.DescribeKafkaReassign API asynchronously
+// api document: https://help.aliyun.com/api/emr/describekafkareassign.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeKafkaReassignWithChan(request *DescribeKafkaReassignRequest) (<-chan *DescribeKafkaReassignResponse, <-chan error) {
+	responseChan := make(chan *DescribeKafkaReassignResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeKafkaReassign(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeKafkaReassignWithCallback invokes the emr.DescribeKafkaReassign API asynchronously
+// api document: https://help.aliyun.com/api/emr/describekafkareassign.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeKafkaReassignWithCallback(request *DescribeKafkaReassignRequest, callback func(response *DescribeKafkaReassignResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeKafkaReassignResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeKafkaReassign(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeKafkaReassignRequest is the request struct for api DescribeKafkaReassign
+type DescribeKafkaReassignRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ReassignId      string           `position:"Query" name:"ReassignId"`
+}
+
+// DescribeKafkaReassignResponse is the response struct for api DescribeKafkaReassign
+type DescribeKafkaReassignResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId" xml:"RequestId"`
+	Id             string `json:"Id" xml:"Id"`
+	Status         string `json:"Status" xml:"Status"`
+	AssignProcess  int    `json:"AssignProcess" xml:"AssignProcess"`
+	StartTime      int64  `json:"StartTime" xml:"StartTime"`
+	EndTime        int64  `json:"EndTime" xml:"EndTime"`
+	TopicCount     int    `json:"TopicCount" xml:"TopicCount"`
+	PartitionCount int    `json:"PartitionCount" xml:"PartitionCount"`
+	Throttle       int64  `json:"Throttle" xml:"Throttle"`
+}
+
+// CreateDescribeKafkaReassignRequest creates a request to invoke DescribeKafkaReassign API
+func CreateDescribeKafkaReassignRequest() (request *DescribeKafkaReassignRequest) {
+	request = &DescribeKafkaReassignRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeKafkaReassign", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeKafkaReassignResponse creates a response to parse from DescribeKafkaReassign response
+func CreateDescribeKafkaReassignResponse() (response *DescribeKafkaReassignResponse) {
+	response = &DescribeKafkaReassignResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 2 - 2
services/emr/describe_scaling_activity.go

@@ -87,8 +87,8 @@ type DescribeScalingActivityResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
 	RequestId     string `json:"RequestId" xml:"RequestId"`
 	RequestId     string `json:"RequestId" xml:"RequestId"`
 	BizId         string `json:"BizId" xml:"BizId"`
 	BizId         string `json:"BizId" xml:"BizId"`
-	StartTime     int    `json:"StartTime" xml:"StartTime"`
-	EndTime       int    `json:"EndTime" xml:"EndTime"`
+	StartTime     int64  `json:"StartTime" xml:"StartTime"`
+	EndTime       int64  `json:"EndTime" xml:"EndTime"`
 	InstanceIds   string `json:"InstanceIds" xml:"InstanceIds"`
 	InstanceIds   string `json:"InstanceIds" xml:"InstanceIds"`
 	TotalCapacity int    `json:"TotalCapacity" xml:"TotalCapacity"`
 	TotalCapacity int    `json:"TotalCapacity" xml:"TotalCapacity"`
 	Cause         string `json:"Cause" xml:"Cause"`
 	Cause         string `json:"Cause" xml:"Cause"`

+ 116 - 0
services/emr/describe_user.go

@@ -0,0 +1,116 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeUser invokes the emr.DescribeUser API synchronously
+// api document: https://help.aliyun.com/api/emr/describeuser.html
+func (client *Client) DescribeUser(request *DescribeUserRequest) (response *DescribeUserResponse, err error) {
+	response = CreateDescribeUserResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeUserWithChan invokes the emr.DescribeUser API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeuser.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeUserWithChan(request *DescribeUserRequest) (<-chan *DescribeUserResponse, <-chan error) {
+	responseChan := make(chan *DescribeUserResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeUser(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeUserWithCallback invokes the emr.DescribeUser API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeuser.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeUserWithCallback(request *DescribeUserRequest, callback func(response *DescribeUserResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeUserResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeUser(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeUserRequest is the request struct for api DescribeUser
+type DescribeUserRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	AliyunUserId    string           `position:"Query" name:"AliyunUserId"`
+}
+
+// DescribeUserResponse is the response struct for api DescribeUser
+type DescribeUserResponse struct {
+	*responses.BaseResponse
+	Paging         bool                         `json:"Paging" xml:"Paging"`
+	RequestId      string                       `json:"RequestId" xml:"RequestId"`
+	AliyunUserId   string                       `json:"AliyunUserId" xml:"AliyunUserId"`
+	UserName       string                       `json:"UserName" xml:"UserName"`
+	UserType       string                       `json:"UserType" xml:"UserType"`
+	Status         string                       `json:"Status" xml:"Status"`
+	IsSuperAdmin   string                       `json:"IsSuperAdmin" xml:"IsSuperAdmin"`
+	Description    string                       `json:"Description" xml:"Description"`
+	GmtCreate      string                       `json:"GmtCreate" xml:"GmtCreate"`
+	GmtModified    string                       `json:"GmtModified" xml:"GmtModified"`
+	RoleDTOList    RoleDTOListInDescribeUser    `json:"RoleDTOList" xml:"RoleDTOList"`
+	GroupDTOList   GroupDTOListInDescribeUser   `json:"GroupDTOList" xml:"GroupDTOList"`
+	AccountDTOList AccountDTOListInDescribeUser `json:"AccountDTOList" xml:"AccountDTOList"`
+}
+
+// CreateDescribeUserRequest creates a request to invoke DescribeUser API
+func CreateDescribeUserRequest() (request *DescribeUserRequest) {
+	request = &DescribeUserRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeUser", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeUserResponse creates a response to parse from DescribeUser response
+func CreateDescribeUserResponse() (response *DescribeUserResponse) {
+	response = &DescribeUserResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/emr/describe_user_group.go

@@ -0,0 +1,110 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeUserGroup invokes the emr.DescribeUserGroup API synchronously
+// api document: https://help.aliyun.com/api/emr/describeusergroup.html
+func (client *Client) DescribeUserGroup(request *DescribeUserGroupRequest) (response *DescribeUserGroupResponse, err error) {
+	response = CreateDescribeUserGroupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeUserGroupWithChan invokes the emr.DescribeUserGroup API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeusergroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeUserGroupWithChan(request *DescribeUserGroupRequest) (<-chan *DescribeUserGroupResponse, <-chan error) {
+	responseChan := make(chan *DescribeUserGroupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeUserGroup(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeUserGroupWithCallback invokes the emr.DescribeUserGroup API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeusergroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeUserGroupWithCallback(request *DescribeUserGroupRequest, callback func(response *DescribeUserGroupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeUserGroupResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeUserGroup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeUserGroupRequest is the request struct for api DescribeUserGroup
+type DescribeUserGroupRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	GroupId         requests.Integer `position:"Query" name:"GroupId"`
+}
+
+// DescribeUserGroupResponse is the response struct for api DescribeUserGroup
+type DescribeUserGroupResponse struct {
+	*responses.BaseResponse
+	Paging      bool                           `json:"Paging" xml:"Paging"`
+	RequestId   string                         `json:"RequestId" xml:"RequestId"`
+	Id          int64                          `json:"Id" xml:"Id"`
+	Type        string                         `json:"Type" xml:"Type"`
+	Name        string                         `json:"Name" xml:"Name"`
+	GmtCreate   string                         `json:"GmtCreate" xml:"GmtCreate"`
+	RoleDTOList RoleDTOListInDescribeUserGroup `json:"RoleDTOList" xml:"RoleDTOList"`
+}
+
+// CreateDescribeUserGroupRequest creates a request to invoke DescribeUserGroup API
+func CreateDescribeUserGroupRequest() (request *DescribeUserGroupRequest) {
+	request = &DescribeUserGroupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeUserGroup", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeUserGroupResponse creates a response to parse from DescribeUserGroup response
+func CreateDescribeUserGroupResponse() (response *DescribeUserGroupResponse) {
+	response = &DescribeUserGroupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 1 - 1
services/emr/describe_user_statistics.go

@@ -83,7 +83,7 @@ type DescribeUserStatisticsRequest struct {
 // DescribeUserStatisticsResponse is the response struct for api DescribeUserStatistics
 // DescribeUserStatisticsResponse is the response struct for api DescribeUserStatistics
 type DescribeUserStatisticsResponse struct {
 type DescribeUserStatisticsResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
-	Id                        int    `json:"Id" xml:"Id"`
+	Id                        int64  `json:"Id" xml:"Id"`
 	UserId                    string `json:"UserId" xml:"UserId"`
 	UserId                    string `json:"UserId" xml:"UserId"`
 	JobNum                    int    `json:"JobNum" xml:"JobNum"`
 	JobNum                    int    `json:"JobNum" xml:"JobNum"`
 	ExecutePlanNum            int    `json:"ExecutePlanNum" xml:"ExecutePlanNum"`
 	ExecutePlanNum            int    `json:"ExecutePlanNum" xml:"ExecutePlanNum"`

+ 106 - 0
services/emr/describe_workspace_repo_setting.go

@@ -0,0 +1,106 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeWorkspaceRepoSetting invokes the emr.DescribeWorkspaceRepoSetting API synchronously
+// api document: https://help.aliyun.com/api/emr/describeworkspacereposetting.html
+func (client *Client) DescribeWorkspaceRepoSetting(request *DescribeWorkspaceRepoSettingRequest) (response *DescribeWorkspaceRepoSettingResponse, err error) {
+	response = CreateDescribeWorkspaceRepoSettingResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeWorkspaceRepoSettingWithChan invokes the emr.DescribeWorkspaceRepoSetting API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeworkspacereposetting.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeWorkspaceRepoSettingWithChan(request *DescribeWorkspaceRepoSettingRequest) (<-chan *DescribeWorkspaceRepoSettingResponse, <-chan error) {
+	responseChan := make(chan *DescribeWorkspaceRepoSettingResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeWorkspaceRepoSetting(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeWorkspaceRepoSettingWithCallback invokes the emr.DescribeWorkspaceRepoSetting API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeworkspacereposetting.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeWorkspaceRepoSettingWithCallback(request *DescribeWorkspaceRepoSettingRequest, callback func(response *DescribeWorkspaceRepoSettingResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeWorkspaceRepoSettingResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeWorkspaceRepoSetting(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeWorkspaceRepoSettingRequest is the request struct for api DescribeWorkspaceRepoSetting
+type DescribeWorkspaceRepoSettingRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	WorkspaceId     string           `position:"Query" name:"WorkspaceId"`
+}
+
+// DescribeWorkspaceRepoSettingResponse is the response struct for api DescribeWorkspaceRepoSetting
+type DescribeWorkspaceRepoSettingResponse struct {
+	*responses.BaseResponse
+	RequestId string    `json:"RequestId" xml:"RequestId"`
+	RepoMaven RepoMaven `json:"RepoMaven" xml:"RepoMaven"`
+	RepoPip   RepoPip   `json:"RepoPip " xml:"RepoPip "`
+}
+
+// CreateDescribeWorkspaceRepoSettingRequest creates a request to invoke DescribeWorkspaceRepoSetting API
+func CreateDescribeWorkspaceRepoSettingRequest() (request *DescribeWorkspaceRepoSettingRequest) {
+	request = &DescribeWorkspaceRepoSettingRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeWorkspaceRepoSetting", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeWorkspaceRepoSettingResponse creates a response to parse from DescribeWorkspaceRepoSetting response
+func CreateDescribeWorkspaceRepoSettingResponse() (response *DescribeWorkspaceRepoSettingResponse) {
+	response = &DescribeWorkspaceRepoSettingResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/describe_workspace_resource_setting.go

@@ -0,0 +1,105 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeWorkspaceResourceSetting invokes the emr.DescribeWorkspaceResourceSetting API synchronously
+// api document: https://help.aliyun.com/api/emr/describeworkspaceresourcesetting.html
+func (client *Client) DescribeWorkspaceResourceSetting(request *DescribeWorkspaceResourceSettingRequest) (response *DescribeWorkspaceResourceSettingResponse, err error) {
+	response = CreateDescribeWorkspaceResourceSettingResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeWorkspaceResourceSettingWithChan invokes the emr.DescribeWorkspaceResourceSetting API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeworkspaceresourcesetting.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeWorkspaceResourceSettingWithChan(request *DescribeWorkspaceResourceSettingRequest) (<-chan *DescribeWorkspaceResourceSettingResponse, <-chan error) {
+	responseChan := make(chan *DescribeWorkspaceResourceSettingResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeWorkspaceResourceSetting(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeWorkspaceResourceSettingWithCallback invokes the emr.DescribeWorkspaceResourceSetting API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeworkspaceresourcesetting.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeWorkspaceResourceSettingWithCallback(request *DescribeWorkspaceResourceSettingRequest, callback func(response *DescribeWorkspaceResourceSettingResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeWorkspaceResourceSettingResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeWorkspaceResourceSetting(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeWorkspaceResourceSettingRequest is the request struct for api DescribeWorkspaceResourceSetting
+type DescribeWorkspaceResourceSettingRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	WorkspaceId     string           `position:"Query" name:"WorkspaceId"`
+}
+
+// DescribeWorkspaceResourceSettingResponse is the response struct for api DescribeWorkspaceResourceSetting
+type DescribeWorkspaceResourceSettingResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Oss       Oss    `json:"Oss" xml:"Oss"`
+}
+
+// CreateDescribeWorkspaceResourceSettingRequest creates a request to invoke DescribeWorkspaceResourceSetting API
+func CreateDescribeWorkspaceResourceSettingRequest() (request *DescribeWorkspaceResourceSettingRequest) {
+	request = &DescribeWorkspaceResourceSettingRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeWorkspaceResourceSetting", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeWorkspaceResourceSettingResponse creates a response to parse from DescribeWorkspaceResourceSetting response
+func CreateDescribeWorkspaceResourceSettingResponse() (response *DescribeWorkspaceResourceSettingResponse) {
+	response = &DescribeWorkspaceResourceSettingResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 27 - 0
services/emr/endpoint.go

@@ -0,0 +1,27 @@
+package emr
+
+// EndpointMap Endpoint Data
+var EndpointMap map[string]string
+
+// EndpointType regional or central
+var EndpointType = "regional"
+
+// GetEndpointMap Get Endpoint Data Map
+func GetEndpointMap() map[string]string {
+	if EndpointMap == nil {
+		EndpointMap = map[string]string{
+			"cn-shenzhen":    "emr.aliyuncs.com",
+			"cn-beijing":     "emr.aliyuncs.com",
+			"cn-shanghai":    "emr.aliyuncs.com",
+			"ap-southeast-1": "emr.aliyuncs.com",
+			"us-west-1":      "emr.aliyuncs.com",
+			"cn-hangzhou":    "emr.aliyuncs.com",
+		}
+	}
+	return EndpointMap
+}
+
+// GetEndpointType Get Endpoint Type Value
+func GetEndpointType() string {
+	return EndpointType
+}

+ 116 - 0
services/emr/get_audit_logs.go

@@ -0,0 +1,116 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// GetAuditLogs invokes the emr.GetAuditLogs API synchronously
+// api document: https://help.aliyun.com/api/emr/getauditlogs.html
+func (client *Client) GetAuditLogs(request *GetAuditLogsRequest) (response *GetAuditLogsResponse, err error) {
+	response = CreateGetAuditLogsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetAuditLogsWithChan invokes the emr.GetAuditLogs API asynchronously
+// api document: https://help.aliyun.com/api/emr/getauditlogs.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetAuditLogsWithChan(request *GetAuditLogsRequest) (<-chan *GetAuditLogsResponse, <-chan error) {
+	responseChan := make(chan *GetAuditLogsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetAuditLogs(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetAuditLogsWithCallback invokes the emr.GetAuditLogs API asynchronously
+// api document: https://help.aliyun.com/api/emr/getauditlogs.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetAuditLogsWithCallback(request *GetAuditLogsRequest, callback func(response *GetAuditLogsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetAuditLogsResponse
+		var err error
+		defer close(result)
+		response, err = client.GetAuditLogs(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetAuditLogsRequest is the request struct for api GetAuditLogs
+type GetAuditLogsRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PageCount       requests.Integer `position:"Query" name:"PageCount"`
+	OrderMode       string           `position:"Query" name:"OrderMode"`
+	EntityId        string           `position:"Query" name:"EntityId"`
+	PageNumber      requests.Integer `position:"Query" name:"PageNumber"`
+	Limit           requests.Integer `position:"Query" name:"Limit"`
+	PageSize        requests.Integer `position:"Query" name:"PageSize"`
+	CurrentSize     requests.Integer `position:"Query" name:"CurrentSize"`
+	OrderField      string           `position:"Query" name:"OrderField"`
+	Operation       string           `position:"Query" name:"Operation"`
+}
+
+// GetAuditLogsResponse is the response struct for api GetAuditLogs
+type GetAuditLogsResponse struct {
+	*responses.BaseResponse
+	RequestId  string              `json:"RequestId" xml:"RequestId"`
+	PageNumber int                 `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int                 `json:"PageSize" xml:"PageSize"`
+	TotalCount int                 `json:"TotalCount" xml:"TotalCount"`
+	Items      ItemsInGetAuditLogs `json:"Items" xml:"Items"`
+}
+
+// CreateGetAuditLogsRequest creates a request to invoke GetAuditLogs API
+func CreateGetAuditLogsRequest() (request *GetAuditLogsRequest) {
+	request = &GetAuditLogsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "GetAuditLogs", "emr", "openAPI")
+	return
+}
+
+// CreateGetAuditLogsResponse creates a response to parse from GetAuditLogs response
+func CreateGetAuditLogsResponse() (response *GetAuditLogsResponse) {
+	response = &GetAuditLogsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/emr/get_back_info.go

@@ -0,0 +1,112 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// GetBackInfo invokes the emr.GetBackInfo API synchronously
+// api document: https://help.aliyun.com/api/emr/getbackinfo.html
+func (client *Client) GetBackInfo(request *GetBackInfoRequest) (response *GetBackInfoResponse, err error) {
+	response = CreateGetBackInfoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetBackInfoWithChan invokes the emr.GetBackInfo API asynchronously
+// api document: https://help.aliyun.com/api/emr/getbackinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetBackInfoWithChan(request *GetBackInfoRequest) (<-chan *GetBackInfoResponse, <-chan error) {
+	responseChan := make(chan *GetBackInfoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetBackInfo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetBackInfoWithCallback invokes the emr.GetBackInfo API asynchronously
+// api document: https://help.aliyun.com/api/emr/getbackinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetBackInfoWithCallback(request *GetBackInfoRequest, callback func(response *GetBackInfoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetBackInfoResponse
+		var err error
+		defer close(result)
+		response, err = client.GetBackInfo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetBackInfoRequest is the request struct for api GetBackInfo
+type GetBackInfoRequest struct {
+	*requests.RpcRequest
+}
+
+// GetBackInfoResponse is the response struct for api GetBackInfo
+type GetBackInfoResponse struct {
+	*responses.BaseResponse
+	Paging       bool         `json:"Paging" xml:"Paging"`
+	RequestId    string       `json:"RequestId" xml:"RequestId"`
+	Id           string       `json:"Id" xml:"Id"`
+	BackupPlanId string       `json:"BackupPlanId" xml:"BackupPlanId"`
+	ClusterId    string       `json:"ClusterId" xml:"ClusterId"`
+	CreateTime   int64        `json:"CreateTime" xml:"CreateTime"`
+	Md5          string       `json:"Md5" xml:"Md5"`
+	TarFileName  string       `json:"TarFileName" xml:"TarFileName"`
+	StorePath    string       `json:"StorePath" xml:"StorePath"`
+	Status       string       `json:"Status" xml:"Status"`
+	MetadataInfo MetadataInfo `json:"MetadataInfo" xml:"MetadataInfo"`
+}
+
+// CreateGetBackInfoRequest creates a request to invoke GetBackInfo API
+func CreateGetBackInfoRequest() (request *GetBackInfoRequest) {
+	request = &GetBackInfoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "GetBackInfo", "emr", "openAPI")
+	return
+}
+
+// CreateGetBackInfoResponse creates a response to parse from GetBackInfo response
+func CreateGetBackInfoResponse() (response *GetBackInfoResponse) {
+	response = &GetBackInfoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/emr/get_back_plan_info.go

@@ -0,0 +1,109 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// GetBackPlanInfo invokes the emr.GetBackPlanInfo API synchronously
+// api document: https://help.aliyun.com/api/emr/getbackplaninfo.html
+func (client *Client) GetBackPlanInfo(request *GetBackPlanInfoRequest) (response *GetBackPlanInfoResponse, err error) {
+	response = CreateGetBackPlanInfoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetBackPlanInfoWithChan invokes the emr.GetBackPlanInfo API asynchronously
+// api document: https://help.aliyun.com/api/emr/getbackplaninfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetBackPlanInfoWithChan(request *GetBackPlanInfoRequest) (<-chan *GetBackPlanInfoResponse, <-chan error) {
+	responseChan := make(chan *GetBackPlanInfoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetBackPlanInfo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetBackPlanInfoWithCallback invokes the emr.GetBackPlanInfo API asynchronously
+// api document: https://help.aliyun.com/api/emr/getbackplaninfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetBackPlanInfoWithCallback(request *GetBackPlanInfoRequest, callback func(response *GetBackPlanInfoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetBackPlanInfoResponse
+		var err error
+		defer close(result)
+		response, err = client.GetBackPlanInfo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetBackPlanInfoRequest is the request struct for api GetBackPlanInfo
+type GetBackPlanInfoRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	BackupPlanId    string           `position:"Query" name:"BackupPlanId"`
+}
+
+// GetBackPlanInfoResponse is the response struct for api GetBackPlanInfo
+type GetBackPlanInfoResponse struct {
+	*responses.BaseResponse
+	RequestId   string `json:"RequestId" xml:"RequestId"`
+	Id          string `json:"Id" xml:"Id"`
+	Name        string `json:"Name" xml:"Name"`
+	Description string `json:"Description" xml:"Description"`
+	ClusterId   string `json:"ClusterId" xml:"ClusterId"`
+	RootPath    string `json:"RootPath" xml:"RootPath"`
+}
+
+// CreateGetBackPlanInfoRequest creates a request to invoke GetBackPlanInfo API
+func CreateGetBackPlanInfoRequest() (request *GetBackPlanInfoRequest) {
+	request = &GetBackPlanInfoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "GetBackPlanInfo", "emr", "openAPI")
+	return
+}
+
+// CreateGetBackPlanInfoResponse creates a response to parse from GetBackPlanInfo response
+func CreateGetBackPlanInfoResponse() (response *GetBackPlanInfoResponse) {
+	response = &GetBackPlanInfoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/emr/get_backup_info.go

@@ -0,0 +1,113 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// GetBackupInfo invokes the emr.GetBackupInfo API synchronously
+// api document: https://help.aliyun.com/api/emr/getbackupinfo.html
+func (client *Client) GetBackupInfo(request *GetBackupInfoRequest) (response *GetBackupInfoResponse, err error) {
+	response = CreateGetBackupInfoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetBackupInfoWithChan invokes the emr.GetBackupInfo API asynchronously
+// api document: https://help.aliyun.com/api/emr/getbackupinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetBackupInfoWithChan(request *GetBackupInfoRequest) (<-chan *GetBackupInfoResponse, <-chan error) {
+	responseChan := make(chan *GetBackupInfoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetBackupInfo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetBackupInfoWithCallback invokes the emr.GetBackupInfo API asynchronously
+// api document: https://help.aliyun.com/api/emr/getbackupinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetBackupInfoWithCallback(request *GetBackupInfoRequest, callback func(response *GetBackupInfoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetBackupInfoResponse
+		var err error
+		defer close(result)
+		response, err = client.GetBackupInfo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetBackupInfoRequest is the request struct for api GetBackupInfo
+type GetBackupInfoRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	BackupId        string           `position:"Query" name:"BackupId"`
+}
+
+// GetBackupInfoResponse is the response struct for api GetBackupInfo
+type GetBackupInfoResponse struct {
+	*responses.BaseResponse
+	RequestId    string       `json:"RequestId" xml:"RequestId"`
+	Id           string       `json:"Id" xml:"Id"`
+	BackupPlanId string       `json:"BackupPlanId" xml:"BackupPlanId"`
+	ClusterId    string       `json:"ClusterId" xml:"ClusterId"`
+	CreateTime   int64        `json:"CreateTime" xml:"CreateTime"`
+	Md5          string       `json:"Md5" xml:"Md5"`
+	TarFileName  string       `json:"TarFileName" xml:"TarFileName"`
+	StorePath    string       `json:"StorePath" xml:"StorePath"`
+	Status       string       `json:"Status" xml:"Status"`
+	MetadataInfo MetadataInfo `json:"MetadataInfo" xml:"MetadataInfo"`
+}
+
+// CreateGetBackupInfoRequest creates a request to invoke GetBackupInfo API
+func CreateGetBackupInfoRequest() (request *GetBackupInfoRequest) {
+	request = &GetBackupInfoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "GetBackupInfo", "emr", "openAPI")
+	return
+}
+
+// CreateGetBackupInfoResponse creates a response to parse from GetBackupInfo response
+func CreateGetBackupInfoResponse() (response *GetBackupInfoResponse) {
+	response = &GetBackupInfoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/emr/get_backup_rule_info.go

@@ -0,0 +1,110 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// GetBackupRuleInfo invokes the emr.GetBackupRuleInfo API synchronously
+// api document: https://help.aliyun.com/api/emr/getbackupruleinfo.html
+func (client *Client) GetBackupRuleInfo(request *GetBackupRuleInfoRequest) (response *GetBackupRuleInfoResponse, err error) {
+	response = CreateGetBackupRuleInfoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetBackupRuleInfoWithChan invokes the emr.GetBackupRuleInfo API asynchronously
+// api document: https://help.aliyun.com/api/emr/getbackupruleinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetBackupRuleInfoWithChan(request *GetBackupRuleInfoRequest) (<-chan *GetBackupRuleInfoResponse, <-chan error) {
+	responseChan := make(chan *GetBackupRuleInfoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetBackupRuleInfo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetBackupRuleInfoWithCallback invokes the emr.GetBackupRuleInfo API asynchronously
+// api document: https://help.aliyun.com/api/emr/getbackupruleinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetBackupRuleInfoWithCallback(request *GetBackupRuleInfoRequest, callback func(response *GetBackupRuleInfoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetBackupRuleInfoResponse
+		var err error
+		defer close(result)
+		response, err = client.GetBackupRuleInfo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetBackupRuleInfoRequest is the request struct for api GetBackupRuleInfo
+type GetBackupRuleInfoRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	BackupRuleId    string           `position:"Query" name:"BackupRuleId"`
+}
+
+// GetBackupRuleInfoResponse is the response struct for api GetBackupRuleInfo
+type GetBackupRuleInfoResponse struct {
+	*responses.BaseResponse
+	RequestId        string `json:"RequestId" xml:"RequestId"`
+	Id               string `json:"Id" xml:"Id"`
+	Name             string `json:"Name" xml:"Name"`
+	Description      string `json:"Description" xml:"Description"`
+	MetadataType     string `json:"MetadataType" xml:"MetadataType"`
+	BackupMethodType string `json:"BackupMethodType" xml:"BackupMethodType"`
+	BackupPlanId     string `json:"BackupPlanId" xml:"BackupPlanId"`
+}
+
+// CreateGetBackupRuleInfoRequest creates a request to invoke GetBackupRuleInfo API
+func CreateGetBackupRuleInfoRequest() (request *GetBackupRuleInfoRequest) {
+	request = &GetBackupRuleInfoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "GetBackupRuleInfo", "emr", "openAPI")
+	return
+}
+
+// CreateGetBackupRuleInfoResponse creates a response to parse from GetBackupRuleInfo response
+func CreateGetBackupRuleInfoResponse() (response *GetBackupRuleInfoResponse) {
+	response = &GetBackupRuleInfoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 120 - 0
services/emr/get_flow_audit_logs.go

@@ -0,0 +1,120 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// GetFlowAuditLogs invokes the emr.GetFlowAuditLogs API synchronously
+// api document: https://help.aliyun.com/api/emr/getflowauditlogs.html
+func (client *Client) GetFlowAuditLogs(request *GetFlowAuditLogsRequest) (response *GetFlowAuditLogsResponse, err error) {
+	response = CreateGetFlowAuditLogsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetFlowAuditLogsWithChan invokes the emr.GetFlowAuditLogs API asynchronously
+// api document: https://help.aliyun.com/api/emr/getflowauditlogs.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetFlowAuditLogsWithChan(request *GetFlowAuditLogsRequest) (<-chan *GetFlowAuditLogsResponse, <-chan error) {
+	responseChan := make(chan *GetFlowAuditLogsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetFlowAuditLogs(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetFlowAuditLogsWithCallback invokes the emr.GetFlowAuditLogs API asynchronously
+// api document: https://help.aliyun.com/api/emr/getflowauditlogs.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetFlowAuditLogsWithCallback(request *GetFlowAuditLogsRequest, callback func(response *GetFlowAuditLogsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetFlowAuditLogsResponse
+		var err error
+		defer close(result)
+		response, err = client.GetFlowAuditLogs(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetFlowAuditLogsRequest is the request struct for api GetFlowAuditLogs
+type GetFlowAuditLogsRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PageCount       requests.Integer `position:"Query" name:"PageCount"`
+	OrderMode       string           `position:"Query" name:"OrderMode"`
+	EntityId        string           `position:"Query" name:"EntityId"`
+	PageNumber      requests.Integer `position:"Query" name:"PageNumber"`
+	Limit           requests.Integer `position:"Query" name:"Limit"`
+	PageSize        requests.Integer `position:"Query" name:"PageSize"`
+	CurrentSize     requests.Integer `position:"Query" name:"CurrentSize"`
+	OrderField      string           `position:"Query" name:"OrderField"`
+	EntityGroupId   string           `position:"Query" name:"EntityGroupId"`
+	EntityType      string           `position:"Query" name:"EntityType"`
+	OperatorId      string           `position:"Query" name:"OperatorId"`
+	Operation       string           `position:"Query" name:"Operation"`
+	Status          string           `position:"Query" name:"Status"`
+}
+
+// GetFlowAuditLogsResponse is the response struct for api GetFlowAuditLogs
+type GetFlowAuditLogsResponse struct {
+	*responses.BaseResponse
+	RequestId  string                  `json:"RequestId" xml:"RequestId"`
+	PageNumber int                     `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int                     `json:"PageSize" xml:"PageSize"`
+	TotalCount int                     `json:"TotalCount" xml:"TotalCount"`
+	Items      ItemsInGetFlowAuditLogs `json:"Items" xml:"Items"`
+}
+
+// CreateGetFlowAuditLogsRequest creates a request to invoke GetFlowAuditLogs API
+func CreateGetFlowAuditLogsRequest() (request *GetFlowAuditLogsRequest) {
+	request = &GetFlowAuditLogsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "GetFlowAuditLogs", "emr", "openAPI")
+	return
+}
+
+// CreateGetFlowAuditLogsResponse creates a response to parse from GetFlowAuditLogs response
+func CreateGetFlowAuditLogsResponse() (response *GetFlowAuditLogsResponse) {
+	response = &GetFlowAuditLogsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 1 - 1
services/emr/get_log_histogram.go

@@ -91,7 +91,7 @@ type GetLogHistogramResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
 	RequestId           string              `json:"RequestId" xml:"RequestId"`
 	RequestId           string              `json:"RequestId" xml:"RequestId"`
 	Completed           bool                `json:"Completed" xml:"Completed"`
 	Completed           bool                `json:"Completed" xml:"Completed"`
-	TotalCount          int                 `json:"TotalCount" xml:"TotalCount"`
+	TotalCount          int64               `json:"TotalCount" xml:"TotalCount"`
 	SlsLogHistogramList SlsLogHistogramList `json:"SlsLogHistogramList" xml:"SlsLogHistogramList"`
 	SlsLogHistogramList SlsLogHistogramList `json:"SlsLogHistogramList" xml:"SlsLogHistogramList"`
 }
 }
 
 

+ 104 - 0
services/emr/get_metadata_type_list.go

@@ -0,0 +1,104 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// GetMetadataTypeList invokes the emr.GetMetadataTypeList API synchronously
+// api document: https://help.aliyun.com/api/emr/getmetadatatypelist.html
+func (client *Client) GetMetadataTypeList(request *GetMetadataTypeListRequest) (response *GetMetadataTypeListResponse, err error) {
+	response = CreateGetMetadataTypeListResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetMetadataTypeListWithChan invokes the emr.GetMetadataTypeList API asynchronously
+// api document: https://help.aliyun.com/api/emr/getmetadatatypelist.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetMetadataTypeListWithChan(request *GetMetadataTypeListRequest) (<-chan *GetMetadataTypeListResponse, <-chan error) {
+	responseChan := make(chan *GetMetadataTypeListResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetMetadataTypeList(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetMetadataTypeListWithCallback invokes the emr.GetMetadataTypeList API asynchronously
+// api document: https://help.aliyun.com/api/emr/getmetadatatypelist.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetMetadataTypeListWithCallback(request *GetMetadataTypeListRequest, callback func(response *GetMetadataTypeListResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetMetadataTypeListResponse
+		var err error
+		defer close(result)
+		response, err = client.GetMetadataTypeList(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetMetadataTypeListRequest is the request struct for api GetMetadataTypeList
+type GetMetadataTypeListRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+}
+
+// GetMetadataTypeListResponse is the response struct for api GetMetadataTypeList
+type GetMetadataTypeListResponse struct {
+	*responses.BaseResponse
+	RequestId string                    `json:"RequestId" xml:"RequestId"`
+	Data      DataInGetMetadataTypeList `json:"Data" xml:"Data"`
+}
+
+// CreateGetMetadataTypeListRequest creates a request to invoke GetMetadataTypeList API
+func CreateGetMetadataTypeListRequest() (request *GetMetadataTypeListRequest) {
+	request = &GetMetadataTypeListRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "GetMetadataTypeList", "emr", "openAPI")
+	return
+}
+
+// CreateGetMetadataTypeListResponse creates a response to parse from GetMetadataTypeList response
+func CreateGetMetadataTypeListResponse() (response *GetMetadataTypeListResponse) {
+	response = &GetMetadataTypeListResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 1 - 1
services/emr/get_ops_command_detail.go

@@ -84,7 +84,7 @@ type GetOpsCommandDetailRequest struct {
 type GetOpsCommandDetailResponse struct {
 type GetOpsCommandDetailResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
 	RequestId   string `json:"RequestId" xml:"RequestId"`
 	RequestId   string `json:"RequestId" xml:"RequestId"`
-	Id          int    `json:"Id" xml:"Id"`
+	Id          int64  `json:"Id" xml:"Id"`
 	Name        string `json:"Name" xml:"Name"`
 	Name        string `json:"Name" xml:"Name"`
 	Description string `json:"Description" xml:"Description"`
 	Description string `json:"Description" xml:"Description"`
 	TargetType  string `json:"TargetType" xml:"TargetType"`
 	TargetType  string `json:"TargetType" xml:"TargetType"`

+ 1 - 1
services/emr/get_ops_command_result.go

@@ -88,7 +88,7 @@ type GetOpsCommandResultResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
 	RequestId string `json:"RequestId" xml:"RequestId"`
 	RequestId string `json:"RequestId" xml:"RequestId"`
 	Content   string `json:"Content" xml:"Content"`
 	Content   string `json:"Content" xml:"Content"`
-	Cursor    int    `json:"Cursor" xml:"Cursor"`
+	Cursor    int64  `json:"Cursor" xml:"Cursor"`
 	Finished  bool   `json:"Finished" xml:"Finished"`
 	Finished  bool   `json:"Finished" xml:"Finished"`
 }
 }
 
 

+ 123 - 0
services/emr/list_apm_application.go

@@ -0,0 +1,123 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListApmApplication invokes the emr.ListApmApplication API synchronously
+// api document: https://help.aliyun.com/api/emr/listapmapplication.html
+func (client *Client) ListApmApplication(request *ListApmApplicationRequest) (response *ListApmApplicationResponse, err error) {
+	response = CreateListApmApplicationResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListApmApplicationWithChan invokes the emr.ListApmApplication API asynchronously
+// api document: https://help.aliyun.com/api/emr/listapmapplication.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListApmApplicationWithChan(request *ListApmApplicationRequest) (<-chan *ListApmApplicationResponse, <-chan error) {
+	responseChan := make(chan *ListApmApplicationResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListApmApplication(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListApmApplicationWithCallback invokes the emr.ListApmApplication API asynchronously
+// api document: https://help.aliyun.com/api/emr/listapmapplication.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListApmApplicationWithCallback(request *ListApmApplicationRequest, callback func(response *ListApmApplicationResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListApmApplicationResponse
+		var err error
+		defer close(result)
+		response, err = client.ListApmApplication(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListApmApplicationRequest is the request struct for api ListApmApplication
+type ListApmApplicationRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	DiagnoseResult  string           `position:"Query" name:"DiagnoseResult"`
+	EndTimeFrom     requests.Integer `position:"Query" name:"EndTimeFrom"`
+	OrderBy         string           `position:"Query" name:"OrderBy"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+	JobType         string           `position:"Query" name:"JobType"`
+	PageNumber      requests.Integer `position:"Query" name:"PageNumber"`
+	FinalStatus     string           `position:"Query" name:"FinalStatus"`
+	StartTimeFrom   requests.Integer `position:"Query" name:"StartTimeFrom"`
+	AppId           string           `position:"Query" name:"AppId"`
+	Name            string           `position:"Query" name:"Name"`
+	PageSize        requests.Integer `position:"Query" name:"PageSize"`
+	State           string           `position:"Query" name:"State"`
+	StartTimeTo     requests.Integer `position:"Query" name:"StartTimeTo"`
+	User            string           `position:"Query" name:"User"`
+	EndTimeTo       requests.Integer `position:"Query" name:"EndTimeTo"`
+	Queue           string           `position:"Query" name:"Queue"`
+}
+
+// ListApmApplicationResponse is the response struct for api ListApmApplication
+type ListApmApplicationResponse struct {
+	*responses.BaseResponse
+	RequestId      string         `json:"RequestId" xml:"RequestId"`
+	Total          int            `json:"Total" xml:"Total"`
+	PageSize       int            `json:"PageSize" xml:"PageSize"`
+	PageNumber     int            `json:"PageNumber" xml:"PageNumber"`
+	ApmAppInfoList ApmAppInfoList `json:"ApmAppInfoList" xml:"ApmAppInfoList"`
+}
+
+// CreateListApmApplicationRequest creates a request to invoke ListApmApplication API
+func CreateListApmApplicationRequest() (request *ListApmApplicationRequest) {
+	request = &ListApmApplicationRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "ListApmApplication", "emr", "openAPI")
+	return
+}
+
+// CreateListApmApplicationResponse creates a response to parse from ListApmApplication response
+func CreateListApmApplicationResponse() (response *ListApmApplicationResponse) {
+	response = &ListApmApplicationResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 118 - 0
services/emr/list_backup_plans.go

@@ -0,0 +1,118 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListBackupPlans invokes the emr.ListBackupPlans API synchronously
+// api document: https://help.aliyun.com/api/emr/listbackupplans.html
+func (client *Client) ListBackupPlans(request *ListBackupPlansRequest) (response *ListBackupPlansResponse, err error) {
+	response = CreateListBackupPlansResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListBackupPlansWithChan invokes the emr.ListBackupPlans API asynchronously
+// api document: https://help.aliyun.com/api/emr/listbackupplans.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListBackupPlansWithChan(request *ListBackupPlansRequest) (<-chan *ListBackupPlansResponse, <-chan error) {
+	responseChan := make(chan *ListBackupPlansResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListBackupPlans(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListBackupPlansWithCallback invokes the emr.ListBackupPlans API asynchronously
+// api document: https://help.aliyun.com/api/emr/listbackupplans.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListBackupPlansWithCallback(request *ListBackupPlansRequest, callback func(response *ListBackupPlansResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListBackupPlansResponse
+		var err error
+		defer close(result)
+		response, err = client.ListBackupPlans(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListBackupPlansRequest is the request struct for api ListBackupPlans
+type ListBackupPlansRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PageCount       requests.Integer `position:"Query" name:"PageCount"`
+	OrderMode       string           `position:"Query" name:"OrderMode"`
+	PageNumber      requests.Integer `position:"Query" name:"PageNumber"`
+	Limit           requests.Integer `position:"Query" name:"Limit"`
+	PageSize        requests.Integer `position:"Query" name:"PageSize"`
+	Id              requests.Integer `position:"Query" name:"Id"`
+	CurrentSize     requests.Integer `position:"Query" name:"CurrentSize"`
+	OrderField      string           `position:"Query" name:"OrderField"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+	BizId           string           `position:"Query" name:"BizId"`
+	Status          string           `position:"Query" name:"Status"`
+}
+
+// ListBackupPlansResponse is the response struct for api ListBackupPlans
+type ListBackupPlansResponse struct {
+	*responses.BaseResponse
+	RequestId  string                 `json:"RequestId" xml:"RequestId"`
+	PageNumber int                    `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int                    `json:"PageSize" xml:"PageSize"`
+	TotalCount int                    `json:"TotalCount" xml:"TotalCount"`
+	Items      ItemsInListBackupPlans `json:"Items" xml:"Items"`
+}
+
+// CreateListBackupPlansRequest creates a request to invoke ListBackupPlans API
+func CreateListBackupPlansRequest() (request *ListBackupPlansRequest) {
+	request = &ListBackupPlansRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "ListBackupPlans", "emr", "openAPI")
+	return
+}
+
+// CreateListBackupPlansResponse creates a response to parse from ListBackupPlans response
+func CreateListBackupPlansResponse() (response *ListBackupPlansResponse) {
+	response = &ListBackupPlansResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 118 - 0
services/emr/list_backup_rules.go

@@ -0,0 +1,118 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListBackupRules invokes the emr.ListBackupRules API synchronously
+// api document: https://help.aliyun.com/api/emr/listbackuprules.html
+func (client *Client) ListBackupRules(request *ListBackupRulesRequest) (response *ListBackupRulesResponse, err error) {
+	response = CreateListBackupRulesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListBackupRulesWithChan invokes the emr.ListBackupRules API asynchronously
+// api document: https://help.aliyun.com/api/emr/listbackuprules.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListBackupRulesWithChan(request *ListBackupRulesRequest) (<-chan *ListBackupRulesResponse, <-chan error) {
+	responseChan := make(chan *ListBackupRulesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListBackupRules(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListBackupRulesWithCallback invokes the emr.ListBackupRules API asynchronously
+// api document: https://help.aliyun.com/api/emr/listbackuprules.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListBackupRulesWithCallback(request *ListBackupRulesRequest, callback func(response *ListBackupRulesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListBackupRulesResponse
+		var err error
+		defer close(result)
+		response, err = client.ListBackupRules(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListBackupRulesRequest is the request struct for api ListBackupRules
+type ListBackupRulesRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PageCount       requests.Integer `position:"Query" name:"PageCount"`
+	OrderMode       string           `position:"Query" name:"OrderMode"`
+	BackupPlanId    string           `position:"Query" name:"BackupPlanId"`
+	PageNumber      requests.Integer `position:"Query" name:"PageNumber"`
+	Limit           requests.Integer `position:"Query" name:"Limit"`
+	PageSize        requests.Integer `position:"Query" name:"PageSize"`
+	Id              requests.Integer `position:"Query" name:"Id"`
+	CurrentSize     requests.Integer `position:"Query" name:"CurrentSize"`
+	OrderField      string           `position:"Query" name:"OrderField"`
+	BizId           string           `position:"Query" name:"BizId"`
+	Status          string           `position:"Query" name:"Status"`
+}
+
+// ListBackupRulesResponse is the response struct for api ListBackupRules
+type ListBackupRulesResponse struct {
+	*responses.BaseResponse
+	RequestId  string                 `json:"RequestId" xml:"RequestId"`
+	PageNumber int                    `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int                    `json:"PageSize" xml:"PageSize"`
+	TotalCount int                    `json:"TotalCount" xml:"TotalCount"`
+	Items      ItemsInListBackupRules `json:"Items" xml:"Items"`
+}
+
+// CreateListBackupRulesRequest creates a request to invoke ListBackupRules API
+func CreateListBackupRulesRequest() (request *ListBackupRulesRequest) {
+	request = &ListBackupRulesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "ListBackupRules", "emr", "openAPI")
+	return
+}
+
+// CreateListBackupRulesResponse creates a response to parse from ListBackupRules response
+func CreateListBackupRulesResponse() (response *ListBackupRulesResponse) {
+	response = &ListBackupRulesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 122 - 0
services/emr/list_backups.go

@@ -0,0 +1,122 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListBackups invokes the emr.ListBackups API synchronously
+// api document: https://help.aliyun.com/api/emr/listbackups.html
+func (client *Client) ListBackups(request *ListBackupsRequest) (response *ListBackupsResponse, err error) {
+	response = CreateListBackupsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListBackupsWithChan invokes the emr.ListBackups API asynchronously
+// api document: https://help.aliyun.com/api/emr/listbackups.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListBackupsWithChan(request *ListBackupsRequest) (<-chan *ListBackupsResponse, <-chan error) {
+	responseChan := make(chan *ListBackupsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListBackups(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListBackupsWithCallback invokes the emr.ListBackups API asynchronously
+// api document: https://help.aliyun.com/api/emr/listbackups.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListBackupsWithCallback(request *ListBackupsRequest, callback func(response *ListBackupsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListBackupsResponse
+		var err error
+		defer close(result)
+		response, err = client.ListBackups(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListBackupsRequest is the request struct for api ListBackups
+type ListBackupsRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PageCount       requests.Integer `position:"Query" name:"PageCount"`
+	OrderMode       string           `position:"Query" name:"OrderMode"`
+	BackupPlanId    string           `position:"Query" name:"BackupPlanId"`
+	PageNumber      requests.Integer `position:"Query" name:"PageNumber"`
+	Limit           requests.Integer `position:"Query" name:"Limit"`
+	PageSize        requests.Integer `position:"Query" name:"PageSize"`
+	ServiceName     string           `position:"Query" name:"ServiceName"`
+	Id              requests.Integer `position:"Query" name:"Id"`
+	CurrentSize     requests.Integer `position:"Query" name:"CurrentSize"`
+	OrderField      string           `position:"Query" name:"OrderField"`
+	BackupId        *[]string        `position:"Query" name:"BackupId"  type:"Repeated"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+	MetadataType    string           `position:"Query" name:"MetadataType"`
+	BizId           string           `position:"Query" name:"BizId"`
+	Status          string           `position:"Query" name:"Status"`
+}
+
+// ListBackupsResponse is the response struct for api ListBackups
+type ListBackupsResponse struct {
+	*responses.BaseResponse
+	RequestId  string             `json:"RequestId" xml:"RequestId"`
+	PageNumber int                `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int                `json:"PageSize" xml:"PageSize"`
+	TotalCount int                `json:"TotalCount" xml:"TotalCount"`
+	Items      ItemsInListBackups `json:"Items" xml:"Items"`
+}
+
+// CreateListBackupsRequest creates a request to invoke ListBackups API
+func CreateListBackupsRequest() (request *ListBackupsRequest) {
+	request = &ListBackupsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "ListBackups", "emr", "openAPI")
+	return
+}
+
+// CreateListBackupsResponse creates a response to parse from ListBackups response
+func CreateListBackupsResponse() (response *ListBackupsResponse) {
+	response = &ListBackupsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 5 - 5
services/emr/list_cluster_host_component.go

@@ -91,11 +91,11 @@ type ListClusterHostComponentRequest struct {
 // ListClusterHostComponentResponse is the response struct for api ListClusterHostComponent
 // ListClusterHostComponentResponse is the response struct for api ListClusterHostComponent
 type ListClusterHostComponentResponse struct {
 type ListClusterHostComponentResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
-	RequestId     string        `json:"RequestId" xml:"RequestId"`
-	PageNumber    int           `json:"PageNumber" xml:"PageNumber"`
-	PageSize      int           `json:"PageSize" xml:"PageSize"`
-	Total         int           `json:"Total" xml:"Total"`
-	ComponentList ComponentList `json:"ComponentList" xml:"ComponentList"`
+	RequestId     string                                  `json:"RequestId" xml:"RequestId"`
+	PageNumber    int                                     `json:"PageNumber" xml:"PageNumber"`
+	PageSize      int                                     `json:"PageSize" xml:"PageSize"`
+	Total         int                                     `json:"Total" xml:"Total"`
+	ComponentList ComponentListInListClusterHostComponent `json:"ComponentList" xml:"ComponentList"`
 }
 }
 
 
 // CreateListClusterHostComponentRequest creates a request to invoke ListClusterHostComponent API
 // CreateListClusterHostComponentRequest creates a request to invoke ListClusterHostComponent API

+ 117 - 0
services/emr/list_cluster_host_component_for_admin.go

@@ -0,0 +1,117 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListClusterHostComponentForAdmin invokes the emr.ListClusterHostComponentForAdmin API synchronously
+// api document: https://help.aliyun.com/api/emr/listclusterhostcomponentforadmin.html
+func (client *Client) ListClusterHostComponentForAdmin(request *ListClusterHostComponentForAdminRequest) (response *ListClusterHostComponentForAdminResponse, err error) {
+	response = CreateListClusterHostComponentForAdminResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListClusterHostComponentForAdminWithChan invokes the emr.ListClusterHostComponentForAdmin API asynchronously
+// api document: https://help.aliyun.com/api/emr/listclusterhostcomponentforadmin.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListClusterHostComponentForAdminWithChan(request *ListClusterHostComponentForAdminRequest) (<-chan *ListClusterHostComponentForAdminResponse, <-chan error) {
+	responseChan := make(chan *ListClusterHostComponentForAdminResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListClusterHostComponentForAdmin(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListClusterHostComponentForAdminWithCallback invokes the emr.ListClusterHostComponentForAdmin API asynchronously
+// api document: https://help.aliyun.com/api/emr/listclusterhostcomponentforadmin.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListClusterHostComponentForAdminWithCallback(request *ListClusterHostComponentForAdminRequest, callback func(response *ListClusterHostComponentForAdminResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListClusterHostComponentForAdminResponse
+		var err error
+		defer close(result)
+		response, err = client.ListClusterHostComponentForAdmin(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListClusterHostComponentForAdminRequest is the request struct for api ListClusterHostComponentForAdmin
+type ListClusterHostComponentForAdminRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	HostInstanceId  string           `position:"Query" name:"HostInstanceId"`
+	ComponentName   string           `position:"Query" name:"ComponentName"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+	UserId          string           `position:"Query" name:"UserId"`
+	PageNumber      requests.Integer `position:"Query" name:"PageNumber"`
+	ComponentStatus string           `position:"Query" name:"ComponentStatus"`
+	HostName        string           `position:"Query" name:"HostName"`
+	PageSize        requests.Integer `position:"Query" name:"PageSize"`
+	ServiceName     string           `position:"Query" name:"ServiceName"`
+	HostRole        string           `position:"Query" name:"HostRole"`
+}
+
+// ListClusterHostComponentForAdminResponse is the response struct for api ListClusterHostComponentForAdmin
+type ListClusterHostComponentForAdminResponse struct {
+	*responses.BaseResponse
+	RequestId     string                                          `json:"RequestId" xml:"RequestId"`
+	PageNumber    int                                             `json:"PageNumber" xml:"PageNumber"`
+	PageSize      int                                             `json:"PageSize" xml:"PageSize"`
+	Total         int                                             `json:"Total" xml:"Total"`
+	ComponentList ComponentListInListClusterHostComponentForAdmin `json:"ComponentList" xml:"ComponentList"`
+}
+
+// CreateListClusterHostComponentForAdminRequest creates a request to invoke ListClusterHostComponentForAdmin API
+func CreateListClusterHostComponentForAdminRequest() (request *ListClusterHostComponentForAdminRequest) {
+	request = &ListClusterHostComponentForAdminRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "ListClusterHostComponentForAdmin", "emr", "openAPI")
+	return
+}
+
+// CreateListClusterHostComponentForAdminResponse creates a response to parse from ListClusterHostComponentForAdmin response
+func CreateListClusterHostComponentForAdminResponse() (response *ListClusterHostComponentForAdminResponse) {
+	response = &ListClusterHostComponentForAdminResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/emr/list_cluster_installed_service.go

@@ -0,0 +1,107 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListClusterInstalledService invokes the emr.ListClusterInstalledService API synchronously
+// api document: https://help.aliyun.com/api/emr/listclusterinstalledservice.html
+func (client *Client) ListClusterInstalledService(request *ListClusterInstalledServiceRequest) (response *ListClusterInstalledServiceResponse, err error) {
+	response = CreateListClusterInstalledServiceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListClusterInstalledServiceWithChan invokes the emr.ListClusterInstalledService API asynchronously
+// api document: https://help.aliyun.com/api/emr/listclusterinstalledservice.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListClusterInstalledServiceWithChan(request *ListClusterInstalledServiceRequest) (<-chan *ListClusterInstalledServiceResponse, <-chan error) {
+	responseChan := make(chan *ListClusterInstalledServiceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListClusterInstalledService(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListClusterInstalledServiceWithCallback invokes the emr.ListClusterInstalledService API asynchronously
+// api document: https://help.aliyun.com/api/emr/listclusterinstalledservice.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListClusterInstalledServiceWithCallback(request *ListClusterInstalledServiceRequest, callback func(response *ListClusterInstalledServiceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListClusterInstalledServiceResponse
+		var err error
+		defer close(result)
+		response, err = client.ListClusterInstalledService(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListClusterInstalledServiceRequest is the request struct for api ListClusterInstalledService
+type ListClusterInstalledServiceRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PageSize        requests.Integer `position:"Query" name:"PageSize"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+	PageNumber      requests.Integer `position:"Query" name:"PageNumber"`
+}
+
+// ListClusterInstalledServiceResponse is the response struct for api ListClusterInstalledService
+type ListClusterInstalledServiceResponse struct {
+	*responses.BaseResponse
+	RequestId                   string                      `json:"RequestId" xml:"RequestId"`
+	ClusterInstalledServiceList ClusterInstalledServiceList `json:"ClusterInstalledServiceList" xml:"ClusterInstalledServiceList"`
+}
+
+// CreateListClusterInstalledServiceRequest creates a request to invoke ListClusterInstalledService API
+func CreateListClusterInstalledServiceRequest() (request *ListClusterInstalledServiceRequest) {
+	request = &ListClusterInstalledServiceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "ListClusterInstalledService", "emr", "openAPI")
+	return
+}
+
+// CreateListClusterInstalledServiceResponse creates a response to parse from ListClusterInstalledService response
+func CreateListClusterInstalledServiceResponse() (response *ListClusterInstalledServiceResponse) {
+	response = &ListClusterInstalledServiceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 5 - 5
services/emr/list_cluster_service_config_history.go

@@ -87,11 +87,11 @@ type ListClusterServiceConfigHistoryRequest struct {
 // ListClusterServiceConfigHistoryResponse is the response struct for api ListClusterServiceConfigHistory
 // ListClusterServiceConfigHistoryResponse is the response struct for api ListClusterServiceConfigHistory
 type ListClusterServiceConfigHistoryResponse struct {
 type ListClusterServiceConfigHistoryResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
-	RequestId         string            `json:"RequestId" xml:"RequestId"`
-	TotalCount        int               `json:"TotalCount" xml:"TotalCount"`
-	PageNumber        int               `json:"PageNumber" xml:"PageNumber"`
-	PageSize          int               `json:"PageSize" xml:"PageSize"`
-	ConfigHistoryList ConfigHistoryList `json:"ConfigHistoryList" xml:"ConfigHistoryList"`
+	RequestId         string                                             `json:"RequestId" xml:"RequestId"`
+	TotalCount        int                                                `json:"TotalCount" xml:"TotalCount"`
+	PageNumber        int                                                `json:"PageNumber" xml:"PageNumber"`
+	PageSize          int                                                `json:"PageSize" xml:"PageSize"`
+	ConfigHistoryList ConfigHistoryListInListClusterServiceConfigHistory `json:"ConfigHistoryList" xml:"ConfigHistoryList"`
 }
 }
 
 
 // CreateListClusterServiceConfigHistoryRequest creates a request to invoke ListClusterServiceConfigHistory API
 // CreateListClusterServiceConfigHistoryRequest creates a request to invoke ListClusterServiceConfigHistory API

+ 113 - 0
services/emr/list_cluster_service_config_history_for_admin.go

@@ -0,0 +1,113 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListClusterServiceConfigHistoryForAdmin invokes the emr.ListClusterServiceConfigHistoryForAdmin API synchronously
+// api document: https://help.aliyun.com/api/emr/listclusterserviceconfighistoryforadmin.html
+func (client *Client) ListClusterServiceConfigHistoryForAdmin(request *ListClusterServiceConfigHistoryForAdminRequest) (response *ListClusterServiceConfigHistoryForAdminResponse, err error) {
+	response = CreateListClusterServiceConfigHistoryForAdminResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListClusterServiceConfigHistoryForAdminWithChan invokes the emr.ListClusterServiceConfigHistoryForAdmin API asynchronously
+// api document: https://help.aliyun.com/api/emr/listclusterserviceconfighistoryforadmin.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListClusterServiceConfigHistoryForAdminWithChan(request *ListClusterServiceConfigHistoryForAdminRequest) (<-chan *ListClusterServiceConfigHistoryForAdminResponse, <-chan error) {
+	responseChan := make(chan *ListClusterServiceConfigHistoryForAdminResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListClusterServiceConfigHistoryForAdmin(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListClusterServiceConfigHistoryForAdminWithCallback invokes the emr.ListClusterServiceConfigHistoryForAdmin API asynchronously
+// api document: https://help.aliyun.com/api/emr/listclusterserviceconfighistoryforadmin.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListClusterServiceConfigHistoryForAdminWithCallback(request *ListClusterServiceConfigHistoryForAdminRequest, callback func(response *ListClusterServiceConfigHistoryForAdminResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListClusterServiceConfigHistoryForAdminResponse
+		var err error
+		defer close(result)
+		response, err = client.ListClusterServiceConfigHistoryForAdmin(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListClusterServiceConfigHistoryForAdminRequest is the request struct for api ListClusterServiceConfigHistoryForAdmin
+type ListClusterServiceConfigHistoryForAdminRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PageSize        requests.Integer `position:"Query" name:"PageSize"`
+	ServiceName     string           `position:"Query" name:"ServiceName"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+	UserId          string           `position:"Query" name:"UserId"`
+	PageNumber      requests.Integer `position:"Query" name:"PageNumber"`
+	ConfigVersion   string           `position:"Query" name:"ConfigVersion"`
+}
+
+// ListClusterServiceConfigHistoryForAdminResponse is the response struct for api ListClusterServiceConfigHistoryForAdmin
+type ListClusterServiceConfigHistoryForAdminResponse struct {
+	*responses.BaseResponse
+	RequestId         string                                                     `json:"RequestId" xml:"RequestId"`
+	TotalCount        int                                                        `json:"TotalCount" xml:"TotalCount"`
+	PageNumber        int                                                        `json:"PageNumber" xml:"PageNumber"`
+	PageSize          int                                                        `json:"PageSize" xml:"PageSize"`
+	ConfigHistoryList ConfigHistoryListInListClusterServiceConfigHistoryForAdmin `json:"ConfigHistoryList" xml:"ConfigHistoryList"`
+}
+
+// CreateListClusterServiceConfigHistoryForAdminRequest creates a request to invoke ListClusterServiceConfigHistoryForAdmin API
+func CreateListClusterServiceConfigHistoryForAdminRequest() (request *ListClusterServiceConfigHistoryForAdminRequest) {
+	request = &ListClusterServiceConfigHistoryForAdminRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "ListClusterServiceConfigHistoryForAdmin", "emr", "openAPI")
+	return
+}
+
+// CreateListClusterServiceConfigHistoryForAdminResponse creates a response to parse from ListClusterServiceConfigHistoryForAdmin response
+func CreateListClusterServiceConfigHistoryForAdminResponse() (response *ListClusterServiceConfigHistoryForAdminResponse) {
+	response = &ListClusterServiceConfigHistoryForAdminResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 2 - 2
services/emr/list_cluster_service_custom_action_support_config.go

@@ -85,8 +85,8 @@ type ListClusterServiceCustomActionSupportConfigRequest struct {
 // ListClusterServiceCustomActionSupportConfigResponse is the response struct for api ListClusterServiceCustomActionSupportConfig
 // ListClusterServiceCustomActionSupportConfigResponse is the response struct for api ListClusterServiceCustomActionSupportConfig
 type ListClusterServiceCustomActionSupportConfigResponse struct {
 type ListClusterServiceCustomActionSupportConfigResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
-	RequestId           string              `json:"RequestId" xml:"RequestId"`
-	SupportedConfigList SupportedConfigList `json:"SupportedConfigList" xml:"SupportedConfigList"`
+	RequestId           string                                                           `json:"RequestId" xml:"RequestId"`
+	SupportedConfigList SupportedConfigListInListClusterServiceCustomActionSupportConfig `json:"SupportedConfigList" xml:"SupportedConfigList"`
 }
 }
 
 
 // CreateListClusterServiceCustomActionSupportConfigRequest creates a request to invoke ListClusterServiceCustomActionSupportConfig API
 // CreateListClusterServiceCustomActionSupportConfigRequest creates a request to invoke ListClusterServiceCustomActionSupportConfig API

+ 108 - 0
services/emr/list_cluster_service_custom_action_support_config_for_admin.go

@@ -0,0 +1,108 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListClusterServiceCustomActionSupportConfigForAdmin invokes the emr.ListClusterServiceCustomActionSupportConfigForAdmin API synchronously
+// api document: https://help.aliyun.com/api/emr/listclusterservicecustomactionsupportconfigforadmin.html
+func (client *Client) ListClusterServiceCustomActionSupportConfigForAdmin(request *ListClusterServiceCustomActionSupportConfigForAdminRequest) (response *ListClusterServiceCustomActionSupportConfigForAdminResponse, err error) {
+	response = CreateListClusterServiceCustomActionSupportConfigForAdminResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListClusterServiceCustomActionSupportConfigForAdminWithChan invokes the emr.ListClusterServiceCustomActionSupportConfigForAdmin API asynchronously
+// api document: https://help.aliyun.com/api/emr/listclusterservicecustomactionsupportconfigforadmin.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListClusterServiceCustomActionSupportConfigForAdminWithChan(request *ListClusterServiceCustomActionSupportConfigForAdminRequest) (<-chan *ListClusterServiceCustomActionSupportConfigForAdminResponse, <-chan error) {
+	responseChan := make(chan *ListClusterServiceCustomActionSupportConfigForAdminResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListClusterServiceCustomActionSupportConfigForAdmin(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListClusterServiceCustomActionSupportConfigForAdminWithCallback invokes the emr.ListClusterServiceCustomActionSupportConfigForAdmin API asynchronously
+// api document: https://help.aliyun.com/api/emr/listclusterservicecustomactionsupportconfigforadmin.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListClusterServiceCustomActionSupportConfigForAdminWithCallback(request *ListClusterServiceCustomActionSupportConfigForAdminRequest, callback func(response *ListClusterServiceCustomActionSupportConfigForAdminResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListClusterServiceCustomActionSupportConfigForAdminResponse
+		var err error
+		defer close(result)
+		response, err = client.ListClusterServiceCustomActionSupportConfigForAdmin(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListClusterServiceCustomActionSupportConfigForAdminRequest is the request struct for api ListClusterServiceCustomActionSupportConfigForAdmin
+type ListClusterServiceCustomActionSupportConfigForAdminRequest struct {
+	*requests.RpcRequest
+	ServiceCustomActionName string           `position:"Query" name:"ServiceCustomActionName"`
+	ResourceOwnerId         requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ServiceName             string           `position:"Query" name:"ServiceName"`
+	ClusterId               string           `position:"Query" name:"ClusterId"`
+	UserId                  string           `position:"Query" name:"UserId"`
+}
+
+// ListClusterServiceCustomActionSupportConfigForAdminResponse is the response struct for api ListClusterServiceCustomActionSupportConfigForAdmin
+type ListClusterServiceCustomActionSupportConfigForAdminResponse struct {
+	*responses.BaseResponse
+	RequestId           string                                                                   `json:"RequestId" xml:"RequestId"`
+	SupportedConfigList SupportedConfigListInListClusterServiceCustomActionSupportConfigForAdmin `json:"SupportedConfigList" xml:"SupportedConfigList"`
+}
+
+// CreateListClusterServiceCustomActionSupportConfigForAdminRequest creates a request to invoke ListClusterServiceCustomActionSupportConfigForAdmin API
+func CreateListClusterServiceCustomActionSupportConfigForAdminRequest() (request *ListClusterServiceCustomActionSupportConfigForAdminRequest) {
+	request = &ListClusterServiceCustomActionSupportConfigForAdminRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "ListClusterServiceCustomActionSupportConfigForAdmin", "emr", "openAPI")
+	return
+}
+
+// CreateListClusterServiceCustomActionSupportConfigForAdminResponse creates a response to parse from ListClusterServiceCustomActionSupportConfigForAdmin response
+func CreateListClusterServiceCustomActionSupportConfigForAdminResponse() (response *ListClusterServiceCustomActionSupportConfigForAdminResponse) {
+	response = &ListClusterServiceCustomActionSupportConfigForAdminResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/emr/list_cluster_support_service.go

@@ -0,0 +1,107 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListClusterSupportService invokes the emr.ListClusterSupportService API synchronously
+// api document: https://help.aliyun.com/api/emr/listclustersupportservice.html
+func (client *Client) ListClusterSupportService(request *ListClusterSupportServiceRequest) (response *ListClusterSupportServiceResponse, err error) {
+	response = CreateListClusterSupportServiceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListClusterSupportServiceWithChan invokes the emr.ListClusterSupportService API asynchronously
+// api document: https://help.aliyun.com/api/emr/listclustersupportservice.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListClusterSupportServiceWithChan(request *ListClusterSupportServiceRequest) (<-chan *ListClusterSupportServiceResponse, <-chan error) {
+	responseChan := make(chan *ListClusterSupportServiceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListClusterSupportService(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListClusterSupportServiceWithCallback invokes the emr.ListClusterSupportService API asynchronously
+// api document: https://help.aliyun.com/api/emr/listclustersupportservice.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListClusterSupportServiceWithCallback(request *ListClusterSupportServiceRequest, callback func(response *ListClusterSupportServiceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListClusterSupportServiceResponse
+		var err error
+		defer close(result)
+		response, err = client.ListClusterSupportService(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListClusterSupportServiceRequest is the request struct for api ListClusterSupportService
+type ListClusterSupportServiceRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+}
+
+// ListClusterSupportServiceResponse is the response struct for api ListClusterSupportService
+type ListClusterSupportServiceResponse struct {
+	*responses.BaseResponse
+	RequestId          string             `json:"RequestId" xml:"RequestId"`
+	TotalCount         string             `json:"TotalCount" xml:"TotalCount"`
+	PageNumber         string             `json:"PageNumber" xml:"PageNumber"`
+	SupportServiceList SupportServiceList `json:"SupportServiceList" xml:"SupportServiceList"`
+}
+
+// CreateListClusterSupportServiceRequest creates a request to invoke ListClusterSupportService API
+func CreateListClusterSupportServiceRequest() (request *ListClusterSupportServiceRequest) {
+	request = &ListClusterSupportServiceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "ListClusterSupportService", "emr", "openAPI")
+	return
+}
+
+// CreateListClusterSupportServiceResponse creates a response to parse from ListClusterSupportService response
+func CreateListClusterSupportServiceResponse() (response *ListClusterSupportServiceResponse) {
+	response = &ListClusterSupportServiceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 2 - 2
services/emr/list_cluster_tag.go

@@ -83,8 +83,8 @@ type ListClusterTagRequest struct {
 // ListClusterTagResponse is the response struct for api ListClusterTag
 // ListClusterTagResponse is the response struct for api ListClusterTag
 type ListClusterTagResponse struct {
 type ListClusterTagResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
-	RequestId      string         `json:"RequestId" xml:"RequestId"`
-	ClusterTagList ClusterTagList `json:"ClusterTagList" xml:"ClusterTagList"`
+	RequestId      string                         `json:"RequestId" xml:"RequestId"`
+	ClusterTagList ClusterTagListInListClusterTag `json:"ClusterTagList" xml:"ClusterTagList"`
 }
 }
 
 
 // CreateListClusterTagRequest creates a request to invoke ListClusterTag API
 // CreateListClusterTagRequest creates a request to invoke ListClusterTag API

+ 106 - 0
services/emr/list_cluster_tag_for_admin.go

@@ -0,0 +1,106 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListClusterTagForAdmin invokes the emr.ListClusterTagForAdmin API synchronously
+// api document: https://help.aliyun.com/api/emr/listclustertagforadmin.html
+func (client *Client) ListClusterTagForAdmin(request *ListClusterTagForAdminRequest) (response *ListClusterTagForAdminResponse, err error) {
+	response = CreateListClusterTagForAdminResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListClusterTagForAdminWithChan invokes the emr.ListClusterTagForAdmin API asynchronously
+// api document: https://help.aliyun.com/api/emr/listclustertagforadmin.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListClusterTagForAdminWithChan(request *ListClusterTagForAdminRequest) (<-chan *ListClusterTagForAdminResponse, <-chan error) {
+	responseChan := make(chan *ListClusterTagForAdminResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListClusterTagForAdmin(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListClusterTagForAdminWithCallback invokes the emr.ListClusterTagForAdmin API asynchronously
+// api document: https://help.aliyun.com/api/emr/listclustertagforadmin.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListClusterTagForAdminWithCallback(request *ListClusterTagForAdminRequest, callback func(response *ListClusterTagForAdminResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListClusterTagForAdminResponse
+		var err error
+		defer close(result)
+		response, err = client.ListClusterTagForAdmin(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListClusterTagForAdminRequest is the request struct for api ListClusterTagForAdmin
+type ListClusterTagForAdminRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ClusterIdList   *[]string        `position:"Query" name:"ClusterIdList"  type:"Repeated"`
+	UserId          string           `position:"Query" name:"UserId"`
+}
+
+// ListClusterTagForAdminResponse is the response struct for api ListClusterTagForAdmin
+type ListClusterTagForAdminResponse struct {
+	*responses.BaseResponse
+	RequestId      string                                 `json:"RequestId" xml:"RequestId"`
+	ClusterTagList ClusterTagListInListClusterTagForAdmin `json:"ClusterTagList" xml:"ClusterTagList"`
+}
+
+// CreateListClusterTagForAdminRequest creates a request to invoke ListClusterTagForAdmin API
+func CreateListClusterTagForAdminRequest() (request *ListClusterTagForAdminRequest) {
+	request = &ListClusterTagForAdminRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "ListClusterTagForAdmin", "emr", "openAPI")
+	return
+}
+
+// CreateListClusterTagForAdminResponse creates a response to parse from ListClusterTagForAdmin response
+func CreateListClusterTagForAdminResponse() (response *ListClusterTagForAdminResponse) {
+	response = &ListClusterTagForAdminResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 1 - 0
services/emr/list_clusters.go

@@ -85,6 +85,7 @@ type ListClustersRequest struct {
 	DepositType     string           `position:"Query" name:"DepositType"`
 	DepositType     string           `position:"Query" name:"DepositType"`
 	DefaultStatus   requests.Boolean `position:"Query" name:"DefaultStatus"`
 	DefaultStatus   requests.Boolean `position:"Query" name:"DefaultStatus"`
 	PageNumber      requests.Integer `position:"Query" name:"PageNumber"`
 	PageNumber      requests.Integer `position:"Query" name:"PageNumber"`
+	MachineType     string           `position:"Query" name:"MachineType"`
 }
 }
 
 
 // ListClustersResponse is the response struct for api ListClusters
 // ListClustersResponse is the response struct for api ListClusters

+ 113 - 0
services/emr/list_etl_job_release.go

@@ -0,0 +1,113 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListETLJobRelease invokes the emr.ListETLJobRelease API synchronously
+// api document: https://help.aliyun.com/api/emr/listetljobrelease.html
+func (client *Client) ListETLJobRelease(request *ListETLJobReleaseRequest) (response *ListETLJobReleaseResponse, err error) {
+	response = CreateListETLJobReleaseResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListETLJobReleaseWithChan invokes the emr.ListETLJobRelease API asynchronously
+// api document: https://help.aliyun.com/api/emr/listetljobrelease.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListETLJobReleaseWithChan(request *ListETLJobReleaseRequest) (<-chan *ListETLJobReleaseResponse, <-chan error) {
+	responseChan := make(chan *ListETLJobReleaseResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListETLJobRelease(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListETLJobReleaseWithCallback invokes the emr.ListETLJobRelease API asynchronously
+// api document: https://help.aliyun.com/api/emr/listetljobrelease.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListETLJobReleaseWithCallback(request *ListETLJobReleaseRequest, callback func(response *ListETLJobReleaseResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListETLJobReleaseResponse
+		var err error
+		defer close(result)
+		response, err = client.ListETLJobRelease(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListETLJobReleaseRequest is the request struct for api ListETLJobRelease
+type ListETLJobReleaseRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	EtlJobId        string           `position:"Query" name:"EtlJobId"`
+	ReleaseId       string           `position:"Query" name:"ReleaseId"`
+	PageSize        requests.Integer `position:"Query" name:"PageSize"`
+	PageNumber      requests.Integer `position:"Query" name:"PageNumber"`
+	ReleaseVersion  requests.Integer `position:"Query" name:"ReleaseVersion"`
+	Status          string           `position:"Query" name:"Status"`
+}
+
+// ListETLJobReleaseResponse is the response struct for api ListETLJobRelease
+type ListETLJobReleaseResponse struct {
+	*responses.BaseResponse
+	RequestId   string      `json:"RequestId" xml:"RequestId"`
+	Total       int         `json:"Total" xml:"Total"`
+	PageSize    int         `json:"PageSize" xml:"PageSize"`
+	PageNumber  int         `json:"PageNumber" xml:"PageNumber"`
+	ReleaseList ReleaseList `json:"ReleaseList" xml:"ReleaseList"`
+}
+
+// CreateListETLJobReleaseRequest creates a request to invoke ListETLJobRelease API
+func CreateListETLJobReleaseRequest() (request *ListETLJobReleaseRequest) {
+	request = &ListETLJobReleaseRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "ListETLJobRelease", "emr", "openAPI")
+	return
+}
+
+// CreateListETLJobReleaseResponse creates a response to parse from ListETLJobRelease response
+func CreateListETLJobReleaseResponse() (response *ListETLJobReleaseResponse) {
+	response = &ListETLJobReleaseResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 1 - 1
services/emr/list_execute_plan_migrate_info.go

@@ -85,7 +85,7 @@ type ListExecutePlanMigrateInfoRequest struct {
 // ListExecutePlanMigrateInfoResponse is the response struct for api ListExecutePlanMigrateInfo
 // ListExecutePlanMigrateInfoResponse is the response struct for api ListExecutePlanMigrateInfo
 type ListExecutePlanMigrateInfoResponse struct {
 type ListExecutePlanMigrateInfoResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
-	Total                      int                      `json:"Total" xml:"Total"`
+	Total                      int64                    `json:"Total" xml:"Total"`
 	ExecutePlanMigrateInfoList []ExecutePlanMigrateInfo `json:"ExecutePlanMigrateInfoList" xml:"ExecutePlanMigrateInfoList"`
 	ExecutePlanMigrateInfoList []ExecutePlanMigrateInfo `json:"ExecutePlanMigrateInfoList" xml:"ExecutePlanMigrateInfoList"`
 }
 }
 
 

+ 4 - 0
services/emr/list_flow_job_history.go

@@ -76,9 +76,13 @@ func (client *Client) ListFlowJobHistoryWithCallback(request *ListFlowJobHistory
 // ListFlowJobHistoryRequest is the request struct for api ListFlowJobHistory
 // ListFlowJobHistoryRequest is the request struct for api ListFlowJobHistory
 type ListFlowJobHistoryRequest struct {
 type ListFlowJobHistoryRequest struct {
 	*requests.RpcRequest
 	*requests.RpcRequest
+	TimeRange  string           `position:"Query" name:"TimeRange"`
+	StatusList *[]string        `position:"Query" name:"StatusList"  type:"Repeated"`
+	InstanceId string           `position:"Query" name:"InstanceId"`
 	PageSize   requests.Integer `position:"Query" name:"PageSize"`
 	PageSize   requests.Integer `position:"Query" name:"PageSize"`
 	Id         string           `position:"Query" name:"Id"`
 	Id         string           `position:"Query" name:"Id"`
 	ProjectId  string           `position:"Query" name:"ProjectId"`
 	ProjectId  string           `position:"Query" name:"ProjectId"`
+	JobType    string           `position:"Query" name:"JobType"`
 	PageNumber requests.Integer `position:"Query" name:"PageNumber"`
 	PageNumber requests.Integer `position:"Query" name:"PageNumber"`
 }
 }
 
 

+ 109 - 0
services/emr/list_host_pool.go

@@ -0,0 +1,109 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListHostPool invokes the emr.ListHostPool API synchronously
+// api document: https://help.aliyun.com/api/emr/listhostpool.html
+func (client *Client) ListHostPool(request *ListHostPoolRequest) (response *ListHostPoolResponse, err error) {
+	response = CreateListHostPoolResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListHostPoolWithChan invokes the emr.ListHostPool API asynchronously
+// api document: https://help.aliyun.com/api/emr/listhostpool.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListHostPoolWithChan(request *ListHostPoolRequest) (<-chan *ListHostPoolResponse, <-chan error) {
+	responseChan := make(chan *ListHostPoolResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListHostPool(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListHostPoolWithCallback invokes the emr.ListHostPool API asynchronously
+// api document: https://help.aliyun.com/api/emr/listhostpool.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListHostPoolWithCallback(request *ListHostPoolRequest, callback func(response *ListHostPoolResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListHostPoolResponse
+		var err error
+		defer close(result)
+		response, err = client.ListHostPool(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListHostPoolRequest is the request struct for api ListHostPool
+type ListHostPoolRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PageSize        requests.Integer `position:"Query" name:"PageSize"`
+	PageNumber      requests.Integer `position:"Query" name:"PageNumber"`
+}
+
+// ListHostPoolResponse is the response struct for api ListHostPool
+type ListHostPoolResponse struct {
+	*responses.BaseResponse
+	RequestId    string       `json:"RequestId" xml:"RequestId"`
+	TotalCount   int          `json:"TotalCount" xml:"TotalCount"`
+	PageNumber   int          `json:"PageNumber" xml:"PageNumber"`
+	PageSize     int          `json:"PageSize" xml:"PageSize"`
+	HostPoolList HostPoolList `json:"HostPoolList" xml:"HostPoolList"`
+}
+
+// CreateListHostPoolRequest creates a request to invoke ListHostPool API
+func CreateListHostPoolRequest() (request *ListHostPoolRequest) {
+	request = &ListHostPoolRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "ListHostPool", "emr", "openAPI")
+	return
+}
+
+// CreateListHostPoolResponse creates a response to parse from ListHostPool response
+func CreateListHostPoolResponse() (response *ListHostPoolResponse) {
+	response = &ListHostPoolResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/emr/list_hp_host.go

@@ -0,0 +1,112 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListHpHost invokes the emr.ListHpHost API synchronously
+// api document: https://help.aliyun.com/api/emr/listhphost.html
+func (client *Client) ListHpHost(request *ListHpHostRequest) (response *ListHpHostResponse, err error) {
+	response = CreateListHpHostResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListHpHostWithChan invokes the emr.ListHpHost API asynchronously
+// api document: https://help.aliyun.com/api/emr/listhphost.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListHpHostWithChan(request *ListHpHostRequest) (<-chan *ListHpHostResponse, <-chan error) {
+	responseChan := make(chan *ListHpHostResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListHpHost(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListHpHostWithCallback invokes the emr.ListHpHost API asynchronously
+// api document: https://help.aliyun.com/api/emr/listhphost.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListHpHostWithCallback(request *ListHpHostRequest, callback func(response *ListHpHostResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListHpHostResponse
+		var err error
+		defer close(result)
+		response, err = client.ListHpHost(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListHpHostRequest is the request struct for api ListHpHost
+type ListHpHostRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Role            string           `position:"Query" name:"Role"`
+	PageSize        requests.Integer `position:"Query" name:"PageSize"`
+	HpBizId         string           `position:"Query" name:"HpBizId"`
+	PageNumber      requests.Integer `position:"Query" name:"PageNumber"`
+	Status          string           `position:"Query" name:"Status"`
+}
+
+// ListHpHostResponse is the response struct for api ListHpHost
+type ListHpHostResponse struct {
+	*responses.BaseResponse
+	RequestId  string     `json:"RequestId" xml:"RequestId"`
+	PageNumber int        `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int        `json:"PageSize" xml:"PageSize"`
+	TotalCount int        `json:"TotalCount" xml:"TotalCount"`
+	HpHostList HpHostList `json:"HpHostList" xml:"HpHostList"`
+}
+
+// CreateListHpHostRequest creates a request to invoke ListHpHost API
+func CreateListHpHostRequest() (request *ListHpHostRequest) {
+	request = &ListHpHostRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "ListHpHost", "emr", "openAPI")
+	return
+}
+
+// CreateListHpHostResponse creates a response to parse from ListHpHost response
+func CreateListHpHostResponse() (response *ListHpHostResponse) {
+	response = &ListHpHostResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 1 - 1
services/emr/list_job_migrate_info.go

@@ -85,7 +85,7 @@ type ListJobMigrateInfoRequest struct {
 // ListJobMigrateInfoResponse is the response struct for api ListJobMigrateInfo
 // ListJobMigrateInfoResponse is the response struct for api ListJobMigrateInfo
 type ListJobMigrateInfoResponse struct {
 type ListJobMigrateInfoResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
-	Total              int              `json:"Total" xml:"Total"`
+	Total              int64            `json:"Total" xml:"Total"`
 	JobMigrateInfoList []JobMigrateInfo `json:"JobMigrateInfoList" xml:"JobMigrateInfoList"`
 	JobMigrateInfoList []JobMigrateInfo `json:"JobMigrateInfoList" xml:"JobMigrateInfoList"`
 }
 }
 
 

+ 110 - 0
services/emr/list_kafka_broker.go

@@ -0,0 +1,110 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListKafkaBroker invokes the emr.ListKafkaBroker API synchronously
+// api document: https://help.aliyun.com/api/emr/listkafkabroker.html
+func (client *Client) ListKafkaBroker(request *ListKafkaBrokerRequest) (response *ListKafkaBrokerResponse, err error) {
+	response = CreateListKafkaBrokerResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListKafkaBrokerWithChan invokes the emr.ListKafkaBroker API asynchronously
+// api document: https://help.aliyun.com/api/emr/listkafkabroker.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListKafkaBrokerWithChan(request *ListKafkaBrokerRequest) (<-chan *ListKafkaBrokerResponse, <-chan error) {
+	responseChan := make(chan *ListKafkaBrokerResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListKafkaBroker(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListKafkaBrokerWithCallback invokes the emr.ListKafkaBroker API asynchronously
+// api document: https://help.aliyun.com/api/emr/listkafkabroker.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListKafkaBrokerWithCallback(request *ListKafkaBrokerRequest, callback func(response *ListKafkaBrokerResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListKafkaBrokerResponse
+		var err error
+		defer close(result)
+		response, err = client.ListKafkaBroker(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListKafkaBrokerRequest is the request struct for api ListKafkaBroker
+type ListKafkaBrokerRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PageSize        requests.Integer `position:"Query" name:"PageSize"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+	PageNumber      requests.Integer `position:"Query" name:"PageNumber"`
+}
+
+// ListKafkaBrokerResponse is the response struct for api ListKafkaBroker
+type ListKafkaBrokerResponse struct {
+	*responses.BaseResponse
+	RequestId  string     `json:"RequestId" xml:"RequestId"`
+	Total      int        `json:"Total" xml:"Total"`
+	PageSize   int        `json:"PageSize" xml:"PageSize"`
+	PageNumber int        `json:"PageNumber" xml:"PageNumber"`
+	BrokerList BrokerList `json:"BrokerList" xml:"BrokerList"`
+}
+
+// CreateListKafkaBrokerRequest creates a request to invoke ListKafkaBroker API
+func CreateListKafkaBrokerRequest() (request *ListKafkaBrokerRequest) {
+	request = &ListKafkaBrokerRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "ListKafkaBroker", "emr", "openAPI")
+	return
+}
+
+// CreateListKafkaBrokerResponse creates a response to parse from ListKafkaBroker response
+func CreateListKafkaBrokerResponse() (response *ListKafkaBrokerResponse) {
+	response = &ListKafkaBrokerResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 111 - 0
services/emr/list_kafka_reassign.go

@@ -0,0 +1,111 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListKafkaReassign invokes the emr.ListKafkaReassign API synchronously
+// api document: https://help.aliyun.com/api/emr/listkafkareassign.html
+func (client *Client) ListKafkaReassign(request *ListKafkaReassignRequest) (response *ListKafkaReassignResponse, err error) {
+	response = CreateListKafkaReassignResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListKafkaReassignWithChan invokes the emr.ListKafkaReassign API asynchronously
+// api document: https://help.aliyun.com/api/emr/listkafkareassign.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListKafkaReassignWithChan(request *ListKafkaReassignRequest) (<-chan *ListKafkaReassignResponse, <-chan error) {
+	responseChan := make(chan *ListKafkaReassignResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListKafkaReassign(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListKafkaReassignWithCallback invokes the emr.ListKafkaReassign API asynchronously
+// api document: https://help.aliyun.com/api/emr/listkafkareassign.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListKafkaReassignWithCallback(request *ListKafkaReassignRequest, callback func(response *ListKafkaReassignResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListKafkaReassignResponse
+		var err error
+		defer close(result)
+		response, err = client.ListKafkaReassign(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListKafkaReassignRequest is the request struct for api ListKafkaReassign
+type ListKafkaReassignRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	TopicId         string           `position:"Query" name:"TopicId"`
+	PageSize        requests.Integer `position:"Query" name:"PageSize"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+	PageNumber      requests.Integer `position:"Query" name:"PageNumber"`
+}
+
+// ListKafkaReassignResponse is the response struct for api ListKafkaReassign
+type ListKafkaReassignResponse struct {
+	*responses.BaseResponse
+	RequestId    string       `json:"RequestId" xml:"RequestId"`
+	Total        int          `json:"Total" xml:"Total"`
+	PageSize     int          `json:"PageSize" xml:"PageSize"`
+	PageNumber   int          `json:"PageNumber" xml:"PageNumber"`
+	ReassignList ReassignList `json:"ReassignList" xml:"ReassignList"`
+}
+
+// CreateListKafkaReassignRequest creates a request to invoke ListKafkaReassign API
+func CreateListKafkaReassignRequest() (request *ListKafkaReassignRequest) {
+	request = &ListKafkaReassignRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "ListKafkaReassign", "emr", "openAPI")
+	return
+}
+
+// CreateListKafkaReassignResponse creates a response to parse from ListKafkaReassign response
+func CreateListKafkaReassignResponse() (response *ListKafkaReassignResponse) {
+	response = &ListKafkaReassignResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/emr/list_kafka_reassign_topic.go

@@ -0,0 +1,110 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListKafkaReassignTopic invokes the emr.ListKafkaReassignTopic API synchronously
+// api document: https://help.aliyun.com/api/emr/listkafkareassigntopic.html
+func (client *Client) ListKafkaReassignTopic(request *ListKafkaReassignTopicRequest) (response *ListKafkaReassignTopicResponse, err error) {
+	response = CreateListKafkaReassignTopicResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListKafkaReassignTopicWithChan invokes the emr.ListKafkaReassignTopic API asynchronously
+// api document: https://help.aliyun.com/api/emr/listkafkareassigntopic.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListKafkaReassignTopicWithChan(request *ListKafkaReassignTopicRequest) (<-chan *ListKafkaReassignTopicResponse, <-chan error) {
+	responseChan := make(chan *ListKafkaReassignTopicResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListKafkaReassignTopic(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListKafkaReassignTopicWithCallback invokes the emr.ListKafkaReassignTopic API asynchronously
+// api document: https://help.aliyun.com/api/emr/listkafkareassigntopic.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListKafkaReassignTopicWithCallback(request *ListKafkaReassignTopicRequest, callback func(response *ListKafkaReassignTopicResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListKafkaReassignTopicResponse
+		var err error
+		defer close(result)
+		response, err = client.ListKafkaReassignTopic(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListKafkaReassignTopicRequest is the request struct for api ListKafkaReassignTopic
+type ListKafkaReassignTopicRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ReassignId      string           `position:"Query" name:"ReassignId"`
+	PageSize        requests.Integer `position:"Query" name:"PageSize"`
+	PageNumber      requests.Integer `position:"Query" name:"PageNumber"`
+}
+
+// ListKafkaReassignTopicResponse is the response struct for api ListKafkaReassignTopic
+type ListKafkaReassignTopicResponse struct {
+	*responses.BaseResponse
+	RequestId         string            `json:"RequestId" xml:"RequestId"`
+	Total             int               `json:"Total" xml:"Total"`
+	PageSize          int               `json:"PageSize" xml:"PageSize"`
+	PageNumber        int               `json:"PageNumber" xml:"PageNumber"`
+	ReassignTopicList ReassignTopicList `json:"ReassignTopicList" xml:"ReassignTopicList"`
+}
+
+// CreateListKafkaReassignTopicRequest creates a request to invoke ListKafkaReassignTopic API
+func CreateListKafkaReassignTopicRequest() (request *ListKafkaReassignTopicRequest) {
+	request = &ListKafkaReassignTopicRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "ListKafkaReassignTopic", "emr", "openAPI")
+	return
+}
+
+// CreateListKafkaReassignTopicResponse creates a response to parse from ListKafkaReassignTopic response
+func CreateListKafkaReassignTopicResponse() (response *ListKafkaReassignTopicResponse) {
+	response = &ListKafkaReassignTopicResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 114 - 0
services/emr/list_kafka_topic_statistics.go

@@ -0,0 +1,114 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListKafkaTopicStatistics invokes the emr.ListKafkaTopicStatistics API synchronously
+// api document: https://help.aliyun.com/api/emr/listkafkatopicstatistics.html
+func (client *Client) ListKafkaTopicStatistics(request *ListKafkaTopicStatisticsRequest) (response *ListKafkaTopicStatisticsResponse, err error) {
+	response = CreateListKafkaTopicStatisticsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListKafkaTopicStatisticsWithChan invokes the emr.ListKafkaTopicStatistics API asynchronously
+// api document: https://help.aliyun.com/api/emr/listkafkatopicstatistics.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListKafkaTopicStatisticsWithChan(request *ListKafkaTopicStatisticsRequest) (<-chan *ListKafkaTopicStatisticsResponse, <-chan error) {
+	responseChan := make(chan *ListKafkaTopicStatisticsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListKafkaTopicStatistics(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListKafkaTopicStatisticsWithCallback invokes the emr.ListKafkaTopicStatistics API asynchronously
+// api document: https://help.aliyun.com/api/emr/listkafkatopicstatistics.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListKafkaTopicStatisticsWithCallback(request *ListKafkaTopicStatisticsRequest, callback func(response *ListKafkaTopicStatisticsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListKafkaTopicStatisticsResponse
+		var err error
+		defer close(result)
+		response, err = client.ListKafkaTopicStatistics(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListKafkaTopicStatisticsRequest is the request struct for api ListKafkaTopicStatistics
+type ListKafkaTopicStatisticsRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ActiveOnly      requests.Boolean `position:"Query" name:"ActiveOnly"`
+	PageSize        requests.Integer `position:"Query" name:"PageSize"`
+	DataSourceId    string           `position:"Query" name:"DataSourceId"`
+	TopicName       string           `position:"Query" name:"TopicName"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+	PageNumber      requests.Integer `position:"Query" name:"PageNumber"`
+	FuzzyTopicName  string           `position:"Query" name:"FuzzyTopicName"`
+}
+
+// ListKafkaTopicStatisticsResponse is the response struct for api ListKafkaTopicStatistics
+type ListKafkaTopicStatisticsResponse struct {
+	*responses.BaseResponse
+	RequestId  string                              `json:"RequestId" xml:"RequestId"`
+	Total      int                                 `json:"Total" xml:"Total"`
+	PageSize   int                                 `json:"PageSize" xml:"PageSize"`
+	PageNumber int                                 `json:"PageNumber" xml:"PageNumber"`
+	TopicList  TopicListInListKafkaTopicStatistics `json:"TopicList" xml:"TopicList"`
+}
+
+// CreateListKafkaTopicStatisticsRequest creates a request to invoke ListKafkaTopicStatistics API
+func CreateListKafkaTopicStatisticsRequest() (request *ListKafkaTopicStatisticsRequest) {
+	request = &ListKafkaTopicStatisticsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "ListKafkaTopicStatistics", "emr", "openAPI")
+	return
+}
+
+// CreateListKafkaTopicStatisticsResponse creates a response to parse from ListKafkaTopicStatistics response
+func CreateListKafkaTopicStatisticsResponse() (response *ListKafkaTopicStatisticsResponse) {
+	response = &ListKafkaTopicStatisticsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 3 - 0
services/emr/list_nav_sub_tree.go

@@ -77,10 +77,13 @@ func (client *Client) ListNavSubTreeWithCallback(request *ListNavSubTreeRequest,
 type ListNavSubTreeRequest struct {
 type ListNavSubTreeRequest struct {
 	*requests.RpcRequest
 	*requests.RpcRequest
 	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Depth           requests.Integer `position:"Query" name:"Depth"`
 	Name            string           `position:"Query" name:"Name"`
 	Name            string           `position:"Query" name:"Name"`
+	PageSize        requests.Integer `position:"Query" name:"PageSize"`
 	Type            string           `position:"Query" name:"Type"`
 	Type            string           `position:"Query" name:"Type"`
 	ProjectId       string           `position:"Query" name:"ProjectId"`
 	ProjectId       string           `position:"Query" name:"ProjectId"`
 	ParentId        string           `position:"Query" name:"ParentId"`
 	ParentId        string           `position:"Query" name:"ParentId"`
+	PageNumber      requests.Integer `position:"Query" name:"PageNumber"`
 }
 }
 
 
 // ListNavSubTreeResponse is the response struct for api ListNavSubTree
 // ListNavSubTreeResponse is the response struct for api ListNavSubTree

+ 5 - 5
services/emr/list_resource_pool.go

@@ -86,11 +86,11 @@ type ListResourcePoolRequest struct {
 // ListResourcePoolResponse is the response struct for api ListResourcePool
 // ListResourcePoolResponse is the response struct for api ListResourcePool
 type ListResourcePoolResponse struct {
 type ListResourcePoolResponse struct {
 	*responses.BaseResponse
 	*responses.BaseResponse
-	RequestId    string       `json:"RequestId" xml:"RequestId"`
-	PageNumber   int          `json:"PageNumber" xml:"PageNumber"`
-	PageSize     int          `json:"PageSize" xml:"PageSize"`
-	Total        int          `json:"Total" xml:"Total"`
-	PoolInfoList PoolInfoList `json:"PoolInfoList" xml:"PoolInfoList"`
+	RequestId    string                         `json:"RequestId" xml:"RequestId"`
+	PageNumber   int                            `json:"PageNumber" xml:"PageNumber"`
+	PageSize     int                            `json:"PageSize" xml:"PageSize"`
+	Total        int                            `json:"Total" xml:"Total"`
+	PoolInfoList PoolInfoListInListResourcePool `json:"PoolInfoList" xml:"PoolInfoList"`
 }
 }
 
 
 // CreateListResourcePoolRequest creates a request to invoke ListResourcePool API
 // CreateListResourcePoolRequest creates a request to invoke ListResourcePool API

+ 112 - 0
services/emr/list_resource_pool_for_admin.go

@@ -0,0 +1,112 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListResourcePoolForAdmin invokes the emr.ListResourcePoolForAdmin API synchronously
+// api document: https://help.aliyun.com/api/emr/listresourcepoolforadmin.html
+func (client *Client) ListResourcePoolForAdmin(request *ListResourcePoolForAdminRequest) (response *ListResourcePoolForAdminResponse, err error) {
+	response = CreateListResourcePoolForAdminResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListResourcePoolForAdminWithChan invokes the emr.ListResourcePoolForAdmin API asynchronously
+// api document: https://help.aliyun.com/api/emr/listresourcepoolforadmin.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListResourcePoolForAdminWithChan(request *ListResourcePoolForAdminRequest) (<-chan *ListResourcePoolForAdminResponse, <-chan error) {
+	responseChan := make(chan *ListResourcePoolForAdminResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListResourcePoolForAdmin(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListResourcePoolForAdminWithCallback invokes the emr.ListResourcePoolForAdmin API asynchronously
+// api document: https://help.aliyun.com/api/emr/listresourcepoolforadmin.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListResourcePoolForAdminWithCallback(request *ListResourcePoolForAdminRequest, callback func(response *ListResourcePoolForAdminResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListResourcePoolForAdminResponse
+		var err error
+		defer close(result)
+		response, err = client.ListResourcePoolForAdmin(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListResourcePoolForAdminRequest is the request struct for api ListResourcePoolForAdmin
+type ListResourcePoolForAdminRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PageSize        requests.Integer `position:"Query" name:"PageSize"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+	UserId          string           `position:"Query" name:"UserId"`
+	PageNumber      requests.Integer `position:"Query" name:"PageNumber"`
+	PoolType        string           `position:"Query" name:"PoolType"`
+}
+
+// ListResourcePoolForAdminResponse is the response struct for api ListResourcePoolForAdmin
+type ListResourcePoolForAdminResponse struct {
+	*responses.BaseResponse
+	RequestId    string                                 `json:"RequestId" xml:"RequestId"`
+	PageNumber   int                                    `json:"PageNumber" xml:"PageNumber"`
+	PageSize     int                                    `json:"PageSize" xml:"PageSize"`
+	Total        int                                    `json:"Total" xml:"Total"`
+	PoolInfoList PoolInfoListInListResourcePoolForAdmin `json:"PoolInfoList" xml:"PoolInfoList"`
+}
+
+// CreateListResourcePoolForAdminRequest creates a request to invoke ListResourcePoolForAdmin API
+func CreateListResourcePoolForAdminRequest() (request *ListResourcePoolForAdminRequest) {
+	request = &ListResourcePoolForAdminRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "ListResourcePoolForAdmin", "emr", "openAPI")
+	return
+}
+
+// CreateListResourcePoolForAdminResponse creates a response to parse from ListResourcePoolForAdmin response
+func CreateListResourcePoolForAdminResponse() (response *ListResourcePoolForAdminResponse) {
+	response = &ListResourcePoolForAdminResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/emr/list_roles.go

@@ -0,0 +1,106 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListRoles invokes the emr.ListRoles API synchronously
+// api document: https://help.aliyun.com/api/emr/listroles.html
+func (client *Client) ListRoles(request *ListRolesRequest) (response *ListRolesResponse, err error) {
+	response = CreateListRolesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListRolesWithChan invokes the emr.ListRoles API asynchronously
+// api document: https://help.aliyun.com/api/emr/listroles.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListRolesWithChan(request *ListRolesRequest) (<-chan *ListRolesResponse, <-chan error) {
+	responseChan := make(chan *ListRolesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListRoles(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListRolesWithCallback invokes the emr.ListRoles API asynchronously
+// api document: https://help.aliyun.com/api/emr/listroles.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListRolesWithCallback(request *ListRolesRequest, callback func(response *ListRolesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListRolesResponse
+		var err error
+		defer close(result)
+		response, err = client.ListRoles(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListRolesRequest is the request struct for api ListRoles
+type ListRolesRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceType    string           `position:"Query" name:"ResourceType"`
+}
+
+// ListRolesResponse is the response struct for api ListRoles
+type ListRolesResponse struct {
+	*responses.BaseResponse
+	Paging    bool            `json:"Paging" xml:"Paging"`
+	RequestId string          `json:"RequestId" xml:"RequestId"`
+	Data      DataInListRoles `json:"Data" xml:"Data"`
+}
+
+// CreateListRolesRequest creates a request to invoke ListRoles API
+func CreateListRolesRequest() (request *ListRolesRequest) {
+	request = &ListRolesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "ListRoles", "emr", "openAPI")
+	return
+}
+
+// CreateListRolesResponse creates a response to parse from ListRoles response
+func CreateListRolesResponse() (response *ListRolesResponse) {
+	response = &ListRolesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 111 - 0
services/emr/list_stack.go

@@ -0,0 +1,111 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListStack invokes the emr.ListStack API synchronously
+// api document: https://help.aliyun.com/api/emr/liststack.html
+func (client *Client) ListStack(request *ListStackRequest) (response *ListStackResponse, err error) {
+	response = CreateListStackResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListStackWithChan invokes the emr.ListStack API asynchronously
+// api document: https://help.aliyun.com/api/emr/liststack.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListStackWithChan(request *ListStackRequest) (<-chan *ListStackResponse, <-chan error) {
+	responseChan := make(chan *ListStackResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListStack(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListStackWithCallback invokes the emr.ListStack API asynchronously
+// api document: https://help.aliyun.com/api/emr/liststack.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListStackWithCallback(request *ListStackRequest, callback func(response *ListStackResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListStackResponse
+		var err error
+		defer close(result)
+		response, err = client.ListStack(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListStackRequest is the request struct for api ListStack
+type ListStackRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PageSize        requests.Integer `position:"Query" name:"PageSize"`
+	StackName       string           `position:"Query" name:"StackName"`
+	StackVersion    string           `position:"Query" name:"StackVersion"`
+	PageNumber      requests.Integer `position:"Query" name:"PageNumber"`
+}
+
+// ListStackResponse is the response struct for api ListStack
+type ListStackResponse struct {
+	*responses.BaseResponse
+	RequestId  string    `json:"RequestId" xml:"RequestId"`
+	PageNumber int       `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int       `json:"PageSize" xml:"PageSize"`
+	TotalCount int       `json:"TotalCount" xml:"TotalCount"`
+	StackList  StackList `json:"StackList" xml:"StackList"`
+}
+
+// CreateListStackRequest creates a request to invoke ListStack API
+func CreateListStackRequest() (request *ListStackRequest) {
+	request = &ListStackRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "ListStack", "emr", "openAPI")
+	return
+}
+
+// CreateListStackResponse creates a response to parse from ListStack response
+func CreateListStackResponse() (response *ListStackResponse) {
+	response = &ListStackResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/emr/list_stack_service.go

@@ -0,0 +1,108 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListStackService invokes the emr.ListStackService API synchronously
+// api document: https://help.aliyun.com/api/emr/liststackservice.html
+func (client *Client) ListStackService(request *ListStackServiceRequest) (response *ListStackServiceResponse, err error) {
+	response = CreateListStackServiceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListStackServiceWithChan invokes the emr.ListStackService API asynchronously
+// api document: https://help.aliyun.com/api/emr/liststackservice.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListStackServiceWithChan(request *ListStackServiceRequest) (<-chan *ListStackServiceResponse, <-chan error) {
+	responseChan := make(chan *ListStackServiceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListStackService(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListStackServiceWithCallback invokes the emr.ListStackService API asynchronously
+// api document: https://help.aliyun.com/api/emr/liststackservice.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListStackServiceWithCallback(request *ListStackServiceRequest, callback func(response *ListStackServiceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListStackServiceResponse
+		var err error
+		defer close(result)
+		response, err = client.ListStackService(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListStackServiceRequest is the request struct for api ListStackService
+type ListStackServiceRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	StackName       string           `position:"Query" name:"StackName"`
+	StackVersion    string           `position:"Query" name:"StackVersion"`
+}
+
+// ListStackServiceResponse is the response struct for api ListStackService
+type ListStackServiceResponse struct {
+	*responses.BaseResponse
+	RequestId    string                        `json:"RequestId" xml:"RequestId"`
+	StackName    string                        `json:"StackName" xml:"StackName"`
+	StackVersion string                        `json:"StackVersion" xml:"StackVersion"`
+	ServiceList  ServiceListInListStackService `json:"ServiceList" xml:"ServiceList"`
+}
+
+// CreateListStackServiceRequest creates a request to invoke ListStackService API
+func CreateListStackServiceRequest() (request *ListStackServiceRequest) {
+	request = &ListStackServiceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "ListStackService", "emr", "openAPI")
+	return
+}
+
+// CreateListStackServiceResponse creates a response to parse from ListStackService response
+func CreateListStackServiceResponse() (response *ListStackServiceResponse) {
+	response = &ListStackServiceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/emr/list_streaming_sql_query.go

@@ -0,0 +1,108 @@
+package emr
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListStreamingSqlQuery invokes the emr.ListStreamingSqlQuery API synchronously
+// api document: https://help.aliyun.com/api/emr/liststreamingsqlquery.html
+func (client *Client) ListStreamingSqlQuery(request *ListStreamingSqlQueryRequest) (response *ListStreamingSqlQueryResponse, err error) {
+	response = CreateListStreamingSqlQueryResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListStreamingSqlQueryWithChan invokes the emr.ListStreamingSqlQuery API asynchronously
+// api document: https://help.aliyun.com/api/emr/liststreamingsqlquery.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListStreamingSqlQueryWithChan(request *ListStreamingSqlQueryRequest) (<-chan *ListStreamingSqlQueryResponse, <-chan error) {
+	responseChan := make(chan *ListStreamingSqlQueryResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListStreamingSqlQuery(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListStreamingSqlQueryWithCallback invokes the emr.ListStreamingSqlQuery API asynchronously
+// api document: https://help.aliyun.com/api/emr/liststreamingsqlquery.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListStreamingSqlQueryWithCallback(request *ListStreamingSqlQueryRequest, callback func(response *ListStreamingSqlQueryResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListStreamingSqlQueryResponse
+		var err error
+		defer close(result)
+		response, err = client.ListStreamingSqlQuery(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListStreamingSqlQueryRequest is the request struct for api ListStreamingSqlQuery
+type ListStreamingSqlQueryRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	InstanceId      string           `position:"Query" name:"InstanceId"`
+}
+
+// ListStreamingSqlQueryResponse is the response struct for api ListStreamingSqlQuery
+type ListStreamingSqlQueryResponse struct {
+	*responses.BaseResponse
+	RequestId  string                       `json:"RequestId" xml:"RequestId"`
+	PageNumber int                          `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int                          `json:"PageSize" xml:"PageSize"`
+	TotalCount int                          `json:"TotalCount" xml:"TotalCount"`
+	Items      ItemsInListStreamingSqlQuery `json:"Items" xml:"Items"`
+}
+
+// CreateListStreamingSqlQueryRequest creates a request to invoke ListStreamingSqlQuery API
+func CreateListStreamingSqlQueryRequest() (request *ListStreamingSqlQueryRequest) {
+	request = &ListStreamingSqlQueryRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "ListStreamingSqlQuery", "emr", "openAPI")
+	return
+}
+
+// CreateListStreamingSqlQueryResponse creates a response to parse from ListStreamingSqlQuery response
+func CreateListStreamingSqlQueryResponse() (response *ListStreamingSqlQueryResponse) {
+	response = &ListStreamingSqlQueryResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

Some files were not shown because too many files changed in this diff