Quellcode durchsuchen

EMR SDK Auto Released By xiaoyan.yan,Version:1.53.34

Signed-off-by: haowei.yao <haowei.yao@alibaba-inc.com>
haowei.yao vor 6 Jahren
Ursprung
Commit
5de79453fb
100 geänderte Dateien mit 10997 neuen und 0 gelöschten Zeilen
  1. 3 0
      ChangeLog.txt
  2. 111 0
      services/emr/add_cluster_service.go
  3. 105 0
      services/emr/attach_cluster_for_note.go
  4. 105 0
      services/emr/attach_pub_ip.go
  5. 106 0
      services/emr/authorize_security_group.go
  6. 105 0
      services/emr/cancel_etl_job_release.go
  7. 105 0
      services/emr/cancel_order.go
  8. 107 0
      services/emr/check_data_source.go
  9. 81 0
      services/emr/client.go
  10. 105 0
      services/emr/clone_data_source.go
  11. 105 0
      services/emr/clone_etl_job.go
  12. 105 0
      services/emr/clone_flow.go
  13. 105 0
      services/emr/clone_flow_job.go
  14. 104 0
      services/emr/common_api_white_list.go
  15. 116 0
      services/emr/context_query_log.go
  16. 108 0
      services/emr/create_alert_contact.go
  17. 106 0
      services/emr/create_alert_ding_ding_group.go
  18. 106 0
      services/emr/create_alert_user_group.go
  19. 109 0
      services/emr/create_cluster_host_group.go
  20. 109 0
      services/emr/create_cluster_script.go
  21. 173 0
      services/emr/create_cluster_template.go
  22. 198 0
      services/emr/create_cluster_v2.go
  23. 109 0
      services/emr/create_cluster_with_template.go
  24. 110 0
      services/emr/create_data_source.go
  25. 109 0
      services/emr/create_etl_job.go
  26. 167 0
      services/emr/create_execution_plan.go
  27. 118 0
      services/emr/create_flow.go
  28. 107 0
      services/emr/create_flow_category.go
  29. 118 0
      services/emr/create_flow_for_web.go
  30. 127 0
      services/emr/create_flow_job.go
  31. 105 0
      services/emr/create_flow_project.go
  32. 110 0
      services/emr/create_flow_project_cluster_setting.go
  33. 111 0
      services/emr/create_flow_project_user.go
  34. 110 0
      services/emr/create_job.go
  35. 110 0
      services/emr/create_nav_node.go
  36. 108 0
      services/emr/create_note.go
  37. 106 0
      services/emr/create_paragraph.go
  38. 120 0
      services/emr/create_resource_pool.go
  39. 118 0
      services/emr/create_resource_queue.go
  40. 137 0
      services/emr/create_scaling_rule.go
  41. 139 0
      services/emr/create_scaling_task_group.go
  42. 114 0
      services/emr/create_user_password.go
  43. 102 0
      services/emr/create_user_statistics.go
  44. 112 0
      services/emr/create_users.go
  45. 105 0
      services/emr/create_verification_code.go
  46. 104 0
      services/emr/delete_alert_contacts.go
  47. 104 0
      services/emr/delete_alert_ding_ding_groups.go
  48. 104 0
      services/emr/delete_alert_user_groups.go
  49. 105 0
      services/emr/delete_cluster_host_group.go
  50. 104 0
      services/emr/delete_cluster_script.go
  51. 104 0
      services/emr/delete_cluster_template.go
  52. 104 0
      services/emr/delete_data_source.go
  53. 104 0
      services/emr/delete_etl_job.go
  54. 104 0
      services/emr/delete_execution_plan.go
  55. 105 0
      services/emr/delete_flow.go
  56. 105 0
      services/emr/delete_flow_category.go
  57. 105 0
      services/emr/delete_flow_job.go
  58. 104 0
      services/emr/delete_flow_project.go
  59. 104 0
      services/emr/delete_flow_project_by_id.go
  60. 105 0
      services/emr/delete_flow_project_cluster_setting.go
  61. 105 0
      services/emr/delete_flow_project_user.go
  62. 104 0
      services/emr/delete_job.go
  63. 105 0
      services/emr/delete_nav_node.go
  64. 104 0
      services/emr/delete_note.go
  65. 105 0
      services/emr/delete_paragraph.go
  66. 105 0
      services/emr/delete_resource_pool.go
  67. 105 0
      services/emr/delete_resource_queue.go
  68. 107 0
      services/emr/delete_scaling_rule.go
  69. 106 0
      services/emr/delete_scaling_task_group.go
  70. 106 0
      services/emr/delete_user.go
  71. 105 0
      services/emr/describe_available_instance_type.go
  72. 105 0
      services/emr/describe_cluster_basic_info.go
  73. 110 0
      services/emr/describe_cluster_op_log.go
  74. 110 0
      services/emr/describe_cluster_operation_host_task_log.go
  75. 107 0
      services/emr/describe_cluster_resource_pool_scheduler_type.go
  76. 105 0
      services/emr/describe_cluster_script.go
  77. 106 0
      services/emr/describe_cluster_service.go
  78. 110 0
      services/emr/describe_cluster_service_config.go
  79. 107 0
      services/emr/describe_cluster_service_config_history.go
  80. 107 0
      services/emr/describe_cluster_service_config_tag.go
  81. 106 0
      services/emr/describe_cluster_statistics.go
  82. 105 0
      services/emr/describe_cluster_template.go
  83. 105 0
      services/emr/describe_cluster_v2.go
  84. 117 0
      services/emr/describe_data_source.go
  85. 112 0
      services/emr/describe_data_source_command.go
  86. 107 0
      services/emr/describe_data_source_schema_database.go
  87. 108 0
      services/emr/describe_data_source_schema_table.go
  88. 105 0
      services/emr/describe_emr_main_version.go
  89. 114 0
      services/emr/describe_etl_job.go
  90. 115 0
      services/emr/describe_etl_job_instance.go
  91. 105 0
      services/emr/describe_etl_job_sql_schema.go
  92. 106 0
      services/emr/describe_etl_job_stage_output_schema.go
  93. 120 0
      services/emr/describe_execution_plan.go
  94. 125 0
      services/emr/describe_flow.go
  95. 114 0
      services/emr/describe_flow_category.go
  96. 105 0
      services/emr/describe_flow_category_tree.go
  97. 121 0
      services/emr/describe_flow_instance.go
  98. 125 0
      services/emr/describe_flow_job.go
  99. 105 0
      services/emr/describe_flow_job_statistic.go
  100. 139 0
      services/emr/describe_flow_node_instance.go

+ 3 - 0
ChangeLog.txt

@@ -1,3 +1,6 @@
+2019-03-14 Version: 1.53.34
+1, Update Dependency
+
 2019-03-14 Version: 1.53.33
 1, Update Dependency
 

+ 111 - 0
services/emr/add_cluster_service.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"
+)
+
+// AddClusterService invokes the emr.AddClusterService API synchronously
+// api document: https://help.aliyun.com/api/emr/addclusterservice.html
+func (client *Client) AddClusterService(request *AddClusterServiceRequest) (response *AddClusterServiceResponse, err error) {
+	response = CreateAddClusterServiceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddClusterServiceWithChan invokes the emr.AddClusterService API asynchronously
+// api document: https://help.aliyun.com/api/emr/addclusterservice.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddClusterServiceWithChan(request *AddClusterServiceRequest) (<-chan *AddClusterServiceResponse, <-chan error) {
+	responseChan := make(chan *AddClusterServiceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddClusterService(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddClusterServiceWithCallback invokes the emr.AddClusterService API asynchronously
+// api document: https://help.aliyun.com/api/emr/addclusterservice.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddClusterServiceWithCallback(request *AddClusterServiceRequest, callback func(response *AddClusterServiceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddClusterServiceResponse
+		var err error
+		defer close(result)
+		response, err = client.AddClusterService(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddClusterServiceRequest is the request struct for api AddClusterService
+type AddClusterServiceRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer            `position:"Query" name:"ResourceOwnerId"`
+	Service         *[]AddClusterServiceService `position:"Query" name:"Service"  type:"Repeated"`
+	Comment         string                      `position:"Query" name:"Comment"`
+	ClusterId       string                      `position:"Query" name:"ClusterId"`
+}
+
+// AddClusterServiceService is a repeated param struct in AddClusterServiceRequest
+type AddClusterServiceService struct {
+	ServiceName string `name:"ServiceName"`
+}
+
+// AddClusterServiceResponse is the response struct for api AddClusterService
+type AddClusterServiceResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateAddClusterServiceRequest creates a request to invoke AddClusterService API
+func CreateAddClusterServiceRequest() (request *AddClusterServiceRequest) {
+	request = &AddClusterServiceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "AddClusterService", "emr", "openAPI")
+	return
+}
+
+// CreateAddClusterServiceResponse creates a response to parse from AddClusterService response
+func CreateAddClusterServiceResponse() (response *AddClusterServiceResponse) {
+	response = &AddClusterServiceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/attach_cluster_for_note.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"
+)
+
+// AttachClusterForNote invokes the emr.AttachClusterForNote API synchronously
+// api document: https://help.aliyun.com/api/emr/attachclusterfornote.html
+func (client *Client) AttachClusterForNote(request *AttachClusterForNoteRequest) (response *AttachClusterForNoteResponse, err error) {
+	response = CreateAttachClusterForNoteResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AttachClusterForNoteWithChan invokes the emr.AttachClusterForNote API asynchronously
+// api document: https://help.aliyun.com/api/emr/attachclusterfornote.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AttachClusterForNoteWithChan(request *AttachClusterForNoteRequest) (<-chan *AttachClusterForNoteResponse, <-chan error) {
+	responseChan := make(chan *AttachClusterForNoteResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AttachClusterForNote(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AttachClusterForNoteWithCallback invokes the emr.AttachClusterForNote API asynchronously
+// api document: https://help.aliyun.com/api/emr/attachclusterfornote.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AttachClusterForNoteWithCallback(request *AttachClusterForNoteRequest, callback func(response *AttachClusterForNoteResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AttachClusterForNoteResponse
+		var err error
+		defer close(result)
+		response, err = client.AttachClusterForNote(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AttachClusterForNoteRequest is the request struct for api AttachClusterForNote
+type AttachClusterForNoteRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Id              string           `position:"Query" name:"Id"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+}
+
+// AttachClusterForNoteResponse is the response struct for api AttachClusterForNote
+type AttachClusterForNoteResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateAttachClusterForNoteRequest creates a request to invoke AttachClusterForNote API
+func CreateAttachClusterForNoteRequest() (request *AttachClusterForNoteRequest) {
+	request = &AttachClusterForNoteRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "AttachClusterForNote", "emr", "openAPI")
+	return
+}
+
+// CreateAttachClusterForNoteResponse creates a response to parse from AttachClusterForNote response
+func CreateAttachClusterForNoteResponse() (response *AttachClusterForNoteResponse) {
+	response = &AttachClusterForNoteResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/attach_pub_ip.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"
+)
+
+// AttachPubIp invokes the emr.AttachPubIp API synchronously
+// api document: https://help.aliyun.com/api/emr/attachpubip.html
+func (client *Client) AttachPubIp(request *AttachPubIpRequest) (response *AttachPubIpResponse, err error) {
+	response = CreateAttachPubIpResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AttachPubIpWithChan invokes the emr.AttachPubIp API asynchronously
+// api document: https://help.aliyun.com/api/emr/attachpubip.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AttachPubIpWithChan(request *AttachPubIpRequest) (<-chan *AttachPubIpResponse, <-chan error) {
+	responseChan := make(chan *AttachPubIpResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AttachPubIp(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AttachPubIpWithCallback invokes the emr.AttachPubIp API asynchronously
+// api document: https://help.aliyun.com/api/emr/attachpubip.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AttachPubIpWithCallback(request *AttachPubIpRequest, callback func(response *AttachPubIpResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AttachPubIpResponse
+		var err error
+		defer close(result)
+		response, err = client.AttachPubIp(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AttachPubIpRequest is the request struct for api AttachPubIp
+type AttachPubIpRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	InstanceIds     *[]string        `position:"Query" name:"InstanceIds"  type:"Repeated"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+}
+
+// AttachPubIpResponse is the response struct for api AttachPubIp
+type AttachPubIpResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateAttachPubIpRequest creates a request to invoke AttachPubIp API
+func CreateAttachPubIpRequest() (request *AttachPubIpRequest) {
+	request = &AttachPubIpRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "AttachPubIp", "emr", "openAPI")
+	return
+}
+
+// CreateAttachPubIpResponse creates a response to parse from AttachPubIp response
+func CreateAttachPubIpResponse() (response *AttachPubIpResponse) {
+	response = &AttachPubIpResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/emr/authorize_security_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"
+)
+
+// AuthorizeSecurityGroup invokes the emr.AuthorizeSecurityGroup API synchronously
+// api document: https://help.aliyun.com/api/emr/authorizesecuritygroup.html
+func (client *Client) AuthorizeSecurityGroup(request *AuthorizeSecurityGroupRequest) (response *AuthorizeSecurityGroupResponse, err error) {
+	response = CreateAuthorizeSecurityGroupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AuthorizeSecurityGroupWithChan invokes the emr.AuthorizeSecurityGroup API asynchronously
+// api document: https://help.aliyun.com/api/emr/authorizesecuritygroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AuthorizeSecurityGroupWithChan(request *AuthorizeSecurityGroupRequest) (<-chan *AuthorizeSecurityGroupResponse, <-chan error) {
+	responseChan := make(chan *AuthorizeSecurityGroupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AuthorizeSecurityGroup(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AuthorizeSecurityGroupWithCallback invokes the emr.AuthorizeSecurityGroup API asynchronously
+// api document: https://help.aliyun.com/api/emr/authorizesecuritygroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AuthorizeSecurityGroupWithCallback(request *AuthorizeSecurityGroupRequest, callback func(response *AuthorizeSecurityGroupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AuthorizeSecurityGroupResponse
+		var err error
+		defer close(result)
+		response, err = client.AuthorizeSecurityGroup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AuthorizeSecurityGroupRequest is the request struct for api AuthorizeSecurityGroup
+type AuthorizeSecurityGroupRequest struct {
+	*requests.RpcRequest
+	BizType         string           `position:"Query" name:"BizType"`
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	BizContent      string           `position:"Query" name:"BizContent"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+}
+
+// AuthorizeSecurityGroupResponse is the response struct for api AuthorizeSecurityGroup
+type AuthorizeSecurityGroupResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateAuthorizeSecurityGroupRequest creates a request to invoke AuthorizeSecurityGroup API
+func CreateAuthorizeSecurityGroupRequest() (request *AuthorizeSecurityGroupRequest) {
+	request = &AuthorizeSecurityGroupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "AuthorizeSecurityGroup", "emr", "openAPI")
+	return
+}
+
+// CreateAuthorizeSecurityGroupResponse creates a response to parse from AuthorizeSecurityGroup response
+func CreateAuthorizeSecurityGroupResponse() (response *AuthorizeSecurityGroupResponse) {
+	response = &AuthorizeSecurityGroupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/cancel_etl_job_release.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"
+)
+
+// CancelETLJobRelease invokes the emr.CancelETLJobRelease API synchronously
+// api document: https://help.aliyun.com/api/emr/canceletljobrelease.html
+func (client *Client) CancelETLJobRelease(request *CancelETLJobReleaseRequest) (response *CancelETLJobReleaseResponse, err error) {
+	response = CreateCancelETLJobReleaseResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CancelETLJobReleaseWithChan invokes the emr.CancelETLJobRelease API asynchronously
+// api document: https://help.aliyun.com/api/emr/canceletljobrelease.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CancelETLJobReleaseWithChan(request *CancelETLJobReleaseRequest) (<-chan *CancelETLJobReleaseResponse, <-chan error) {
+	responseChan := make(chan *CancelETLJobReleaseResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CancelETLJobRelease(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CancelETLJobReleaseWithCallback invokes the emr.CancelETLJobRelease API asynchronously
+// api document: https://help.aliyun.com/api/emr/canceletljobrelease.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CancelETLJobReleaseWithCallback(request *CancelETLJobReleaseRequest, callback func(response *CancelETLJobReleaseResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CancelETLJobReleaseResponse
+		var err error
+		defer close(result)
+		response, err = client.CancelETLJobRelease(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CancelETLJobReleaseRequest is the request struct for api CancelETLJobRelease
+type CancelETLJobReleaseRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	EtlJobId        string           `position:"Query" name:"EtlJobId"`
+	ReleaseId       string           `position:"Query" name:"ReleaseId"`
+}
+
+// CancelETLJobReleaseResponse is the response struct for api CancelETLJobRelease
+type CancelETLJobReleaseResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateCancelETLJobReleaseRequest creates a request to invoke CancelETLJobRelease API
+func CreateCancelETLJobReleaseRequest() (request *CancelETLJobReleaseRequest) {
+	request = &CancelETLJobReleaseRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CancelETLJobRelease", "emr", "openAPI")
+	return
+}
+
+// CreateCancelETLJobReleaseResponse creates a response to parse from CancelETLJobRelease response
+func CreateCancelETLJobReleaseResponse() (response *CancelETLJobReleaseResponse) {
+	response = &CancelETLJobReleaseResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/cancel_order.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"
+)
+
+// CancelOrder invokes the emr.CancelOrder API synchronously
+// api document: https://help.aliyun.com/api/emr/cancelorder.html
+func (client *Client) CancelOrder(request *CancelOrderRequest) (response *CancelOrderResponse, err error) {
+	response = CreateCancelOrderResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CancelOrderWithChan invokes the emr.CancelOrder API asynchronously
+// api document: https://help.aliyun.com/api/emr/cancelorder.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CancelOrderWithChan(request *CancelOrderRequest) (<-chan *CancelOrderResponse, <-chan error) {
+	responseChan := make(chan *CancelOrderResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CancelOrder(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CancelOrderWithCallback invokes the emr.CancelOrder API asynchronously
+// api document: https://help.aliyun.com/api/emr/cancelorder.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CancelOrderWithCallback(request *CancelOrderRequest, callback func(response *CancelOrderResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CancelOrderResponse
+		var err error
+		defer close(result)
+		response, err = client.CancelOrder(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CancelOrderRequest is the request struct for api CancelOrder
+type CancelOrderRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+}
+
+// CancelOrderResponse is the response struct for api CancelOrder
+type CancelOrderResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	ClusterId string `json:"clusterId" xml:"clusterId"`
+}
+
+// CreateCancelOrderRequest creates a request to invoke CancelOrder API
+func CreateCancelOrderRequest() (request *CancelOrderRequest) {
+	request = &CancelOrderRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CancelOrder", "emr", "openAPI")
+	return
+}
+
+// CreateCancelOrderResponse creates a response to parse from CancelOrder response
+func CreateCancelOrderResponse() (response *CancelOrderResponse) {
+	response = &CancelOrderResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/emr/check_data_source.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"
+)
+
+// CheckDataSource invokes the emr.CheckDataSource API synchronously
+// api document: https://help.aliyun.com/api/emr/checkdatasource.html
+func (client *Client) CheckDataSource(request *CheckDataSourceRequest) (response *CheckDataSourceResponse, err error) {
+	response = CreateCheckDataSourceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CheckDataSourceWithChan invokes the emr.CheckDataSource API asynchronously
+// api document: https://help.aliyun.com/api/emr/checkdatasource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CheckDataSourceWithChan(request *CheckDataSourceRequest) (<-chan *CheckDataSourceResponse, <-chan error) {
+	responseChan := make(chan *CheckDataSourceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CheckDataSource(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CheckDataSourceWithCallback invokes the emr.CheckDataSource API asynchronously
+// api document: https://help.aliyun.com/api/emr/checkdatasource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CheckDataSourceWithCallback(request *CheckDataSourceRequest, callback func(response *CheckDataSourceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CheckDataSourceResponse
+		var err error
+		defer close(result)
+		response, err = client.CheckDataSource(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CheckDataSourceRequest is the request struct for api CheckDataSource
+type CheckDataSourceRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Conf            string           `position:"Query" name:"Conf"`
+	Id              string           `position:"Query" name:"Id"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+}
+
+// CheckDataSourceResponse is the response struct for api CheckDataSource
+type CheckDataSourceResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	CommandId string `json:"CommandId" xml:"CommandId"`
+}
+
+// CreateCheckDataSourceRequest creates a request to invoke CheckDataSource API
+func CreateCheckDataSourceRequest() (request *CheckDataSourceRequest) {
+	request = &CheckDataSourceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CheckDataSource", "emr", "openAPI")
+	return
+}
+
+// CreateCheckDataSourceResponse creates a response to parse from CheckDataSource response
+func CreateCheckDataSourceResponse() (response *CheckDataSourceResponse) {
+	response = &CheckDataSourceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 81 - 0
services/emr/client.go

@@ -0,0 +1,81 @@
+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"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth"
+)
+
+// Client is the sdk client struct, each func corresponds to an OpenAPI
+type Client struct {
+	sdk.Client
+}
+
+// NewClient creates a sdk client with environment variables
+func NewClient() (client *Client, err error) {
+	client = &Client{}
+	err = client.Init()
+	return
+}
+
+// NewClientWithOptions creates a sdk client with regionId/sdkConfig/credential
+// this is the common api to create a sdk client
+func NewClientWithOptions(regionId string, config *sdk.Config, credential auth.Credential) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithOptions(regionId, config, credential)
+	return
+}
+
+// NewClientWithAccessKey is a shortcut to create sdk client with accesskey
+// usage: https://help.aliyun.com/document_detail/66217.html
+func NewClientWithAccessKey(regionId, accessKeyId, accessKeySecret string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithAccessKey(regionId, accessKeyId, accessKeySecret)
+	return
+}
+
+// NewClientWithStsToken is a shortcut to create sdk client with sts token
+// usage: https://help.aliyun.com/document_detail/66222.html
+func NewClientWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken)
+	return
+}
+
+// NewClientWithRamRoleArn is a shortcut to create sdk client with ram roleArn
+// usage: https://help.aliyun.com/document_detail/66222.html
+func NewClientWithRamRoleArn(regionId string, accessKeyId, accessKeySecret, roleArn, roleSessionName string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithRamRoleArn(regionId, accessKeyId, accessKeySecret, roleArn, roleSessionName)
+	return
+}
+
+// NewClientWithEcsRamRole is a shortcut to create sdk client with ecs ram role
+// usage: https://help.aliyun.com/document_detail/66223.html
+func NewClientWithEcsRamRole(regionId string, roleName string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithEcsRamRole(regionId, roleName)
+	return
+}
+
+// NewClientWithRsaKeyPair is a shortcut to create sdk client with rsa key pair
+// attention: rsa key pair auth is only Japan regions available
+func NewClientWithRsaKeyPair(regionId string, publicKeyId, privateKey string, sessionExpiration int) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithRsaKeyPair(regionId, publicKeyId, privateKey, sessionExpiration)
+	return
+}

+ 105 - 0
services/emr/clone_data_source.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"
+)
+
+// CloneDataSource invokes the emr.CloneDataSource API synchronously
+// api document: https://help.aliyun.com/api/emr/clonedatasource.html
+func (client *Client) CloneDataSource(request *CloneDataSourceRequest) (response *CloneDataSourceResponse, err error) {
+	response = CreateCloneDataSourceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CloneDataSourceWithChan invokes the emr.CloneDataSource API asynchronously
+// api document: https://help.aliyun.com/api/emr/clonedatasource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CloneDataSourceWithChan(request *CloneDataSourceRequest) (<-chan *CloneDataSourceResponse, <-chan error) {
+	responseChan := make(chan *CloneDataSourceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CloneDataSource(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CloneDataSourceWithCallback invokes the emr.CloneDataSource API asynchronously
+// api document: https://help.aliyun.com/api/emr/clonedatasource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CloneDataSourceWithCallback(request *CloneDataSourceRequest, callback func(response *CloneDataSourceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CloneDataSourceResponse
+		var err error
+		defer close(result)
+		response, err = client.CloneDataSource(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CloneDataSourceRequest is the request struct for api CloneDataSource
+type CloneDataSourceRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Id              string           `position:"Query" name:"Id"`
+}
+
+// CloneDataSourceResponse is the response struct for api CloneDataSource
+type CloneDataSourceResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Id        string `json:"Id" xml:"Id"`
+}
+
+// CreateCloneDataSourceRequest creates a request to invoke CloneDataSource API
+func CreateCloneDataSourceRequest() (request *CloneDataSourceRequest) {
+	request = &CloneDataSourceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CloneDataSource", "emr", "openAPI")
+	return
+}
+
+// CreateCloneDataSourceResponse creates a response to parse from CloneDataSource response
+func CreateCloneDataSourceResponse() (response *CloneDataSourceResponse) {
+	response = &CloneDataSourceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/clone_etl_job.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"
+)
+
+// CloneETLJob invokes the emr.CloneETLJob API synchronously
+// api document: https://help.aliyun.com/api/emr/cloneetljob.html
+func (client *Client) CloneETLJob(request *CloneETLJobRequest) (response *CloneETLJobResponse, err error) {
+	response = CreateCloneETLJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CloneETLJobWithChan invokes the emr.CloneETLJob API asynchronously
+// api document: https://help.aliyun.com/api/emr/cloneetljob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CloneETLJobWithChan(request *CloneETLJobRequest) (<-chan *CloneETLJobResponse, <-chan error) {
+	responseChan := make(chan *CloneETLJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CloneETLJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CloneETLJobWithCallback invokes the emr.CloneETLJob API asynchronously
+// api document: https://help.aliyun.com/api/emr/cloneetljob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CloneETLJobWithCallback(request *CloneETLJobRequest, callback func(response *CloneETLJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CloneETLJobResponse
+		var err error
+		defer close(result)
+		response, err = client.CloneETLJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CloneETLJobRequest is the request struct for api CloneETLJob
+type CloneETLJobRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Id              string           `position:"Query" name:"Id"`
+}
+
+// CloneETLJobResponse is the response struct for api CloneETLJob
+type CloneETLJobResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Id        string `json:"Id" xml:"Id"`
+}
+
+// CreateCloneETLJobRequest creates a request to invoke CloneETLJob API
+func CreateCloneETLJobRequest() (request *CloneETLJobRequest) {
+	request = &CloneETLJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CloneETLJob", "emr", "openAPI")
+	return
+}
+
+// CreateCloneETLJobResponse creates a response to parse from CloneETLJob response
+func CreateCloneETLJobResponse() (response *CloneETLJobResponse) {
+	response = &CloneETLJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/clone_flow.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"
+)
+
+// CloneFlow invokes the emr.CloneFlow API synchronously
+// api document: https://help.aliyun.com/api/emr/cloneflow.html
+func (client *Client) CloneFlow(request *CloneFlowRequest) (response *CloneFlowResponse, err error) {
+	response = CreateCloneFlowResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CloneFlowWithChan invokes the emr.CloneFlow API asynchronously
+// api document: https://help.aliyun.com/api/emr/cloneflow.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CloneFlowWithChan(request *CloneFlowRequest) (<-chan *CloneFlowResponse, <-chan error) {
+	responseChan := make(chan *CloneFlowResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CloneFlow(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CloneFlowWithCallback invokes the emr.CloneFlow API asynchronously
+// api document: https://help.aliyun.com/api/emr/cloneflow.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CloneFlowWithCallback(request *CloneFlowRequest, callback func(response *CloneFlowResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CloneFlowResponse
+		var err error
+		defer close(result)
+		response, err = client.CloneFlow(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CloneFlowRequest is the request struct for api CloneFlow
+type CloneFlowRequest struct {
+	*requests.RpcRequest
+	Id        string `position:"Query" name:"Id"`
+	ProjectId string `position:"Query" name:"ProjectId"`
+}
+
+// CloneFlowResponse is the response struct for api CloneFlow
+type CloneFlowResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Id        string `json:"Id" xml:"Id"`
+}
+
+// CreateCloneFlowRequest creates a request to invoke CloneFlow API
+func CreateCloneFlowRequest() (request *CloneFlowRequest) {
+	request = &CloneFlowRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CloneFlow", "emr", "openAPI")
+	return
+}
+
+// CreateCloneFlowResponse creates a response to parse from CloneFlow response
+func CreateCloneFlowResponse() (response *CloneFlowResponse) {
+	response = &CloneFlowResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/clone_flow_job.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"
+)
+
+// CloneFlowJob invokes the emr.CloneFlowJob API synchronously
+// api document: https://help.aliyun.com/api/emr/cloneflowjob.html
+func (client *Client) CloneFlowJob(request *CloneFlowJobRequest) (response *CloneFlowJobResponse, err error) {
+	response = CreateCloneFlowJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CloneFlowJobWithChan invokes the emr.CloneFlowJob API asynchronously
+// api document: https://help.aliyun.com/api/emr/cloneflowjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CloneFlowJobWithChan(request *CloneFlowJobRequest) (<-chan *CloneFlowJobResponse, <-chan error) {
+	responseChan := make(chan *CloneFlowJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CloneFlowJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CloneFlowJobWithCallback invokes the emr.CloneFlowJob API asynchronously
+// api document: https://help.aliyun.com/api/emr/cloneflowjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CloneFlowJobWithCallback(request *CloneFlowJobRequest, callback func(response *CloneFlowJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CloneFlowJobResponse
+		var err error
+		defer close(result)
+		response, err = client.CloneFlowJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CloneFlowJobRequest is the request struct for api CloneFlowJob
+type CloneFlowJobRequest struct {
+	*requests.RpcRequest
+	Id        string `position:"Query" name:"Id"`
+	ProjectId string `position:"Query" name:"ProjectId"`
+}
+
+// CloneFlowJobResponse is the response struct for api CloneFlowJob
+type CloneFlowJobResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Id        string `json:"Id" xml:"Id"`
+}
+
+// CreateCloneFlowJobRequest creates a request to invoke CloneFlowJob API
+func CreateCloneFlowJobRequest() (request *CloneFlowJobRequest) {
+	request = &CloneFlowJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CloneFlowJob", "emr", "openAPI")
+	return
+}
+
+// CreateCloneFlowJobResponse creates a response to parse from CloneFlowJob response
+func CreateCloneFlowJobResponse() (response *CloneFlowJobResponse) {
+	response = &CloneFlowJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/emr/common_api_white_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"
+)
+
+// CommonApiWhiteList invokes the emr.CommonApiWhiteList API synchronously
+// api document: https://help.aliyun.com/api/emr/commonapiwhitelist.html
+func (client *Client) CommonApiWhiteList(request *CommonApiWhiteListRequest) (response *CommonApiWhiteListResponse, err error) {
+	response = CreateCommonApiWhiteListResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CommonApiWhiteListWithChan invokes the emr.CommonApiWhiteList API asynchronously
+// api document: https://help.aliyun.com/api/emr/commonapiwhitelist.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CommonApiWhiteListWithChan(request *CommonApiWhiteListRequest) (<-chan *CommonApiWhiteListResponse, <-chan error) {
+	responseChan := make(chan *CommonApiWhiteListResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CommonApiWhiteList(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CommonApiWhiteListWithCallback invokes the emr.CommonApiWhiteList API asynchronously
+// api document: https://help.aliyun.com/api/emr/commonapiwhitelist.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CommonApiWhiteListWithCallback(request *CommonApiWhiteListRequest, callback func(response *CommonApiWhiteListResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CommonApiWhiteListResponse
+		var err error
+		defer close(result)
+		response, err = client.CommonApiWhiteList(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CommonApiWhiteListRequest is the request struct for api CommonApiWhiteList
+type CommonApiWhiteListRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+}
+
+// CommonApiWhiteListResponse is the response struct for api CommonApiWhiteList
+type CommonApiWhiteListResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	WhiteList string `json:"WhiteList" xml:"WhiteList"`
+}
+
+// CreateCommonApiWhiteListRequest creates a request to invoke CommonApiWhiteList API
+func CreateCommonApiWhiteListRequest() (request *CommonApiWhiteListRequest) {
+	request = &CommonApiWhiteListRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CommonApiWhiteList", "emr", "openAPI")
+	return
+}
+
+// CreateCommonApiWhiteListResponse creates a response to parse from CommonApiWhiteList response
+func CreateCommonApiWhiteListResponse() (response *CommonApiWhiteListResponse) {
+	response = &CommonApiWhiteListResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 116 - 0
services/emr/context_query_log.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"
+)
+
+// ContextQueryLog invokes the emr.ContextQueryLog API synchronously
+// api document: https://help.aliyun.com/api/emr/contextquerylog.html
+func (client *Client) ContextQueryLog(request *ContextQueryLogRequest) (response *ContextQueryLogResponse, err error) {
+	response = CreateContextQueryLogResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ContextQueryLogWithChan invokes the emr.ContextQueryLog API asynchronously
+// api document: https://help.aliyun.com/api/emr/contextquerylog.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ContextQueryLogWithChan(request *ContextQueryLogRequest) (<-chan *ContextQueryLogResponse, <-chan error) {
+	responseChan := make(chan *ContextQueryLogResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ContextQueryLog(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ContextQueryLogWithCallback invokes the emr.ContextQueryLog API asynchronously
+// api document: https://help.aliyun.com/api/emr/contextquerylog.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ContextQueryLogWithCallback(request *ContextQueryLogRequest, callback func(response *ContextQueryLogResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ContextQueryLogResponse
+		var err error
+		defer close(result)
+		response, err = client.ContextQueryLog(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ContextQueryLogRequest is the request struct for api ContextQueryLog
+type ContextQueryLogRequest struct {
+	*requests.RpcRequest
+	PackId          string           `position:"Query" name:"PackId"`
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	TotalOffset     requests.Integer `position:"Query" name:"TotalOffset"`
+	Size            requests.Integer `position:"Query" name:"Size"`
+	PackMeta        string           `position:"Query" name:"PackMeta"`
+	From            requests.Integer `position:"Query" name:"From"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+	To              requests.Integer `position:"Query" name:"To"`
+	Reverse         requests.Boolean `position:"Query" name:"Reverse"`
+	LogStore        string           `position:"Query" name:"LogStore"`
+}
+
+// ContextQueryLogResponse is the response struct for api ContextQueryLog
+type ContextQueryLogResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	PackId    string `json:"PackId" xml:"PackId"`
+	PackMeta  string `json:"PackMeta" xml:"PackMeta"`
+	Time      string `json:"Time" xml:"Time"`
+	Logs      Logs   `json:"Logs" xml:"Logs"`
+}
+
+// CreateContextQueryLogRequest creates a request to invoke ContextQueryLog API
+func CreateContextQueryLogRequest() (request *ContextQueryLogRequest) {
+	request = &ContextQueryLogRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "ContextQueryLog", "emr", "openAPI")
+	return
+}
+
+// CreateContextQueryLogResponse creates a response to parse from ContextQueryLog response
+func CreateContextQueryLogResponse() (response *ContextQueryLogResponse) {
+	response = &ContextQueryLogResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/emr/create_alert_contact.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"
+)
+
+// CreateAlertContact invokes the emr.CreateAlertContact API synchronously
+// api document: https://help.aliyun.com/api/emr/createalertcontact.html
+func (client *Client) CreateAlertContact(request *CreateAlertContactRequest) (response *CreateAlertContactResponse, err error) {
+	response = CreateCreateAlertContactResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateAlertContactWithChan invokes the emr.CreateAlertContact API asynchronously
+// api document: https://help.aliyun.com/api/emr/createalertcontact.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateAlertContactWithChan(request *CreateAlertContactRequest) (<-chan *CreateAlertContactResponse, <-chan error) {
+	responseChan := make(chan *CreateAlertContactResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateAlertContact(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateAlertContactWithCallback invokes the emr.CreateAlertContact API asynchronously
+// api document: https://help.aliyun.com/api/emr/createalertcontact.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateAlertContactWithCallback(request *CreateAlertContactRequest, callback func(response *CreateAlertContactResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateAlertContactResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateAlertContact(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateAlertContactRequest is the request struct for api CreateAlertContact
+type CreateAlertContactRequest struct {
+	*requests.RpcRequest
+	EmailVerificationCode       string           `position:"Query" name:"EmailVerificationCode"`
+	ResourceOwnerId             requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PhoneNumberVerificationCode string           `position:"Query" name:"PhoneNumberVerificationCode"`
+	Name                        string           `position:"Query" name:"Name"`
+	PhoneNumber                 string           `position:"Query" name:"PhoneNumber"`
+	Email                       string           `position:"Query" name:"Email"`
+}
+
+// CreateAlertContactResponse is the response struct for api CreateAlertContact
+type CreateAlertContactResponse struct {
+	*responses.BaseResponse
+	Id int `json:"Id" xml:"Id"`
+}
+
+// CreateCreateAlertContactRequest creates a request to invoke CreateAlertContact API
+func CreateCreateAlertContactRequest() (request *CreateAlertContactRequest) {
+	request = &CreateAlertContactRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateAlertContact", "emr", "openAPI")
+	return
+}
+
+// CreateCreateAlertContactResponse creates a response to parse from CreateAlertContact response
+func CreateCreateAlertContactResponse() (response *CreateAlertContactResponse) {
+	response = &CreateAlertContactResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/emr/create_alert_ding_ding_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"
+)
+
+// CreateAlertDingDingGroup invokes the emr.CreateAlertDingDingGroup API synchronously
+// api document: https://help.aliyun.com/api/emr/createalertdingdinggroup.html
+func (client *Client) CreateAlertDingDingGroup(request *CreateAlertDingDingGroupRequest) (response *CreateAlertDingDingGroupResponse, err error) {
+	response = CreateCreateAlertDingDingGroupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateAlertDingDingGroupWithChan invokes the emr.CreateAlertDingDingGroup API asynchronously
+// api document: https://help.aliyun.com/api/emr/createalertdingdinggroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateAlertDingDingGroupWithChan(request *CreateAlertDingDingGroupRequest) (<-chan *CreateAlertDingDingGroupResponse, <-chan error) {
+	responseChan := make(chan *CreateAlertDingDingGroupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateAlertDingDingGroup(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateAlertDingDingGroupWithCallback invokes the emr.CreateAlertDingDingGroup API asynchronously
+// api document: https://help.aliyun.com/api/emr/createalertdingdinggroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateAlertDingDingGroupWithCallback(request *CreateAlertDingDingGroupRequest, callback func(response *CreateAlertDingDingGroupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateAlertDingDingGroupResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateAlertDingDingGroup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateAlertDingDingGroupRequest is the request struct for api CreateAlertDingDingGroup
+type CreateAlertDingDingGroupRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Name            string           `position:"Query" name:"Name"`
+	Description     string           `position:"Query" name:"Description"`
+	WebHookUrl      string           `position:"Query" name:"WebHookUrl"`
+}
+
+// CreateAlertDingDingGroupResponse is the response struct for api CreateAlertDingDingGroup
+type CreateAlertDingDingGroupResponse struct {
+	*responses.BaseResponse
+	Id int `json:"Id" xml:"Id"`
+}
+
+// CreateCreateAlertDingDingGroupRequest creates a request to invoke CreateAlertDingDingGroup API
+func CreateCreateAlertDingDingGroupRequest() (request *CreateAlertDingDingGroupRequest) {
+	request = &CreateAlertDingDingGroupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateAlertDingDingGroup", "emr", "openAPI")
+	return
+}
+
+// CreateCreateAlertDingDingGroupResponse creates a response to parse from CreateAlertDingDingGroup response
+func CreateCreateAlertDingDingGroupResponse() (response *CreateAlertDingDingGroupResponse) {
+	response = &CreateAlertDingDingGroupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/emr/create_alert_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"
+)
+
+// CreateAlertUserGroup invokes the emr.CreateAlertUserGroup API synchronously
+// api document: https://help.aliyun.com/api/emr/createalertusergroup.html
+func (client *Client) CreateAlertUserGroup(request *CreateAlertUserGroupRequest) (response *CreateAlertUserGroupResponse, err error) {
+	response = CreateCreateAlertUserGroupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateAlertUserGroupWithChan invokes the emr.CreateAlertUserGroup API asynchronously
+// api document: https://help.aliyun.com/api/emr/createalertusergroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateAlertUserGroupWithChan(request *CreateAlertUserGroupRequest) (<-chan *CreateAlertUserGroupResponse, <-chan error) {
+	responseChan := make(chan *CreateAlertUserGroupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateAlertUserGroup(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateAlertUserGroupWithCallback invokes the emr.CreateAlertUserGroup API asynchronously
+// api document: https://help.aliyun.com/api/emr/createalertusergroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateAlertUserGroupWithCallback(request *CreateAlertUserGroupRequest, callback func(response *CreateAlertUserGroupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateAlertUserGroupResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateAlertUserGroup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateAlertUserGroupRequest is the request struct for api CreateAlertUserGroup
+type CreateAlertUserGroupRequest struct {
+	*requests.RpcRequest
+	UserList        string           `position:"Query" name:"UserList"`
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Name            string           `position:"Query" name:"Name"`
+	Description     string           `position:"Query" name:"Description"`
+}
+
+// CreateAlertUserGroupResponse is the response struct for api CreateAlertUserGroup
+type CreateAlertUserGroupResponse struct {
+	*responses.BaseResponse
+	Id int `json:"Id" xml:"Id"`
+}
+
+// CreateCreateAlertUserGroupRequest creates a request to invoke CreateAlertUserGroup API
+func CreateCreateAlertUserGroupRequest() (request *CreateAlertUserGroupRequest) {
+	request = &CreateAlertUserGroupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateAlertUserGroup", "emr", "openAPI")
+	return
+}
+
+// CreateCreateAlertUserGroupResponse creates a response to parse from CreateAlertUserGroup response
+func CreateCreateAlertUserGroupResponse() (response *CreateAlertUserGroupResponse) {
+	response = &CreateAlertUserGroupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/emr/create_cluster_host_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"
+)
+
+// CreateClusterHostGroup invokes the emr.CreateClusterHostGroup API synchronously
+// api document: https://help.aliyun.com/api/emr/createclusterhostgroup.html
+func (client *Client) CreateClusterHostGroup(request *CreateClusterHostGroupRequest) (response *CreateClusterHostGroupResponse, err error) {
+	response = CreateCreateClusterHostGroupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateClusterHostGroupWithChan invokes the emr.CreateClusterHostGroup API asynchronously
+// api document: https://help.aliyun.com/api/emr/createclusterhostgroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateClusterHostGroupWithChan(request *CreateClusterHostGroupRequest) (<-chan *CreateClusterHostGroupResponse, <-chan error) {
+	responseChan := make(chan *CreateClusterHostGroupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateClusterHostGroup(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateClusterHostGroupWithCallback invokes the emr.CreateClusterHostGroup API asynchronously
+// api document: https://help.aliyun.com/api/emr/createclusterhostgroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateClusterHostGroupWithCallback(request *CreateClusterHostGroupRequest, callback func(response *CreateClusterHostGroupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateClusterHostGroupResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateClusterHostGroup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateClusterHostGroupRequest is the request struct for api CreateClusterHostGroup
+type CreateClusterHostGroupRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Comment         string           `position:"Query" name:"Comment"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+	HostGroupName   string           `position:"Query" name:"HostGroupName"`
+	HostGroupType   string           `position:"Query" name:"HostGroupType"`
+}
+
+// CreateClusterHostGroupResponse is the response struct for api CreateClusterHostGroup
+type CreateClusterHostGroupResponse struct {
+	*responses.BaseResponse
+	RequestId   string `json:"RequestId" xml:"RequestId"`
+	ClusterId   string `json:"ClusterId" xml:"ClusterId"`
+	HostGroupId string `json:"HostGroupId" xml:"HostGroupId"`
+}
+
+// CreateCreateClusterHostGroupRequest creates a request to invoke CreateClusterHostGroup API
+func CreateCreateClusterHostGroupRequest() (request *CreateClusterHostGroupRequest) {
+	request = &CreateClusterHostGroupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateClusterHostGroup", "emr", "openAPI")
+	return
+}
+
+// CreateCreateClusterHostGroupResponse creates a response to parse from CreateClusterHostGroup response
+func CreateCreateClusterHostGroupResponse() (response *CreateClusterHostGroupResponse) {
+	response = &CreateClusterHostGroupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/emr/create_cluster_script.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"
+)
+
+// CreateClusterScript invokes the emr.CreateClusterScript API synchronously
+// api document: https://help.aliyun.com/api/emr/createclusterscript.html
+func (client *Client) CreateClusterScript(request *CreateClusterScriptRequest) (response *CreateClusterScriptResponse, err error) {
+	response = CreateCreateClusterScriptResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateClusterScriptWithChan invokes the emr.CreateClusterScript API asynchronously
+// api document: https://help.aliyun.com/api/emr/createclusterscript.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateClusterScriptWithChan(request *CreateClusterScriptRequest) (<-chan *CreateClusterScriptResponse, <-chan error) {
+	responseChan := make(chan *CreateClusterScriptResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateClusterScript(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateClusterScriptWithCallback invokes the emr.CreateClusterScript API asynchronously
+// api document: https://help.aliyun.com/api/emr/createclusterscript.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateClusterScriptWithCallback(request *CreateClusterScriptRequest, callback func(response *CreateClusterScriptResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateClusterScriptResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateClusterScript(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateClusterScriptRequest is the request struct for api CreateClusterScript
+type CreateClusterScriptRequest struct {
+	*requests.RpcRequest
+	Args            string           `position:"Query" name:"Args"`
+	Path            string           `position:"Query" name:"Path"`
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Name            string           `position:"Query" name:"Name"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+	NodeIdList      string           `position:"Query" name:"NodeIdList"`
+}
+
+// CreateClusterScriptResponse is the response struct for api CreateClusterScript
+type CreateClusterScriptResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Id        string `json:"Id" xml:"Id"`
+}
+
+// CreateCreateClusterScriptRequest creates a request to invoke CreateClusterScript API
+func CreateCreateClusterScriptRequest() (request *CreateClusterScriptRequest) {
+	request = &CreateClusterScriptRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateClusterScript", "emr", "openAPI")
+	return
+}
+
+// CreateCreateClusterScriptResponse creates a response to parse from CreateClusterScript response
+func CreateCreateClusterScriptResponse() (response *CreateClusterScriptResponse) {
+	response = &CreateClusterScriptResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 173 - 0
services/emr/create_cluster_template.go

@@ -0,0 +1,173 @@
+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"
+)
+
+// CreateClusterTemplate invokes the emr.CreateClusterTemplate API synchronously
+// api document: https://help.aliyun.com/api/emr/createclustertemplate.html
+func (client *Client) CreateClusterTemplate(request *CreateClusterTemplateRequest) (response *CreateClusterTemplateResponse, err error) {
+	response = CreateCreateClusterTemplateResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateClusterTemplateWithChan invokes the emr.CreateClusterTemplate API asynchronously
+// api document: https://help.aliyun.com/api/emr/createclustertemplate.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateClusterTemplateWithChan(request *CreateClusterTemplateRequest) (<-chan *CreateClusterTemplateResponse, <-chan error) {
+	responseChan := make(chan *CreateClusterTemplateResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateClusterTemplate(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateClusterTemplateWithCallback invokes the emr.CreateClusterTemplate API asynchronously
+// api document: https://help.aliyun.com/api/emr/createclustertemplate.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateClusterTemplateWithCallback(request *CreateClusterTemplateRequest, callback func(response *CreateClusterTemplateResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateClusterTemplateResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateClusterTemplate(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateClusterTemplateRequest is the request struct for api CreateClusterTemplate
+type CreateClusterTemplateRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId        requests.Integer                        `position:"Query" name:"ResourceOwnerId"`
+	LogPath                string                                  `position:"Query" name:"LogPath"`
+	MasterPwd              string                                  `position:"Query" name:"MasterPwd"`
+	Configurations         string                                  `position:"Query" name:"Configurations"`
+	IoOptimized            requests.Boolean                        `position:"Query" name:"IoOptimized"`
+	SecurityGroupId        string                                  `position:"Query" name:"SecurityGroupId"`
+	SshEnable              requests.Boolean                        `position:"Query" name:"SshEnable"`
+	EasEnable              requests.Boolean                        `position:"Query" name:"EasEnable"`
+	SecurityGroupName      string                                  `position:"Query" name:"SecurityGroupName"`
+	DepositType            string                                  `position:"Query" name:"DepositType"`
+	MachineType            string                                  `position:"Query" name:"MachineType"`
+	BootstrapAction        *[]CreateClusterTemplateBootstrapAction `position:"Query" name:"BootstrapAction"  type:"Repeated"`
+	UseLocalMetaDb         requests.Boolean                        `position:"Query" name:"UseLocalMetaDb"`
+	EmrVer                 string                                  `position:"Query" name:"EmrVer"`
+	TemplateName           string                                  `position:"Query" name:"TemplateName"`
+	UserDefinedEmrEcsRole  string                                  `position:"Query" name:"UserDefinedEmrEcsRole"`
+	IsOpenPublicIp         requests.Boolean                        `position:"Query" name:"IsOpenPublicIp"`
+	Period                 requests.Integer                        `position:"Query" name:"Period"`
+	InstanceGeneration     string                                  `position:"Query" name:"InstanceGeneration"`
+	VSwitchId              string                                  `position:"Query" name:"VSwitchId"`
+	ClusterType            string                                  `position:"Query" name:"ClusterType"`
+	AutoRenew              requests.Boolean                        `position:"Query" name:"AutoRenew"`
+	OptionSoftWareList     *[]string                               `position:"Query" name:"OptionSoftWareList"  type:"Repeated"`
+	VpcId                  string                                  `position:"Query" name:"VpcId"`
+	NetType                string                                  `position:"Query" name:"NetType"`
+	HostGroup              *[]CreateClusterTemplateHostGroup       `position:"Query" name:"HostGroup"  type:"Repeated"`
+	ZoneId                 string                                  `position:"Query" name:"ZoneId"`
+	UseCustomHiveMetaDb    requests.Boolean                        `position:"Query" name:"UseCustomHiveMetaDb"`
+	Config                 *[]CreateClusterTemplateConfig          `position:"Query" name:"Config"  type:"Repeated"`
+	HighAvailabilityEnable requests.Boolean                        `position:"Query" name:"HighAvailabilityEnable"`
+	InitCustomHiveMetaDb   requests.Boolean                        `position:"Query" name:"InitCustomHiveMetaDb"`
+}
+
+// CreateClusterTemplateBootstrapAction is a repeated param struct in CreateClusterTemplateRequest
+type CreateClusterTemplateBootstrapAction struct {
+	Path string `name:"Path"`
+	Arg  string `name:"Arg"`
+	Name string `name:"Name"`
+}
+
+// CreateClusterTemplateHostGroup is a repeated param struct in CreateClusterTemplateRequest
+type CreateClusterTemplateHostGroup struct {
+	Period             string `name:"Period"`
+	SysDiskCapacity    string `name:"SysDiskCapacity"`
+	DiskCapacity       string `name:"DiskCapacity"`
+	SysDiskType        string `name:"SysDiskType"`
+	ClusterId          string `name:"ClusterId"`
+	DiskType           string `name:"DiskType"`
+	HostGroupName      string `name:"HostGroupName"`
+	VSwitchId          string `name:"VSwitchId"`
+	DiskCount          string `name:"DiskCount"`
+	AutoRenew          string `name:"AutoRenew"`
+	HostGroupId        string `name:"HostGroupId"`
+	NodeCount          string `name:"NodeCount"`
+	InstanceType       string `name:"InstanceType"`
+	Comment            string `name:"Comment"`
+	ChargeType         string `name:"ChargeType"`
+	MultiInstanceTypes string `name:"MultiInstanceTypes"`
+	CreateType         string `name:"CreateType"`
+	HostGroupType      string `name:"HostGroupType"`
+}
+
+// CreateClusterTemplateConfig is a repeated param struct in CreateClusterTemplateRequest
+type CreateClusterTemplateConfig struct {
+	ConfigKey   string `name:"ConfigKey"`
+	FileName    string `name:"FileName"`
+	Encrypt     string `name:"Encrypt"`
+	Replace     string `name:"Replace"`
+	ConfigValue string `name:"ConfigValue"`
+	ServiceName string `name:"ServiceName"`
+}
+
+// CreateClusterTemplateResponse is the response struct for api CreateClusterTemplate
+type CreateClusterTemplateResponse struct {
+	*responses.BaseResponse
+	RequestId         string `json:"RequestId" xml:"RequestId"`
+	ClusterTemplateId string `json:"ClusterTemplateId" xml:"ClusterTemplateId"`
+}
+
+// CreateCreateClusterTemplateRequest creates a request to invoke CreateClusterTemplate API
+func CreateCreateClusterTemplateRequest() (request *CreateClusterTemplateRequest) {
+	request = &CreateClusterTemplateRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateClusterTemplate", "emr", "openAPI")
+	return
+}
+
+// CreateCreateClusterTemplateResponse creates a response to parse from CreateClusterTemplate response
+func CreateCreateClusterTemplateResponse() (response *CreateClusterTemplateResponse) {
+	response = &CreateClusterTemplateResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 198 - 0
services/emr/create_cluster_v2.go

@@ -0,0 +1,198 @@
+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"
+)
+
+// CreateClusterV2 invokes the emr.CreateClusterV2 API synchronously
+// api document: https://help.aliyun.com/api/emr/createclusterv2.html
+func (client *Client) CreateClusterV2(request *CreateClusterV2Request) (response *CreateClusterV2Response, err error) {
+	response = CreateCreateClusterV2Response()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateClusterV2WithChan invokes the emr.CreateClusterV2 API asynchronously
+// api document: https://help.aliyun.com/api/emr/createclusterv2.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateClusterV2WithChan(request *CreateClusterV2Request) (<-chan *CreateClusterV2Response, <-chan error) {
+	responseChan := make(chan *CreateClusterV2Response, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateClusterV2(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateClusterV2WithCallback invokes the emr.CreateClusterV2 API asynchronously
+// api document: https://help.aliyun.com/api/emr/createclusterv2.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateClusterV2WithCallback(request *CreateClusterV2Request, callback func(response *CreateClusterV2Response, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateClusterV2Response
+		var err error
+		defer close(result)
+		response, err = client.CreateClusterV2(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateClusterV2Request is the request struct for api CreateClusterV2
+type CreateClusterV2Request struct {
+	*requests.RpcRequest
+	AutoPayOrder           requests.Boolean                    `position:"Query" name:"AutoPayOrder"`
+	ResourceOwnerId        requests.Integer                    `position:"Query" name:"ResourceOwnerId"`
+	LogPath                string                              `position:"Query" name:"LogPath"`
+	MasterPwd              string                              `position:"Query" name:"MasterPwd"`
+	Configurations         string                              `position:"Query" name:"Configurations"`
+	IoOptimized            requests.Boolean                    `position:"Query" name:"IoOptimized"`
+	SecurityGroupId        string                              `position:"Query" name:"SecurityGroupId"`
+	SshEnable              requests.Boolean                    `position:"Query" name:"SshEnable"`
+	EasEnable              requests.Boolean                    `position:"Query" name:"EasEnable"`
+	KeyPairName            string                              `position:"Query" name:"KeyPairName"`
+	SecurityGroupName      string                              `position:"Query" name:"SecurityGroupName"`
+	DepositType            string                              `position:"Query" name:"DepositType"`
+	MachineType            string                              `position:"Query" name:"MachineType"`
+	HostComponentInfo      *[]CreateClusterV2HostComponentInfo `position:"Query" name:"HostComponentInfo"  type:"Repeated"`
+	BootstrapAction        *[]CreateClusterV2BootstrapAction   `position:"Query" name:"BootstrapAction"  type:"Repeated"`
+	UseLocalMetaDb         requests.Boolean                    `position:"Query" name:"UseLocalMetaDb"`
+	EmrVer                 string                              `position:"Query" name:"EmrVer"`
+	UserInfo               *[]CreateClusterV2UserInfo          `position:"Query" name:"UserInfo"  type:"Repeated"`
+	UserDefinedEmrEcsRole  string                              `position:"Query" name:"UserDefinedEmrEcsRole"`
+	AuthorizeContent       string                              `position:"Query" name:"AuthorizeContent"`
+	IsOpenPublicIp         requests.Boolean                    `position:"Query" name:"IsOpenPublicIp"`
+	Period                 requests.Integer                    `position:"Query" name:"Period"`
+	WhiteListType          string                              `position:"Query" name:"WhiteListType"`
+	RelatedClusterId       string                              `position:"Query" name:"RelatedClusterId"`
+	InstanceGeneration     string                              `position:"Query" name:"InstanceGeneration"`
+	VSwitchId              string                              `position:"Query" name:"VSwitchId"`
+	ClusterType            string                              `position:"Query" name:"ClusterType"`
+	AutoRenew              requests.Boolean                    `position:"Query" name:"AutoRenew"`
+	OptionSoftWareList     *[]string                           `position:"Query" name:"OptionSoftWareList"  type:"Repeated"`
+	VpcId                  string                              `position:"Query" name:"VpcId"`
+	NetType                string                              `position:"Query" name:"NetType"`
+	Name                   string                              `position:"Query" name:"Name"`
+	HostGroup              *[]CreateClusterV2HostGroup         `position:"Query" name:"HostGroup"  type:"Repeated"`
+	ZoneId                 string                              `position:"Query" name:"ZoneId"`
+	ChargeType             string                              `position:"Query" name:"ChargeType"`
+	UseCustomHiveMetaDB    requests.Boolean                    `position:"Query" name:"UseCustomHiveMetaDB"`
+	Config                 *[]CreateClusterV2Config            `position:"Query" name:"Config"  type:"Repeated"`
+	HighAvailabilityEnable requests.Boolean                    `position:"Query" name:"HighAvailabilityEnable"`
+	InitCustomHiveMetaDB   requests.Boolean                    `position:"Query" name:"InitCustomHiveMetaDB"`
+}
+
+// CreateClusterV2HostComponentInfo is a repeated param struct in CreateClusterV2Request
+type CreateClusterV2HostComponentInfo struct {
+	HostName          string    `name:"HostName"`
+	ComponentNameList *[]string `name:"ComponentNameList" type:"Repeated"`
+	ServiceName       string    `name:"ServiceName"`
+}
+
+// CreateClusterV2BootstrapAction is a repeated param struct in CreateClusterV2Request
+type CreateClusterV2BootstrapAction struct {
+	Path string `name:"Path"`
+	Arg  string `name:"Arg"`
+	Name string `name:"Name"`
+}
+
+// CreateClusterV2UserInfo is a repeated param struct in CreateClusterV2Request
+type CreateClusterV2UserInfo struct {
+	Password string `name:"Password"`
+	UserId   string `name:"UserId"`
+	UserName string `name:"UserName"`
+}
+
+// CreateClusterV2HostGroup is a repeated param struct in CreateClusterV2Request
+type CreateClusterV2HostGroup struct {
+	Period          string `name:"Period"`
+	SysDiskCapacity string `name:"SysDiskCapacity"`
+	DiskCapacity    string `name:"DiskCapacity"`
+	SysDiskType     string `name:"SysDiskType"`
+	ClusterId       string `name:"ClusterId"`
+	DiskType        string `name:"DiskType"`
+	HostGroupName   string `name:"HostGroupName"`
+	VSwitchId       string `name:"VSwitchId"`
+	DiskCount       string `name:"DiskCount"`
+	AutoRenew       string `name:"AutoRenew"`
+	GpuDriver       string `name:"GpuDriver"`
+	HostGroupId     string `name:"HostGroupId"`
+	NodeCount       string `name:"NodeCount"`
+	InstanceType    string `name:"InstanceType"`
+	Comment         string `name:"Comment"`
+	ChargeType      string `name:"ChargeType"`
+	CreateType      string `name:"CreateType"`
+	HostGroupType   string `name:"HostGroupType"`
+}
+
+// CreateClusterV2Config is a repeated param struct in CreateClusterV2Request
+type CreateClusterV2Config struct {
+	ConfigKey   string `name:"ConfigKey"`
+	FileName    string `name:"FileName"`
+	Encrypt     string `name:"Encrypt"`
+	Replace     string `name:"Replace"`
+	ConfigValue string `name:"ConfigValue"`
+	ServiceName string `name:"ServiceName"`
+}
+
+// CreateClusterV2Response is the response struct for api CreateClusterV2
+type CreateClusterV2Response struct {
+	*responses.BaseResponse
+	RequestId     string `json:"RequestId" xml:"RequestId"`
+	ClusterId     string `json:"ClusterId" xml:"ClusterId"`
+	EmrOrderId    string `json:"EmrOrderId" xml:"EmrOrderId"`
+	MasterOrderId string `json:"MasterOrderId" xml:"MasterOrderId"`
+	CoreOrderId   string `json:"CoreOrderId" xml:"CoreOrderId"`
+}
+
+// CreateCreateClusterV2Request creates a request to invoke CreateClusterV2 API
+func CreateCreateClusterV2Request() (request *CreateClusterV2Request) {
+	request = &CreateClusterV2Request{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateClusterV2", "emr", "openAPI")
+	return
+}
+
+// CreateCreateClusterV2Response creates a response to parse from CreateClusterV2 response
+func CreateCreateClusterV2Response() (response *CreateClusterV2Response) {
+	response = &CreateClusterV2Response{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/emr/create_cluster_with_template.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"
+)
+
+// CreateClusterWithTemplate invokes the emr.CreateClusterWithTemplate API synchronously
+// api document: https://help.aliyun.com/api/emr/createclusterwithtemplate.html
+func (client *Client) CreateClusterWithTemplate(request *CreateClusterWithTemplateRequest) (response *CreateClusterWithTemplateResponse, err error) {
+	response = CreateCreateClusterWithTemplateResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateClusterWithTemplateWithChan invokes the emr.CreateClusterWithTemplate API asynchronously
+// api document: https://help.aliyun.com/api/emr/createclusterwithtemplate.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateClusterWithTemplateWithChan(request *CreateClusterWithTemplateRequest) (<-chan *CreateClusterWithTemplateResponse, <-chan error) {
+	responseChan := make(chan *CreateClusterWithTemplateResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateClusterWithTemplate(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateClusterWithTemplateWithCallback invokes the emr.CreateClusterWithTemplate API asynchronously
+// api document: https://help.aliyun.com/api/emr/createclusterwithtemplate.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateClusterWithTemplateWithCallback(request *CreateClusterWithTemplateRequest, callback func(response *CreateClusterWithTemplateResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateClusterWithTemplateResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateClusterWithTemplate(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateClusterWithTemplateRequest is the request struct for api CreateClusterWithTemplate
+type CreateClusterWithTemplateRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	UniqueTag       string           `position:"Query" name:"UniqueTag"`
+	TemplateBizId   string           `position:"Query" name:"TemplateBizId"`
+}
+
+// CreateClusterWithTemplateResponse is the response struct for api CreateClusterWithTemplate
+type CreateClusterWithTemplateResponse struct {
+	*responses.BaseResponse
+	RequestId     string `json:"RequestId" xml:"RequestId"`
+	ClusterId     string `json:"ClusterId" xml:"ClusterId"`
+	EmrOrderId    string `json:"EmrOrderId" xml:"EmrOrderId"`
+	MasterOrderId string `json:"MasterOrderId" xml:"MasterOrderId"`
+	CoreOrderId   string `json:"CoreOrderId" xml:"CoreOrderId"`
+}
+
+// CreateCreateClusterWithTemplateRequest creates a request to invoke CreateClusterWithTemplate API
+func CreateCreateClusterWithTemplateRequest() (request *CreateClusterWithTemplateRequest) {
+	request = &CreateClusterWithTemplateRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateClusterWithTemplate", "emr", "openAPI")
+	return
+}
+
+// CreateCreateClusterWithTemplateResponse creates a response to parse from CreateClusterWithTemplate response
+func CreateCreateClusterWithTemplateResponse() (response *CreateClusterWithTemplateResponse) {
+	response = &CreateClusterWithTemplateResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/emr/create_data_source.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"
+)
+
+// CreateDataSource invokes the emr.CreateDataSource API synchronously
+// api document: https://help.aliyun.com/api/emr/createdatasource.html
+func (client *Client) CreateDataSource(request *CreateDataSourceRequest) (response *CreateDataSourceResponse, err error) {
+	response = CreateCreateDataSourceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateDataSourceWithChan invokes the emr.CreateDataSource API asynchronously
+// api document: https://help.aliyun.com/api/emr/createdatasource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateDataSourceWithChan(request *CreateDataSourceRequest) (<-chan *CreateDataSourceResponse, <-chan error) {
+	responseChan := make(chan *CreateDataSourceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateDataSource(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateDataSourceWithCallback invokes the emr.CreateDataSource API asynchronously
+// api document: https://help.aliyun.com/api/emr/createdatasource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateDataSourceWithCallback(request *CreateDataSourceRequest, callback func(response *CreateDataSourceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateDataSourceResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateDataSource(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateDataSourceRequest is the request struct for api CreateDataSource
+type CreateDataSourceRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	NavParentId     string           `position:"Query" name:"NavParentId"`
+	Name            string           `position:"Query" name:"Name"`
+	Description     string           `position:"Query" name:"Description"`
+	SourceType      string           `position:"Query" name:"SourceType"`
+	Conf            string           `position:"Query" name:"Conf"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+}
+
+// CreateDataSourceResponse is the response struct for api CreateDataSource
+type CreateDataSourceResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Id        string `json:"Id" xml:"Id"`
+}
+
+// CreateCreateDataSourceRequest creates a request to invoke CreateDataSource API
+func CreateCreateDataSourceRequest() (request *CreateDataSourceRequest) {
+	request = &CreateDataSourceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateDataSource", "emr", "openAPI")
+	return
+}
+
+// CreateCreateDataSourceResponse creates a response to parse from CreateDataSource response
+func CreateCreateDataSourceResponse() (response *CreateDataSourceResponse) {
+	response = &CreateDataSourceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/emr/create_etl_job.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"
+)
+
+// CreateETLJob invokes the emr.CreateETLJob API synchronously
+// api document: https://help.aliyun.com/api/emr/createetljob.html
+func (client *Client) CreateETLJob(request *CreateETLJobRequest) (response *CreateETLJobResponse, err error) {
+	response = CreateCreateETLJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateETLJobWithChan invokes the emr.CreateETLJob API asynchronously
+// api document: https://help.aliyun.com/api/emr/createetljob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateETLJobWithChan(request *CreateETLJobRequest) (<-chan *CreateETLJobResponse, <-chan error) {
+	responseChan := make(chan *CreateETLJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateETLJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateETLJobWithCallback invokes the emr.CreateETLJob API asynchronously
+// api document: https://help.aliyun.com/api/emr/createetljob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateETLJobWithCallback(request *CreateETLJobRequest, callback func(response *CreateETLJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateETLJobResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateETLJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateETLJobRequest is the request struct for api CreateETLJob
+type CreateETLJobRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	NavParentId     string           `position:"Query" name:"NavParentId"`
+	Name            string           `position:"Query" name:"Name"`
+	Description     string           `position:"Query" name:"Description"`
+	Type            string           `position:"Query" name:"Type"`
+	ProjectId       string           `position:"Query" name:"ProjectId"`
+}
+
+// CreateETLJobResponse is the response struct for api CreateETLJob
+type CreateETLJobResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Id        string `json:"Id" xml:"Id"`
+}
+
+// CreateCreateETLJobRequest creates a request to invoke CreateETLJob API
+func CreateCreateETLJobRequest() (request *CreateETLJobRequest) {
+	request = &CreateETLJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateETLJob", "emr", "openAPI")
+	return
+}
+
+// CreateCreateETLJobResponse creates a response to parse from CreateETLJob response
+func CreateCreateETLJobResponse() (response *CreateETLJobResponse) {
+	response = &CreateETLJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 167 - 0
services/emr/create_execution_plan.go

@@ -0,0 +1,167 @@
+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"
+)
+
+// CreateExecutionPlan invokes the emr.CreateExecutionPlan API synchronously
+// api document: https://help.aliyun.com/api/emr/createexecutionplan.html
+func (client *Client) CreateExecutionPlan(request *CreateExecutionPlanRequest) (response *CreateExecutionPlanResponse, err error) {
+	response = CreateCreateExecutionPlanResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateExecutionPlanWithChan invokes the emr.CreateExecutionPlan API asynchronously
+// api document: https://help.aliyun.com/api/emr/createexecutionplan.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateExecutionPlanWithChan(request *CreateExecutionPlanRequest) (<-chan *CreateExecutionPlanResponse, <-chan error) {
+	responseChan := make(chan *CreateExecutionPlanResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateExecutionPlan(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateExecutionPlanWithCallback invokes the emr.CreateExecutionPlan API asynchronously
+// api document: https://help.aliyun.com/api/emr/createexecutionplan.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateExecutionPlanWithCallback(request *CreateExecutionPlanRequest, callback func(response *CreateExecutionPlanResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateExecutionPlanResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateExecutionPlan(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateExecutionPlanRequest is the request struct for api CreateExecutionPlan
+type CreateExecutionPlanRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId        requests.Integer                      `position:"Query" name:"ResourceOwnerId"`
+	TimeInterval           requests.Integer                      `position:"Query" name:"TimeInterval"`
+	LogPath                string                                `position:"Query" name:"LogPath"`
+	ClusterName            string                                `position:"Query" name:"ClusterName"`
+	Configurations         string                                `position:"Query" name:"Configurations"`
+	IoOptimized            requests.Boolean                      `position:"Query" name:"IoOptimized"`
+	SecurityGroupId        string                                `position:"Query" name:"SecurityGroupId"`
+	EasEnable              requests.Boolean                      `position:"Query" name:"EasEnable"`
+	CreateClusterOnDemand  requests.Boolean                      `position:"Query" name:"CreateClusterOnDemand"`
+	StartTime              requests.Integer                      `position:"Query" name:"StartTime"`
+	JobIdList              *[]string                             `position:"Query" name:"JobIdList"  type:"Repeated"`
+	DayOfMonth             string                                `position:"Query" name:"DayOfMonth"`
+	BootstrapAction        *[]CreateExecutionPlanBootstrapAction `position:"Query" name:"BootstrapAction"  type:"Repeated"`
+	UseLocalMetaDb         requests.Boolean                      `position:"Query" name:"UseLocalMetaDb"`
+	EmrVer                 string                                `position:"Query" name:"EmrVer"`
+	UserDefinedEmrEcsRole  string                                `position:"Query" name:"UserDefinedEmrEcsRole"`
+	IsOpenPublicIp         requests.Boolean                      `position:"Query" name:"IsOpenPublicIp"`
+	ClusterId              string                                `position:"Query" name:"ClusterId"`
+	TimeUnit               string                                `position:"Query" name:"TimeUnit"`
+	InstanceGeneration     string                                `position:"Query" name:"InstanceGeneration"`
+	ClusterType            string                                `position:"Query" name:"ClusterType"`
+	VSwitchId              string                                `position:"Query" name:"VSwitchId"`
+	OptionSoftWareList     *[]string                             `position:"Query" name:"OptionSoftWareList"  type:"Repeated"`
+	VpcId                  string                                `position:"Query" name:"VpcId"`
+	NetType                string                                `position:"Query" name:"NetType"`
+	EcsOrder               *[]CreateExecutionPlanEcsOrder        `position:"Query" name:"EcsOrder"  type:"Repeated"`
+	WorkflowDefinition     string                                `position:"Query" name:"WorkflowDefinition"`
+	Name                   string                                `position:"Query" name:"Name"`
+	DayOfWeek              string                                `position:"Query" name:"DayOfWeek"`
+	ZoneId                 string                                `position:"Query" name:"ZoneId"`
+	UseCustomHiveMetaDB    requests.Boolean                      `position:"Query" name:"UseCustomHiveMetaDB"`
+	Strategy               string                                `position:"Query" name:"Strategy"`
+	Config                 *[]CreateExecutionPlanConfig          `position:"Query" name:"Config"  type:"Repeated"`
+	HighAvailabilityEnable requests.Boolean                      `position:"Query" name:"HighAvailabilityEnable"`
+	InitCustomHiveMetaDB   requests.Boolean                      `position:"Query" name:"InitCustomHiveMetaDB"`
+	LogEnable              requests.Boolean                      `position:"Query" name:"LogEnable"`
+}
+
+// CreateExecutionPlanBootstrapAction is a repeated param struct in CreateExecutionPlanRequest
+type CreateExecutionPlanBootstrapAction struct {
+	Path string `name:"Path"`
+	Arg  string `name:"Arg"`
+	Name string `name:"Name"`
+}
+
+// CreateExecutionPlanEcsOrder is a repeated param struct in CreateExecutionPlanRequest
+type CreateExecutionPlanEcsOrder struct {
+	NodeType     string `name:"NodeType"`
+	DiskCount    string `name:"DiskCount"`
+	NodeCount    string `name:"NodeCount"`
+	DiskCapacity string `name:"DiskCapacity"`
+	Index        string `name:"Index"`
+	InstanceType string `name:"InstanceType"`
+	DiskType     string `name:"DiskType"`
+}
+
+// CreateExecutionPlanConfig is a repeated param struct in CreateExecutionPlanRequest
+type CreateExecutionPlanConfig struct {
+	ConfigKey   string `name:"ConfigKey"`
+	FileName    string `name:"FileName"`
+	Encrypt     string `name:"Encrypt"`
+	Replace     string `name:"Replace"`
+	ConfigValue string `name:"ConfigValue"`
+	ServiceName string `name:"ServiceName"`
+}
+
+// CreateExecutionPlanResponse is the response struct for api CreateExecutionPlan
+type CreateExecutionPlanResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Id        string `json:"Id" xml:"Id"`
+}
+
+// CreateCreateExecutionPlanRequest creates a request to invoke CreateExecutionPlan API
+func CreateCreateExecutionPlanRequest() (request *CreateExecutionPlanRequest) {
+	request = &CreateExecutionPlanRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateExecutionPlan", "emr", "openAPI")
+	return
+}
+
+// CreateCreateExecutionPlanResponse creates a response to parse from CreateExecutionPlan response
+func CreateCreateExecutionPlanResponse() (response *CreateExecutionPlanResponse) {
+	response = &CreateExecutionPlanResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 118 - 0
services/emr/create_flow.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"
+)
+
+// CreateFlow invokes the emr.CreateFlow API synchronously
+// api document: https://help.aliyun.com/api/emr/createflow.html
+func (client *Client) CreateFlow(request *CreateFlowRequest) (response *CreateFlowResponse, err error) {
+	response = CreateCreateFlowResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateFlowWithChan invokes the emr.CreateFlow API asynchronously
+// api document: https://help.aliyun.com/api/emr/createflow.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateFlowWithChan(request *CreateFlowRequest) (<-chan *CreateFlowResponse, <-chan error) {
+	responseChan := make(chan *CreateFlowResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateFlow(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateFlowWithCallback invokes the emr.CreateFlow API asynchronously
+// api document: https://help.aliyun.com/api/emr/createflow.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateFlowWithCallback(request *CreateFlowRequest, callback func(response *CreateFlowResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateFlowResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateFlow(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateFlowRequest is the request struct for api CreateFlow
+type CreateFlowRequest struct {
+	*requests.RpcRequest
+	CronExpr                string           `position:"Query" name:"CronExpr"`
+	ParentFlowList          string           `position:"Query" name:"ParentFlowList"`
+	AlertDingDingGroupBizId string           `position:"Query" name:"AlertDingDingGroupBizId"`
+	StartSchedule           requests.Integer `position:"Query" name:"StartSchedule"`
+	Description             string           `position:"Query" name:"Description"`
+	ClusterId               string           `position:"Query" name:"ClusterId"`
+	AlertUserGroupBizId     string           `position:"Query" name:"AlertUserGroupBizId"`
+	HostName                string           `position:"Query" name:"HostName"`
+	Application             string           `position:"Query" name:"Application"`
+	CreateCluster           requests.Boolean `position:"Query" name:"CreateCluster"`
+	Name                    string           `position:"Query" name:"Name"`
+	EndSchedule             requests.Integer `position:"Query" name:"EndSchedule"`
+	AlertConf               string           `position:"Query" name:"AlertConf"`
+	ProjectId               string           `position:"Query" name:"ProjectId"`
+	ParentCategory          string           `position:"Query" name:"ParentCategory"`
+}
+
+// CreateFlowResponse is the response struct for api CreateFlow
+type CreateFlowResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Id        string `json:"Id" xml:"Id"`
+}
+
+// CreateCreateFlowRequest creates a request to invoke CreateFlow API
+func CreateCreateFlowRequest() (request *CreateFlowRequest) {
+	request = &CreateFlowRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateFlow", "emr", "openAPI")
+	return
+}
+
+// CreateCreateFlowResponse creates a response to parse from CreateFlow response
+func CreateCreateFlowResponse() (response *CreateFlowResponse) {
+	response = &CreateFlowResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/emr/create_flow_category.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"
+)
+
+// CreateFlowCategory invokes the emr.CreateFlowCategory API synchronously
+// api document: https://help.aliyun.com/api/emr/createflowcategory.html
+func (client *Client) CreateFlowCategory(request *CreateFlowCategoryRequest) (response *CreateFlowCategoryResponse, err error) {
+	response = CreateCreateFlowCategoryResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateFlowCategoryWithChan invokes the emr.CreateFlowCategory API asynchronously
+// api document: https://help.aliyun.com/api/emr/createflowcategory.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateFlowCategoryWithChan(request *CreateFlowCategoryRequest) (<-chan *CreateFlowCategoryResponse, <-chan error) {
+	responseChan := make(chan *CreateFlowCategoryResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateFlowCategory(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateFlowCategoryWithCallback invokes the emr.CreateFlowCategory API asynchronously
+// api document: https://help.aliyun.com/api/emr/createflowcategory.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateFlowCategoryWithCallback(request *CreateFlowCategoryRequest, callback func(response *CreateFlowCategoryResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateFlowCategoryResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateFlowCategory(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateFlowCategoryRequest is the request struct for api CreateFlowCategory
+type CreateFlowCategoryRequest struct {
+	*requests.RpcRequest
+	Name      string `position:"Query" name:"Name"`
+	Type      string `position:"Query" name:"Type"`
+	ProjectId string `position:"Query" name:"ProjectId"`
+	ParentId  string `position:"Query" name:"ParentId"`
+}
+
+// CreateFlowCategoryResponse is the response struct for api CreateFlowCategory
+type CreateFlowCategoryResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Id        string `json:"Id" xml:"Id"`
+}
+
+// CreateCreateFlowCategoryRequest creates a request to invoke CreateFlowCategory API
+func CreateCreateFlowCategoryRequest() (request *CreateFlowCategoryRequest) {
+	request = &CreateFlowCategoryRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateFlowCategory", "emr", "openAPI")
+	return
+}
+
+// CreateCreateFlowCategoryResponse creates a response to parse from CreateFlowCategory response
+func CreateCreateFlowCategoryResponse() (response *CreateFlowCategoryResponse) {
+	response = &CreateFlowCategoryResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 118 - 0
services/emr/create_flow_for_web.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"
+)
+
+// CreateFlowForWeb invokes the emr.CreateFlowForWeb API synchronously
+// api document: https://help.aliyun.com/api/emr/createflowforweb.html
+func (client *Client) CreateFlowForWeb(request *CreateFlowForWebRequest) (response *CreateFlowForWebResponse, err error) {
+	response = CreateCreateFlowForWebResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateFlowForWebWithChan invokes the emr.CreateFlowForWeb API asynchronously
+// api document: https://help.aliyun.com/api/emr/createflowforweb.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateFlowForWebWithChan(request *CreateFlowForWebRequest) (<-chan *CreateFlowForWebResponse, <-chan error) {
+	responseChan := make(chan *CreateFlowForWebResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateFlowForWeb(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateFlowForWebWithCallback invokes the emr.CreateFlowForWeb API asynchronously
+// api document: https://help.aliyun.com/api/emr/createflowforweb.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateFlowForWebWithCallback(request *CreateFlowForWebRequest, callback func(response *CreateFlowForWebResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateFlowForWebResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateFlowForWeb(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateFlowForWebRequest is the request struct for api CreateFlowForWeb
+type CreateFlowForWebRequest struct {
+	*requests.RpcRequest
+	CronExpr                string           `position:"Query" name:"CronExpr"`
+	ParentFlowList          string           `position:"Query" name:"ParentFlowList"`
+	AlertDingDingGroupBizId string           `position:"Query" name:"AlertDingDingGroupBizId"`
+	StartSchedule           requests.Integer `position:"Query" name:"StartSchedule"`
+	Description             string           `position:"Query" name:"Description"`
+	ClusterId               string           `position:"Query" name:"ClusterId"`
+	AlertUserGroupBizId     string           `position:"Query" name:"AlertUserGroupBizId"`
+	Graph                   string           `position:"Query" name:"Graph"`
+	HostName                string           `position:"Query" name:"HostName"`
+	CreateCluster           requests.Boolean `position:"Query" name:"CreateCluster"`
+	Name                    string           `position:"Query" name:"Name"`
+	EndSchedule             requests.Integer `position:"Query" name:"EndSchedule"`
+	AlertConf               string           `position:"Query" name:"AlertConf"`
+	ProjectId               string           `position:"Query" name:"ProjectId"`
+	ParentCategory          string           `position:"Query" name:"ParentCategory"`
+}
+
+// CreateFlowForWebResponse is the response struct for api CreateFlowForWeb
+type CreateFlowForWebResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Id        string `json:"Id" xml:"Id"`
+}
+
+// CreateCreateFlowForWebRequest creates a request to invoke CreateFlowForWeb API
+func CreateCreateFlowForWebRequest() (request *CreateFlowForWebRequest) {
+	request = &CreateFlowForWebRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateFlowForWeb", "emr", "openAPI")
+	return
+}
+
+// CreateCreateFlowForWebResponse creates a response to parse from CreateFlowForWeb response
+func CreateCreateFlowForWebResponse() (response *CreateFlowForWebResponse) {
+	response = &CreateFlowForWebResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 127 - 0
services/emr/create_flow_job.go

@@ -0,0 +1,127 @@
+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"
+)
+
+// CreateFlowJob invokes the emr.CreateFlowJob API synchronously
+// api document: https://help.aliyun.com/api/emr/createflowjob.html
+func (client *Client) CreateFlowJob(request *CreateFlowJobRequest) (response *CreateFlowJobResponse, err error) {
+	response = CreateCreateFlowJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateFlowJobWithChan invokes the emr.CreateFlowJob API asynchronously
+// api document: https://help.aliyun.com/api/emr/createflowjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateFlowJobWithChan(request *CreateFlowJobRequest) (<-chan *CreateFlowJobResponse, <-chan error) {
+	responseChan := make(chan *CreateFlowJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateFlowJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateFlowJobWithCallback invokes the emr.CreateFlowJob API asynchronously
+// api document: https://help.aliyun.com/api/emr/createflowjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateFlowJobWithCallback(request *CreateFlowJobRequest, callback func(response *CreateFlowJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateFlowJobResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateFlowJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateFlowJobRequest is the request struct for api CreateFlowJob
+type CreateFlowJobRequest struct {
+	*requests.RpcRequest
+	RunConf        string                       `position:"Query" name:"RunConf"`
+	EnvConf        string                       `position:"Query" name:"EnvConf"`
+	Description    string                       `position:"Query" name:"Description"`
+	ClusterId      string                       `position:"Query" name:"ClusterId"`
+	Type           string                       `position:"Query" name:"Type"`
+	Params         string                       `position:"Query" name:"Params"`
+	ParamConf      string                       `position:"Query" name:"ParamConf"`
+	ResourceList   *[]CreateFlowJobResourceList `position:"Query" name:"ResourceList"  type:"Repeated"`
+	FailAct        string                       `position:"Query" name:"FailAct"`
+	Mode           string                       `position:"Query" name:"Mode"`
+	RetryInterval  requests.Integer             `position:"Query" name:"RetryInterval"`
+	MonitorConf    string                       `position:"Query" name:"MonitorConf"`
+	Name           string                       `position:"Query" name:"Name"`
+	MaxRetry       requests.Integer             `position:"Query" name:"MaxRetry"`
+	Adhoc          requests.Boolean             `position:"Query" name:"Adhoc"`
+	AlertConf      string                       `position:"Query" name:"AlertConf"`
+	ProjectId      string                       `position:"Query" name:"ProjectId"`
+	ParentCategory string                       `position:"Query" name:"ParentCategory"`
+}
+
+// CreateFlowJobResourceList is a repeated param struct in CreateFlowJobRequest
+type CreateFlowJobResourceList struct {
+	Path  string `name:"Path"`
+	Alias string `name:"Alias"`
+}
+
+// CreateFlowJobResponse is the response struct for api CreateFlowJob
+type CreateFlowJobResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Id        string `json:"Id" xml:"Id"`
+}
+
+// CreateCreateFlowJobRequest creates a request to invoke CreateFlowJob API
+func CreateCreateFlowJobRequest() (request *CreateFlowJobRequest) {
+	request = &CreateFlowJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateFlowJob", "emr", "openAPI")
+	return
+}
+
+// CreateCreateFlowJobResponse creates a response to parse from CreateFlowJob response
+func CreateCreateFlowJobResponse() (response *CreateFlowJobResponse) {
+	response = &CreateFlowJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/create_flow_project.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"
+)
+
+// CreateFlowProject invokes the emr.CreateFlowProject API synchronously
+// api document: https://help.aliyun.com/api/emr/createflowproject.html
+func (client *Client) CreateFlowProject(request *CreateFlowProjectRequest) (response *CreateFlowProjectResponse, err error) {
+	response = CreateCreateFlowProjectResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateFlowProjectWithChan invokes the emr.CreateFlowProject API asynchronously
+// api document: https://help.aliyun.com/api/emr/createflowproject.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateFlowProjectWithChan(request *CreateFlowProjectRequest) (<-chan *CreateFlowProjectResponse, <-chan error) {
+	responseChan := make(chan *CreateFlowProjectResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateFlowProject(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateFlowProjectWithCallback invokes the emr.CreateFlowProject API asynchronously
+// api document: https://help.aliyun.com/api/emr/createflowproject.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateFlowProjectWithCallback(request *CreateFlowProjectRequest, callback func(response *CreateFlowProjectResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateFlowProjectResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateFlowProject(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateFlowProjectRequest is the request struct for api CreateFlowProject
+type CreateFlowProjectRequest struct {
+	*requests.RpcRequest
+	Name        string `position:"Query" name:"Name"`
+	Description string `position:"Query" name:"Description"`
+}
+
+// CreateFlowProjectResponse is the response struct for api CreateFlowProject
+type CreateFlowProjectResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Id        string `json:"Id" xml:"Id"`
+}
+
+// CreateCreateFlowProjectRequest creates a request to invoke CreateFlowProject API
+func CreateCreateFlowProjectRequest() (request *CreateFlowProjectRequest) {
+	request = &CreateFlowProjectRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateFlowProject", "emr", "openAPI")
+	return
+}
+
+// CreateCreateFlowProjectResponse creates a response to parse from CreateFlowProject response
+func CreateCreateFlowProjectResponse() (response *CreateFlowProjectResponse) {
+	response = &CreateFlowProjectResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/emr/create_flow_project_cluster_setting.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"
+)
+
+// CreateFlowProjectClusterSetting invokes the emr.CreateFlowProjectClusterSetting API synchronously
+// api document: https://help.aliyun.com/api/emr/createflowprojectclustersetting.html
+func (client *Client) CreateFlowProjectClusterSetting(request *CreateFlowProjectClusterSettingRequest) (response *CreateFlowProjectClusterSettingResponse, err error) {
+	response = CreateCreateFlowProjectClusterSettingResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateFlowProjectClusterSettingWithChan invokes the emr.CreateFlowProjectClusterSetting API asynchronously
+// api document: https://help.aliyun.com/api/emr/createflowprojectclustersetting.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateFlowProjectClusterSettingWithChan(request *CreateFlowProjectClusterSettingRequest) (<-chan *CreateFlowProjectClusterSettingResponse, <-chan error) {
+	responseChan := make(chan *CreateFlowProjectClusterSettingResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateFlowProjectClusterSetting(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateFlowProjectClusterSettingWithCallback invokes the emr.CreateFlowProjectClusterSetting API asynchronously
+// api document: https://help.aliyun.com/api/emr/createflowprojectclustersetting.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateFlowProjectClusterSettingWithCallback(request *CreateFlowProjectClusterSettingRequest, callback func(response *CreateFlowProjectClusterSettingResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateFlowProjectClusterSettingResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateFlowProjectClusterSetting(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateFlowProjectClusterSettingRequest is the request struct for api CreateFlowProjectClusterSetting
+type CreateFlowProjectClusterSettingRequest struct {
+	*requests.RpcRequest
+	UserList     *[]string `position:"Query" name:"UserList"  type:"Repeated"`
+	QueueList    *[]string `position:"Query" name:"QueueList"  type:"Repeated"`
+	HostList     *[]string `position:"Query" name:"HostList"  type:"Repeated"`
+	ClusterId    string    `position:"Query" name:"ClusterId"`
+	DefaultQueue string    `position:"Query" name:"DefaultQueue"`
+	ProjectId    string    `position:"Query" name:"ProjectId"`
+	DefaultUser  string    `position:"Query" name:"DefaultUser"`
+}
+
+// CreateFlowProjectClusterSettingResponse is the response struct for api CreateFlowProjectClusterSetting
+type CreateFlowProjectClusterSettingResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Data      bool   `json:"Data" xml:"Data"`
+}
+
+// CreateCreateFlowProjectClusterSettingRequest creates a request to invoke CreateFlowProjectClusterSetting API
+func CreateCreateFlowProjectClusterSettingRequest() (request *CreateFlowProjectClusterSettingRequest) {
+	request = &CreateFlowProjectClusterSettingRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateFlowProjectClusterSetting", "emr", "openAPI")
+	return
+}
+
+// CreateCreateFlowProjectClusterSettingResponse creates a response to parse from CreateFlowProjectClusterSetting response
+func CreateCreateFlowProjectClusterSettingResponse() (response *CreateFlowProjectClusterSettingResponse) {
+	response = &CreateFlowProjectClusterSettingResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 111 - 0
services/emr/create_flow_project_user.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"
+)
+
+// CreateFlowProjectUser invokes the emr.CreateFlowProjectUser API synchronously
+// api document: https://help.aliyun.com/api/emr/createflowprojectuser.html
+func (client *Client) CreateFlowProjectUser(request *CreateFlowProjectUserRequest) (response *CreateFlowProjectUserResponse, err error) {
+	response = CreateCreateFlowProjectUserResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateFlowProjectUserWithChan invokes the emr.CreateFlowProjectUser API asynchronously
+// api document: https://help.aliyun.com/api/emr/createflowprojectuser.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateFlowProjectUserWithChan(request *CreateFlowProjectUserRequest) (<-chan *CreateFlowProjectUserResponse, <-chan error) {
+	responseChan := make(chan *CreateFlowProjectUserResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateFlowProjectUser(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateFlowProjectUserWithCallback invokes the emr.CreateFlowProjectUser API asynchronously
+// api document: https://help.aliyun.com/api/emr/createflowprojectuser.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateFlowProjectUserWithCallback(request *CreateFlowProjectUserRequest, callback func(response *CreateFlowProjectUserResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateFlowProjectUserResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateFlowProjectUser(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateFlowProjectUserRequest is the request struct for api CreateFlowProjectUser
+type CreateFlowProjectUserRequest struct {
+	*requests.RpcRequest
+	ProjectId string                       `position:"Query" name:"ProjectId"`
+	User      *[]CreateFlowProjectUserUser `position:"Query" name:"User"  type:"Repeated"`
+}
+
+// CreateFlowProjectUserUser is a repeated param struct in CreateFlowProjectUserRequest
+type CreateFlowProjectUserUser struct {
+	UserId   string `name:"UserId"`
+	UserName string `name:"UserName"`
+}
+
+// CreateFlowProjectUserResponse is the response struct for api CreateFlowProjectUser
+type CreateFlowProjectUserResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Data      bool   `json:"Data" xml:"Data"`
+}
+
+// CreateCreateFlowProjectUserRequest creates a request to invoke CreateFlowProjectUser API
+func CreateCreateFlowProjectUserRequest() (request *CreateFlowProjectUserRequest) {
+	request = &CreateFlowProjectUserRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateFlowProjectUser", "emr", "openAPI")
+	return
+}
+
+// CreateCreateFlowProjectUserResponse creates a response to parse from CreateFlowProjectUser response
+func CreateCreateFlowProjectUserResponse() (response *CreateFlowProjectUserResponse) {
+	response = &CreateFlowProjectUserResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/emr/create_job.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"
+)
+
+// CreateJob invokes the emr.CreateJob API synchronously
+// api document: https://help.aliyun.com/api/emr/createjob.html
+func (client *Client) CreateJob(request *CreateJobRequest) (response *CreateJobResponse, err error) {
+	response = CreateCreateJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateJobWithChan invokes the emr.CreateJob API asynchronously
+// api document: https://help.aliyun.com/api/emr/createjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateJobWithChan(request *CreateJobRequest) (<-chan *CreateJobResponse, <-chan error) {
+	responseChan := make(chan *CreateJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateJobWithCallback invokes the emr.CreateJob API asynchronously
+// api document: https://help.aliyun.com/api/emr/createjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateJobWithCallback(request *CreateJobRequest, callback func(response *CreateJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateJobResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateJobRequest is the request struct for api CreateJob
+type CreateJobRequest struct {
+	*requests.RpcRequest
+	RunParameter    string           `position:"Query" name:"RunParameter"`
+	RetryInterval   requests.Integer `position:"Query" name:"RetryInterval"`
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Name            string           `position:"Query" name:"Name"`
+	Type            string           `position:"Query" name:"Type"`
+	MaxRetry        requests.Integer `position:"Query" name:"MaxRetry"`
+	FailAct         string           `position:"Query" name:"FailAct"`
+}
+
+// CreateJobResponse is the response struct for api CreateJob
+type CreateJobResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Id        string `json:"Id" xml:"Id"`
+}
+
+// CreateCreateJobRequest creates a request to invoke CreateJob API
+func CreateCreateJobRequest() (request *CreateJobRequest) {
+	request = &CreateJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateJob", "emr", "openAPI")
+	return
+}
+
+// CreateCreateJobResponse creates a response to parse from CreateJob response
+func CreateCreateJobResponse() (response *CreateJobResponse) {
+	response = &CreateJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/emr/create_nav_node.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"
+)
+
+// CreateNavNode invokes the emr.CreateNavNode API synchronously
+// api document: https://help.aliyun.com/api/emr/createnavnode.html
+func (client *Client) CreateNavNode(request *CreateNavNodeRequest) (response *CreateNavNodeResponse, err error) {
+	response = CreateCreateNavNodeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateNavNodeWithChan invokes the emr.CreateNavNode API asynchronously
+// api document: https://help.aliyun.com/api/emr/createnavnode.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateNavNodeWithChan(request *CreateNavNodeRequest) (<-chan *CreateNavNodeResponse, <-chan error) {
+	responseChan := make(chan *CreateNavNodeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateNavNode(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateNavNodeWithCallback invokes the emr.CreateNavNode API asynchronously
+// api document: https://help.aliyun.com/api/emr/createnavnode.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateNavNodeWithCallback(request *CreateNavNodeRequest, callback func(response *CreateNavNodeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateNavNodeResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateNavNode(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateNavNodeRequest is the request struct for api CreateNavNode
+type CreateNavNodeRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Name            string           `position:"Query" name:"Name"`
+	Type            string           `position:"Query" name:"Type"`
+	ProjectId       string           `position:"Query" name:"ProjectId"`
+	CategoryType    string           `position:"Query" name:"CategoryType"`
+	ObjectId        string           `position:"Query" name:"ObjectId"`
+	ParentId        string           `position:"Query" name:"ParentId"`
+}
+
+// CreateNavNodeResponse is the response struct for api CreateNavNode
+type CreateNavNodeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Id        string `json:"Id" xml:"Id"`
+}
+
+// CreateCreateNavNodeRequest creates a request to invoke CreateNavNode API
+func CreateCreateNavNodeRequest() (request *CreateNavNodeRequest) {
+	request = &CreateNavNodeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateNavNode", "emr", "openAPI")
+	return
+}
+
+// CreateCreateNavNodeResponse creates a response to parse from CreateNavNode response
+func CreateCreateNavNodeResponse() (response *CreateNavNodeResponse) {
+	response = &CreateNavNodeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/emr/create_note.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"
+)
+
+// CreateNote invokes the emr.CreateNote API synchronously
+// api document: https://help.aliyun.com/api/emr/createnote.html
+func (client *Client) CreateNote(request *CreateNoteRequest) (response *CreateNoteResponse, err error) {
+	response = CreateCreateNoteResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateNoteWithChan invokes the emr.CreateNote API asynchronously
+// api document: https://help.aliyun.com/api/emr/createnote.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateNoteWithChan(request *CreateNoteRequest) (<-chan *CreateNoteResponse, <-chan error) {
+	responseChan := make(chan *CreateNoteResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateNote(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateNoteWithCallback invokes the emr.CreateNote API asynchronously
+// api document: https://help.aliyun.com/api/emr/createnote.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateNoteWithCallback(request *CreateNoteRequest, callback func(response *CreateNoteResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateNoteResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateNote(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateNoteRequest is the request struct for api CreateNote
+type CreateNoteRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Name            string           `position:"Query" name:"Name"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+	Type            string           `position:"Query" name:"Type"`
+}
+
+// CreateNoteResponse is the response struct for api CreateNote
+type CreateNoteResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Id        string `json:"Id" xml:"Id"`
+	Paragraph string `json:"Paragraph" xml:"Paragraph"`
+}
+
+// CreateCreateNoteRequest creates a request to invoke CreateNote API
+func CreateCreateNoteRequest() (request *CreateNoteRequest) {
+	request = &CreateNoteRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateNote", "emr", "openAPI")
+	return
+}
+
+// CreateCreateNoteResponse creates a response to parse from CreateNote response
+func CreateCreateNoteResponse() (response *CreateNoteResponse) {
+	response = &CreateNoteResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/emr/create_paragraph.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"
+)
+
+// CreateParagraph invokes the emr.CreateParagraph API synchronously
+// api document: https://help.aliyun.com/api/emr/createparagraph.html
+func (client *Client) CreateParagraph(request *CreateParagraphRequest) (response *CreateParagraphResponse, err error) {
+	response = CreateCreateParagraphResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateParagraphWithChan invokes the emr.CreateParagraph API asynchronously
+// api document: https://help.aliyun.com/api/emr/createparagraph.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateParagraphWithChan(request *CreateParagraphRequest) (<-chan *CreateParagraphResponse, <-chan error) {
+	responseChan := make(chan *CreateParagraphResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateParagraph(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateParagraphWithCallback invokes the emr.CreateParagraph API asynchronously
+// api document: https://help.aliyun.com/api/emr/createparagraph.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateParagraphWithCallback(request *CreateParagraphRequest, callback func(response *CreateParagraphResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateParagraphResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateParagraph(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateParagraphRequest is the request struct for api CreateParagraph
+type CreateParagraphRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	NoteId          string           `position:"Query" name:"NoteId"`
+	Text            string           `position:"Query" name:"Text"`
+}
+
+// CreateParagraphResponse is the response struct for api CreateParagraph
+type CreateParagraphResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Id        string `json:"Id" xml:"Id"`
+}
+
+// CreateCreateParagraphRequest creates a request to invoke CreateParagraph API
+func CreateCreateParagraphRequest() (request *CreateParagraphRequest) {
+	request = &CreateParagraphRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateParagraph", "emr", "openAPI")
+	return
+}
+
+// CreateCreateParagraphResponse creates a response to parse from CreateParagraph response
+func CreateCreateParagraphResponse() (response *CreateParagraphResponse) {
+	response = &CreateParagraphResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 120 - 0
services/emr/create_resource_pool.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"
+)
+
+// CreateResourcePool invokes the emr.CreateResourcePool API synchronously
+// api document: https://help.aliyun.com/api/emr/createresourcepool.html
+func (client *Client) CreateResourcePool(request *CreateResourcePoolRequest) (response *CreateResourcePoolResponse, err error) {
+	response = CreateCreateResourcePoolResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateResourcePoolWithChan invokes the emr.CreateResourcePool API asynchronously
+// api document: https://help.aliyun.com/api/emr/createresourcepool.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateResourcePoolWithChan(request *CreateResourcePoolRequest) (<-chan *CreateResourcePoolResponse, <-chan error) {
+	responseChan := make(chan *CreateResourcePoolResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateResourcePool(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateResourcePoolWithCallback invokes the emr.CreateResourcePool API asynchronously
+// api document: https://help.aliyun.com/api/emr/createresourcepool.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateResourcePoolWithCallback(request *CreateResourcePoolRequest, callback func(response *CreateResourcePoolResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateResourcePoolResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateResourcePool(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateResourcePoolRequest is the request struct for api CreateResourcePool
+type CreateResourcePoolRequest struct {
+	*requests.RpcRequest
+	Note            string                      `position:"Query" name:"Note"`
+	ResourceOwnerId requests.Integer            `position:"Query" name:"ResourceOwnerId"`
+	Name            string                      `position:"Query" name:"Name"`
+	Active          requests.Boolean            `position:"Query" name:"Active"`
+	ClusterId       string                      `position:"Query" name:"ClusterId"`
+	YarnSiteConfig  string                      `position:"Query" name:"YarnSiteConfig"`
+	Config          *[]CreateResourcePoolConfig `position:"Query" name:"Config"  type:"Repeated"`
+	PoolType        string                      `position:"Query" name:"PoolType"`
+}
+
+// CreateResourcePoolConfig is a repeated param struct in CreateResourcePoolRequest
+type CreateResourcePoolConfig struct {
+	ConfigKey   string `name:"ConfigKey"`
+	Note        string `name:"Note"`
+	ConfigType  string `name:"configType"`
+	TargetId    string `name:"TargetId"`
+	ConfigValue string `name:"ConfigValue"`
+	Category    string `name:"Category"`
+}
+
+// CreateResourcePoolResponse is the response struct for api CreateResourcePool
+type CreateResourcePoolResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateCreateResourcePoolRequest creates a request to invoke CreateResourcePool API
+func CreateCreateResourcePoolRequest() (request *CreateResourcePoolRequest) {
+	request = &CreateResourcePoolRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateResourcePool", "emr", "openAPI")
+	return
+}
+
+// CreateCreateResourcePoolResponse creates a response to parse from CreateResourcePool response
+func CreateCreateResourcePoolResponse() (response *CreateResourcePoolResponse) {
+	response = &CreateResourcePoolResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 118 - 0
services/emr/create_resource_queue.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"
+)
+
+// CreateResourceQueue invokes the emr.CreateResourceQueue API synchronously
+// api document: https://help.aliyun.com/api/emr/createresourcequeue.html
+func (client *Client) CreateResourceQueue(request *CreateResourceQueueRequest) (response *CreateResourceQueueResponse, err error) {
+	response = CreateCreateResourceQueueResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateResourceQueueWithChan invokes the emr.CreateResourceQueue API asynchronously
+// api document: https://help.aliyun.com/api/emr/createresourcequeue.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateResourceQueueWithChan(request *CreateResourceQueueRequest) (<-chan *CreateResourceQueueResponse, <-chan error) {
+	responseChan := make(chan *CreateResourceQueueResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateResourceQueue(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateResourceQueueWithCallback invokes the emr.CreateResourceQueue API asynchronously
+// api document: https://help.aliyun.com/api/emr/createresourcequeue.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateResourceQueueWithCallback(request *CreateResourceQueueRequest, callback func(response *CreateResourceQueueResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateResourceQueueResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateResourceQueue(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateResourceQueueRequest is the request struct for api CreateResourceQueue
+type CreateResourceQueueRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer             `position:"Query" name:"ResourceOwnerId"`
+	ParentQueueId   requests.Integer             `position:"Query" name:"ParentQueueId"`
+	Name            string                       `position:"Query" name:"Name"`
+	QualifiedName   string                       `position:"Query" name:"QualifiedName"`
+	ResourcePoolId  requests.Integer             `position:"Query" name:"ResourcePoolId"`
+	ClusterId       string                       `position:"Query" name:"ClusterId"`
+	Leaf            requests.Boolean             `position:"Query" name:"Leaf"`
+	Config          *[]CreateResourceQueueConfig `position:"Query" name:"Config"  type:"Repeated"`
+}
+
+// CreateResourceQueueConfig is a repeated param struct in CreateResourceQueueRequest
+type CreateResourceQueueConfig struct {
+	ConfigKey   string `name:"ConfigKey"`
+	Note        string `name:"Note"`
+	ConfigValue string `name:"ConfigValue"`
+	Category    string `name:"Category"`
+}
+
+// CreateResourceQueueResponse is the response struct for api CreateResourceQueue
+type CreateResourceQueueResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateCreateResourceQueueRequest creates a request to invoke CreateResourceQueue API
+func CreateCreateResourceQueueRequest() (request *CreateResourceQueueRequest) {
+	request = &CreateResourceQueueRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateResourceQueue", "emr", "openAPI")
+	return
+}
+
+// CreateCreateResourceQueueResponse creates a response to parse from CreateResourceQueue response
+func CreateCreateResourceQueueResponse() (response *CreateResourceQueueResponse) {
+	response = &CreateResourceQueueResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 137 - 0
services/emr/create_scaling_rule.go

@@ -0,0 +1,137 @@
+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"
+)
+
+// CreateScalingRule invokes the emr.CreateScalingRule API synchronously
+// api document: https://help.aliyun.com/api/emr/createscalingrule.html
+func (client *Client) CreateScalingRule(request *CreateScalingRuleRequest) (response *CreateScalingRuleResponse, err error) {
+	response = CreateCreateScalingRuleResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateScalingRuleWithChan invokes the emr.CreateScalingRule API asynchronously
+// api document: https://help.aliyun.com/api/emr/createscalingrule.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateScalingRuleWithChan(request *CreateScalingRuleRequest) (<-chan *CreateScalingRuleResponse, <-chan error) {
+	responseChan := make(chan *CreateScalingRuleResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateScalingRule(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateScalingRuleWithCallback invokes the emr.CreateScalingRule API asynchronously
+// api document: https://help.aliyun.com/api/emr/createscalingrule.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateScalingRuleWithCallback(request *CreateScalingRuleRequest, callback func(response *CreateScalingRuleResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateScalingRuleResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateScalingRule(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateScalingRuleRequest is the request struct for api CreateScalingRule
+type CreateScalingRuleRequest struct {
+	*requests.RpcRequest
+	LaunchTime           string                                `position:"Query" name:"LaunchTime"`
+	ResourceOwnerId      requests.Integer                      `position:"Query" name:"ResourceOwnerId"`
+	RuleCategory         string                                `position:"Query" name:"RuleCategory"`
+	AdjustmentValue      requests.Integer                      `position:"Query" name:"AdjustmentValue"`
+	AdjustmentType       string                                `position:"Query" name:"AdjustmentType"`
+	RuleName             string                                `position:"Query" name:"RuleName"`
+	ClusterId            string                                `position:"Query" name:"ClusterId"`
+	LaunchExpirationTime requests.Integer                      `position:"Query" name:"LaunchExpirationTime"`
+	RecurrenceValue      string                                `position:"Query" name:"RecurrenceValue"`
+	RecurrenceEndTime    string                                `position:"Query" name:"RecurrenceEndTime"`
+	CloudWatchTrigger    *[]CreateScalingRuleCloudWatchTrigger `position:"Query" name:"CloudWatchTrigger"  type:"Repeated"`
+	HostGroupId          string                                `position:"Query" name:"HostGroupId"`
+	SchedulerTrigger     *[]CreateScalingRuleSchedulerTrigger  `position:"Query" name:"SchedulerTrigger"  type:"Repeated"`
+	Cooldown             requests.Integer                      `position:"Query" name:"Cooldown"`
+	RecurrenceType       string                                `position:"Query" name:"RecurrenceType"`
+}
+
+// CreateScalingRuleCloudWatchTrigger is a repeated param struct in CreateScalingRuleRequest
+type CreateScalingRuleCloudWatchTrigger 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"`
+}
+
+// CreateScalingRuleSchedulerTrigger is a repeated param struct in CreateScalingRuleRequest
+type CreateScalingRuleSchedulerTrigger struct {
+	LaunchTime           string `name:"LaunchTime"`
+	LaunchExpirationTime string `name:"LaunchExpirationTime"`
+	RecurrenceValue      string `name:"RecurrenceValue"`
+	RecurrenceEndTime    string `name:"RecurrenceEndTime"`
+	RecurrenceType       string `name:"RecurrenceType"`
+}
+
+// CreateScalingRuleResponse is the response struct for api CreateScalingRule
+type CreateScalingRuleResponse struct {
+	*responses.BaseResponse
+	RequestId     string `json:"RequestId" xml:"RequestId"`
+	ScalingRuleId string `json:"ScalingRuleId" xml:"ScalingRuleId"`
+}
+
+// CreateCreateScalingRuleRequest creates a request to invoke CreateScalingRule API
+func CreateCreateScalingRuleRequest() (request *CreateScalingRuleRequest) {
+	request = &CreateScalingRuleRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateScalingRule", "emr", "openAPI")
+	return
+}
+
+// CreateCreateScalingRuleResponse creates a response to parse from CreateScalingRule response
+func CreateCreateScalingRuleResponse() (response *CreateScalingRuleResponse) {
+	response = &CreateScalingRuleResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 139 - 0
services/emr/create_scaling_task_group.go

@@ -0,0 +1,139 @@
+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"
+)
+
+// CreateScalingTaskGroup invokes the emr.CreateScalingTaskGroup API synchronously
+// api document: https://help.aliyun.com/api/emr/createscalingtaskgroup.html
+func (client *Client) CreateScalingTaskGroup(request *CreateScalingTaskGroupRequest) (response *CreateScalingTaskGroupResponse, err error) {
+	response = CreateCreateScalingTaskGroupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateScalingTaskGroupWithChan invokes the emr.CreateScalingTaskGroup API asynchronously
+// api document: https://help.aliyun.com/api/emr/createscalingtaskgroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateScalingTaskGroupWithChan(request *CreateScalingTaskGroupRequest) (<-chan *CreateScalingTaskGroupResponse, <-chan error) {
+	responseChan := make(chan *CreateScalingTaskGroupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateScalingTaskGroup(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateScalingTaskGroupWithCallback invokes the emr.CreateScalingTaskGroup API asynchronously
+// api document: https://help.aliyun.com/api/emr/createscalingtaskgroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateScalingTaskGroupWithCallback(request *CreateScalingTaskGroupRequest, callback func(response *CreateScalingTaskGroupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateScalingTaskGroupResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateScalingTaskGroup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateScalingTaskGroupRequest is the request struct for api CreateScalingTaskGroup
+type CreateScalingTaskGroupRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId    requests.Integer                         `position:"Query" name:"ResourceOwnerId"`
+	DataDiskCategory   string                                   `position:"Query" name:"DataDiskCategory"`
+	ClusterId          string                                   `position:"Query" name:"ClusterId"`
+	MinSize            requests.Integer                         `position:"Query" name:"MinSize"`
+	SpotStrategy       string                                   `position:"Query" name:"SpotStrategy"`
+	DataDiskSize       requests.Integer                         `position:"Query" name:"DataDiskSize"`
+	SpotPriceLimits    *[]CreateScalingTaskGroupSpotPriceLimits `position:"Query" name:"SpotPriceLimits"  type:"Repeated"`
+	ScalingRule        *[]CreateScalingTaskGroupScalingRule     `position:"Query" name:"ScalingRule"  type:"Repeated"`
+	ActiveRuleCategory string                                   `position:"Query" name:"ActiveRuleCategory"`
+	MaxSize            requests.Integer                         `position:"Query" name:"MaxSize"`
+	DataDiskCount      requests.Integer                         `position:"Query" name:"DataDiskCount"`
+	DefaultCooldown    requests.Integer                         `position:"Query" name:"DefaultCooldown"`
+	PayType            string                                   `position:"Query" name:"PayType"`
+	InstanceTypeList   *[]string                                `position:"Query" name:"InstanceTypeList"  type:"Repeated"`
+}
+
+// CreateScalingTaskGroupSpotPriceLimits is a repeated param struct in CreateScalingTaskGroupRequest
+type CreateScalingTaskGroupSpotPriceLimits struct {
+	InstanceType string `name:"InstanceType"`
+	PriceLimit   string `name:"PriceLimit"`
+}
+
+// CreateScalingTaskGroupScalingRule is a repeated param struct in CreateScalingTaskGroupRequest
+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"`
+}
+
+// CreateScalingTaskGroupResponse is the response struct for api CreateScalingTaskGroup
+type CreateScalingTaskGroupResponse struct {
+	*responses.BaseResponse
+	RequestId   string `json:"RequestId" xml:"RequestId"`
+	HostGroupId string `json:"HostGroupId" xml:"HostGroupId"`
+}
+
+// CreateCreateScalingTaskGroupRequest creates a request to invoke CreateScalingTaskGroup API
+func CreateCreateScalingTaskGroupRequest() (request *CreateScalingTaskGroupRequest) {
+	request = &CreateScalingTaskGroupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateScalingTaskGroup", "emr", "openAPI")
+	return
+}
+
+// CreateCreateScalingTaskGroupResponse creates a response to parse from CreateScalingTaskGroup response
+func CreateCreateScalingTaskGroupResponse() (response *CreateScalingTaskGroupResponse) {
+	response = &CreateScalingTaskGroupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 114 - 0
services/emr/create_user_password.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"
+)
+
+// CreateUserPassword invokes the emr.CreateUserPassword API synchronously
+// api document: https://help.aliyun.com/api/emr/createuserpassword.html
+func (client *Client) CreateUserPassword(request *CreateUserPasswordRequest) (response *CreateUserPasswordResponse, err error) {
+	response = CreateCreateUserPasswordResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateUserPasswordWithChan invokes the emr.CreateUserPassword API asynchronously
+// api document: https://help.aliyun.com/api/emr/createuserpassword.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateUserPasswordWithChan(request *CreateUserPasswordRequest) (<-chan *CreateUserPasswordResponse, <-chan error) {
+	responseChan := make(chan *CreateUserPasswordResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateUserPassword(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateUserPasswordWithCallback invokes the emr.CreateUserPassword API asynchronously
+// api document: https://help.aliyun.com/api/emr/createuserpassword.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateUserPasswordWithCallback(request *CreateUserPasswordRequest, callback func(response *CreateUserPasswordResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateUserPasswordResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateUserPassword(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateUserPasswordRequest is the request struct for api CreateUserPassword
+type CreateUserPasswordRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer              `position:"Query" name:"ResourceOwnerId"`
+	Password        string                        `position:"Query" name:"Password"`
+	ClusterId       string                        `position:"Query" name:"ClusterId"`
+	UserInfo        *[]CreateUserPasswordUserInfo `position:"Query" name:"UserInfo"  type:"Repeated"`
+}
+
+// CreateUserPasswordUserInfo is a repeated param struct in CreateUserPasswordRequest
+type CreateUserPasswordUserInfo struct {
+	Type      string `name:"Type"`
+	GroupName string `name:"GroupName"`
+	UserId    string `name:"UserId"`
+	UserName  string `name:"UserName"`
+}
+
+// CreateUserPasswordResponse is the response struct for api CreateUserPassword
+type CreateUserPasswordResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateCreateUserPasswordRequest creates a request to invoke CreateUserPassword API
+func CreateCreateUserPasswordRequest() (request *CreateUserPasswordRequest) {
+	request = &CreateUserPasswordRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateUserPassword", "emr", "openAPI")
+	return
+}
+
+// CreateCreateUserPasswordResponse creates a response to parse from CreateUserPassword response
+func CreateCreateUserPasswordResponse() (response *CreateUserPasswordResponse) {
+	response = &CreateUserPasswordResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 102 - 0
services/emr/create_user_statistics.go

@@ -0,0 +1,102 @@
+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"
+)
+
+// CreateUserStatistics invokes the emr.CreateUserStatistics API synchronously
+// api document: https://help.aliyun.com/api/emr/createuserstatistics.html
+func (client *Client) CreateUserStatistics(request *CreateUserStatisticsRequest) (response *CreateUserStatisticsResponse, err error) {
+	response = CreateCreateUserStatisticsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateUserStatisticsWithChan invokes the emr.CreateUserStatistics API asynchronously
+// api document: https://help.aliyun.com/api/emr/createuserstatistics.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateUserStatisticsWithChan(request *CreateUserStatisticsRequest) (<-chan *CreateUserStatisticsResponse, <-chan error) {
+	responseChan := make(chan *CreateUserStatisticsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateUserStatistics(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateUserStatisticsWithCallback invokes the emr.CreateUserStatistics API asynchronously
+// api document: https://help.aliyun.com/api/emr/createuserstatistics.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateUserStatisticsWithCallback(request *CreateUserStatisticsRequest, callback func(response *CreateUserStatisticsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateUserStatisticsResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateUserStatistics(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateUserStatisticsRequest is the request struct for api CreateUserStatistics
+type CreateUserStatisticsRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+}
+
+// CreateUserStatisticsResponse is the response struct for api CreateUserStatistics
+type CreateUserStatisticsResponse struct {
+	*responses.BaseResponse
+}
+
+// CreateCreateUserStatisticsRequest creates a request to invoke CreateUserStatistics API
+func CreateCreateUserStatisticsRequest() (request *CreateUserStatisticsRequest) {
+	request = &CreateUserStatisticsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateUserStatistics", "emr", "openAPI")
+	return
+}
+
+// CreateCreateUserStatisticsResponse creates a response to parse from CreateUserStatistics response
+func CreateCreateUserStatisticsResponse() (response *CreateUserStatisticsResponse) {
+	response = &CreateUserStatisticsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/emr/create_users.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"
+)
+
+// CreateUsers invokes the emr.CreateUsers API synchronously
+// api document: https://help.aliyun.com/api/emr/createusers.html
+func (client *Client) CreateUsers(request *CreateUsersRequest) (response *CreateUsersResponse, err error) {
+	response = CreateCreateUsersResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateUsersWithChan invokes the emr.CreateUsers API asynchronously
+// api document: https://help.aliyun.com/api/emr/createusers.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateUsersWithChan(request *CreateUsersRequest) (<-chan *CreateUsersResponse, <-chan error) {
+	responseChan := make(chan *CreateUsersResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateUsers(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateUsersWithCallback invokes the emr.CreateUsers API asynchronously
+// api document: https://help.aliyun.com/api/emr/createusers.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateUsersWithCallback(request *CreateUsersRequest, callback func(response *CreateUsersResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateUsersResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateUsers(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateUsersRequest is the request struct for api CreateUsers
+type CreateUsersRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer       `position:"Query" name:"ResourceOwnerId"`
+	ClusterId       string                 `position:"Query" name:"ClusterId"`
+	UserInfo        *[]CreateUsersUserInfo `position:"Query" name:"UserInfo"  type:"Repeated"`
+}
+
+// CreateUsersUserInfo is a repeated param struct in CreateUsersRequest
+type CreateUsersUserInfo struct {
+	Type     string `name:"Type"`
+	UserId   string `name:"UserId"`
+	UserName string `name:"UserName"`
+}
+
+// CreateUsersResponse is the response struct for api CreateUsers
+type CreateUsersResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateCreateUsersRequest creates a request to invoke CreateUsers API
+func CreateCreateUsersRequest() (request *CreateUsersRequest) {
+	request = &CreateUsersRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateUsers", "emr", "openAPI")
+	return
+}
+
+// CreateCreateUsersResponse creates a response to parse from CreateUsers response
+func CreateCreateUsersResponse() (response *CreateUsersResponse) {
+	response = &CreateUsersResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/create_verification_code.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"
+)
+
+// CreateVerificationCode invokes the emr.CreateVerificationCode API synchronously
+// api document: https://help.aliyun.com/api/emr/createverificationcode.html
+func (client *Client) CreateVerificationCode(request *CreateVerificationCodeRequest) (response *CreateVerificationCodeResponse, err error) {
+	response = CreateCreateVerificationCodeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateVerificationCodeWithChan invokes the emr.CreateVerificationCode API asynchronously
+// api document: https://help.aliyun.com/api/emr/createverificationcode.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateVerificationCodeWithChan(request *CreateVerificationCodeRequest) (<-chan *CreateVerificationCodeResponse, <-chan error) {
+	responseChan := make(chan *CreateVerificationCodeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateVerificationCode(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateVerificationCodeWithCallback invokes the emr.CreateVerificationCode API asynchronously
+// api document: https://help.aliyun.com/api/emr/createverificationcode.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateVerificationCodeWithCallback(request *CreateVerificationCodeRequest, callback func(response *CreateVerificationCodeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateVerificationCodeResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateVerificationCode(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateVerificationCodeRequest is the request struct for api CreateVerificationCode
+type CreateVerificationCodeRequest struct {
+	*requests.RpcRequest
+	Mode            string           `position:"Query" name:"Mode"`
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Target          string           `position:"Query" name:"Target"`
+}
+
+// CreateVerificationCodeResponse is the response struct for api CreateVerificationCode
+type CreateVerificationCodeResponse struct {
+	*responses.BaseResponse
+	Status int `json:"Status" xml:"Status"`
+}
+
+// CreateCreateVerificationCodeRequest creates a request to invoke CreateVerificationCode API
+func CreateCreateVerificationCodeRequest() (request *CreateVerificationCodeRequest) {
+	request = &CreateVerificationCodeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "CreateVerificationCode", "emr", "openAPI")
+	return
+}
+
+// CreateCreateVerificationCodeResponse creates a response to parse from CreateVerificationCode response
+func CreateCreateVerificationCodeResponse() (response *CreateVerificationCodeResponse) {
+	response = &CreateVerificationCodeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/emr/delete_alert_contacts.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"
+)
+
+// DeleteAlertContacts invokes the emr.DeleteAlertContacts API synchronously
+// api document: https://help.aliyun.com/api/emr/deletealertcontacts.html
+func (client *Client) DeleteAlertContacts(request *DeleteAlertContactsRequest) (response *DeleteAlertContactsResponse, err error) {
+	response = CreateDeleteAlertContactsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteAlertContactsWithChan invokes the emr.DeleteAlertContacts API asynchronously
+// api document: https://help.aliyun.com/api/emr/deletealertcontacts.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteAlertContactsWithChan(request *DeleteAlertContactsRequest) (<-chan *DeleteAlertContactsResponse, <-chan error) {
+	responseChan := make(chan *DeleteAlertContactsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteAlertContacts(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteAlertContactsWithCallback invokes the emr.DeleteAlertContacts API asynchronously
+// api document: https://help.aliyun.com/api/emr/deletealertcontacts.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteAlertContactsWithCallback(request *DeleteAlertContactsRequest, callback func(response *DeleteAlertContactsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteAlertContactsResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteAlertContacts(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteAlertContactsRequest is the request struct for api DeleteAlertContacts
+type DeleteAlertContactsRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Ids             string           `position:"Query" name:"Ids"`
+}
+
+// DeleteAlertContactsResponse is the response struct for api DeleteAlertContacts
+type DeleteAlertContactsResponse struct {
+	*responses.BaseResponse
+	Done bool `json:"Done" xml:"Done"`
+}
+
+// CreateDeleteAlertContactsRequest creates a request to invoke DeleteAlertContacts API
+func CreateDeleteAlertContactsRequest() (request *DeleteAlertContactsRequest) {
+	request = &DeleteAlertContactsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteAlertContacts", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteAlertContactsResponse creates a response to parse from DeleteAlertContacts response
+func CreateDeleteAlertContactsResponse() (response *DeleteAlertContactsResponse) {
+	response = &DeleteAlertContactsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/emr/delete_alert_ding_ding_groups.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"
+)
+
+// DeleteAlertDingDingGroups invokes the emr.DeleteAlertDingDingGroups API synchronously
+// api document: https://help.aliyun.com/api/emr/deletealertdingdinggroups.html
+func (client *Client) DeleteAlertDingDingGroups(request *DeleteAlertDingDingGroupsRequest) (response *DeleteAlertDingDingGroupsResponse, err error) {
+	response = CreateDeleteAlertDingDingGroupsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteAlertDingDingGroupsWithChan invokes the emr.DeleteAlertDingDingGroups API asynchronously
+// api document: https://help.aliyun.com/api/emr/deletealertdingdinggroups.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteAlertDingDingGroupsWithChan(request *DeleteAlertDingDingGroupsRequest) (<-chan *DeleteAlertDingDingGroupsResponse, <-chan error) {
+	responseChan := make(chan *DeleteAlertDingDingGroupsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteAlertDingDingGroups(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteAlertDingDingGroupsWithCallback invokes the emr.DeleteAlertDingDingGroups API asynchronously
+// api document: https://help.aliyun.com/api/emr/deletealertdingdinggroups.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteAlertDingDingGroupsWithCallback(request *DeleteAlertDingDingGroupsRequest, callback func(response *DeleteAlertDingDingGroupsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteAlertDingDingGroupsResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteAlertDingDingGroups(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteAlertDingDingGroupsRequest is the request struct for api DeleteAlertDingDingGroups
+type DeleteAlertDingDingGroupsRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Ids             string           `position:"Query" name:"Ids"`
+}
+
+// DeleteAlertDingDingGroupsResponse is the response struct for api DeleteAlertDingDingGroups
+type DeleteAlertDingDingGroupsResponse struct {
+	*responses.BaseResponse
+	Done bool `json:"Done" xml:"Done"`
+}
+
+// CreateDeleteAlertDingDingGroupsRequest creates a request to invoke DeleteAlertDingDingGroups API
+func CreateDeleteAlertDingDingGroupsRequest() (request *DeleteAlertDingDingGroupsRequest) {
+	request = &DeleteAlertDingDingGroupsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteAlertDingDingGroups", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteAlertDingDingGroupsResponse creates a response to parse from DeleteAlertDingDingGroups response
+func CreateDeleteAlertDingDingGroupsResponse() (response *DeleteAlertDingDingGroupsResponse) {
+	response = &DeleteAlertDingDingGroupsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/emr/delete_alert_user_groups.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"
+)
+
+// DeleteAlertUserGroups invokes the emr.DeleteAlertUserGroups API synchronously
+// api document: https://help.aliyun.com/api/emr/deletealertusergroups.html
+func (client *Client) DeleteAlertUserGroups(request *DeleteAlertUserGroupsRequest) (response *DeleteAlertUserGroupsResponse, err error) {
+	response = CreateDeleteAlertUserGroupsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteAlertUserGroupsWithChan invokes the emr.DeleteAlertUserGroups API asynchronously
+// api document: https://help.aliyun.com/api/emr/deletealertusergroups.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteAlertUserGroupsWithChan(request *DeleteAlertUserGroupsRequest) (<-chan *DeleteAlertUserGroupsResponse, <-chan error) {
+	responseChan := make(chan *DeleteAlertUserGroupsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteAlertUserGroups(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteAlertUserGroupsWithCallback invokes the emr.DeleteAlertUserGroups API asynchronously
+// api document: https://help.aliyun.com/api/emr/deletealertusergroups.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteAlertUserGroupsWithCallback(request *DeleteAlertUserGroupsRequest, callback func(response *DeleteAlertUserGroupsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteAlertUserGroupsResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteAlertUserGroups(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteAlertUserGroupsRequest is the request struct for api DeleteAlertUserGroups
+type DeleteAlertUserGroupsRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Ids             string           `position:"Query" name:"Ids"`
+}
+
+// DeleteAlertUserGroupsResponse is the response struct for api DeleteAlertUserGroups
+type DeleteAlertUserGroupsResponse struct {
+	*responses.BaseResponse
+	Done bool `json:"Done" xml:"Done"`
+}
+
+// CreateDeleteAlertUserGroupsRequest creates a request to invoke DeleteAlertUserGroups API
+func CreateDeleteAlertUserGroupsRequest() (request *DeleteAlertUserGroupsRequest) {
+	request = &DeleteAlertUserGroupsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteAlertUserGroups", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteAlertUserGroupsResponse creates a response to parse from DeleteAlertUserGroups response
+func CreateDeleteAlertUserGroupsResponse() (response *DeleteAlertUserGroupsResponse) {
+	response = &DeleteAlertUserGroupsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/delete_cluster_host_group.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"
+)
+
+// DeleteClusterHostGroup invokes the emr.DeleteClusterHostGroup API synchronously
+// api document: https://help.aliyun.com/api/emr/deleteclusterhostgroup.html
+func (client *Client) DeleteClusterHostGroup(request *DeleteClusterHostGroupRequest) (response *DeleteClusterHostGroupResponse, err error) {
+	response = CreateDeleteClusterHostGroupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteClusterHostGroupWithChan invokes the emr.DeleteClusterHostGroup API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteclusterhostgroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteClusterHostGroupWithChan(request *DeleteClusterHostGroupRequest) (<-chan *DeleteClusterHostGroupResponse, <-chan error) {
+	responseChan := make(chan *DeleteClusterHostGroupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteClusterHostGroup(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteClusterHostGroupWithCallback invokes the emr.DeleteClusterHostGroup API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteclusterhostgroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteClusterHostGroupWithCallback(request *DeleteClusterHostGroupRequest, callback func(response *DeleteClusterHostGroupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteClusterHostGroupResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteClusterHostGroup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteClusterHostGroupRequest is the request struct for api DeleteClusterHostGroup
+type DeleteClusterHostGroupRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	HostGroupId     string           `position:"Query" name:"HostGroupId"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+}
+
+// DeleteClusterHostGroupResponse is the response struct for api DeleteClusterHostGroup
+type DeleteClusterHostGroupResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteClusterHostGroupRequest creates a request to invoke DeleteClusterHostGroup API
+func CreateDeleteClusterHostGroupRequest() (request *DeleteClusterHostGroupRequest) {
+	request = &DeleteClusterHostGroupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteClusterHostGroup", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteClusterHostGroupResponse creates a response to parse from DeleteClusterHostGroup response
+func CreateDeleteClusterHostGroupResponse() (response *DeleteClusterHostGroupResponse) {
+	response = &DeleteClusterHostGroupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/emr/delete_cluster_script.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"
+)
+
+// DeleteClusterScript invokes the emr.DeleteClusterScript API synchronously
+// api document: https://help.aliyun.com/api/emr/deleteclusterscript.html
+func (client *Client) DeleteClusterScript(request *DeleteClusterScriptRequest) (response *DeleteClusterScriptResponse, err error) {
+	response = CreateDeleteClusterScriptResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteClusterScriptWithChan invokes the emr.DeleteClusterScript API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteclusterscript.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteClusterScriptWithChan(request *DeleteClusterScriptRequest) (<-chan *DeleteClusterScriptResponse, <-chan error) {
+	responseChan := make(chan *DeleteClusterScriptResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteClusterScript(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteClusterScriptWithCallback invokes the emr.DeleteClusterScript API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteclusterscript.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteClusterScriptWithCallback(request *DeleteClusterScriptRequest, callback func(response *DeleteClusterScriptResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteClusterScriptResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteClusterScript(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteClusterScriptRequest is the request struct for api DeleteClusterScript
+type DeleteClusterScriptRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Id              string           `position:"Query" name:"Id"`
+}
+
+// DeleteClusterScriptResponse is the response struct for api DeleteClusterScript
+type DeleteClusterScriptResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteClusterScriptRequest creates a request to invoke DeleteClusterScript API
+func CreateDeleteClusterScriptRequest() (request *DeleteClusterScriptRequest) {
+	request = &DeleteClusterScriptRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteClusterScript", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteClusterScriptResponse creates a response to parse from DeleteClusterScript response
+func CreateDeleteClusterScriptResponse() (response *DeleteClusterScriptResponse) {
+	response = &DeleteClusterScriptResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/emr/delete_cluster_template.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"
+)
+
+// DeleteClusterTemplate invokes the emr.DeleteClusterTemplate API synchronously
+// api document: https://help.aliyun.com/api/emr/deleteclustertemplate.html
+func (client *Client) DeleteClusterTemplate(request *DeleteClusterTemplateRequest) (response *DeleteClusterTemplateResponse, err error) {
+	response = CreateDeleteClusterTemplateResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteClusterTemplateWithChan invokes the emr.DeleteClusterTemplate API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteclustertemplate.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteClusterTemplateWithChan(request *DeleteClusterTemplateRequest) (<-chan *DeleteClusterTemplateResponse, <-chan error) {
+	responseChan := make(chan *DeleteClusterTemplateResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteClusterTemplate(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteClusterTemplateWithCallback invokes the emr.DeleteClusterTemplate API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteclustertemplate.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteClusterTemplateWithCallback(request *DeleteClusterTemplateRequest, callback func(response *DeleteClusterTemplateResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteClusterTemplateResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteClusterTemplate(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteClusterTemplateRequest is the request struct for api DeleteClusterTemplate
+type DeleteClusterTemplateRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	BizId           string           `position:"Query" name:"BizId"`
+}
+
+// DeleteClusterTemplateResponse is the response struct for api DeleteClusterTemplate
+type DeleteClusterTemplateResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteClusterTemplateRequest creates a request to invoke DeleteClusterTemplate API
+func CreateDeleteClusterTemplateRequest() (request *DeleteClusterTemplateRequest) {
+	request = &DeleteClusterTemplateRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteClusterTemplate", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteClusterTemplateResponse creates a response to parse from DeleteClusterTemplate response
+func CreateDeleteClusterTemplateResponse() (response *DeleteClusterTemplateResponse) {
+	response = &DeleteClusterTemplateResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/emr/delete_data_source.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"
+)
+
+// DeleteDataSource invokes the emr.DeleteDataSource API synchronously
+// api document: https://help.aliyun.com/api/emr/deletedatasource.html
+func (client *Client) DeleteDataSource(request *DeleteDataSourceRequest) (response *DeleteDataSourceResponse, err error) {
+	response = CreateDeleteDataSourceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteDataSourceWithChan invokes the emr.DeleteDataSource API asynchronously
+// api document: https://help.aliyun.com/api/emr/deletedatasource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteDataSourceWithChan(request *DeleteDataSourceRequest) (<-chan *DeleteDataSourceResponse, <-chan error) {
+	responseChan := make(chan *DeleteDataSourceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteDataSource(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteDataSourceWithCallback invokes the emr.DeleteDataSource API asynchronously
+// api document: https://help.aliyun.com/api/emr/deletedatasource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteDataSourceWithCallback(request *DeleteDataSourceRequest, callback func(response *DeleteDataSourceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteDataSourceResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteDataSource(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteDataSourceRequest is the request struct for api DeleteDataSource
+type DeleteDataSourceRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Id              string           `position:"Query" name:"Id"`
+}
+
+// DeleteDataSourceResponse is the response struct for api DeleteDataSource
+type DeleteDataSourceResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteDataSourceRequest creates a request to invoke DeleteDataSource API
+func CreateDeleteDataSourceRequest() (request *DeleteDataSourceRequest) {
+	request = &DeleteDataSourceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteDataSource", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteDataSourceResponse creates a response to parse from DeleteDataSource response
+func CreateDeleteDataSourceResponse() (response *DeleteDataSourceResponse) {
+	response = &DeleteDataSourceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/emr/delete_etl_job.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"
+)
+
+// DeleteETLJob invokes the emr.DeleteETLJob API synchronously
+// api document: https://help.aliyun.com/api/emr/deleteetljob.html
+func (client *Client) DeleteETLJob(request *DeleteETLJobRequest) (response *DeleteETLJobResponse, err error) {
+	response = CreateDeleteETLJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteETLJobWithChan invokes the emr.DeleteETLJob API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteetljob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteETLJobWithChan(request *DeleteETLJobRequest) (<-chan *DeleteETLJobResponse, <-chan error) {
+	responseChan := make(chan *DeleteETLJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteETLJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteETLJobWithCallback invokes the emr.DeleteETLJob API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteetljob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteETLJobWithCallback(request *DeleteETLJobRequest, callback func(response *DeleteETLJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteETLJobResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteETLJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteETLJobRequest is the request struct for api DeleteETLJob
+type DeleteETLJobRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Id              string           `position:"Query" name:"Id"`
+}
+
+// DeleteETLJobResponse is the response struct for api DeleteETLJob
+type DeleteETLJobResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteETLJobRequest creates a request to invoke DeleteETLJob API
+func CreateDeleteETLJobRequest() (request *DeleteETLJobRequest) {
+	request = &DeleteETLJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteETLJob", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteETLJobResponse creates a response to parse from DeleteETLJob response
+func CreateDeleteETLJobResponse() (response *DeleteETLJobResponse) {
+	response = &DeleteETLJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/emr/delete_execution_plan.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"
+)
+
+// DeleteExecutionPlan invokes the emr.DeleteExecutionPlan API synchronously
+// api document: https://help.aliyun.com/api/emr/deleteexecutionplan.html
+func (client *Client) DeleteExecutionPlan(request *DeleteExecutionPlanRequest) (response *DeleteExecutionPlanResponse, err error) {
+	response = CreateDeleteExecutionPlanResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteExecutionPlanWithChan invokes the emr.DeleteExecutionPlan API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteexecutionplan.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteExecutionPlanWithChan(request *DeleteExecutionPlanRequest) (<-chan *DeleteExecutionPlanResponse, <-chan error) {
+	responseChan := make(chan *DeleteExecutionPlanResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteExecutionPlan(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteExecutionPlanWithCallback invokes the emr.DeleteExecutionPlan API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteexecutionplan.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteExecutionPlanWithCallback(request *DeleteExecutionPlanRequest, callback func(response *DeleteExecutionPlanResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteExecutionPlanResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteExecutionPlan(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteExecutionPlanRequest is the request struct for api DeleteExecutionPlan
+type DeleteExecutionPlanRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Id              string           `position:"Query" name:"Id"`
+}
+
+// DeleteExecutionPlanResponse is the response struct for api DeleteExecutionPlan
+type DeleteExecutionPlanResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteExecutionPlanRequest creates a request to invoke DeleteExecutionPlan API
+func CreateDeleteExecutionPlanRequest() (request *DeleteExecutionPlanRequest) {
+	request = &DeleteExecutionPlanRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteExecutionPlan", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteExecutionPlanResponse creates a response to parse from DeleteExecutionPlan response
+func CreateDeleteExecutionPlanResponse() (response *DeleteExecutionPlanResponse) {
+	response = &DeleteExecutionPlanResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/delete_flow.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"
+)
+
+// DeleteFlow invokes the emr.DeleteFlow API synchronously
+// api document: https://help.aliyun.com/api/emr/deleteflow.html
+func (client *Client) DeleteFlow(request *DeleteFlowRequest) (response *DeleteFlowResponse, err error) {
+	response = CreateDeleteFlowResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteFlowWithChan invokes the emr.DeleteFlow API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteflow.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFlowWithChan(request *DeleteFlowRequest) (<-chan *DeleteFlowResponse, <-chan error) {
+	responseChan := make(chan *DeleteFlowResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteFlow(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteFlowWithCallback invokes the emr.DeleteFlow API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteflow.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFlowWithCallback(request *DeleteFlowRequest, callback func(response *DeleteFlowResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteFlowResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteFlow(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteFlowRequest is the request struct for api DeleteFlow
+type DeleteFlowRequest struct {
+	*requests.RpcRequest
+	Id        string `position:"Query" name:"Id"`
+	ProjectId string `position:"Query" name:"ProjectId"`
+}
+
+// DeleteFlowResponse is the response struct for api DeleteFlow
+type DeleteFlowResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Data      bool   `json:"Data" xml:"Data"`
+}
+
+// CreateDeleteFlowRequest creates a request to invoke DeleteFlow API
+func CreateDeleteFlowRequest() (request *DeleteFlowRequest) {
+	request = &DeleteFlowRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteFlow", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteFlowResponse creates a response to parse from DeleteFlow response
+func CreateDeleteFlowResponse() (response *DeleteFlowResponse) {
+	response = &DeleteFlowResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/delete_flow_category.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"
+)
+
+// DeleteFlowCategory invokes the emr.DeleteFlowCategory API synchronously
+// api document: https://help.aliyun.com/api/emr/deleteflowcategory.html
+func (client *Client) DeleteFlowCategory(request *DeleteFlowCategoryRequest) (response *DeleteFlowCategoryResponse, err error) {
+	response = CreateDeleteFlowCategoryResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteFlowCategoryWithChan invokes the emr.DeleteFlowCategory API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteflowcategory.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFlowCategoryWithChan(request *DeleteFlowCategoryRequest) (<-chan *DeleteFlowCategoryResponse, <-chan error) {
+	responseChan := make(chan *DeleteFlowCategoryResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteFlowCategory(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteFlowCategoryWithCallback invokes the emr.DeleteFlowCategory API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteflowcategory.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFlowCategoryWithCallback(request *DeleteFlowCategoryRequest, callback func(response *DeleteFlowCategoryResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteFlowCategoryResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteFlowCategory(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteFlowCategoryRequest is the request struct for api DeleteFlowCategory
+type DeleteFlowCategoryRequest struct {
+	*requests.RpcRequest
+	Id        string `position:"Query" name:"Id"`
+	ProjectId string `position:"Query" name:"ProjectId"`
+}
+
+// DeleteFlowCategoryResponse is the response struct for api DeleteFlowCategory
+type DeleteFlowCategoryResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Data      bool   `json:"Data" xml:"Data"`
+}
+
+// CreateDeleteFlowCategoryRequest creates a request to invoke DeleteFlowCategory API
+func CreateDeleteFlowCategoryRequest() (request *DeleteFlowCategoryRequest) {
+	request = &DeleteFlowCategoryRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteFlowCategory", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteFlowCategoryResponse creates a response to parse from DeleteFlowCategory response
+func CreateDeleteFlowCategoryResponse() (response *DeleteFlowCategoryResponse) {
+	response = &DeleteFlowCategoryResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/delete_flow_job.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"
+)
+
+// DeleteFlowJob invokes the emr.DeleteFlowJob API synchronously
+// api document: https://help.aliyun.com/api/emr/deleteflowjob.html
+func (client *Client) DeleteFlowJob(request *DeleteFlowJobRequest) (response *DeleteFlowJobResponse, err error) {
+	response = CreateDeleteFlowJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteFlowJobWithChan invokes the emr.DeleteFlowJob API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteflowjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFlowJobWithChan(request *DeleteFlowJobRequest) (<-chan *DeleteFlowJobResponse, <-chan error) {
+	responseChan := make(chan *DeleteFlowJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteFlowJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteFlowJobWithCallback invokes the emr.DeleteFlowJob API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteflowjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFlowJobWithCallback(request *DeleteFlowJobRequest, callback func(response *DeleteFlowJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteFlowJobResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteFlowJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteFlowJobRequest is the request struct for api DeleteFlowJob
+type DeleteFlowJobRequest struct {
+	*requests.RpcRequest
+	Id        string `position:"Query" name:"Id"`
+	ProjectId string `position:"Query" name:"ProjectId"`
+}
+
+// DeleteFlowJobResponse is the response struct for api DeleteFlowJob
+type DeleteFlowJobResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Data      bool   `json:"Data" xml:"Data"`
+}
+
+// CreateDeleteFlowJobRequest creates a request to invoke DeleteFlowJob API
+func CreateDeleteFlowJobRequest() (request *DeleteFlowJobRequest) {
+	request = &DeleteFlowJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteFlowJob", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteFlowJobResponse creates a response to parse from DeleteFlowJob response
+func CreateDeleteFlowJobResponse() (response *DeleteFlowJobResponse) {
+	response = &DeleteFlowJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/emr/delete_flow_project.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"
+)
+
+// DeleteFlowProject invokes the emr.DeleteFlowProject API synchronously
+// api document: https://help.aliyun.com/api/emr/deleteflowproject.html
+func (client *Client) DeleteFlowProject(request *DeleteFlowProjectRequest) (response *DeleteFlowProjectResponse, err error) {
+	response = CreateDeleteFlowProjectResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteFlowProjectWithChan invokes the emr.DeleteFlowProject API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteflowproject.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFlowProjectWithChan(request *DeleteFlowProjectRequest) (<-chan *DeleteFlowProjectResponse, <-chan error) {
+	responseChan := make(chan *DeleteFlowProjectResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteFlowProject(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteFlowProjectWithCallback invokes the emr.DeleteFlowProject API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteflowproject.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFlowProjectWithCallback(request *DeleteFlowProjectRequest, callback func(response *DeleteFlowProjectResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteFlowProjectResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteFlowProject(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteFlowProjectRequest is the request struct for api DeleteFlowProject
+type DeleteFlowProjectRequest struct {
+	*requests.RpcRequest
+	ProjectId string `position:"Query" name:"ProjectId"`
+}
+
+// DeleteFlowProjectResponse is the response struct for api DeleteFlowProject
+type DeleteFlowProjectResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Data      bool   `json:"Data" xml:"Data"`
+}
+
+// CreateDeleteFlowProjectRequest creates a request to invoke DeleteFlowProject API
+func CreateDeleteFlowProjectRequest() (request *DeleteFlowProjectRequest) {
+	request = &DeleteFlowProjectRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteFlowProject", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteFlowProjectResponse creates a response to parse from DeleteFlowProject response
+func CreateDeleteFlowProjectResponse() (response *DeleteFlowProjectResponse) {
+	response = &DeleteFlowProjectResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/emr/delete_flow_project_by_id.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"
+)
+
+// DeleteFlowProjectById invokes the emr.DeleteFlowProjectById API synchronously
+// api document: https://help.aliyun.com/api/emr/deleteflowprojectbyid.html
+func (client *Client) DeleteFlowProjectById(request *DeleteFlowProjectByIdRequest) (response *DeleteFlowProjectByIdResponse, err error) {
+	response = CreateDeleteFlowProjectByIdResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteFlowProjectByIdWithChan invokes the emr.DeleteFlowProjectById API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteflowprojectbyid.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFlowProjectByIdWithChan(request *DeleteFlowProjectByIdRequest) (<-chan *DeleteFlowProjectByIdResponse, <-chan error) {
+	responseChan := make(chan *DeleteFlowProjectByIdResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteFlowProjectById(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteFlowProjectByIdWithCallback invokes the emr.DeleteFlowProjectById API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteflowprojectbyid.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFlowProjectByIdWithCallback(request *DeleteFlowProjectByIdRequest, callback func(response *DeleteFlowProjectByIdResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteFlowProjectByIdResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteFlowProjectById(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteFlowProjectByIdRequest is the request struct for api DeleteFlowProjectById
+type DeleteFlowProjectByIdRequest struct {
+	*requests.RpcRequest
+	ProjectId string `position:"Query" name:"ProjectId"`
+}
+
+// DeleteFlowProjectByIdResponse is the response struct for api DeleteFlowProjectById
+type DeleteFlowProjectByIdResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Data      bool   `json:"Data" xml:"Data"`
+}
+
+// CreateDeleteFlowProjectByIdRequest creates a request to invoke DeleteFlowProjectById API
+func CreateDeleteFlowProjectByIdRequest() (request *DeleteFlowProjectByIdRequest) {
+	request = &DeleteFlowProjectByIdRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteFlowProjectById", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteFlowProjectByIdResponse creates a response to parse from DeleteFlowProjectById response
+func CreateDeleteFlowProjectByIdResponse() (response *DeleteFlowProjectByIdResponse) {
+	response = &DeleteFlowProjectByIdResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/delete_flow_project_cluster_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"
+)
+
+// DeleteFlowProjectClusterSetting invokes the emr.DeleteFlowProjectClusterSetting API synchronously
+// api document: https://help.aliyun.com/api/emr/deleteflowprojectclustersetting.html
+func (client *Client) DeleteFlowProjectClusterSetting(request *DeleteFlowProjectClusterSettingRequest) (response *DeleteFlowProjectClusterSettingResponse, err error) {
+	response = CreateDeleteFlowProjectClusterSettingResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteFlowProjectClusterSettingWithChan invokes the emr.DeleteFlowProjectClusterSetting API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteflowprojectclustersetting.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFlowProjectClusterSettingWithChan(request *DeleteFlowProjectClusterSettingRequest) (<-chan *DeleteFlowProjectClusterSettingResponse, <-chan error) {
+	responseChan := make(chan *DeleteFlowProjectClusterSettingResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteFlowProjectClusterSetting(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteFlowProjectClusterSettingWithCallback invokes the emr.DeleteFlowProjectClusterSetting API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteflowprojectclustersetting.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFlowProjectClusterSettingWithCallback(request *DeleteFlowProjectClusterSettingRequest, callback func(response *DeleteFlowProjectClusterSettingResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteFlowProjectClusterSettingResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteFlowProjectClusterSetting(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteFlowProjectClusterSettingRequest is the request struct for api DeleteFlowProjectClusterSetting
+type DeleteFlowProjectClusterSettingRequest struct {
+	*requests.RpcRequest
+	ClusterId string `position:"Query" name:"ClusterId"`
+	ProjectId string `position:"Query" name:"ProjectId"`
+}
+
+// DeleteFlowProjectClusterSettingResponse is the response struct for api DeleteFlowProjectClusterSetting
+type DeleteFlowProjectClusterSettingResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Data      bool   `json:"Data" xml:"Data"`
+}
+
+// CreateDeleteFlowProjectClusterSettingRequest creates a request to invoke DeleteFlowProjectClusterSetting API
+func CreateDeleteFlowProjectClusterSettingRequest() (request *DeleteFlowProjectClusterSettingRequest) {
+	request = &DeleteFlowProjectClusterSettingRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteFlowProjectClusterSetting", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteFlowProjectClusterSettingResponse creates a response to parse from DeleteFlowProjectClusterSetting response
+func CreateDeleteFlowProjectClusterSettingResponse() (response *DeleteFlowProjectClusterSettingResponse) {
+	response = &DeleteFlowProjectClusterSettingResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/delete_flow_project_user.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"
+)
+
+// DeleteFlowProjectUser invokes the emr.DeleteFlowProjectUser API synchronously
+// api document: https://help.aliyun.com/api/emr/deleteflowprojectuser.html
+func (client *Client) DeleteFlowProjectUser(request *DeleteFlowProjectUserRequest) (response *DeleteFlowProjectUserResponse, err error) {
+	response = CreateDeleteFlowProjectUserResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteFlowProjectUserWithChan invokes the emr.DeleteFlowProjectUser API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteflowprojectuser.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFlowProjectUserWithChan(request *DeleteFlowProjectUserRequest) (<-chan *DeleteFlowProjectUserResponse, <-chan error) {
+	responseChan := make(chan *DeleteFlowProjectUserResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteFlowProjectUser(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteFlowProjectUserWithCallback invokes the emr.DeleteFlowProjectUser API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteflowprojectuser.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFlowProjectUserWithCallback(request *DeleteFlowProjectUserRequest, callback func(response *DeleteFlowProjectUserResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteFlowProjectUserResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteFlowProjectUser(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteFlowProjectUserRequest is the request struct for api DeleteFlowProjectUser
+type DeleteFlowProjectUserRequest struct {
+	*requests.RpcRequest
+	ProjectId string `position:"Query" name:"ProjectId"`
+	UserName  string `position:"Query" name:"UserName"`
+}
+
+// DeleteFlowProjectUserResponse is the response struct for api DeleteFlowProjectUser
+type DeleteFlowProjectUserResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Data      bool   `json:"Data" xml:"Data"`
+}
+
+// CreateDeleteFlowProjectUserRequest creates a request to invoke DeleteFlowProjectUser API
+func CreateDeleteFlowProjectUserRequest() (request *DeleteFlowProjectUserRequest) {
+	request = &DeleteFlowProjectUserRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteFlowProjectUser", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteFlowProjectUserResponse creates a response to parse from DeleteFlowProjectUser response
+func CreateDeleteFlowProjectUserResponse() (response *DeleteFlowProjectUserResponse) {
+	response = &DeleteFlowProjectUserResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/emr/delete_job.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"
+)
+
+// DeleteJob invokes the emr.DeleteJob API synchronously
+// api document: https://help.aliyun.com/api/emr/deletejob.html
+func (client *Client) DeleteJob(request *DeleteJobRequest) (response *DeleteJobResponse, err error) {
+	response = CreateDeleteJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteJobWithChan invokes the emr.DeleteJob API asynchronously
+// api document: https://help.aliyun.com/api/emr/deletejob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteJobWithChan(request *DeleteJobRequest) (<-chan *DeleteJobResponse, <-chan error) {
+	responseChan := make(chan *DeleteJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteJobWithCallback invokes the emr.DeleteJob API asynchronously
+// api document: https://help.aliyun.com/api/emr/deletejob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteJobWithCallback(request *DeleteJobRequest, callback func(response *DeleteJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteJobResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteJobRequest is the request struct for api DeleteJob
+type DeleteJobRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Id              string           `position:"Query" name:"Id"`
+}
+
+// DeleteJobResponse is the response struct for api DeleteJob
+type DeleteJobResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteJobRequest creates a request to invoke DeleteJob API
+func CreateDeleteJobRequest() (request *DeleteJobRequest) {
+	request = &DeleteJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteJob", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteJobResponse creates a response to parse from DeleteJob response
+func CreateDeleteJobResponse() (response *DeleteJobResponse) {
+	response = &DeleteJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/delete_nav_node.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"
+)
+
+// DeleteNavNode invokes the emr.DeleteNavNode API synchronously
+// api document: https://help.aliyun.com/api/emr/deletenavnode.html
+func (client *Client) DeleteNavNode(request *DeleteNavNodeRequest) (response *DeleteNavNodeResponse, err error) {
+	response = CreateDeleteNavNodeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteNavNodeWithChan invokes the emr.DeleteNavNode API asynchronously
+// api document: https://help.aliyun.com/api/emr/deletenavnode.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteNavNodeWithChan(request *DeleteNavNodeRequest) (<-chan *DeleteNavNodeResponse, <-chan error) {
+	responseChan := make(chan *DeleteNavNodeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteNavNode(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteNavNodeWithCallback invokes the emr.DeleteNavNode API asynchronously
+// api document: https://help.aliyun.com/api/emr/deletenavnode.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteNavNodeWithCallback(request *DeleteNavNodeRequest, callback func(response *DeleteNavNodeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteNavNodeResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteNavNode(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteNavNodeRequest is the request struct for api DeleteNavNode
+type DeleteNavNodeRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Id              string           `position:"Query" name:"Id"`
+	ProjectId       string           `position:"Query" name:"ProjectId"`
+}
+
+// DeleteNavNodeResponse is the response struct for api DeleteNavNode
+type DeleteNavNodeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteNavNodeRequest creates a request to invoke DeleteNavNode API
+func CreateDeleteNavNodeRequest() (request *DeleteNavNodeRequest) {
+	request = &DeleteNavNodeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteNavNode", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteNavNodeResponse creates a response to parse from DeleteNavNode response
+func CreateDeleteNavNodeResponse() (response *DeleteNavNodeResponse) {
+	response = &DeleteNavNodeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/emr/delete_note.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"
+)
+
+// DeleteNote invokes the emr.DeleteNote API synchronously
+// api document: https://help.aliyun.com/api/emr/deletenote.html
+func (client *Client) DeleteNote(request *DeleteNoteRequest) (response *DeleteNoteResponse, err error) {
+	response = CreateDeleteNoteResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteNoteWithChan invokes the emr.DeleteNote API asynchronously
+// api document: https://help.aliyun.com/api/emr/deletenote.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteNoteWithChan(request *DeleteNoteRequest) (<-chan *DeleteNoteResponse, <-chan error) {
+	responseChan := make(chan *DeleteNoteResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteNote(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteNoteWithCallback invokes the emr.DeleteNote API asynchronously
+// api document: https://help.aliyun.com/api/emr/deletenote.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteNoteWithCallback(request *DeleteNoteRequest, callback func(response *DeleteNoteResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteNoteResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteNote(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteNoteRequest is the request struct for api DeleteNote
+type DeleteNoteRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Id              string           `position:"Query" name:"Id"`
+}
+
+// DeleteNoteResponse is the response struct for api DeleteNote
+type DeleteNoteResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteNoteRequest creates a request to invoke DeleteNote API
+func CreateDeleteNoteRequest() (request *DeleteNoteRequest) {
+	request = &DeleteNoteRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteNote", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteNoteResponse creates a response to parse from DeleteNote response
+func CreateDeleteNoteResponse() (response *DeleteNoteResponse) {
+	response = &DeleteNoteResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/delete_paragraph.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"
+)
+
+// DeleteParagraph invokes the emr.DeleteParagraph API synchronously
+// api document: https://help.aliyun.com/api/emr/deleteparagraph.html
+func (client *Client) DeleteParagraph(request *DeleteParagraphRequest) (response *DeleteParagraphResponse, err error) {
+	response = CreateDeleteParagraphResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteParagraphWithChan invokes the emr.DeleteParagraph API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteparagraph.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteParagraphWithChan(request *DeleteParagraphRequest) (<-chan *DeleteParagraphResponse, <-chan error) {
+	responseChan := make(chan *DeleteParagraphResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteParagraph(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteParagraphWithCallback invokes the emr.DeleteParagraph API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteparagraph.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteParagraphWithCallback(request *DeleteParagraphRequest, callback func(response *DeleteParagraphResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteParagraphResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteParagraph(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteParagraphRequest is the request struct for api DeleteParagraph
+type DeleteParagraphRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	NoteId          string           `position:"Query" name:"NoteId"`
+	Id              string           `position:"Query" name:"Id"`
+}
+
+// DeleteParagraphResponse is the response struct for api DeleteParagraph
+type DeleteParagraphResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteParagraphRequest creates a request to invoke DeleteParagraph API
+func CreateDeleteParagraphRequest() (request *DeleteParagraphRequest) {
+	request = &DeleteParagraphRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteParagraph", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteParagraphResponse creates a response to parse from DeleteParagraph response
+func CreateDeleteParagraphResponse() (response *DeleteParagraphResponse) {
+	response = &DeleteParagraphResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/delete_resource_pool.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"
+)
+
+// DeleteResourcePool invokes the emr.DeleteResourcePool API synchronously
+// api document: https://help.aliyun.com/api/emr/deleteresourcepool.html
+func (client *Client) DeleteResourcePool(request *DeleteResourcePoolRequest) (response *DeleteResourcePoolResponse, err error) {
+	response = CreateDeleteResourcePoolResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteResourcePoolWithChan invokes the emr.DeleteResourcePool API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteresourcepool.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteResourcePoolWithChan(request *DeleteResourcePoolRequest) (<-chan *DeleteResourcePoolResponse, <-chan error) {
+	responseChan := make(chan *DeleteResourcePoolResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteResourcePool(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteResourcePoolWithCallback invokes the emr.DeleteResourcePool API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteresourcepool.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteResourcePoolWithCallback(request *DeleteResourcePoolRequest, callback func(response *DeleteResourcePoolResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteResourcePoolResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteResourcePool(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteResourcePoolRequest is the request struct for api DeleteResourcePool
+type DeleteResourcePoolRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourcePoolId  string           `position:"Query" name:"ResourcePoolId"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+}
+
+// DeleteResourcePoolResponse is the response struct for api DeleteResourcePool
+type DeleteResourcePoolResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteResourcePoolRequest creates a request to invoke DeleteResourcePool API
+func CreateDeleteResourcePoolRequest() (request *DeleteResourcePoolRequest) {
+	request = &DeleteResourcePoolRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteResourcePool", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteResourcePoolResponse creates a response to parse from DeleteResourcePool response
+func CreateDeleteResourcePoolResponse() (response *DeleteResourcePoolResponse) {
+	response = &DeleteResourcePoolResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/delete_resource_queue.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"
+)
+
+// DeleteResourceQueue invokes the emr.DeleteResourceQueue API synchronously
+// api document: https://help.aliyun.com/api/emr/deleteresourcequeue.html
+func (client *Client) DeleteResourceQueue(request *DeleteResourceQueueRequest) (response *DeleteResourceQueueResponse, err error) {
+	response = CreateDeleteResourceQueueResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteResourceQueueWithChan invokes the emr.DeleteResourceQueue API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteresourcequeue.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteResourceQueueWithChan(request *DeleteResourceQueueRequest) (<-chan *DeleteResourceQueueResponse, <-chan error) {
+	responseChan := make(chan *DeleteResourceQueueResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteResourceQueue(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteResourceQueueWithCallback invokes the emr.DeleteResourceQueue API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteresourcequeue.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteResourceQueueWithCallback(request *DeleteResourceQueueRequest, callback func(response *DeleteResourceQueueResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteResourceQueueResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteResourceQueue(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteResourceQueueRequest is the request struct for api DeleteResourceQueue
+type DeleteResourceQueueRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceQueueId string           `position:"Query" name:"ResourceQueueId"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+}
+
+// DeleteResourceQueueResponse is the response struct for api DeleteResourceQueue
+type DeleteResourceQueueResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteResourceQueueRequest creates a request to invoke DeleteResourceQueue API
+func CreateDeleteResourceQueueRequest() (request *DeleteResourceQueueRequest) {
+	request = &DeleteResourceQueueRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteResourceQueue", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteResourceQueueResponse creates a response to parse from DeleteResourceQueue response
+func CreateDeleteResourceQueueResponse() (response *DeleteResourceQueueResponse) {
+	response = &DeleteResourceQueueResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/emr/delete_scaling_rule.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"
+)
+
+// DeleteScalingRule invokes the emr.DeleteScalingRule API synchronously
+// api document: https://help.aliyun.com/api/emr/deletescalingrule.html
+func (client *Client) DeleteScalingRule(request *DeleteScalingRuleRequest) (response *DeleteScalingRuleResponse, err error) {
+	response = CreateDeleteScalingRuleResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteScalingRuleWithChan invokes the emr.DeleteScalingRule API asynchronously
+// api document: https://help.aliyun.com/api/emr/deletescalingrule.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteScalingRuleWithChan(request *DeleteScalingRuleRequest) (<-chan *DeleteScalingRuleResponse, <-chan error) {
+	responseChan := make(chan *DeleteScalingRuleResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteScalingRule(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteScalingRuleWithCallback invokes the emr.DeleteScalingRule API asynchronously
+// api document: https://help.aliyun.com/api/emr/deletescalingrule.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteScalingRuleWithCallback(request *DeleteScalingRuleRequest, callback func(response *DeleteScalingRuleResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteScalingRuleResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteScalingRule(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteScalingRuleRequest is the request struct for api DeleteScalingRule
+type DeleteScalingRuleRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	HostGroupId     string           `position:"Query" name:"HostGroupId"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+	ScalingRuleId   string           `position:"Query" name:"ScalingRuleId"`
+}
+
+// DeleteScalingRuleResponse is the response struct for api DeleteScalingRule
+type DeleteScalingRuleResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Data      bool   `json:"Data" xml:"Data"`
+}
+
+// CreateDeleteScalingRuleRequest creates a request to invoke DeleteScalingRule API
+func CreateDeleteScalingRuleRequest() (request *DeleteScalingRuleRequest) {
+	request = &DeleteScalingRuleRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteScalingRule", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteScalingRuleResponse creates a response to parse from DeleteScalingRule response
+func CreateDeleteScalingRuleResponse() (response *DeleteScalingRuleResponse) {
+	response = &DeleteScalingRuleResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/emr/delete_scaling_task_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"
+)
+
+// DeleteScalingTaskGroup invokes the emr.DeleteScalingTaskGroup API synchronously
+// api document: https://help.aliyun.com/api/emr/deletescalingtaskgroup.html
+func (client *Client) DeleteScalingTaskGroup(request *DeleteScalingTaskGroupRequest) (response *DeleteScalingTaskGroupResponse, err error) {
+	response = CreateDeleteScalingTaskGroupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteScalingTaskGroupWithChan invokes the emr.DeleteScalingTaskGroup API asynchronously
+// api document: https://help.aliyun.com/api/emr/deletescalingtaskgroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteScalingTaskGroupWithChan(request *DeleteScalingTaskGroupRequest) (<-chan *DeleteScalingTaskGroupResponse, <-chan error) {
+	responseChan := make(chan *DeleteScalingTaskGroupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteScalingTaskGroup(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteScalingTaskGroupWithCallback invokes the emr.DeleteScalingTaskGroup API asynchronously
+// api document: https://help.aliyun.com/api/emr/deletescalingtaskgroup.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteScalingTaskGroupWithCallback(request *DeleteScalingTaskGroupRequest, callback func(response *DeleteScalingTaskGroupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteScalingTaskGroupResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteScalingTaskGroup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteScalingTaskGroupRequest is the request struct for api DeleteScalingTaskGroup
+type DeleteScalingTaskGroupRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	HostGroupId     string           `position:"Query" name:"HostGroupId"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+}
+
+// DeleteScalingTaskGroupResponse is the response struct for api DeleteScalingTaskGroup
+type DeleteScalingTaskGroupResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Data      bool   `json:"Data" xml:"Data"`
+}
+
+// CreateDeleteScalingTaskGroupRequest creates a request to invoke DeleteScalingTaskGroup API
+func CreateDeleteScalingTaskGroupRequest() (request *DeleteScalingTaskGroupRequest) {
+	request = &DeleteScalingTaskGroupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteScalingTaskGroup", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteScalingTaskGroupResponse creates a response to parse from DeleteScalingTaskGroup response
+func CreateDeleteScalingTaskGroupResponse() (response *DeleteScalingTaskGroupResponse) {
+	response = &DeleteScalingTaskGroupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/emr/delete_user.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"
+)
+
+// DeleteUser invokes the emr.DeleteUser API synchronously
+// api document: https://help.aliyun.com/api/emr/deleteuser.html
+func (client *Client) DeleteUser(request *DeleteUserRequest) (response *DeleteUserResponse, err error) {
+	response = CreateDeleteUserResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteUserWithChan invokes the emr.DeleteUser API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteuser.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteUserWithChan(request *DeleteUserRequest) (<-chan *DeleteUserResponse, <-chan error) {
+	responseChan := make(chan *DeleteUserResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteUser(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteUserWithCallback invokes the emr.DeleteUser API asynchronously
+// api document: https://help.aliyun.com/api/emr/deleteuser.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteUserWithCallback(request *DeleteUserRequest, callback func(response *DeleteUserResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteUserResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteUser(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteUserRequest is the request struct for api DeleteUser
+type DeleteUserRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+	Type            string           `position:"Query" name:"Type"`
+	UserId          string           `position:"Query" name:"UserId"`
+}
+
+// DeleteUserResponse is the response struct for api DeleteUser
+type DeleteUserResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteUserRequest creates a request to invoke DeleteUser API
+func CreateDeleteUserRequest() (request *DeleteUserRequest) {
+	request = &DeleteUserRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DeleteUser", "emr", "openAPI")
+	return
+}
+
+// CreateDeleteUserResponse creates a response to parse from DeleteUser response
+func CreateDeleteUserResponse() (response *DeleteUserResponse) {
+	response = &DeleteUserResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/describe_available_instance_type.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"
+)
+
+// DescribeAvailableInstanceType invokes the emr.DescribeAvailableInstanceType API synchronously
+// api document: https://help.aliyun.com/api/emr/describeavailableinstancetype.html
+func (client *Client) DescribeAvailableInstanceType(request *DescribeAvailableInstanceTypeRequest) (response *DescribeAvailableInstanceTypeResponse, err error) {
+	response = CreateDescribeAvailableInstanceTypeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeAvailableInstanceTypeWithChan invokes the emr.DescribeAvailableInstanceType API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeavailableinstancetype.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeAvailableInstanceTypeWithChan(request *DescribeAvailableInstanceTypeRequest) (<-chan *DescribeAvailableInstanceTypeResponse, <-chan error) {
+	responseChan := make(chan *DescribeAvailableInstanceTypeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeAvailableInstanceType(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeAvailableInstanceTypeWithCallback invokes the emr.DescribeAvailableInstanceType API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeavailableinstancetype.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeAvailableInstanceTypeWithCallback(request *DescribeAvailableInstanceTypeRequest, callback func(response *DescribeAvailableInstanceTypeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeAvailableInstanceTypeResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeAvailableInstanceType(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeAvailableInstanceTypeRequest is the request struct for api DescribeAvailableInstanceType
+type DescribeAvailableInstanceTypeRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+}
+
+// DescribeAvailableInstanceTypeResponse is the response struct for api DescribeAvailableInstanceType
+type DescribeAvailableInstanceTypeResponse struct {
+	*responses.BaseResponse
+	RequestId                    string                       `json:"RequestId" xml:"RequestId"`
+	EmrSupportedInstanceTypeList EmrSupportedInstanceTypeList `json:"EmrSupportedInstanceTypeList" xml:"EmrSupportedInstanceTypeList"`
+}
+
+// CreateDescribeAvailableInstanceTypeRequest creates a request to invoke DescribeAvailableInstanceType API
+func CreateDescribeAvailableInstanceTypeRequest() (request *DescribeAvailableInstanceTypeRequest) {
+	request = &DescribeAvailableInstanceTypeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeAvailableInstanceType", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeAvailableInstanceTypeResponse creates a response to parse from DescribeAvailableInstanceType response
+func CreateDescribeAvailableInstanceTypeResponse() (response *DescribeAvailableInstanceTypeResponse) {
+	response = &DescribeAvailableInstanceTypeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/describe_cluster_basic_info.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"
+)
+
+// DescribeClusterBasicInfo invokes the emr.DescribeClusterBasicInfo API synchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterbasicinfo.html
+func (client *Client) DescribeClusterBasicInfo(request *DescribeClusterBasicInfoRequest) (response *DescribeClusterBasicInfoResponse, err error) {
+	response = CreateDescribeClusterBasicInfoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeClusterBasicInfoWithChan invokes the emr.DescribeClusterBasicInfo API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterbasicinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterBasicInfoWithChan(request *DescribeClusterBasicInfoRequest) (<-chan *DescribeClusterBasicInfoResponse, <-chan error) {
+	responseChan := make(chan *DescribeClusterBasicInfoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeClusterBasicInfo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeClusterBasicInfoWithCallback invokes the emr.DescribeClusterBasicInfo API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterbasicinfo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterBasicInfoWithCallback(request *DescribeClusterBasicInfoRequest, callback func(response *DescribeClusterBasicInfoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeClusterBasicInfoResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeClusterBasicInfo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeClusterBasicInfoRequest is the request struct for api DescribeClusterBasicInfo
+type DescribeClusterBasicInfoRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+}
+
+// DescribeClusterBasicInfoResponse is the response struct for api DescribeClusterBasicInfo
+type DescribeClusterBasicInfoResponse struct {
+	*responses.BaseResponse
+	RequestId   string      `json:"RequestId" xml:"RequestId"`
+	ClusterInfo ClusterInfo `json:"ClusterInfo" xml:"ClusterInfo"`
+}
+
+// CreateDescribeClusterBasicInfoRequest creates a request to invoke DescribeClusterBasicInfo API
+func CreateDescribeClusterBasicInfoRequest() (request *DescribeClusterBasicInfoRequest) {
+	request = &DescribeClusterBasicInfoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeClusterBasicInfo", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeClusterBasicInfoResponse creates a response to parse from DescribeClusterBasicInfo response
+func CreateDescribeClusterBasicInfoResponse() (response *DescribeClusterBasicInfoResponse) {
+	response = &DescribeClusterBasicInfoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/emr/describe_cluster_op_log.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"
+)
+
+// DescribeClusterOpLog invokes the emr.DescribeClusterOpLog API synchronously
+// api document: https://help.aliyun.com/api/emr/describeclusteroplog.html
+func (client *Client) DescribeClusterOpLog(request *DescribeClusterOpLogRequest) (response *DescribeClusterOpLogResponse, err error) {
+	response = CreateDescribeClusterOpLogResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeClusterOpLogWithChan invokes the emr.DescribeClusterOpLog API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusteroplog.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterOpLogWithChan(request *DescribeClusterOpLogRequest) (<-chan *DescribeClusterOpLogResponse, <-chan error) {
+	responseChan := make(chan *DescribeClusterOpLogResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeClusterOpLog(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeClusterOpLogWithCallback invokes the emr.DescribeClusterOpLog API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusteroplog.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterOpLogWithCallback(request *DescribeClusterOpLogRequest, callback func(response *DescribeClusterOpLogResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeClusterOpLogResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeClusterOpLog(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeClusterOpLogRequest is the request struct for api DescribeClusterOpLog
+type DescribeClusterOpLogRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	EndTime         requests.Integer `position:"Query" name:"EndTime"`
+	Id              string           `position:"Query" name:"Id"`
+	StartTime       requests.Integer `position:"Query" name:"StartTime"`
+}
+
+// DescribeClusterOpLogResponse is the response struct for api DescribeClusterOpLog
+type DescribeClusterOpLogResponse struct {
+	*responses.BaseResponse
+	RequestId     string        `json:"RequestId" xml:"RequestId"`
+	PageNumber    string        `json:"PageNumber" xml:"PageNumber"`
+	PageSize      string        `json:"PageSize" xml:"PageSize"`
+	Total         string        `json:"Total" xml:"Total"`
+	ChangeLogList ChangeLogList `json:"ChangeLogList" xml:"ChangeLogList"`
+}
+
+// CreateDescribeClusterOpLogRequest creates a request to invoke DescribeClusterOpLog API
+func CreateDescribeClusterOpLogRequest() (request *DescribeClusterOpLogRequest) {
+	request = &DescribeClusterOpLogRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeClusterOpLog", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeClusterOpLogResponse creates a response to parse from DescribeClusterOpLog response
+func CreateDescribeClusterOpLogResponse() (response *DescribeClusterOpLogResponse) {
+	response = &DescribeClusterOpLogResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/emr/describe_cluster_operation_host_task_log.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"
+)
+
+// DescribeClusterOperationHostTaskLog invokes the emr.DescribeClusterOperationHostTaskLog API synchronously
+// api document: https://help.aliyun.com/api/emr/describeclusteroperationhosttasklog.html
+func (client *Client) DescribeClusterOperationHostTaskLog(request *DescribeClusterOperationHostTaskLogRequest) (response *DescribeClusterOperationHostTaskLogResponse, err error) {
+	response = CreateDescribeClusterOperationHostTaskLogResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeClusterOperationHostTaskLogWithChan invokes the emr.DescribeClusterOperationHostTaskLog API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusteroperationhosttasklog.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterOperationHostTaskLogWithChan(request *DescribeClusterOperationHostTaskLogRequest) (<-chan *DescribeClusterOperationHostTaskLogResponse, <-chan error) {
+	responseChan := make(chan *DescribeClusterOperationHostTaskLogResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeClusterOperationHostTaskLog(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeClusterOperationHostTaskLogWithCallback invokes the emr.DescribeClusterOperationHostTaskLog API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusteroperationhosttasklog.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterOperationHostTaskLogWithCallback(request *DescribeClusterOperationHostTaskLogRequest, callback func(response *DescribeClusterOperationHostTaskLogResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeClusterOperationHostTaskLogResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeClusterOperationHostTaskLog(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeClusterOperationHostTaskLogRequest is the request struct for api DescribeClusterOperationHostTaskLog
+type DescribeClusterOperationHostTaskLogRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	OperationId     string           `position:"Query" name:"OperationId"`
+	HostId          string           `position:"Query" name:"HostId"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+	TaskId          string           `position:"Query" name:"TaskId"`
+	Status          string           `position:"Query" name:"Status"`
+}
+
+// DescribeClusterOperationHostTaskLogResponse is the response struct for api DescribeClusterOperationHostTaskLog
+type DescribeClusterOperationHostTaskLogResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Stdout    string `json:"Stdout" xml:"Stdout"`
+	Stderr    string `json:"Stderr" xml:"Stderr"`
+}
+
+// CreateDescribeClusterOperationHostTaskLogRequest creates a request to invoke DescribeClusterOperationHostTaskLog API
+func CreateDescribeClusterOperationHostTaskLogRequest() (request *DescribeClusterOperationHostTaskLogRequest) {
+	request = &DescribeClusterOperationHostTaskLogRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeClusterOperationHostTaskLog", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeClusterOperationHostTaskLogResponse creates a response to parse from DescribeClusterOperationHostTaskLog response
+func CreateDescribeClusterOperationHostTaskLogResponse() (response *DescribeClusterOperationHostTaskLogResponse) {
+	response = &DescribeClusterOperationHostTaskLogResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/emr/describe_cluster_resource_pool_scheduler_type.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"
+)
+
+// DescribeClusterResourcePoolSchedulerType invokes the emr.DescribeClusterResourcePoolSchedulerType API synchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterresourcepoolschedulertype.html
+func (client *Client) DescribeClusterResourcePoolSchedulerType(request *DescribeClusterResourcePoolSchedulerTypeRequest) (response *DescribeClusterResourcePoolSchedulerTypeResponse, err error) {
+	response = CreateDescribeClusterResourcePoolSchedulerTypeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeClusterResourcePoolSchedulerTypeWithChan invokes the emr.DescribeClusterResourcePoolSchedulerType API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterresourcepoolschedulertype.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterResourcePoolSchedulerTypeWithChan(request *DescribeClusterResourcePoolSchedulerTypeRequest) (<-chan *DescribeClusterResourcePoolSchedulerTypeResponse, <-chan error) {
+	responseChan := make(chan *DescribeClusterResourcePoolSchedulerTypeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeClusterResourcePoolSchedulerType(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeClusterResourcePoolSchedulerTypeWithCallback invokes the emr.DescribeClusterResourcePoolSchedulerType API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterresourcepoolschedulertype.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterResourcePoolSchedulerTypeWithCallback(request *DescribeClusterResourcePoolSchedulerTypeRequest, callback func(response *DescribeClusterResourcePoolSchedulerTypeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeClusterResourcePoolSchedulerTypeResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeClusterResourcePoolSchedulerType(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeClusterResourcePoolSchedulerTypeRequest is the request struct for api DescribeClusterResourcePoolSchedulerType
+type DescribeClusterResourcePoolSchedulerTypeRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+}
+
+// DescribeClusterResourcePoolSchedulerTypeResponse is the response struct for api DescribeClusterResourcePoolSchedulerType
+type DescribeClusterResourcePoolSchedulerTypeResponse 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"`
+}
+
+// CreateDescribeClusterResourcePoolSchedulerTypeRequest creates a request to invoke DescribeClusterResourcePoolSchedulerType API
+func CreateDescribeClusterResourcePoolSchedulerTypeRequest() (request *DescribeClusterResourcePoolSchedulerTypeRequest) {
+	request = &DescribeClusterResourcePoolSchedulerTypeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeClusterResourcePoolSchedulerType", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeClusterResourcePoolSchedulerTypeResponse creates a response to parse from DescribeClusterResourcePoolSchedulerType response
+func CreateDescribeClusterResourcePoolSchedulerTypeResponse() (response *DescribeClusterResourcePoolSchedulerTypeResponse) {
+	response = &DescribeClusterResourcePoolSchedulerTypeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/describe_cluster_script.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"
+)
+
+// DescribeClusterScript invokes the emr.DescribeClusterScript API synchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterscript.html
+func (client *Client) DescribeClusterScript(request *DescribeClusterScriptRequest) (response *DescribeClusterScriptResponse, err error) {
+	response = CreateDescribeClusterScriptResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeClusterScriptWithChan invokes the emr.DescribeClusterScript API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterscript.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterScriptWithChan(request *DescribeClusterScriptRequest) (<-chan *DescribeClusterScriptResponse, <-chan error) {
+	responseChan := make(chan *DescribeClusterScriptResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeClusterScript(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeClusterScriptWithCallback invokes the emr.DescribeClusterScript API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterscript.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterScriptWithCallback(request *DescribeClusterScriptRequest, callback func(response *DescribeClusterScriptResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeClusterScriptResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeClusterScript(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeClusterScriptRequest is the request struct for api DescribeClusterScript
+type DescribeClusterScriptRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Id              string           `position:"Query" name:"Id"`
+}
+
+// DescribeClusterScriptResponse is the response struct for api DescribeClusterScript
+type DescribeClusterScriptResponse struct {
+	*responses.BaseResponse
+	RequestId           string              `json:"RequestId" xml:"RequestId"`
+	ScriptNodeInstances ScriptNodeInstances `json:"ScriptNodeInstances" xml:"ScriptNodeInstances"`
+}
+
+// CreateDescribeClusterScriptRequest creates a request to invoke DescribeClusterScript API
+func CreateDescribeClusterScriptRequest() (request *DescribeClusterScriptRequest) {
+	request = &DescribeClusterScriptRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeClusterScript", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeClusterScriptResponse creates a response to parse from DescribeClusterScript response
+func CreateDescribeClusterScriptResponse() (response *DescribeClusterScriptResponse) {
+	response = &DescribeClusterScriptResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/emr/describe_cluster_service.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"
+)
+
+// DescribeClusterService invokes the emr.DescribeClusterService API synchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterservice.html
+func (client *Client) DescribeClusterService(request *DescribeClusterServiceRequest) (response *DescribeClusterServiceResponse, err error) {
+	response = CreateDescribeClusterServiceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeClusterServiceWithChan invokes the emr.DescribeClusterService API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterservice.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterServiceWithChan(request *DescribeClusterServiceRequest) (<-chan *DescribeClusterServiceResponse, <-chan error) {
+	responseChan := make(chan *DescribeClusterServiceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeClusterService(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeClusterServiceWithCallback invokes the emr.DescribeClusterService API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterservice.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterServiceWithCallback(request *DescribeClusterServiceRequest, callback func(response *DescribeClusterServiceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeClusterServiceResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeClusterService(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeClusterServiceRequest is the request struct for api DescribeClusterService
+type DescribeClusterServiceRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ServiceName     string           `position:"Query" name:"ServiceName"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+}
+
+// DescribeClusterServiceResponse is the response struct for api DescribeClusterService
+type DescribeClusterServiceResponse struct {
+	*responses.BaseResponse
+	RequestId   string      `json:"RequestId" xml:"RequestId"`
+	ServiceInfo ServiceInfo `json:"ServiceInfo" xml:"ServiceInfo"`
+}
+
+// CreateDescribeClusterServiceRequest creates a request to invoke DescribeClusterService API
+func CreateDescribeClusterServiceRequest() (request *DescribeClusterServiceRequest) {
+	request = &DescribeClusterServiceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeClusterService", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeClusterServiceResponse creates a response to parse from DescribeClusterService response
+func CreateDescribeClusterServiceResponse() (response *DescribeClusterServiceResponse) {
+	response = &DescribeClusterServiceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/emr/describe_cluster_service_config.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"
+)
+
+// DescribeClusterServiceConfig invokes the emr.DescribeClusterServiceConfig API synchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterserviceconfig.html
+func (client *Client) DescribeClusterServiceConfig(request *DescribeClusterServiceConfigRequest) (response *DescribeClusterServiceConfigResponse, err error) {
+	response = CreateDescribeClusterServiceConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeClusterServiceConfigWithChan invokes the emr.DescribeClusterServiceConfig API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterserviceconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterServiceConfigWithChan(request *DescribeClusterServiceConfigRequest) (<-chan *DescribeClusterServiceConfigResponse, <-chan error) {
+	responseChan := make(chan *DescribeClusterServiceConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeClusterServiceConfig(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeClusterServiceConfigWithCallback invokes the emr.DescribeClusterServiceConfig API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterserviceconfig.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterServiceConfigWithCallback(request *DescribeClusterServiceConfigRequest, callback func(response *DescribeClusterServiceConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeClusterServiceConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeClusterServiceConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeClusterServiceConfigRequest is the request struct for api DescribeClusterServiceConfig
+type DescribeClusterServiceConfigRequest 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"`
+	ConfigVersion   string           `position:"Query" name:"ConfigVersion"`
+}
+
+// DescribeClusterServiceConfigResponse is the response struct for api DescribeClusterServiceConfig
+type DescribeClusterServiceConfigResponse struct {
+	*responses.BaseResponse
+	RequestId string                               `json:"RequestId" xml:"RequestId"`
+	Config    ConfigInDescribeClusterServiceConfig `json:"Config" xml:"Config"`
+}
+
+// CreateDescribeClusterServiceConfigRequest creates a request to invoke DescribeClusterServiceConfig API
+func CreateDescribeClusterServiceConfigRequest() (request *DescribeClusterServiceConfigRequest) {
+	request = &DescribeClusterServiceConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeClusterServiceConfig", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeClusterServiceConfigResponse creates a response to parse from DescribeClusterServiceConfig response
+func CreateDescribeClusterServiceConfigResponse() (response *DescribeClusterServiceConfigResponse) {
+	response = &DescribeClusterServiceConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/emr/describe_cluster_service_config_history.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"
+)
+
+// DescribeClusterServiceConfigHistory invokes the emr.DescribeClusterServiceConfigHistory API synchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterserviceconfighistory.html
+func (client *Client) DescribeClusterServiceConfigHistory(request *DescribeClusterServiceConfigHistoryRequest) (response *DescribeClusterServiceConfigHistoryResponse, err error) {
+	response = CreateDescribeClusterServiceConfigHistoryResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeClusterServiceConfigHistoryWithChan invokes the emr.DescribeClusterServiceConfigHistory API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterserviceconfighistory.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterServiceConfigHistoryWithChan(request *DescribeClusterServiceConfigHistoryRequest) (<-chan *DescribeClusterServiceConfigHistoryResponse, <-chan error) {
+	responseChan := make(chan *DescribeClusterServiceConfigHistoryResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeClusterServiceConfigHistory(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeClusterServiceConfigHistoryWithCallback invokes the emr.DescribeClusterServiceConfigHistory API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterserviceconfighistory.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterServiceConfigHistoryWithCallback(request *DescribeClusterServiceConfigHistoryRequest, callback func(response *DescribeClusterServiceConfigHistoryResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeClusterServiceConfigHistoryResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeClusterServiceConfigHistory(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeClusterServiceConfigHistoryRequest is the request struct for api DescribeClusterServiceConfigHistory
+type DescribeClusterServiceConfigHistoryRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ServiceName     string           `position:"Query" name:"ServiceName"`
+	ClusterId       string           `position:"Query" name:"ClusterId"`
+	ConfigVersion   string           `position:"Query" name:"ConfigVersion"`
+}
+
+// DescribeClusterServiceConfigHistoryResponse is the response struct for api DescribeClusterServiceConfigHistory
+type DescribeClusterServiceConfigHistoryResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Config    Config `json:"Config" xml:"Config"`
+}
+
+// CreateDescribeClusterServiceConfigHistoryRequest creates a request to invoke DescribeClusterServiceConfigHistory API
+func CreateDescribeClusterServiceConfigHistoryRequest() (request *DescribeClusterServiceConfigHistoryRequest) {
+	request = &DescribeClusterServiceConfigHistoryRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeClusterServiceConfigHistory", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeClusterServiceConfigHistoryResponse creates a response to parse from DescribeClusterServiceConfigHistory response
+func CreateDescribeClusterServiceConfigHistoryResponse() (response *DescribeClusterServiceConfigHistoryResponse) {
+	response = &DescribeClusterServiceConfigHistoryResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/emr/describe_cluster_service_config_tag.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"
+)
+
+// DescribeClusterServiceConfigTag invokes the emr.DescribeClusterServiceConfigTag API synchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterserviceconfigtag.html
+func (client *Client) DescribeClusterServiceConfigTag(request *DescribeClusterServiceConfigTagRequest) (response *DescribeClusterServiceConfigTagResponse, err error) {
+	response = CreateDescribeClusterServiceConfigTagResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeClusterServiceConfigTagWithChan invokes the emr.DescribeClusterServiceConfigTag API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterserviceconfigtag.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterServiceConfigTagWithChan(request *DescribeClusterServiceConfigTagRequest) (<-chan *DescribeClusterServiceConfigTagResponse, <-chan error) {
+	responseChan := make(chan *DescribeClusterServiceConfigTagResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeClusterServiceConfigTag(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeClusterServiceConfigTagWithCallback invokes the emr.DescribeClusterServiceConfigTag API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterserviceconfigtag.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterServiceConfigTagWithCallback(request *DescribeClusterServiceConfigTagRequest, callback func(response *DescribeClusterServiceConfigTagResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeClusterServiceConfigTagResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeClusterServiceConfigTag(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeClusterServiceConfigTagRequest is the request struct for api DescribeClusterServiceConfigTag
+type DescribeClusterServiceConfigTagRequest 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"`
+}
+
+// DescribeClusterServiceConfigTagResponse is the response struct for api DescribeClusterServiceConfigTag
+type DescribeClusterServiceConfigTagResponse struct {
+	*responses.BaseResponse
+	RequestId     string        `json:"RequestId" xml:"RequestId"`
+	ConfigTagList ConfigTagList `json:"ConfigTagList" xml:"ConfigTagList"`
+}
+
+// CreateDescribeClusterServiceConfigTagRequest creates a request to invoke DescribeClusterServiceConfigTag API
+func CreateDescribeClusterServiceConfigTagRequest() (request *DescribeClusterServiceConfigTagRequest) {
+	request = &DescribeClusterServiceConfigTagRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeClusterServiceConfigTag", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeClusterServiceConfigTagResponse creates a response to parse from DescribeClusterServiceConfigTag response
+func CreateDescribeClusterServiceConfigTagResponse() (response *DescribeClusterServiceConfigTagResponse) {
+	response = &DescribeClusterServiceConfigTagResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/emr/describe_cluster_statistics.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"
+)
+
+// DescribeClusterStatistics invokes the emr.DescribeClusterStatistics API synchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterstatistics.html
+func (client *Client) DescribeClusterStatistics(request *DescribeClusterStatisticsRequest) (response *DescribeClusterStatisticsResponse, err error) {
+	response = CreateDescribeClusterStatisticsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeClusterStatisticsWithChan invokes the emr.DescribeClusterStatistics API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterstatistics.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterStatisticsWithChan(request *DescribeClusterStatisticsRequest) (<-chan *DescribeClusterStatisticsResponse, <-chan error) {
+	responseChan := make(chan *DescribeClusterStatisticsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeClusterStatistics(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeClusterStatisticsWithCallback invokes the emr.DescribeClusterStatistics API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterstatistics.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterStatisticsWithCallback(request *DescribeClusterStatisticsRequest, callback func(response *DescribeClusterStatisticsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeClusterStatisticsResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeClusterStatistics(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeClusterStatisticsRequest is the request struct for api DescribeClusterStatistics
+type DescribeClusterStatisticsRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Strategy        string           `position:"Query" name:"Strategy"`
+}
+
+// DescribeClusterStatisticsResponse is the response struct for api DescribeClusterStatistics
+type DescribeClusterStatisticsResponse struct {
+	*responses.BaseResponse
+	RequestId             string                `json:"RequestId" xml:"RequestId"`
+	TotalCount            int                   `json:"TotalCount" xml:"TotalCount"`
+	ClusterStatisticsList ClusterStatisticsList `json:"ClusterStatisticsList" xml:"ClusterStatisticsList"`
+}
+
+// CreateDescribeClusterStatisticsRequest creates a request to invoke DescribeClusterStatistics API
+func CreateDescribeClusterStatisticsRequest() (request *DescribeClusterStatisticsRequest) {
+	request = &DescribeClusterStatisticsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeClusterStatistics", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeClusterStatisticsResponse creates a response to parse from DescribeClusterStatistics response
+func CreateDescribeClusterStatisticsResponse() (response *DescribeClusterStatisticsResponse) {
+	response = &DescribeClusterStatisticsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/describe_cluster_template.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"
+)
+
+// DescribeClusterTemplate invokes the emr.DescribeClusterTemplate API synchronously
+// api document: https://help.aliyun.com/api/emr/describeclustertemplate.html
+func (client *Client) DescribeClusterTemplate(request *DescribeClusterTemplateRequest) (response *DescribeClusterTemplateResponse, err error) {
+	response = CreateDescribeClusterTemplateResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeClusterTemplateWithChan invokes the emr.DescribeClusterTemplate API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclustertemplate.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterTemplateWithChan(request *DescribeClusterTemplateRequest) (<-chan *DescribeClusterTemplateResponse, <-chan error) {
+	responseChan := make(chan *DescribeClusterTemplateResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeClusterTemplate(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeClusterTemplateWithCallback invokes the emr.DescribeClusterTemplate API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclustertemplate.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterTemplateWithCallback(request *DescribeClusterTemplateRequest, callback func(response *DescribeClusterTemplateResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeClusterTemplateResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeClusterTemplate(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeClusterTemplateRequest is the request struct for api DescribeClusterTemplate
+type DescribeClusterTemplateRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	BizId           string           `position:"Query" name:"BizId"`
+}
+
+// DescribeClusterTemplateResponse is the response struct for api DescribeClusterTemplate
+type DescribeClusterTemplateResponse struct {
+	*responses.BaseResponse
+	RequestId    string       `json:"RequestId" xml:"RequestId"`
+	TemplateInfo TemplateInfo `json:"TemplateInfo" xml:"TemplateInfo"`
+}
+
+// CreateDescribeClusterTemplateRequest creates a request to invoke DescribeClusterTemplate API
+func CreateDescribeClusterTemplateRequest() (request *DescribeClusterTemplateRequest) {
+	request = &DescribeClusterTemplateRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeClusterTemplate", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeClusterTemplateResponse creates a response to parse from DescribeClusterTemplate response
+func CreateDescribeClusterTemplateResponse() (response *DescribeClusterTemplateResponse) {
+	response = &DescribeClusterTemplateResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/describe_cluster_v2.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"
+)
+
+// DescribeClusterV2 invokes the emr.DescribeClusterV2 API synchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterv2.html
+func (client *Client) DescribeClusterV2(request *DescribeClusterV2Request) (response *DescribeClusterV2Response, err error) {
+	response = CreateDescribeClusterV2Response()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeClusterV2WithChan invokes the emr.DescribeClusterV2 API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterv2.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterV2WithChan(request *DescribeClusterV2Request) (<-chan *DescribeClusterV2Response, <-chan error) {
+	responseChan := make(chan *DescribeClusterV2Response, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeClusterV2(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeClusterV2WithCallback invokes the emr.DescribeClusterV2 API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeclusterv2.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeClusterV2WithCallback(request *DescribeClusterV2Request, callback func(response *DescribeClusterV2Response, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeClusterV2Response
+		var err error
+		defer close(result)
+		response, err = client.DescribeClusterV2(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeClusterV2Request is the request struct for api DescribeClusterV2
+type DescribeClusterV2Request struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Id              string           `position:"Query" name:"Id"`
+}
+
+// DescribeClusterV2Response is the response struct for api DescribeClusterV2
+type DescribeClusterV2Response struct {
+	*responses.BaseResponse
+	RequestId   string      `json:"RequestId" xml:"RequestId"`
+	ClusterInfo ClusterInfo `json:"ClusterInfo" xml:"ClusterInfo"`
+}
+
+// CreateDescribeClusterV2Request creates a request to invoke DescribeClusterV2 API
+func CreateDescribeClusterV2Request() (request *DescribeClusterV2Request) {
+	request = &DescribeClusterV2Request{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeClusterV2", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeClusterV2Response creates a response to parse from DescribeClusterV2 response
+func CreateDescribeClusterV2Response() (response *DescribeClusterV2Response) {
+	response = &DescribeClusterV2Response{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 117 - 0
services/emr/describe_data_source.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"
+)
+
+// DescribeDataSource invokes the emr.DescribeDataSource API synchronously
+// api document: https://help.aliyun.com/api/emr/describedatasource.html
+func (client *Client) DescribeDataSource(request *DescribeDataSourceRequest) (response *DescribeDataSourceResponse, err error) {
+	response = CreateDescribeDataSourceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeDataSourceWithChan invokes the emr.DescribeDataSource API asynchronously
+// api document: https://help.aliyun.com/api/emr/describedatasource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeDataSourceWithChan(request *DescribeDataSourceRequest) (<-chan *DescribeDataSourceResponse, <-chan error) {
+	responseChan := make(chan *DescribeDataSourceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeDataSource(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeDataSourceWithCallback invokes the emr.DescribeDataSource API asynchronously
+// api document: https://help.aliyun.com/api/emr/describedatasource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeDataSourceWithCallback(request *DescribeDataSourceRequest, callback func(response *DescribeDataSourceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeDataSourceResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeDataSource(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeDataSourceRequest is the request struct for api DescribeDataSource
+type DescribeDataSourceRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Id              string           `position:"Query" name:"Id"`
+}
+
+// DescribeDataSourceResponse is the response struct for api DescribeDataSource
+type DescribeDataSourceResponse 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"`
+	CategoryId  string `json:"CategoryId" xml:"CategoryId"`
+	Status      string `json:"Status" xml:"Status"`
+	SourceType  string `json:"SourceType" xml:"SourceType"`
+	CreateFrom  string `json:"CreateFrom" xml:"CreateFrom"`
+	Conf        string `json:"Conf" xml:"Conf"`
+	ClusterId   string `json:"ClusterId" xml:"ClusterId"`
+	Creator     string `json:"Creator" xml:"Creator"`
+	Modifier    string `json:"Modifier" xml:"Modifier"`
+	GmtCreate   int    `json:"GmtCreate" xml:"GmtCreate"`
+	GmtModified int    `json:"GmtModified" xml:"GmtModified"`
+}
+
+// CreateDescribeDataSourceRequest creates a request to invoke DescribeDataSource API
+func CreateDescribeDataSourceRequest() (request *DescribeDataSourceRequest) {
+	request = &DescribeDataSourceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeDataSource", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeDataSourceResponse creates a response to parse from DescribeDataSource response
+func CreateDescribeDataSourceResponse() (response *DescribeDataSourceResponse) {
+	response = &DescribeDataSourceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/emr/describe_data_source_command.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"
+)
+
+// DescribeDataSourceCommand invokes the emr.DescribeDataSourceCommand API synchronously
+// api document: https://help.aliyun.com/api/emr/describedatasourcecommand.html
+func (client *Client) DescribeDataSourceCommand(request *DescribeDataSourceCommandRequest) (response *DescribeDataSourceCommandResponse, err error) {
+	response = CreateDescribeDataSourceCommandResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeDataSourceCommandWithChan invokes the emr.DescribeDataSourceCommand API asynchronously
+// api document: https://help.aliyun.com/api/emr/describedatasourcecommand.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeDataSourceCommandWithChan(request *DescribeDataSourceCommandRequest) (<-chan *DescribeDataSourceCommandResponse, <-chan error) {
+	responseChan := make(chan *DescribeDataSourceCommandResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeDataSourceCommand(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeDataSourceCommandWithCallback invokes the emr.DescribeDataSourceCommand API asynchronously
+// api document: https://help.aliyun.com/api/emr/describedatasourcecommand.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeDataSourceCommandWithCallback(request *DescribeDataSourceCommandRequest, callback func(response *DescribeDataSourceCommandResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeDataSourceCommandResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeDataSourceCommand(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeDataSourceCommandRequest is the request struct for api DescribeDataSourceCommand
+type DescribeDataSourceCommandRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Id              string           `position:"Query" name:"Id"`
+}
+
+// DescribeDataSourceCommandResponse is the response struct for api DescribeDataSourceCommand
+type DescribeDataSourceCommandResponse struct {
+	*responses.BaseResponse
+	RequestId string                              `json:"RequestId" xml:"RequestId"`
+	CommandId string                              `json:"CommandId" xml:"CommandId"`
+	HostName  string                              `json:"HostName" xml:"HostName"`
+	State     string                              `json:"State" xml:"State"`
+	StartTime int                                 `json:"StartTime" xml:"StartTime"`
+	EndTime   int                                 `json:"EndTime" xml:"EndTime"`
+	Message   string                              `json:"Message" xml:"Message"`
+	Data      string                              `json:"Data" xml:"Data"`
+	HostList  HostListInDescribeDataSourceCommand `json:"HostList" xml:"HostList"`
+}
+
+// CreateDescribeDataSourceCommandRequest creates a request to invoke DescribeDataSourceCommand API
+func CreateDescribeDataSourceCommandRequest() (request *DescribeDataSourceCommandRequest) {
+	request = &DescribeDataSourceCommandRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeDataSourceCommand", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeDataSourceCommandResponse creates a response to parse from DescribeDataSourceCommand response
+func CreateDescribeDataSourceCommandResponse() (response *DescribeDataSourceCommandResponse) {
+	response = &DescribeDataSourceCommandResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/emr/describe_data_source_schema_database.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"
+)
+
+// DescribeDataSourceSchemaDatabase invokes the emr.DescribeDataSourceSchemaDatabase API synchronously
+// api document: https://help.aliyun.com/api/emr/describedatasourceschemadatabase.html
+func (client *Client) DescribeDataSourceSchemaDatabase(request *DescribeDataSourceSchemaDatabaseRequest) (response *DescribeDataSourceSchemaDatabaseResponse, err error) {
+	response = CreateDescribeDataSourceSchemaDatabaseResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeDataSourceSchemaDatabaseWithChan invokes the emr.DescribeDataSourceSchemaDatabase API asynchronously
+// api document: https://help.aliyun.com/api/emr/describedatasourceschemadatabase.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeDataSourceSchemaDatabaseWithChan(request *DescribeDataSourceSchemaDatabaseRequest) (<-chan *DescribeDataSourceSchemaDatabaseResponse, <-chan error) {
+	responseChan := make(chan *DescribeDataSourceSchemaDatabaseResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeDataSourceSchemaDatabase(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeDataSourceSchemaDatabaseWithCallback invokes the emr.DescribeDataSourceSchemaDatabase API asynchronously
+// api document: https://help.aliyun.com/api/emr/describedatasourceschemadatabase.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeDataSourceSchemaDatabaseWithCallback(request *DescribeDataSourceSchemaDatabaseRequest, callback func(response *DescribeDataSourceSchemaDatabaseResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeDataSourceSchemaDatabaseResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeDataSourceSchemaDatabase(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeDataSourceSchemaDatabaseRequest is the request struct for api DescribeDataSourceSchemaDatabase
+type DescribeDataSourceSchemaDatabaseRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	DbName          string           `position:"Query" name:"DbName"`
+	DataSourceId    string           `position:"Query" name:"DataSourceId"`
+}
+
+// DescribeDataSourceSchemaDatabaseResponse is the response struct for api DescribeDataSourceSchemaDatabase
+type DescribeDataSourceSchemaDatabaseResponse struct {
+	*responses.BaseResponse
+	RequestId    string `json:"RequestId" xml:"RequestId"`
+	DataSourceId string `json:"DataSourceId" xml:"DataSourceId"`
+	Schema       Schema `json:"Schema" xml:"Schema"`
+}
+
+// CreateDescribeDataSourceSchemaDatabaseRequest creates a request to invoke DescribeDataSourceSchemaDatabase API
+func CreateDescribeDataSourceSchemaDatabaseRequest() (request *DescribeDataSourceSchemaDatabaseRequest) {
+	request = &DescribeDataSourceSchemaDatabaseRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeDataSourceSchemaDatabase", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeDataSourceSchemaDatabaseResponse creates a response to parse from DescribeDataSourceSchemaDatabase response
+func CreateDescribeDataSourceSchemaDatabaseResponse() (response *DescribeDataSourceSchemaDatabaseResponse) {
+	response = &DescribeDataSourceSchemaDatabaseResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/emr/describe_data_source_schema_table.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"
+)
+
+// DescribeDataSourceSchemaTable invokes the emr.DescribeDataSourceSchemaTable API synchronously
+// api document: https://help.aliyun.com/api/emr/describedatasourceschematable.html
+func (client *Client) DescribeDataSourceSchemaTable(request *DescribeDataSourceSchemaTableRequest) (response *DescribeDataSourceSchemaTableResponse, err error) {
+	response = CreateDescribeDataSourceSchemaTableResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeDataSourceSchemaTableWithChan invokes the emr.DescribeDataSourceSchemaTable API asynchronously
+// api document: https://help.aliyun.com/api/emr/describedatasourceschematable.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeDataSourceSchemaTableWithChan(request *DescribeDataSourceSchemaTableRequest) (<-chan *DescribeDataSourceSchemaTableResponse, <-chan error) {
+	responseChan := make(chan *DescribeDataSourceSchemaTableResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeDataSourceSchemaTable(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeDataSourceSchemaTableWithCallback invokes the emr.DescribeDataSourceSchemaTable API asynchronously
+// api document: https://help.aliyun.com/api/emr/describedatasourceschematable.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeDataSourceSchemaTableWithCallback(request *DescribeDataSourceSchemaTableRequest, callback func(response *DescribeDataSourceSchemaTableResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeDataSourceSchemaTableResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeDataSourceSchemaTable(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeDataSourceSchemaTableRequest is the request struct for api DescribeDataSourceSchemaTable
+type DescribeDataSourceSchemaTableRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	DbName          string           `position:"Query" name:"DbName"`
+	DataSourceId    string           `position:"Query" name:"DataSourceId"`
+	TableName       string           `position:"Query" name:"TableName"`
+}
+
+// DescribeDataSourceSchemaTableResponse is the response struct for api DescribeDataSourceSchemaTable
+type DescribeDataSourceSchemaTableResponse struct {
+	*responses.BaseResponse
+	RequestId    string `json:"RequestId" xml:"RequestId"`
+	DataSourceId string `json:"DataSourceId" xml:"DataSourceId"`
+	Schema       Schema `json:"Schema" xml:"Schema"`
+}
+
+// CreateDescribeDataSourceSchemaTableRequest creates a request to invoke DescribeDataSourceSchemaTable API
+func CreateDescribeDataSourceSchemaTableRequest() (request *DescribeDataSourceSchemaTableRequest) {
+	request = &DescribeDataSourceSchemaTableRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeDataSourceSchemaTable", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeDataSourceSchemaTableResponse creates a response to parse from DescribeDataSourceSchemaTable response
+func CreateDescribeDataSourceSchemaTableResponse() (response *DescribeDataSourceSchemaTableResponse) {
+	response = &DescribeDataSourceSchemaTableResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/describe_emr_main_version.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"
+)
+
+// DescribeEmrMainVersion invokes the emr.DescribeEmrMainVersion API synchronously
+// api document: https://help.aliyun.com/api/emr/describeemrmainversion.html
+func (client *Client) DescribeEmrMainVersion(request *DescribeEmrMainVersionRequest) (response *DescribeEmrMainVersionResponse, err error) {
+	response = CreateDescribeEmrMainVersionResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeEmrMainVersionWithChan invokes the emr.DescribeEmrMainVersion API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeemrmainversion.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeEmrMainVersionWithChan(request *DescribeEmrMainVersionRequest) (<-chan *DescribeEmrMainVersionResponse, <-chan error) {
+	responseChan := make(chan *DescribeEmrMainVersionResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeEmrMainVersion(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeEmrMainVersionWithCallback invokes the emr.DescribeEmrMainVersion API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeemrmainversion.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeEmrMainVersionWithCallback(request *DescribeEmrMainVersionRequest, callback func(response *DescribeEmrMainVersionResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeEmrMainVersionResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeEmrMainVersion(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeEmrMainVersionRequest is the request struct for api DescribeEmrMainVersion
+type DescribeEmrMainVersionRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	EmrVersion      string           `position:"Query" name:"EmrVersion"`
+}
+
+// DescribeEmrMainVersionResponse is the response struct for api DescribeEmrMainVersion
+type DescribeEmrMainVersionResponse struct {
+	*responses.BaseResponse
+	RequestId      string         `json:"RequestId" xml:"RequestId"`
+	EmrMainVersion EmrMainVersion `json:"EmrMainVersion" xml:"EmrMainVersion"`
+}
+
+// CreateDescribeEmrMainVersionRequest creates a request to invoke DescribeEmrMainVersion API
+func CreateDescribeEmrMainVersionRequest() (request *DescribeEmrMainVersionRequest) {
+	request = &DescribeEmrMainVersionRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeEmrMainVersion", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeEmrMainVersionResponse creates a response to parse from DescribeEmrMainVersion response
+func CreateDescribeEmrMainVersionResponse() (response *DescribeEmrMainVersionResponse) {
+	response = &DescribeEmrMainVersionResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 114 - 0
services/emr/describe_etl_job.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"
+)
+
+// DescribeETLJob invokes the emr.DescribeETLJob API synchronously
+// api document: https://help.aliyun.com/api/emr/describeetljob.html
+func (client *Client) DescribeETLJob(request *DescribeETLJobRequest) (response *DescribeETLJobResponse, err error) {
+	response = CreateDescribeETLJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeETLJobWithChan invokes the emr.DescribeETLJob API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeetljob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeETLJobWithChan(request *DescribeETLJobRequest) (<-chan *DescribeETLJobResponse, <-chan error) {
+	responseChan := make(chan *DescribeETLJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeETLJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeETLJobWithCallback invokes the emr.DescribeETLJob API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeetljob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeETLJobWithCallback(request *DescribeETLJobRequest, callback func(response *DescribeETLJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeETLJobResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeETLJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeETLJobRequest is the request struct for api DescribeETLJob
+type DescribeETLJobRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Id              string           `position:"Query" name:"Id"`
+}
+
+// DescribeETLJobResponse is the response struct for api DescribeETLJob
+type DescribeETLJobResponse 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"`
+	CategoryId          string              `json:"CategoryId" xml:"CategoryId"`
+	Graph               string              `json:"Graph" xml:"Graph"`
+	ClusterConfig       ClusterConfig       `json:"ClusterConfig" xml:"ClusterConfig"`
+	AlertConfig         AlertConfig         `json:"AlertConfig" xml:"AlertConfig"`
+	TriggerRuleList     TriggerRuleList     `json:"TriggerRuleList" xml:"TriggerRuleList"`
+	StageList           StageList           `json:"StageList" xml:"StageList"`
+	StageConnectionList StageConnectionList `json:"StageConnectionList" xml:"StageConnectionList"`
+}
+
+// CreateDescribeETLJobRequest creates a request to invoke DescribeETLJob API
+func CreateDescribeETLJobRequest() (request *DescribeETLJobRequest) {
+	request = &DescribeETLJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeETLJob", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeETLJobResponse creates a response to parse from DescribeETLJob response
+func CreateDescribeETLJobResponse() (response *DescribeETLJobResponse) {
+	response = &DescribeETLJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 115 - 0
services/emr/describe_etl_job_instance.go

@@ -0,0 +1,115 @@
+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"
+)
+
+// DescribeETLJobInstance invokes the emr.DescribeETLJobInstance API synchronously
+// api document: https://help.aliyun.com/api/emr/describeetljobinstance.html
+func (client *Client) DescribeETLJobInstance(request *DescribeETLJobInstanceRequest) (response *DescribeETLJobInstanceResponse, err error) {
+	response = CreateDescribeETLJobInstanceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeETLJobInstanceWithChan invokes the emr.DescribeETLJobInstance API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeetljobinstance.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeETLJobInstanceWithChan(request *DescribeETLJobInstanceRequest) (<-chan *DescribeETLJobInstanceResponse, <-chan error) {
+	responseChan := make(chan *DescribeETLJobInstanceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeETLJobInstance(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeETLJobInstanceWithCallback invokes the emr.DescribeETLJobInstance API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeetljobinstance.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeETLJobInstanceWithCallback(request *DescribeETLJobInstanceRequest, callback func(response *DescribeETLJobInstanceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeETLJobInstanceResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeETLJobInstance(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeETLJobInstanceRequest is the request struct for api DescribeETLJobInstance
+type DescribeETLJobInstanceRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Id              string           `position:"Query" name:"Id"`
+}
+
+// DescribeETLJobInstanceResponse is the response struct for api DescribeETLJobInstance
+type DescribeETLJobInstanceResponse struct {
+	*responses.BaseResponse
+	RequestId         string                                    `json:"RequestId" xml:"RequestId"`
+	Id                string                                    `json:"Id" xml:"Id"`
+	EtlJobId          string                                    `json:"EtlJobId" xml:"EtlJobId"`
+	InstanceStatus    string                                    `json:"InstanceStatus" xml:"InstanceStatus"`
+	TriggerUser       string                                    `json:"TriggerUser" xml:"TriggerUser"`
+	StartTime         int                                       `json:"StartTime" xml:"StartTime"`
+	EndTime           int                                       `json:"EndTime" xml:"EndTime"`
+	TriggerHistory    TriggerHistory                            `json:"TriggerHistory" xml:"TriggerHistory"`
+	Arguments         Arguments                                 `json:"Arguments" xml:"Arguments"`
+	Metrics           Metrics                                   `json:"Metrics" xml:"Metrics"`
+	FlowRelationList  FlowRelationListInDescribeETLJobInstance  `json:"FlowRelationList" xml:"FlowRelationList"`
+	StageInstanceList StageInstanceListInDescribeETLJobInstance `json:"StageInstanceList" xml:"StageInstanceList"`
+}
+
+// CreateDescribeETLJobInstanceRequest creates a request to invoke DescribeETLJobInstance API
+func CreateDescribeETLJobInstanceRequest() (request *DescribeETLJobInstanceRequest) {
+	request = &DescribeETLJobInstanceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeETLJobInstance", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeETLJobInstanceResponse creates a response to parse from DescribeETLJobInstance response
+func CreateDescribeETLJobInstanceResponse() (response *DescribeETLJobInstanceResponse) {
+	response = &DescribeETLJobInstanceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/describe_etl_job_sql_schema.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"
+)
+
+// DescribeETLJobSqlSchema invokes the emr.DescribeETLJobSqlSchema API synchronously
+// api document: https://help.aliyun.com/api/emr/describeetljobsqlschema.html
+func (client *Client) DescribeETLJobSqlSchema(request *DescribeETLJobSqlSchemaRequest) (response *DescribeETLJobSqlSchemaResponse, err error) {
+	response = CreateDescribeETLJobSqlSchemaResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeETLJobSqlSchemaWithChan invokes the emr.DescribeETLJobSqlSchema API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeetljobsqlschema.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeETLJobSqlSchemaWithChan(request *DescribeETLJobSqlSchemaRequest) (<-chan *DescribeETLJobSqlSchemaResponse, <-chan error) {
+	responseChan := make(chan *DescribeETLJobSqlSchemaResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeETLJobSqlSchema(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeETLJobSqlSchemaWithCallback invokes the emr.DescribeETLJobSqlSchema API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeetljobsqlschema.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeETLJobSqlSchemaWithCallback(request *DescribeETLJobSqlSchemaRequest, callback func(response *DescribeETLJobSqlSchemaResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeETLJobSqlSchemaResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeETLJobSqlSchema(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeETLJobSqlSchemaRequest is the request struct for api DescribeETLJobSqlSchema
+type DescribeETLJobSqlSchemaRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResolveId       string           `position:"Query" name:"ResolveId"`
+}
+
+// DescribeETLJobSqlSchemaResponse is the response struct for api DescribeETLJobSqlSchema
+type DescribeETLJobSqlSchemaResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Schema    Schema `json:"Schema" xml:"Schema"`
+}
+
+// CreateDescribeETLJobSqlSchemaRequest creates a request to invoke DescribeETLJobSqlSchema API
+func CreateDescribeETLJobSqlSchemaRequest() (request *DescribeETLJobSqlSchemaRequest) {
+	request = &DescribeETLJobSqlSchemaRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeETLJobSqlSchema", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeETLJobSqlSchemaResponse creates a response to parse from DescribeETLJobSqlSchema response
+func CreateDescribeETLJobSqlSchemaResponse() (response *DescribeETLJobSqlSchemaResponse) {
+	response = &DescribeETLJobSqlSchemaResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/emr/describe_etl_job_stage_output_schema.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"
+)
+
+// DescribeETLJobStageOutputSchema invokes the emr.DescribeETLJobStageOutputSchema API synchronously
+// api document: https://help.aliyun.com/api/emr/describeetljobstageoutputschema.html
+func (client *Client) DescribeETLJobStageOutputSchema(request *DescribeETLJobStageOutputSchemaRequest) (response *DescribeETLJobStageOutputSchemaResponse, err error) {
+	response = CreateDescribeETLJobStageOutputSchemaResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeETLJobStageOutputSchemaWithChan invokes the emr.DescribeETLJobStageOutputSchema API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeetljobstageoutputschema.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeETLJobStageOutputSchemaWithChan(request *DescribeETLJobStageOutputSchemaRequest) (<-chan *DescribeETLJobStageOutputSchemaResponse, <-chan error) {
+	responseChan := make(chan *DescribeETLJobStageOutputSchemaResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeETLJobStageOutputSchema(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeETLJobStageOutputSchemaWithCallback invokes the emr.DescribeETLJobStageOutputSchema API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeetljobstageoutputschema.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeETLJobStageOutputSchemaWithCallback(request *DescribeETLJobStageOutputSchemaRequest, callback func(response *DescribeETLJobStageOutputSchemaResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeETLJobStageOutputSchemaResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeETLJobStageOutputSchema(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeETLJobStageOutputSchemaRequest is the request struct for api DescribeETLJobStageOutputSchema
+type DescribeETLJobStageOutputSchemaRequest struct {
+	*requests.RpcRequest
+	StageName       string           `position:"Query" name:"StageName"`
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	EtlJobId        string           `position:"Query" name:"EtlJobId"`
+}
+
+// DescribeETLJobStageOutputSchemaResponse is the response struct for api DescribeETLJobStageOutputSchema
+type DescribeETLJobStageOutputSchemaResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Schema    Schema `json:"Schema" xml:"Schema"`
+}
+
+// CreateDescribeETLJobStageOutputSchemaRequest creates a request to invoke DescribeETLJobStageOutputSchema API
+func CreateDescribeETLJobStageOutputSchemaRequest() (request *DescribeETLJobStageOutputSchemaRequest) {
+	request = &DescribeETLJobStageOutputSchemaRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeETLJobStageOutputSchema", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeETLJobStageOutputSchemaResponse creates a response to parse from DescribeETLJobStageOutputSchema response
+func CreateDescribeETLJobStageOutputSchemaResponse() (response *DescribeETLJobStageOutputSchemaResponse) {
+	response = &DescribeETLJobStageOutputSchemaResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 120 - 0
services/emr/describe_execution_plan.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"
+)
+
+// DescribeExecutionPlan invokes the emr.DescribeExecutionPlan API synchronously
+// api document: https://help.aliyun.com/api/emr/describeexecutionplan.html
+func (client *Client) DescribeExecutionPlan(request *DescribeExecutionPlanRequest) (response *DescribeExecutionPlanResponse, err error) {
+	response = CreateDescribeExecutionPlanResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeExecutionPlanWithChan invokes the emr.DescribeExecutionPlan API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeexecutionplan.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeExecutionPlanWithChan(request *DescribeExecutionPlanRequest) (<-chan *DescribeExecutionPlanResponse, <-chan error) {
+	responseChan := make(chan *DescribeExecutionPlanResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeExecutionPlan(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeExecutionPlanWithCallback invokes the emr.DescribeExecutionPlan API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeexecutionplan.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeExecutionPlanWithCallback(request *DescribeExecutionPlanRequest, callback func(response *DescribeExecutionPlanResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeExecutionPlanResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeExecutionPlan(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeExecutionPlanRequest is the request struct for api DescribeExecutionPlan
+type DescribeExecutionPlanRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Id              string           `position:"Query" name:"Id"`
+}
+
+// DescribeExecutionPlanResponse is the response struct for api DescribeExecutionPlan
+type DescribeExecutionPlanResponse struct {
+	*responses.BaseResponse
+	RequestId             string      `json:"RequestId" xml:"RequestId"`
+	Id                    string      `json:"Id" xml:"Id"`
+	Name                  string      `json:"Name" xml:"Name"`
+	Status                string      `json:"Status" xml:"Status"`
+	Strategy              string      `json:"Strategy" xml:"Strategy"`
+	TimeInterval          int         `json:"TimeInterval" xml:"TimeInterval"`
+	StartTime             int         `json:"StartTime" xml:"StartTime"`
+	TimeUnit              string      `json:"TimeUnit" xml:"TimeUnit"`
+	DayOfWeek             string      `json:"DayOfWeek" xml:"DayOfWeek"`
+	DayOfMonth            string      `json:"DayOfMonth" xml:"DayOfMonth"`
+	CreateClusterOnDemand bool        `json:"CreateClusterOnDemand" xml:"CreateClusterOnDemand"`
+	ClusterId             string      `json:"ClusterId" xml:"ClusterId"`
+	ClusterName           string      `json:"ClusterName" xml:"ClusterName"`
+	WorkflowApp           string      `json:"WorkflowApp" xml:"WorkflowApp"`
+	ExecutionPlanVersion  int         `json:"ExecutionPlanVersion" xml:"ExecutionPlanVersion"`
+	ClusterInfo           ClusterInfo `json:"ClusterInfo" xml:"ClusterInfo"`
+	JobInfoList           JobInfoList `json:"JobInfoList" xml:"JobInfoList"`
+}
+
+// CreateDescribeExecutionPlanRequest creates a request to invoke DescribeExecutionPlan API
+func CreateDescribeExecutionPlanRequest() (request *DescribeExecutionPlanRequest) {
+	request = &DescribeExecutionPlanRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeExecutionPlan", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeExecutionPlanResponse creates a response to parse from DescribeExecutionPlan response
+func CreateDescribeExecutionPlanResponse() (response *DescribeExecutionPlanResponse) {
+	response = &DescribeExecutionPlanResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 125 - 0
services/emr/describe_flow.go

@@ -0,0 +1,125 @@
+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"
+)
+
+// DescribeFlow invokes the emr.DescribeFlow API synchronously
+// api document: https://help.aliyun.com/api/emr/describeflow.html
+func (client *Client) DescribeFlow(request *DescribeFlowRequest) (response *DescribeFlowResponse, err error) {
+	response = CreateDescribeFlowResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeFlowWithChan invokes the emr.DescribeFlow API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeflow.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeFlowWithChan(request *DescribeFlowRequest) (<-chan *DescribeFlowResponse, <-chan error) {
+	responseChan := make(chan *DescribeFlowResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeFlow(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeFlowWithCallback invokes the emr.DescribeFlow API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeflow.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeFlowWithCallback(request *DescribeFlowRequest, callback func(response *DescribeFlowResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeFlowResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeFlow(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeFlowRequest is the request struct for api DescribeFlow
+type DescribeFlowRequest struct {
+	*requests.RpcRequest
+	Id        string `position:"Query" name:"Id"`
+	ProjectId string `position:"Query" name:"ProjectId"`
+}
+
+// DescribeFlowResponse is the response struct for api DescribeFlow
+type DescribeFlowResponse struct {
+	*responses.BaseResponse
+	RequestId               string         `json:"RequestId" xml:"RequestId"`
+	Id                      string         `json:"Id" xml:"Id"`
+	GmtCreate               int            `json:"GmtCreate" xml:"GmtCreate"`
+	GmtModified             int            `json:"GmtModified" xml:"GmtModified"`
+	Name                    string         `json:"Name" xml:"Name"`
+	Description             string         `json:"Description" xml:"Description"`
+	Type                    string         `json:"Type" xml:"Type"`
+	Status                  string         `json:"Status" xml:"Status"`
+	Periodic                bool           `json:"Periodic" xml:"Periodic"`
+	StartSchedule           int            `json:"StartSchedule" xml:"StartSchedule"`
+	EndSchedule             int            `json:"EndSchedule" xml:"EndSchedule"`
+	CronExpr                string         `json:"CronExpr" xml:"CronExpr"`
+	CreateCluster           bool           `json:"CreateCluster" xml:"CreateCluster"`
+	ClusterId               string         `json:"ClusterId" xml:"ClusterId"`
+	HostName                string         `json:"HostName" xml:"HostName"`
+	Graph                   string         `json:"Graph" xml:"Graph"`
+	CategoryId              string         `json:"CategoryId" xml:"CategoryId"`
+	AlertConf               string         `json:"AlertConf" xml:"AlertConf"`
+	AlertUserGroupBizId     string         `json:"AlertUserGroupBizId" xml:"AlertUserGroupBizId"`
+	AlertDingDingGroupBizId string         `json:"AlertDingDingGroupBizId" xml:"AlertDingDingGroupBizId"`
+	Application             string         `json:"Application" xml:"Application"`
+	ParentFlowList          ParentFlowList `json:"ParentFlowList" xml:"ParentFlowList"`
+}
+
+// CreateDescribeFlowRequest creates a request to invoke DescribeFlow API
+func CreateDescribeFlowRequest() (request *DescribeFlowRequest) {
+	request = &DescribeFlowRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeFlow", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeFlowResponse creates a response to parse from DescribeFlow response
+func CreateDescribeFlowResponse() (response *DescribeFlowResponse) {
+	response = &DescribeFlowResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 114 - 0
services/emr/describe_flow_category.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"
+)
+
+// DescribeFlowCategory invokes the emr.DescribeFlowCategory API synchronously
+// api document: https://help.aliyun.com/api/emr/describeflowcategory.html
+func (client *Client) DescribeFlowCategory(request *DescribeFlowCategoryRequest) (response *DescribeFlowCategoryResponse, err error) {
+	response = CreateDescribeFlowCategoryResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeFlowCategoryWithChan invokes the emr.DescribeFlowCategory API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeflowcategory.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeFlowCategoryWithChan(request *DescribeFlowCategoryRequest) (<-chan *DescribeFlowCategoryResponse, <-chan error) {
+	responseChan := make(chan *DescribeFlowCategoryResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeFlowCategory(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeFlowCategoryWithCallback invokes the emr.DescribeFlowCategory API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeflowcategory.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeFlowCategoryWithCallback(request *DescribeFlowCategoryRequest, callback func(response *DescribeFlowCategoryResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeFlowCategoryResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeFlowCategory(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeFlowCategoryRequest is the request struct for api DescribeFlowCategory
+type DescribeFlowCategoryRequest struct {
+	*requests.RpcRequest
+	Id        string `position:"Query" name:"Id"`
+	ProjectId string `position:"Query" name:"ProjectId"`
+}
+
+// DescribeFlowCategoryResponse is the response struct for api DescribeFlowCategory
+type DescribeFlowCategoryResponse struct {
+	*responses.BaseResponse
+	RequestId    string `json:"RequestId" xml:"RequestId"`
+	Id           string `json:"Id" xml:"Id"`
+	GmtCreate    int    `json:"GmtCreate" xml:"GmtCreate"`
+	GmtModified  int    `json:"GmtModified" xml:"GmtModified"`
+	Name         string `json:"Name" xml:"Name"`
+	ParentId     string `json:"ParentId" xml:"ParentId"`
+	Type         string `json:"Type" xml:"Type"`
+	CategoryType string `json:"CategoryType" xml:"CategoryType"`
+	ObjectType   string `json:"ObjectType" xml:"ObjectType"`
+	ObjectId     string `json:"ObjectId" xml:"ObjectId"`
+	ProjectId    string `json:"ProjectId" xml:"ProjectId"`
+}
+
+// CreateDescribeFlowCategoryRequest creates a request to invoke DescribeFlowCategory API
+func CreateDescribeFlowCategoryRequest() (request *DescribeFlowCategoryRequest) {
+	request = &DescribeFlowCategoryRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeFlowCategory", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeFlowCategoryResponse creates a response to parse from DescribeFlowCategory response
+func CreateDescribeFlowCategoryResponse() (response *DescribeFlowCategoryResponse) {
+	response = &DescribeFlowCategoryResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/describe_flow_category_tree.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"
+)
+
+// DescribeFlowCategoryTree invokes the emr.DescribeFlowCategoryTree API synchronously
+// api document: https://help.aliyun.com/api/emr/describeflowcategorytree.html
+func (client *Client) DescribeFlowCategoryTree(request *DescribeFlowCategoryTreeRequest) (response *DescribeFlowCategoryTreeResponse, err error) {
+	response = CreateDescribeFlowCategoryTreeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeFlowCategoryTreeWithChan invokes the emr.DescribeFlowCategoryTree API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeflowcategorytree.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeFlowCategoryTreeWithChan(request *DescribeFlowCategoryTreeRequest) (<-chan *DescribeFlowCategoryTreeResponse, <-chan error) {
+	responseChan := make(chan *DescribeFlowCategoryTreeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeFlowCategoryTree(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeFlowCategoryTreeWithCallback invokes the emr.DescribeFlowCategoryTree API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeflowcategorytree.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeFlowCategoryTreeWithCallback(request *DescribeFlowCategoryTreeRequest, callback func(response *DescribeFlowCategoryTreeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeFlowCategoryTreeResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeFlowCategoryTree(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeFlowCategoryTreeRequest is the request struct for api DescribeFlowCategoryTree
+type DescribeFlowCategoryTreeRequest struct {
+	*requests.RpcRequest
+	Type      string `position:"Query" name:"Type"`
+	ProjectId string `position:"Query" name:"ProjectId"`
+}
+
+// DescribeFlowCategoryTreeResponse is the response struct for api DescribeFlowCategoryTree
+type DescribeFlowCategoryTreeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Data      string `json:"Data" xml:"Data"`
+}
+
+// CreateDescribeFlowCategoryTreeRequest creates a request to invoke DescribeFlowCategoryTree API
+func CreateDescribeFlowCategoryTreeRequest() (request *DescribeFlowCategoryTreeRequest) {
+	request = &DescribeFlowCategoryTreeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeFlowCategoryTree", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeFlowCategoryTreeResponse creates a response to parse from DescribeFlowCategoryTree response
+func CreateDescribeFlowCategoryTreeResponse() (response *DescribeFlowCategoryTreeResponse) {
+	response = &DescribeFlowCategoryTreeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 121 - 0
services/emr/describe_flow_instance.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"
+)
+
+// DescribeFlowInstance invokes the emr.DescribeFlowInstance API synchronously
+// api document: https://help.aliyun.com/api/emr/describeflowinstance.html
+func (client *Client) DescribeFlowInstance(request *DescribeFlowInstanceRequest) (response *DescribeFlowInstanceResponse, err error) {
+	response = CreateDescribeFlowInstanceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeFlowInstanceWithChan invokes the emr.DescribeFlowInstance API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeflowinstance.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeFlowInstanceWithChan(request *DescribeFlowInstanceRequest) (<-chan *DescribeFlowInstanceResponse, <-chan error) {
+	responseChan := make(chan *DescribeFlowInstanceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeFlowInstance(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeFlowInstanceWithCallback invokes the emr.DescribeFlowInstance API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeflowinstance.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeFlowInstanceWithCallback(request *DescribeFlowInstanceRequest, callback func(response *DescribeFlowInstanceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeFlowInstanceResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeFlowInstance(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeFlowInstanceRequest is the request struct for api DescribeFlowInstance
+type DescribeFlowInstanceRequest struct {
+	*requests.RpcRequest
+	Id        string `position:"Query" name:"Id"`
+	ProjectId string `position:"Query" name:"ProjectId"`
+}
+
+// DescribeFlowInstanceResponse is the response struct for api DescribeFlowInstance
+type DescribeFlowInstanceResponse struct {
+	*responses.BaseResponse
+	RequestId          string                             `json:"RequestId" xml:"RequestId"`
+	Id                 string                             `json:"Id" xml:"Id"`
+	GmtCreate          int                                `json:"GmtCreate" xml:"GmtCreate"`
+	GmtModified        int                                `json:"GmtModified" xml:"GmtModified"`
+	FlowId             string                             `json:"FlowId" xml:"FlowId"`
+	FlowName           string                             `json:"FlowName" xml:"FlowName"`
+	ProjectId          string                             `json:"ProjectId" xml:"ProjectId"`
+	Status             string                             `json:"Status" xml:"Status"`
+	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"`
+	Graph              string                             `json:"Graph" xml:"Graph"`
+	CronExpression     string                             `json:"CronExpression" xml:"CronExpression"`
+	HasNodeFailed      bool                               `json:"HasNodeFailed" xml:"HasNodeFailed"`
+	DependencyFlowList DependencyFlowList                 `json:"DependencyFlowList" xml:"DependencyFlowList"`
+	NodeInstance       NodeInstanceInDescribeFlowInstance `json:"NodeInstance" xml:"NodeInstance"`
+}
+
+// CreateDescribeFlowInstanceRequest creates a request to invoke DescribeFlowInstance API
+func CreateDescribeFlowInstanceRequest() (request *DescribeFlowInstanceRequest) {
+	request = &DescribeFlowInstanceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeFlowInstance", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeFlowInstanceResponse creates a response to parse from DescribeFlowInstance response
+func CreateDescribeFlowInstanceResponse() (response *DescribeFlowInstanceResponse) {
+	response = &DescribeFlowInstanceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 125 - 0
services/emr/describe_flow_job.go

@@ -0,0 +1,125 @@
+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"
+)
+
+// DescribeFlowJob invokes the emr.DescribeFlowJob API synchronously
+// api document: https://help.aliyun.com/api/emr/describeflowjob.html
+func (client *Client) DescribeFlowJob(request *DescribeFlowJobRequest) (response *DescribeFlowJobResponse, err error) {
+	response = CreateDescribeFlowJobResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeFlowJobWithChan invokes the emr.DescribeFlowJob API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeflowjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeFlowJobWithChan(request *DescribeFlowJobRequest) (<-chan *DescribeFlowJobResponse, <-chan error) {
+	responseChan := make(chan *DescribeFlowJobResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeFlowJob(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeFlowJobWithCallback invokes the emr.DescribeFlowJob API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeflowjob.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeFlowJobWithCallback(request *DescribeFlowJobRequest, callback func(response *DescribeFlowJobResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeFlowJobResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeFlowJob(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeFlowJobRequest is the request struct for api DescribeFlowJob
+type DescribeFlowJobRequest struct {
+	*requests.RpcRequest
+	Id        string `position:"Query" name:"Id"`
+	ProjectId string `position:"Query" name:"ProjectId"`
+}
+
+// DescribeFlowJobResponse is the response struct for api DescribeFlowJob
+type DescribeFlowJobResponse struct {
+	*responses.BaseResponse
+	RequestId       string                        `json:"RequestId" xml:"RequestId"`
+	Id              string                        `json:"Id" xml:"Id"`
+	GmtCreate       int                           `json:"GmtCreate" xml:"GmtCreate"`
+	GmtModified     int                           `json:"GmtModified" xml:"GmtModified"`
+	Name            string                        `json:"Name" xml:"Name"`
+	Type            string                        `json:"Type" xml:"Type"`
+	Description     string                        `json:"Description" xml:"Description"`
+	FailAct         string                        `json:"FailAct" xml:"FailAct"`
+	MaxRetry        int                           `json:"MaxRetry" xml:"MaxRetry"`
+	RetryInterval   int                           `json:"RetryInterval" xml:"RetryInterval"`
+	Params          string                        `json:"Params" xml:"Params"`
+	ParamConf       string                        `json:"ParamConf" xml:"ParamConf"`
+	CustomVariables string                        `json:"CustomVariables" xml:"CustomVariables"`
+	EnvConf         string                        `json:"EnvConf" xml:"EnvConf"`
+	RunConf         string                        `json:"RunConf" xml:"RunConf"`
+	MonitorConf     string                        `json:"MonitorConf" xml:"MonitorConf"`
+	CategoryId      string                        `json:"CategoryId" xml:"CategoryId"`
+	Mode            string                        `json:"mode" xml:"mode"`
+	LastInstanceId  string                        `json:"LastInstanceId" xml:"LastInstanceId"`
+	Adhoc           string                        `json:"Adhoc" xml:"Adhoc"`
+	AlertConf       string                        `json:"AlertConf" xml:"AlertConf"`
+	ResourceList    ResourceListInDescribeFlowJob `json:"ResourceList" xml:"ResourceList"`
+}
+
+// CreateDescribeFlowJobRequest creates a request to invoke DescribeFlowJob API
+func CreateDescribeFlowJobRequest() (request *DescribeFlowJobRequest) {
+	request = &DescribeFlowJobRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeFlowJob", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeFlowJobResponse creates a response to parse from DescribeFlowJob response
+func CreateDescribeFlowJobResponse() (response *DescribeFlowJobResponse) {
+	response = &DescribeFlowJobResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/emr/describe_flow_job_statistic.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"
+)
+
+// DescribeFlowJobStatistic invokes the emr.DescribeFlowJobStatistic API synchronously
+// api document: https://help.aliyun.com/api/emr/describeflowjobstatistic.html
+func (client *Client) DescribeFlowJobStatistic(request *DescribeFlowJobStatisticRequest) (response *DescribeFlowJobStatisticResponse, err error) {
+	response = CreateDescribeFlowJobStatisticResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeFlowJobStatisticWithChan invokes the emr.DescribeFlowJobStatistic API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeflowjobstatistic.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeFlowJobStatisticWithChan(request *DescribeFlowJobStatisticRequest) (<-chan *DescribeFlowJobStatisticResponse, <-chan error) {
+	responseChan := make(chan *DescribeFlowJobStatisticResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeFlowJobStatistic(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeFlowJobStatisticWithCallback invokes the emr.DescribeFlowJobStatistic API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeflowjobstatistic.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeFlowJobStatisticWithCallback(request *DescribeFlowJobStatisticRequest, callback func(response *DescribeFlowJobStatisticResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeFlowJobStatisticResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeFlowJobStatistic(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeFlowJobStatisticRequest is the request struct for api DescribeFlowJobStatistic
+type DescribeFlowJobStatisticRequest struct {
+	*requests.RpcRequest
+	FromApp   string `position:"Query" name:"FromApp"`
+	ProjectId string `position:"Query" name:"ProjectId"`
+}
+
+// DescribeFlowJobStatisticResponse is the response struct for api DescribeFlowJobStatistic
+type DescribeFlowJobStatisticResponse struct {
+	*responses.BaseResponse
+	RequestId     string `json:"RequestId" xml:"RequestId"`
+	StatisticInfo string `json:"StatisticInfo" xml:"StatisticInfo"`
+}
+
+// CreateDescribeFlowJobStatisticRequest creates a request to invoke DescribeFlowJobStatistic API
+func CreateDescribeFlowJobStatisticRequest() (request *DescribeFlowJobStatisticRequest) {
+	request = &DescribeFlowJobStatisticRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeFlowJobStatistic", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeFlowJobStatisticResponse creates a response to parse from DescribeFlowJobStatistic response
+func CreateDescribeFlowJobStatisticResponse() (response *DescribeFlowJobStatisticResponse) {
+	response = &DescribeFlowJobStatisticResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 139 - 0
services/emr/describe_flow_node_instance.go

@@ -0,0 +1,139 @@
+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"
+)
+
+// DescribeFlowNodeInstance invokes the emr.DescribeFlowNodeInstance API synchronously
+// api document: https://help.aliyun.com/api/emr/describeflownodeinstance.html
+func (client *Client) DescribeFlowNodeInstance(request *DescribeFlowNodeInstanceRequest) (response *DescribeFlowNodeInstanceResponse, err error) {
+	response = CreateDescribeFlowNodeInstanceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeFlowNodeInstanceWithChan invokes the emr.DescribeFlowNodeInstance API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeflownodeinstance.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeFlowNodeInstanceWithChan(request *DescribeFlowNodeInstanceRequest) (<-chan *DescribeFlowNodeInstanceResponse, <-chan error) {
+	responseChan := make(chan *DescribeFlowNodeInstanceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeFlowNodeInstance(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeFlowNodeInstanceWithCallback invokes the emr.DescribeFlowNodeInstance API asynchronously
+// api document: https://help.aliyun.com/api/emr/describeflownodeinstance.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeFlowNodeInstanceWithCallback(request *DescribeFlowNodeInstanceRequest, callback func(response *DescribeFlowNodeInstanceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeFlowNodeInstanceResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeFlowNodeInstance(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeFlowNodeInstanceRequest is the request struct for api DescribeFlowNodeInstance
+type DescribeFlowNodeInstanceRequest struct {
+	*requests.RpcRequest
+	Id        string `position:"Query" name:"Id"`
+	ProjectId string `position:"Query" name:"ProjectId"`
+}
+
+// DescribeFlowNodeInstanceResponse is the response struct for api DescribeFlowNodeInstance
+type DescribeFlowNodeInstanceResponse struct {
+	*responses.BaseResponse
+	RequestId        string `json:"RequestId" xml:"RequestId"`
+	Id               string `json:"Id" xml:"Id"`
+	GmtCreate        int    `json:"GmtCreate" xml:"GmtCreate"`
+	GmtModified      int    `json:"GmtModified" xml:"GmtModified"`
+	Type             string `json:"Type" xml:"Type"`
+	Status           string `json:"Status" xml:"Status"`
+	JobId            string `json:"JobId" xml:"JobId"`
+	JobName          string `json:"JobName" xml:"JobName"`
+	JobType          string `json:"JobType" xml:"JobType"`
+	JobParams        string `json:"JobParams" xml:"JobParams"`
+	FailAct          string `json:"FailAct" xml:"FailAct"`
+	MaxRetry         string `json:"MaxRetry" xml:"MaxRetry"`
+	RetryInterval    string `json:"RetryInterval" xml:"RetryInterval"`
+	NodeName         string `json:"NodeName" xml:"NodeName"`
+	FlowId           string `json:"FlowId" xml:"FlowId"`
+	FlowInstanceId   string `json:"FlowInstanceId" xml:"FlowInstanceId"`
+	ClusterId        string `json:"ClusterId" xml:"ClusterId"`
+	HostName         string `json:"HostName" xml:"HostName"`
+	ProjectId        string `json:"ProjectId" xml:"ProjectId"`
+	Pending          bool   `json:"Pending" xml:"Pending"`
+	StartTime        int    `json:"StartTime" xml:"StartTime"`
+	EndTime          int    `json:"EndTime" xml:"EndTime"`
+	Duration         int    `json:"Duration" xml:"Duration"`
+	Retries          int    `json:"Retries" xml:"Retries"`
+	ExternalId       string `json:"ExternalId" xml:"ExternalId"`
+	ExternalSubId    string `json:"ExternalSubId" xml:"ExternalSubId"`
+	ExternalChildIds string `json:"ExternalChildIds" xml:"ExternalChildIds"`
+	ExternalStatus   string `json:"ExternalStatus" xml:"ExternalStatus"`
+	ExternalInfo     string `json:"ExternalInfo" xml:"ExternalInfo"`
+	ParamConf        string `json:"ParamConf" xml:"ParamConf"`
+	EnvConf          string `json:"EnvConf" xml:"EnvConf"`
+	RunConf          string `json:"RunConf" xml:"RunConf"`
+	Adhoc            bool   `json:"Adhoc" xml:"Adhoc"`
+	MonitorConf      string `json:"MonitorConf" xml:"MonitorConf"`
+	Mode             string `json:"Mode" xml:"Mode"`
+	ClusterName      string `json:"ClusterName" xml:"ClusterName"`
+}
+
+// CreateDescribeFlowNodeInstanceRequest creates a request to invoke DescribeFlowNodeInstance API
+func CreateDescribeFlowNodeInstanceRequest() (request *DescribeFlowNodeInstanceRequest) {
+	request = &DescribeFlowNodeInstanceRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Emr", "2016-04-08", "DescribeFlowNodeInstance", "emr", "openAPI")
+	return
+}
+
+// CreateDescribeFlowNodeInstanceResponse creates a response to parse from DescribeFlowNodeInstance response
+func CreateDescribeFlowNodeInstanceResponse() (response *DescribeFlowNodeInstanceResponse) {
+	response = &DescribeFlowNodeInstanceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.