Explorar el Código

由荣旸发起的TESLAMAXCOMPUTE SDK自动发布, BUILD_ID=329, 版本号:1.2.10

Signed-off-by: haowei.yao <haowei.yao@alibaba-inc.com>
haowei.yao hace 8 años
padre
commit
7bf9e855c8

+ 3 - 0
CHANGELOG

@@ -1,3 +1,6 @@
+2018-03-15 Version: 1.2.10
+1, Add QueryCustomerSaleInfo API.
+
 2018-03-14 Version: 1.2.9
 1, Support predefine endpoints parse
 

+ 1 - 1
VERSION

@@ -1 +1 @@
-1.2.9
+1.2.10

+ 4 - 0
teslamaxcompute/CMakeLists.txt

@@ -31,6 +31,8 @@ set(teslamaxcompute_public_header_model
 	include/alibabacloud/teslamaxcompute/model/QueryTopologyResult.h
 	include/alibabacloud/teslamaxcompute/model/GetInstancesStatusCountRequest.h
 	include/alibabacloud/teslamaxcompute/model/GetInstancesStatusCountResult.h
+	include/alibabacloud/teslamaxcompute/model/QueryCustomerSaleInfoRequest.h
+	include/alibabacloud/teslamaxcompute/model/QueryCustomerSaleInfoResult.h
 	include/alibabacloud/teslamaxcompute/model/GetQuotaInstanceRequest.h
 	include/alibabacloud/teslamaxcompute/model/GetQuotaInstanceResult.h
 	include/alibabacloud/teslamaxcompute/model/GetClusterInstanceRequest.h
@@ -50,6 +52,8 @@ set(teslamaxcompute_src
 	src/model/QueryTopologyResult.cc
 	src/model/GetInstancesStatusCountRequest.cc
 	src/model/GetInstancesStatusCountResult.cc
+	src/model/QueryCustomerSaleInfoRequest.cc
+	src/model/QueryCustomerSaleInfoResult.cc
 	src/model/GetQuotaInstanceRequest.cc
 	src/model/GetQuotaInstanceResult.cc
 	src/model/GetClusterInstanceRequest.cc

+ 48 - 40
teslamaxcompute/include/alibabacloud/teslamaxcompute/TeslaMaxComputeClient.h

@@ -32,6 +32,8 @@
 #include "model/QueryTopologyResult.h"
 #include "model/GetInstancesStatusCountRequest.h"
 #include "model/GetInstancesStatusCountResult.h"
+#include "model/QueryCustomerSaleInfoRequest.h"
+#include "model/QueryCustomerSaleInfoResult.h"
 #include "model/GetQuotaInstanceRequest.h"
 #include "model/GetQuotaInstanceResult.h"
 #include "model/GetClusterInstanceRequest.h"
@@ -47,59 +49,65 @@ namespace AlibabaCloud
 		class ALIBABACLOUD_TESLAMAXCOMPUTE_EXPORT TeslaMaxComputeClient : public RpcServiceClient
 		{
 		public:
-			typedef Outcome<Error, Model::GetUserInstanceResult> GetUserInstanceOutcome;			
-			typedef std::future<GetUserInstanceOutcome> GetUserInstanceOutcomeCallable;			
+			typedef Outcome<Error, Model::GetUserInstanceResult> GetUserInstanceOutcome;
+			typedef std::future<GetUserInstanceOutcome> GetUserInstanceOutcomeCallable;
 			typedef std::function<void(const TeslaMaxComputeClient*, const Model::GetUserInstanceRequest&, const GetUserInstanceOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> GetUserInstanceAsyncHandler;
-			typedef Outcome<Error, Model::GetProjectInstanceResult> GetProjectInstanceOutcome;			
-			typedef std::future<GetProjectInstanceOutcome> GetProjectInstanceOutcomeCallable;			
+			typedef Outcome<Error, Model::GetProjectInstanceResult> GetProjectInstanceOutcome;
+			typedef std::future<GetProjectInstanceOutcome> GetProjectInstanceOutcomeCallable;
 			typedef std::function<void(const TeslaMaxComputeClient*, const Model::GetProjectInstanceRequest&, const GetProjectInstanceOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> GetProjectInstanceAsyncHandler;
-			typedef Outcome<Error, Model::QueryResourceInventoryResult> QueryResourceInventoryOutcome;			
-			typedef std::future<QueryResourceInventoryOutcome> QueryResourceInventoryOutcomeCallable;			
+			typedef Outcome<Error, Model::QueryResourceInventoryResult> QueryResourceInventoryOutcome;
+			typedef std::future<QueryResourceInventoryOutcome> QueryResourceInventoryOutcomeCallable;
 			typedef std::function<void(const TeslaMaxComputeClient*, const Model::QueryResourceInventoryRequest&, const QueryResourceInventoryOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> QueryResourceInventoryAsyncHandler;
-			typedef Outcome<Error, Model::QueryTopologyResult> QueryTopologyOutcome;			
-			typedef std::future<QueryTopologyOutcome> QueryTopologyOutcomeCallable;			
+			typedef Outcome<Error, Model::QueryTopologyResult> QueryTopologyOutcome;
+			typedef std::future<QueryTopologyOutcome> QueryTopologyOutcomeCallable;
 			typedef std::function<void(const TeslaMaxComputeClient*, const Model::QueryTopologyRequest&, const QueryTopologyOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> QueryTopologyAsyncHandler;
-			typedef Outcome<Error, Model::GetInstancesStatusCountResult> GetInstancesStatusCountOutcome;			
-			typedef std::future<GetInstancesStatusCountOutcome> GetInstancesStatusCountOutcomeCallable;			
+			typedef Outcome<Error, Model::GetInstancesStatusCountResult> GetInstancesStatusCountOutcome;
+			typedef std::future<GetInstancesStatusCountOutcome> GetInstancesStatusCountOutcomeCallable;
 			typedef std::function<void(const TeslaMaxComputeClient*, const Model::GetInstancesStatusCountRequest&, const GetInstancesStatusCountOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> GetInstancesStatusCountAsyncHandler;
-			typedef Outcome<Error, Model::GetQuotaInstanceResult> GetQuotaInstanceOutcome;			
-			typedef std::future<GetQuotaInstanceOutcome> GetQuotaInstanceOutcomeCallable;			
+			typedef Outcome<Error, Model::QueryCustomerSaleInfoResult> QueryCustomerSaleInfoOutcome;
+			typedef std::future<QueryCustomerSaleInfoOutcome> QueryCustomerSaleInfoOutcomeCallable;
+			typedef std::function<void(const TeslaMaxComputeClient*, const Model::QueryCustomerSaleInfoRequest&, const QueryCustomerSaleInfoOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> QueryCustomerSaleInfoAsyncHandler;
+			typedef Outcome<Error, Model::GetQuotaInstanceResult> GetQuotaInstanceOutcome;
+			typedef std::future<GetQuotaInstanceOutcome> GetQuotaInstanceOutcomeCallable;
 			typedef std::function<void(const TeslaMaxComputeClient*, const Model::GetQuotaInstanceRequest&, const GetQuotaInstanceOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> GetQuotaInstanceAsyncHandler;
-			typedef Outcome<Error, Model::GetClusterInstanceResult> GetClusterInstanceOutcome;			
-			typedef std::future<GetClusterInstanceOutcome> GetClusterInstanceOutcomeCallable;			
+			typedef Outcome<Error, Model::GetClusterInstanceResult> GetClusterInstanceOutcome;
+			typedef std::future<GetClusterInstanceOutcome> GetClusterInstanceOutcomeCallable;
 			typedef std::function<void(const TeslaMaxComputeClient*, const Model::GetClusterInstanceRequest&, const GetClusterInstanceOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> GetClusterInstanceAsyncHandler;
-			typedef Outcome<Error, Model::GetQuotaHistoryInfoResult> GetQuotaHistoryInfoOutcome;			
-			typedef std::future<GetQuotaHistoryInfoOutcome> GetQuotaHistoryInfoOutcomeCallable;			
+			typedef Outcome<Error, Model::GetQuotaHistoryInfoResult> GetQuotaHistoryInfoOutcome;
+			typedef std::future<GetQuotaHistoryInfoOutcome> GetQuotaHistoryInfoOutcomeCallable;
 			typedef std::function<void(const TeslaMaxComputeClient*, const Model::GetQuotaHistoryInfoRequest&, const GetQuotaHistoryInfoOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> GetQuotaHistoryInfoAsyncHandler;
 
 			TeslaMaxComputeClient(const Credentials &credentials, const ClientConfiguration &configuration);
 			TeslaMaxComputeClient(const std::shared_ptr<CredentialsProvider> &credentialsProvider, const ClientConfiguration &configuration);
 			TeslaMaxComputeClient(const std::string &accessKeyId, const std::string &accessKeySecret, const ClientConfiguration &configuration);
 			~TeslaMaxComputeClient();
-            GetUserInstanceOutcome getUserInstance(const Model::GetUserInstanceRequest &request)const;
-            void getUserInstanceAsync(const Model::GetUserInstanceRequest& request, const GetUserInstanceAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
-            GetUserInstanceOutcomeCallable getUserInstanceCallable(const Model::GetUserInstanceRequest& request) const;
-            GetProjectInstanceOutcome getProjectInstance(const Model::GetProjectInstanceRequest &request)const;
-            void getProjectInstanceAsync(const Model::GetProjectInstanceRequest& request, const GetProjectInstanceAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
-            GetProjectInstanceOutcomeCallable getProjectInstanceCallable(const Model::GetProjectInstanceRequest& request) const;
-            QueryResourceInventoryOutcome queryResourceInventory(const Model::QueryResourceInventoryRequest &request)const;
-            void queryResourceInventoryAsync(const Model::QueryResourceInventoryRequest& request, const QueryResourceInventoryAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
-            QueryResourceInventoryOutcomeCallable queryResourceInventoryCallable(const Model::QueryResourceInventoryRequest& request) const;
-            QueryTopologyOutcome queryTopology(const Model::QueryTopologyRequest &request)const;
-            void queryTopologyAsync(const Model::QueryTopologyRequest& request, const QueryTopologyAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
-            QueryTopologyOutcomeCallable queryTopologyCallable(const Model::QueryTopologyRequest& request) const;
-            GetInstancesStatusCountOutcome getInstancesStatusCount(const Model::GetInstancesStatusCountRequest &request)const;
-            void getInstancesStatusCountAsync(const Model::GetInstancesStatusCountRequest& request, const GetInstancesStatusCountAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
-            GetInstancesStatusCountOutcomeCallable getInstancesStatusCountCallable(const Model::GetInstancesStatusCountRequest& request) const;
-            GetQuotaInstanceOutcome getQuotaInstance(const Model::GetQuotaInstanceRequest &request)const;
-            void getQuotaInstanceAsync(const Model::GetQuotaInstanceRequest& request, const GetQuotaInstanceAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
-            GetQuotaInstanceOutcomeCallable getQuotaInstanceCallable(const Model::GetQuotaInstanceRequest& request) const;
-            GetClusterInstanceOutcome getClusterInstance(const Model::GetClusterInstanceRequest &request)const;
-            void getClusterInstanceAsync(const Model::GetClusterInstanceRequest& request, const GetClusterInstanceAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
-            GetClusterInstanceOutcomeCallable getClusterInstanceCallable(const Model::GetClusterInstanceRequest& request) const;
-            GetQuotaHistoryInfoOutcome getQuotaHistoryInfo(const Model::GetQuotaHistoryInfoRequest &request)const;
-            void getQuotaHistoryInfoAsync(const Model::GetQuotaHistoryInfoRequest& request, const GetQuotaHistoryInfoAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
-            GetQuotaHistoryInfoOutcomeCallable getQuotaHistoryInfoCallable(const Model::GetQuotaHistoryInfoRequest& request) const;
+			GetUserInstanceOutcome getUserInstance(const Model::GetUserInstanceRequest &request)const;
+			void getUserInstanceAsync(const Model::GetUserInstanceRequest& request, const GetUserInstanceAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			GetUserInstanceOutcomeCallable getUserInstanceCallable(const Model::GetUserInstanceRequest& request) const;
+			GetProjectInstanceOutcome getProjectInstance(const Model::GetProjectInstanceRequest &request)const;
+			void getProjectInstanceAsync(const Model::GetProjectInstanceRequest& request, const GetProjectInstanceAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			GetProjectInstanceOutcomeCallable getProjectInstanceCallable(const Model::GetProjectInstanceRequest& request) const;
+			QueryResourceInventoryOutcome queryResourceInventory(const Model::QueryResourceInventoryRequest &request)const;
+			void queryResourceInventoryAsync(const Model::QueryResourceInventoryRequest& request, const QueryResourceInventoryAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			QueryResourceInventoryOutcomeCallable queryResourceInventoryCallable(const Model::QueryResourceInventoryRequest& request) const;
+			QueryTopologyOutcome queryTopology(const Model::QueryTopologyRequest &request)const;
+			void queryTopologyAsync(const Model::QueryTopologyRequest& request, const QueryTopologyAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			QueryTopologyOutcomeCallable queryTopologyCallable(const Model::QueryTopologyRequest& request) const;
+			GetInstancesStatusCountOutcome getInstancesStatusCount(const Model::GetInstancesStatusCountRequest &request)const;
+			void getInstancesStatusCountAsync(const Model::GetInstancesStatusCountRequest& request, const GetInstancesStatusCountAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			GetInstancesStatusCountOutcomeCallable getInstancesStatusCountCallable(const Model::GetInstancesStatusCountRequest& request) const;
+			QueryCustomerSaleInfoOutcome queryCustomerSaleInfo(const Model::QueryCustomerSaleInfoRequest &request)const;
+			void queryCustomerSaleInfoAsync(const Model::QueryCustomerSaleInfoRequest& request, const QueryCustomerSaleInfoAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			QueryCustomerSaleInfoOutcomeCallable queryCustomerSaleInfoCallable(const Model::QueryCustomerSaleInfoRequest& request) const;
+			GetQuotaInstanceOutcome getQuotaInstance(const Model::GetQuotaInstanceRequest &request)const;
+			void getQuotaInstanceAsync(const Model::GetQuotaInstanceRequest& request, const GetQuotaInstanceAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			GetQuotaInstanceOutcomeCallable getQuotaInstanceCallable(const Model::GetQuotaInstanceRequest& request) const;
+			GetClusterInstanceOutcome getClusterInstance(const Model::GetClusterInstanceRequest &request)const;
+			void getClusterInstanceAsync(const Model::GetClusterInstanceRequest& request, const GetClusterInstanceAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			GetClusterInstanceOutcomeCallable getClusterInstanceCallable(const Model::GetClusterInstanceRequest& request) const;
+			GetQuotaHistoryInfoOutcome getQuotaHistoryInfo(const Model::GetQuotaHistoryInfoRequest &request)const;
+			void getQuotaHistoryInfoAsync(const Model::GetQuotaHistoryInfoRequest& request, const GetQuotaHistoryInfoAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			GetQuotaHistoryInfoOutcomeCallable getQuotaHistoryInfoCallable(const Model::GetQuotaHistoryInfoRequest& request) const;
 	
 		private:
 			std::shared_ptr<EndpointProvider> endpointProvider_;

+ 48 - 0
teslamaxcompute/include/alibabacloud/teslamaxcompute/model/QueryCustomerSaleInfoRequest.h

@@ -0,0 +1,48 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * 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.
+ */
+
+#ifndef ALIBABACLOUD_TESLAMAXCOMPUTE_MODEL_QUERYCUSTOMERSALEINFOREQUEST_H_
+#define ALIBABACLOUD_TESLAMAXCOMPUTE_MODEL_QUERYCUSTOMERSALEINFOREQUEST_H_
+
+#include <string>
+#include <vector>
+#include <alibabacloud/core/RpcServiceRequest.h>
+#include <alibabacloud/teslamaxcompute/TeslaMaxComputeExport.h>
+
+namespace AlibabaCloud
+{
+	namespace TeslaMaxCompute
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_TESLAMAXCOMPUTE_EXPORT QueryCustomerSaleInfoRequest : public RpcServiceRequest
+			{
+
+			public:
+				QueryCustomerSaleInfoRequest();
+				~QueryCustomerSaleInfoRequest();
+
+				std::string getRegion()const;
+				void setRegion(const std::string& region);
+
+            private:
+				std::string region_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_TESLAMAXCOMPUTE_MODEL_QUERYCUSTOMERSALEINFOREQUEST_H_

+ 77 - 0
teslamaxcompute/include/alibabacloud/teslamaxcompute/model/QueryCustomerSaleInfoResult.h

@@ -0,0 +1,77 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * 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.
+ */
+
+#ifndef ALIBABACLOUD_TESLAMAXCOMPUTE_MODEL_QUERYCUSTOMERSALEINFORESULT_H_
+#define ALIBABACLOUD_TESLAMAXCOMPUTE_MODEL_QUERYCUSTOMERSALEINFORESULT_H_
+
+#include <string>
+#include <vector>
+#include <utility>
+#include <alibabacloud/core/ServiceResult.h>
+#include <alibabacloud/teslamaxcompute/TeslaMaxComputeExport.h>
+
+namespace AlibabaCloud
+{
+	namespace TeslaMaxCompute
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_TESLAMAXCOMPUTE_EXPORT QueryCustomerSaleInfoResult : public ServiceResult
+			{
+			public:
+				struct Data
+				{
+					struct Cluster
+					{
+						struct SaleInfo
+						{
+							std::string uid;
+							std::string queryDate;
+							std::string owner;
+							long mem;
+							std::string saleMode;
+							long cpu;
+							std::string bizCategory;
+						};
+						std::string cluster;
+						std::string region;
+						std::vector<Cluster::SaleInfo> saleInfos;
+						std::string machineRoom;
+					};
+					std::string lastUpdate;
+					std::vector<Cluster> clusters;
+				};
+
+
+				QueryCustomerSaleInfoResult();
+				explicit QueryCustomerSaleInfoResult(const std::string &payload);
+				~QueryCustomerSaleInfoResult();
+				std::string getMessage()const;
+				std::vector<Data> getData()const;
+				int getCode()const;
+
+			protected:
+				void parse(const std::string &payload);
+			private:
+				std::string message_;
+				std::vector<Data> data_;
+				int code_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_TESLAMAXCOMPUTE_MODEL_QUERYCUSTOMERSALEINFORESULT_H_

+ 43 - 7
teslamaxcompute/src/TeslaMaxComputeClient.cc

@@ -86,7 +86,7 @@ TeslaMaxComputeClient::GetUserInstanceOutcomeCallable TeslaMaxComputeClient::get
 	asyncExecute(new Runnable([task]() { (*task)(); }));
 	return task->get_future();
 }
-
+
 TeslaMaxComputeClient::GetProjectInstanceOutcome TeslaMaxComputeClient::getProjectInstance(const GetProjectInstanceRequest &request) const
 {
 	auto endpointOutcome = endpointProvider_->getEndpoint();
@@ -122,7 +122,7 @@ TeslaMaxComputeClient::GetProjectInstanceOutcomeCallable TeslaMaxComputeClient::
 	asyncExecute(new Runnable([task]() { (*task)(); }));
 	return task->get_future();
 }
-
+
 TeslaMaxComputeClient::QueryResourceInventoryOutcome TeslaMaxComputeClient::queryResourceInventory(const QueryResourceInventoryRequest &request) const
 {
 	auto endpointOutcome = endpointProvider_->getEndpoint();
@@ -158,7 +158,7 @@ TeslaMaxComputeClient::QueryResourceInventoryOutcomeCallable TeslaMaxComputeClie
 	asyncExecute(new Runnable([task]() { (*task)(); }));
 	return task->get_future();
 }
-
+
 TeslaMaxComputeClient::QueryTopologyOutcome TeslaMaxComputeClient::queryTopology(const QueryTopologyRequest &request) const
 {
 	auto endpointOutcome = endpointProvider_->getEndpoint();
@@ -194,7 +194,7 @@ TeslaMaxComputeClient::QueryTopologyOutcomeCallable TeslaMaxComputeClient::query
 	asyncExecute(new Runnable([task]() { (*task)(); }));
 	return task->get_future();
 }
-
+
 TeslaMaxComputeClient::GetInstancesStatusCountOutcome TeslaMaxComputeClient::getInstancesStatusCount(const GetInstancesStatusCountRequest &request) const
 {
 	auto endpointOutcome = endpointProvider_->getEndpoint();
@@ -230,7 +230,43 @@ TeslaMaxComputeClient::GetInstancesStatusCountOutcomeCallable TeslaMaxComputeCli
 	asyncExecute(new Runnable([task]() { (*task)(); }));
 	return task->get_future();
 }
+
+TeslaMaxComputeClient::QueryCustomerSaleInfoOutcome TeslaMaxComputeClient::queryCustomerSaleInfo(const QueryCustomerSaleInfoRequest &request) const
+{
+	auto endpointOutcome = endpointProvider_->getEndpoint();
+	if (!endpointOutcome.isSuccess())
+		return QueryCustomerSaleInfoOutcome(endpointOutcome.error());
+
+	auto outcome = makeRequest(endpointOutcome.result(), request);
+
+	if (outcome.isSuccess())
+		return QueryCustomerSaleInfoOutcome(QueryCustomerSaleInfoResult(outcome.result()));
+	else
+		return QueryCustomerSaleInfoOutcome(outcome.error());
+}
+
+void TeslaMaxComputeClient::queryCustomerSaleInfoAsync(const QueryCustomerSaleInfoRequest& request, const QueryCustomerSaleInfoAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context) const
+{
+	auto fn = [this, request, handler, context]()
+	{
+		handler(this, request, queryCustomerSaleInfo(request), context);
+	};
+
+	asyncExecute(new Runnable(fn));
+}
+
+TeslaMaxComputeClient::QueryCustomerSaleInfoOutcomeCallable TeslaMaxComputeClient::queryCustomerSaleInfoCallable(const QueryCustomerSaleInfoRequest &request) const
+{
+	auto task = std::make_shared<std::packaged_task<QueryCustomerSaleInfoOutcome()>>(
+			[this, request]()
+			{
+			return this->queryCustomerSaleInfo(request);
+			});
 
+	asyncExecute(new Runnable([task]() { (*task)(); }));
+	return task->get_future();
+}
+
 TeslaMaxComputeClient::GetQuotaInstanceOutcome TeslaMaxComputeClient::getQuotaInstance(const GetQuotaInstanceRequest &request) const
 {
 	auto endpointOutcome = endpointProvider_->getEndpoint();
@@ -266,7 +302,7 @@ TeslaMaxComputeClient::GetQuotaInstanceOutcomeCallable TeslaMaxComputeClient::ge
 	asyncExecute(new Runnable([task]() { (*task)(); }));
 	return task->get_future();
 }
-
+
 TeslaMaxComputeClient::GetClusterInstanceOutcome TeslaMaxComputeClient::getClusterInstance(const GetClusterInstanceRequest &request) const
 {
 	auto endpointOutcome = endpointProvider_->getEndpoint();
@@ -302,7 +338,7 @@ TeslaMaxComputeClient::GetClusterInstanceOutcomeCallable TeslaMaxComputeClient::
 	asyncExecute(new Runnable([task]() { (*task)(); }));
 	return task->get_future();
 }
-
+
 TeslaMaxComputeClient::GetQuotaHistoryInfoOutcome TeslaMaxComputeClient::getQuotaHistoryInfo(const GetQuotaHistoryInfoRequest &request) const
 {
 	auto endpointOutcome = endpointProvider_->getEndpoint();
@@ -338,4 +374,4 @@ TeslaMaxComputeClient::GetQuotaHistoryInfoOutcomeCallable TeslaMaxComputeClient:
 	asyncExecute(new Runnable([task]() { (*task)(); }));
 	return task->get_future();
 }
-
+

+ 38 - 0
teslamaxcompute/src/model/QueryCustomerSaleInfoRequest.cc

@@ -0,0 +1,38 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * 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.
+ */
+
+#include <alibabacloud/teslamaxcompute/model/QueryCustomerSaleInfoRequest.h>
+
+using AlibabaCloud::TeslaMaxCompute::Model::QueryCustomerSaleInfoRequest;
+
+QueryCustomerSaleInfoRequest::QueryCustomerSaleInfoRequest() :
+	RpcServiceRequest("teslamaxcompute", "2018-01-04", "QueryCustomerSaleInfo")
+{}
+
+QueryCustomerSaleInfoRequest::~QueryCustomerSaleInfoRequest()
+{}
+
+std::string QueryCustomerSaleInfoRequest::getRegion()const
+{
+	return region_;
+}
+
+void QueryCustomerSaleInfoRequest::setRegion(const std::string& region)
+{
+	region_ = region;
+	setParameter("Region", region);
+}
+

+ 104 - 0
teslamaxcompute/src/model/QueryCustomerSaleInfoResult.cc

@@ -0,0 +1,104 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * 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.
+ */
+
+#include <alibabacloud/teslamaxcompute/model/QueryCustomerSaleInfoResult.h>
+#include <json/json.h>
+
+using namespace AlibabaCloud::TeslaMaxCompute;
+using namespace AlibabaCloud::TeslaMaxCompute::Model;
+
+QueryCustomerSaleInfoResult::QueryCustomerSaleInfoResult() :
+	ServiceResult()
+{}
+
+QueryCustomerSaleInfoResult::QueryCustomerSaleInfoResult(const std::string &payload) :
+	ServiceResult()
+{
+	parse(payload);
+}
+
+QueryCustomerSaleInfoResult::~QueryCustomerSaleInfoResult()
+{}
+
+void QueryCustomerSaleInfoResult::parse(const std::string &payload)
+{
+	Json::Reader reader;
+	Json::Value value;
+	reader.parse(payload, value);
+
+	setRequestId(value["RequestId"].asString());
+	auto allData = value["Data"];
+	for (auto value : allData)
+	{
+		Data dataObject;
+		if(!value["LastUpdate"].isNull())
+			dataObject.lastUpdate = value["LastUpdate"].asString();
+		auto allClusters = value["Clusters"]["cluster"];
+		for (auto value : allClusters)
+		{
+			Data::Cluster clusterObject;
+			if(!value["Cluster"].isNull())
+				clusterObject.cluster = value["Cluster"].asString();
+			if(!value["Region"].isNull())
+				clusterObject.region = value["Region"].asString();
+			if(!value["MachineRoom"].isNull())
+				clusterObject.machineRoom = value["MachineRoom"].asString();
+			auto allSaleInfos = value["SaleInfos"]["saleInfo"];
+			for (auto value : allSaleInfos)
+			{
+				Data::Cluster::SaleInfo saleInfosObject;
+				if(!value["SaleMode"].isNull())
+					saleInfosObject.saleMode = value["SaleMode"].asString();
+				if(!value["Uid"].isNull())
+					saleInfosObject.uid = value["Uid"].asString();
+				if(!value["Mem"].isNull())
+					saleInfosObject.mem = std::stol(value["Mem"].asString());
+				if(!value["Cpu"].isNull())
+					saleInfosObject.cpu = std::stol(value["Cpu"].asString());
+				if(!value["BizCategory"].isNull())
+					saleInfosObject.bizCategory = value["BizCategory"].asString();
+				if(!value["Owner"].isNull())
+					saleInfosObject.owner = value["Owner"].asString();
+				if(!value["QueryDate"].isNull())
+					saleInfosObject.queryDate = value["QueryDate"].asString();
+				clusterObject.saleInfos.push_back(saleInfosObject);
+			}
+			dataObject.clusters.push_back(clusterObject);
+		}
+		data_.push_back(dataObject);
+	}
+	if(!value["Code"].isNull())
+		code_ = std::stoi(value["Code"].asString());
+	if(!value["Message"].isNull())
+		message_ = value["Message"].asString();
+
+}
+
+std::string QueryCustomerSaleInfoResult::getMessage()const
+{
+	return message_;
+}
+
+std::vector<QueryCustomerSaleInfoResult::Data> QueryCustomerSaleInfoResult::getData()const
+{
+	return data_;
+}
+
+int QueryCustomerSaleInfoResult::getCode()const
+{
+	return code_;
+}
+