Jelajahi Sumber

ImmediateDelete.

sdk-team 6 tahun lalu
induk
melakukan
d9f10d6933

+ 6 - 0
CHANGELOG

@@ -1,3 +1,9 @@
+2020-01-03 Version 1.36.230
+- ImmediateDelete.
+- DescribeInstance CreateTimeUTC ExpireTimeUTC.
+- DescribeInstances CreateTimeUTC ExpireTimeUTC.
+- DescribeIpWhitelist Groups GroupName.
+
 2019-12-31 Version 1.36.229
 - Supported SQL SERVER support delete backup set according to time range.
 

+ 1 - 1
VERSION

@@ -1 +1 @@
-1.36.229
+1.36.230

+ 4 - 0
hbase/CMakeLists.txt

@@ -53,6 +53,8 @@ set(hbase_public_header_model
 	include/alibabacloud/hbase/model/DescribeSecurityGroupsResult.h
 	include/alibabacloud/hbase/model/ListTagResourcesRequest.h
 	include/alibabacloud/hbase/model/ListTagResourcesResult.h
+	include/alibabacloud/hbase/model/ListTagsRequest.h
+	include/alibabacloud/hbase/model/ListTagsResult.h
 	include/alibabacloud/hbase/model/ModifyInstanceMaintainTimeRequest.h
 	include/alibabacloud/hbase/model/ModifyInstanceMaintainTimeResult.h
 	include/alibabacloud/hbase/model/ModifyInstanceNameRequest.h
@@ -118,6 +120,8 @@ set(hbase_src
 	src/model/DescribeSecurityGroupsResult.cc
 	src/model/ListTagResourcesRequest.cc
 	src/model/ListTagResourcesResult.cc
+	src/model/ListTagsRequest.cc
+	src/model/ListTagsResult.cc
 	src/model/ModifyInstanceMaintainTimeRequest.cc
 	src/model/ModifyInstanceMaintainTimeResult.cc
 	src/model/ModifyInstanceNameRequest.cc

+ 8 - 0
hbase/include/alibabacloud/hbase/HBaseClient.h

@@ -54,6 +54,8 @@
 #include "model/DescribeSecurityGroupsResult.h"
 #include "model/ListTagResourcesRequest.h"
 #include "model/ListTagResourcesResult.h"
+#include "model/ListTagsRequest.h"
+#include "model/ListTagsResult.h"
 #include "model/ModifyInstanceMaintainTimeRequest.h"
 #include "model/ModifyInstanceMaintainTimeResult.h"
 #include "model/ModifyInstanceNameRequest.h"
@@ -141,6 +143,9 @@ namespace AlibabaCloud
 			typedef Outcome<Error, Model::ListTagResourcesResult> ListTagResourcesOutcome;
 			typedef std::future<ListTagResourcesOutcome> ListTagResourcesOutcomeCallable;
 			typedef std::function<void(const HBaseClient*, const Model::ListTagResourcesRequest&, const ListTagResourcesOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> ListTagResourcesAsyncHandler;
+			typedef Outcome<Error, Model::ListTagsResult> ListTagsOutcome;
+			typedef std::future<ListTagsOutcome> ListTagsOutcomeCallable;
+			typedef std::function<void(const HBaseClient*, const Model::ListTagsRequest&, const ListTagsOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> ListTagsAsyncHandler;
 			typedef Outcome<Error, Model::ModifyInstanceMaintainTimeResult> ModifyInstanceMaintainTimeOutcome;
 			typedef std::future<ModifyInstanceMaintainTimeOutcome> ModifyInstanceMaintainTimeOutcomeCallable;
 			typedef std::function<void(const HBaseClient*, const Model::ModifyInstanceMaintainTimeRequest&, const ModifyInstanceMaintainTimeOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> ModifyInstanceMaintainTimeAsyncHandler;
@@ -239,6 +244,9 @@ namespace AlibabaCloud
 			ListTagResourcesOutcome listTagResources(const Model::ListTagResourcesRequest &request)const;
 			void listTagResourcesAsync(const Model::ListTagResourcesRequest& request, const ListTagResourcesAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
 			ListTagResourcesOutcomeCallable listTagResourcesCallable(const Model::ListTagResourcesRequest& request) const;
+			ListTagsOutcome listTags(const Model::ListTagsRequest &request)const;
+			void listTagsAsync(const Model::ListTagsRequest& request, const ListTagsAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			ListTagsOutcomeCallable listTagsCallable(const Model::ListTagsRequest& request) const;
 			ModifyInstanceMaintainTimeOutcome modifyInstanceMaintainTime(const Model::ModifyInstanceMaintainTimeRequest &request)const;
 			void modifyInstanceMaintainTimeAsync(const Model::ModifyInstanceMaintainTimeRequest& request, const ModifyInstanceMaintainTimeAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
 			ModifyInstanceMaintainTimeOutcomeCallable modifyInstanceMaintainTimeCallable(const Model::ModifyInstanceMaintainTimeRequest& request) const;

+ 3 - 0
hbase/include/alibabacloud/hbase/model/DeleteInstanceRequest.h

@@ -35,10 +35,13 @@ namespace AlibabaCloud
 				DeleteInstanceRequest();
 				~DeleteInstanceRequest();
 
+				bool getImmediateDeleteFlag()const;
+				void setImmediateDeleteFlag(bool immediateDeleteFlag);
 				std::string getClusterId()const;
 				void setClusterId(const std::string& clusterId);
 
             private:
+				bool immediateDeleteFlag_;
 				std::string clusterId_;
 
 			};

+ 4 - 0
hbase/include/alibabacloud/hbase/model/DescribeInstanceResult.h

@@ -56,11 +56,13 @@ namespace AlibabaCloud
 				std::string getMajorVersion()const;
 				std::string getCoreDiskCount()const;
 				int getMasterDiskSize()const;
+				std::string getExpireTimeUTC()const;
 				std::string getZoneId()const;
 				std::string getInstanceId()const;
 				int getCoreNodeCount()const;
 				std::string getColdStorageStatus()const;
 				std::string getMinorVersion()const;
+				std::string getCreatedTimeUTC()const;
 				std::string getPayType()const;
 				std::string getVswitchId()const;
 				std::string getInstanceName()const;
@@ -89,11 +91,13 @@ namespace AlibabaCloud
 				std::string majorVersion_;
 				std::string coreDiskCount_;
 				int masterDiskSize_;
+				std::string expireTimeUTC_;
 				std::string zoneId_;
 				std::string instanceId_;
 				int coreNodeCount_;
 				std::string coldStorageStatus_;
 				std::string minorVersion_;
+				std::string createdTimeUTC_;
 				std::string payType_;
 				std::string vswitchId_;
 				std::string instanceName_;

+ 14 - 0
hbase/include/alibabacloud/hbase/model/DescribeInstancesRequest.h

@@ -30,22 +30,36 @@ namespace AlibabaCloud
 		{
 			class ALIBABACLOUD_HBASE_EXPORT DescribeInstancesRequest : public RpcServiceRequest
 			{
+				struct Tag
+				{
+					std::string value;
+					std::string key;
+				};
 
 			public:
 				DescribeInstancesRequest();
 				~DescribeInstancesRequest();
 
+				std::string getClusterName()const;
+				void setClusterName(const std::string& clusterName);
 				int getPageNumber()const;
 				void setPageNumber(int pageNumber);
 				std::string getRegionId()const;
 				void setRegionId(const std::string& regionId);
 				int getPageSize()const;
 				void setPageSize(int pageSize);
+				std::vector<Tag> getTag()const;
+				void setTag(const std::vector<Tag>& tag);
+				std::string getDbType()const;
+				void setDbType(const std::string& dbType);
 
             private:
+				std::string clusterName_;
 				int pageNumber_;
 				std::string regionId_;
 				int pageSize_;
+				std::vector<Tag> tag_;
+				std::string dbType_;
 
 			};
 		}

+ 16 - 7
hbase/include/alibabacloud/hbase/model/DescribeInstancesResult.h

@@ -34,28 +34,37 @@ namespace AlibabaCloud
 			public:
 				struct Instance
 				{
-					std::string status;
-					std::string majorVersion;
+					struct Tag
+					{
+						std::string value;
+						std::string key;
+					};
 					bool isHa;
 					std::string createdTime;
+					std::string masterInstanceType;
+					std::string networkType;
+					std::string coreInstanceType;
+					std::string masterDiskType;
+					std::vector<Instance::Tag> tags;
+					std::string engine;
+					std::string status;
+					std::string majorVersion;
 					int masterDiskSize;
+					std::string expireTimeUTC;
 					std::string zoneId;
 					std::string instanceId;
 					int coreNodeCount;
 					std::string coldStorageStatus;
+					std::string createdTimeUTC;
 					std::string payType;
-					std::string masterInstanceType;
+					std::string clusterType;
 					std::string vswitchId;
 					std::string instanceName;
 					int masterNodeCount;
 					std::string vpcId;
 					std::string coreDiskType;
-					std::string networkType;
-					std::string coreInstanceType;
-					std::string masterDiskType;
 					std::string regionId;
 					std::string expireTime;
-					std::string engine;
 					int coreDiskSize;
 					std::string backupStatus;
 				};

+ 8 - 2
hbase/include/alibabacloud/hbase/model/DescribeIpWhitelistResult.h

@@ -32,17 +32,23 @@ namespace AlibabaCloud
 			class ALIBABACLOUD_HBASE_EXPORT DescribeIpWhitelistResult : public ServiceResult
 			{
 			public:
+				struct Group
+				{
+					std::string groupName;
+					int ipVersion;
+					std::vector<std::string> ipList;
+				};
 
 
 				DescribeIpWhitelistResult();
 				explicit DescribeIpWhitelistResult(const std::string &payload);
 				~DescribeIpWhitelistResult();
-				std::vector<std::string> getIpList()const;
+				std::vector<Group> getGroups()const;
 
 			protected:
 				void parse(const std::string &payload);
 			private:
-				std::vector<std::string> ipList_;
+				std::vector<Group> groups_;
 
 			};
 		}

+ 48 - 0
hbase/include/alibabacloud/hbase/model/ListTagsRequest.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_HBASE_MODEL_LISTTAGSREQUEST_H_
+#define ALIBABACLOUD_HBASE_MODEL_LISTTAGSREQUEST_H_
+
+#include <string>
+#include <vector>
+#include <alibabacloud/core/RpcServiceRequest.h>
+#include <alibabacloud/hbase/HBaseExport.h>
+
+namespace AlibabaCloud
+{
+	namespace HBase
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_HBASE_EXPORT ListTagsRequest : public RpcServiceRequest
+			{
+
+			public:
+				ListTagsRequest();
+				~ListTagsRequest();
+
+				std::string getRegionId()const;
+				void setRegionId(const std::string& regionId);
+
+            private:
+				std::string regionId_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_HBASE_MODEL_LISTTAGSREQUEST_H_

+ 56 - 0
hbase/include/alibabacloud/hbase/model/ListTagsResult.h

@@ -0,0 +1,56 @@
+/*
+ * 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_HBASE_MODEL_LISTTAGSRESULT_H_
+#define ALIBABACLOUD_HBASE_MODEL_LISTTAGSRESULT_H_
+
+#include <string>
+#include <vector>
+#include <utility>
+#include <alibabacloud/core/ServiceResult.h>
+#include <alibabacloud/hbase/HBaseExport.h>
+
+namespace AlibabaCloud
+{
+	namespace HBase
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_HBASE_EXPORT ListTagsResult : public ServiceResult
+			{
+			public:
+				struct Tag
+				{
+					std::string tagKey;
+					std::string tagValue;
+				};
+
+
+				ListTagsResult();
+				explicit ListTagsResult(const std::string &payload);
+				~ListTagsResult();
+				std::vector<Tag> getTags()const;
+
+			protected:
+				void parse(const std::string &payload);
+			private:
+				std::vector<Tag> tags_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_HBASE_MODEL_LISTTAGSRESULT_H_

+ 36 - 0
hbase/src/HBaseClient.cc

@@ -627,6 +627,42 @@ HBaseClient::ListTagResourcesOutcomeCallable HBaseClient::listTagResourcesCallab
 	return task->get_future();
 }
 
+HBaseClient::ListTagsOutcome HBaseClient::listTags(const ListTagsRequest &request) const
+{
+	auto endpointOutcome = endpointProvider_->getEndpoint();
+	if (!endpointOutcome.isSuccess())
+		return ListTagsOutcome(endpointOutcome.error());
+
+	auto outcome = makeRequest(endpointOutcome.result(), request);
+
+	if (outcome.isSuccess())
+		return ListTagsOutcome(ListTagsResult(outcome.result()));
+	else
+		return ListTagsOutcome(outcome.error());
+}
+
+void HBaseClient::listTagsAsync(const ListTagsRequest& request, const ListTagsAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context) const
+{
+	auto fn = [this, request, handler, context]()
+	{
+		handler(this, request, listTags(request), context);
+	};
+
+	asyncExecute(new Runnable(fn));
+}
+
+HBaseClient::ListTagsOutcomeCallable HBaseClient::listTagsCallable(const ListTagsRequest &request) const
+{
+	auto task = std::make_shared<std::packaged_task<ListTagsOutcome()>>(
+			[this, request]()
+			{
+			return this->listTags(request);
+			});
+
+	asyncExecute(new Runnable([task]() { (*task)(); }));
+	return task->get_future();
+}
+
 HBaseClient::ModifyInstanceMaintainTimeOutcome HBaseClient::modifyInstanceMaintainTime(const ModifyInstanceMaintainTimeRequest &request) const
 {
 	auto endpointOutcome = endpointProvider_->getEndpoint();

+ 11 - 0
hbase/src/model/DeleteInstanceRequest.cc

@@ -27,6 +27,17 @@ DeleteInstanceRequest::DeleteInstanceRequest() :
 DeleteInstanceRequest::~DeleteInstanceRequest()
 {}
 
+bool DeleteInstanceRequest::getImmediateDeleteFlag()const
+{
+	return immediateDeleteFlag_;
+}
+
+void DeleteInstanceRequest::setImmediateDeleteFlag(bool immediateDeleteFlag)
+{
+	immediateDeleteFlag_ = immediateDeleteFlag;
+	setCoreParameter("ImmediateDeleteFlag", immediateDeleteFlag ? "true" : "false");
+}
+
 std::string DeleteInstanceRequest::getClusterId()const
 {
 	return clusterId_;

+ 14 - 0
hbase/src/model/DescribeInstanceResult.cc

@@ -105,6 +105,10 @@ void DescribeInstanceResult::parse(const std::string &payload)
 		maintainStartTime_ = value["MaintainStartTime"].asString();
 	if(!value["MaintainEndTime"].isNull())
 		maintainEndTime_ = value["MaintainEndTime"].asString();
+	if(!value["CreatedTimeUTC"].isNull())
+		createdTimeUTC_ = value["CreatedTimeUTC"].asString();
+	if(!value["ExpireTimeUTC"].isNull())
+		expireTimeUTC_ = value["ExpireTimeUTC"].asString();
 
 }
 
@@ -178,6 +182,11 @@ int DescribeInstanceResult::getMasterDiskSize()const
 	return masterDiskSize_;
 }
 
+std::string DescribeInstanceResult::getExpireTimeUTC()const
+{
+	return expireTimeUTC_;
+}
+
 std::string DescribeInstanceResult::getZoneId()const
 {
 	return zoneId_;
@@ -203,6 +212,11 @@ std::string DescribeInstanceResult::getMinorVersion()const
 	return minorVersion_;
 }
 
+std::string DescribeInstanceResult::getCreatedTimeUTC()const
+{
+	return createdTimeUTC_;
+}
+
 std::string DescribeInstanceResult::getPayType()const
 {
 	return payType_;

+ 38 - 0
hbase/src/model/DescribeInstancesRequest.cc

@@ -27,6 +27,17 @@ DescribeInstancesRequest::DescribeInstancesRequest() :
 DescribeInstancesRequest::~DescribeInstancesRequest()
 {}
 
+std::string DescribeInstancesRequest::getClusterName()const
+{
+	return clusterName_;
+}
+
+void DescribeInstancesRequest::setClusterName(const std::string& clusterName)
+{
+	clusterName_ = clusterName;
+	setCoreParameter("ClusterName", clusterName);
+}
+
 int DescribeInstancesRequest::getPageNumber()const
 {
 	return pageNumber_;
@@ -60,3 +71,30 @@ void DescribeInstancesRequest::setPageSize(int pageSize)
 	setCoreParameter("PageSize", std::to_string(pageSize));
 }
 
+std::vector<DescribeInstancesRequest::Tag> DescribeInstancesRequest::getTag()const
+{
+	return tag_;
+}
+
+void DescribeInstancesRequest::setTag(const std::vector<Tag>& tag)
+{
+	tag_ = tag;
+	for(int dep1 = 0; dep1!= tag.size(); dep1++) {
+		auto tagObj = tag.at(dep1);
+		std::string tagObjStr = "Tag." + std::to_string(dep1);
+		setCoreParameter(tagObjStr + ".Value", tagObj.value);
+		setCoreParameter(tagObjStr + ".Key", tagObj.key);
+	}
+}
+
+std::string DescribeInstancesRequest::getDbType()const
+{
+	return dbType_;
+}
+
+void DescribeInstancesRequest::setDbType(const std::string& dbType)
+{
+	dbType_ = dbType;
+	setCoreParameter("DbType", dbType);
+}
+

+ 16 - 0
hbase/src/model/DescribeInstancesResult.cc

@@ -91,6 +91,22 @@ void DescribeInstancesResult::parse(const std::string &payload)
 			instancesObject.coldStorageStatus = valueInstancesInstance["ColdStorageStatus"].asString();
 		if(!valueInstancesInstance["BackupStatus"].isNull())
 			instancesObject.backupStatus = valueInstancesInstance["BackupStatus"].asString();
+		if(!valueInstancesInstance["ClusterType"].isNull())
+			instancesObject.clusterType = valueInstancesInstance["ClusterType"].asString();
+		if(!valueInstancesInstance["CreatedTimeUTC"].isNull())
+			instancesObject.createdTimeUTC = valueInstancesInstance["CreatedTimeUTC"].asString();
+		if(!valueInstancesInstance["ExpireTimeUTC"].isNull())
+			instancesObject.expireTimeUTC = valueInstancesInstance["ExpireTimeUTC"].asString();
+		auto allTagsNode = allInstancesNode["Tags"]["Tag"];
+		for (auto allInstancesNodeTagsTag : allTagsNode)
+		{
+			Instance::Tag tagsObject;
+			if(!allInstancesNodeTagsTag["Key"].isNull())
+				tagsObject.key = allInstancesNodeTagsTag["Key"].asString();
+			if(!allInstancesNodeTagsTag["Value"].isNull())
+				tagsObject.value = allInstancesNodeTagsTag["Value"].asString();
+			instancesObject.tags.push_back(tagsObject);
+		}
 		instances_.push_back(instancesObject);
 	}
 	if(!value["TotalCount"].isNull())

+ 15 - 5
hbase/src/model/DescribeIpWhitelistResult.cc

@@ -39,14 +39,24 @@ void DescribeIpWhitelistResult::parse(const std::string &payload)
 	Json::Value value;
 	reader.parse(payload, value);
 	setRequestId(value["RequestId"].asString());
-	auto allIpList = value["IpList"]["IP"];
-	for (const auto &item : allIpList)
-		ipList_.push_back(item.asString());
+	auto allGroupsNode = value["Groups"]["Group"];
+	for (auto valueGroupsGroup : allGroupsNode)
+	{
+		Group groupsObject;
+		if(!valueGroupsGroup["GroupName"].isNull())
+			groupsObject.groupName = valueGroupsGroup["GroupName"].asString();
+		if(!valueGroupsGroup["IpVersion"].isNull())
+			groupsObject.ipVersion = std::stoi(valueGroupsGroup["IpVersion"].asString());
+		auto allIpList = value["IpList"]["Ip"];
+		for (auto value : allIpList)
+			groupsObject.ipList.push_back(value.asString());
+		groups_.push_back(groupsObject);
+	}
 
 }
 
-std::vector<std::string> DescribeIpWhitelistResult::getIpList()const
+std::vector<DescribeIpWhitelistResult::Group> DescribeIpWhitelistResult::getGroups()const
 {
-	return ipList_;
+	return groups_;
 }
 

+ 40 - 0
hbase/src/model/ListTagsRequest.cc

@@ -0,0 +1,40 @@
+/*
+ * 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/hbase/model/ListTagsRequest.h>
+
+using AlibabaCloud::HBase::Model::ListTagsRequest;
+
+ListTagsRequest::ListTagsRequest() :
+	RpcServiceRequest("hbase", "2019-01-01", "ListTags")
+{
+	setMethod(HttpRequest::Method::Post);
+}
+
+ListTagsRequest::~ListTagsRequest()
+{}
+
+std::string ListTagsRequest::getRegionId()const
+{
+	return regionId_;
+}
+
+void ListTagsRequest::setRegionId(const std::string& regionId)
+{
+	regionId_ = regionId;
+	setCoreParameter("RegionId", regionId);
+}
+

+ 59 - 0
hbase/src/model/ListTagsResult.cc

@@ -0,0 +1,59 @@
+/*
+ * 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/hbase/model/ListTagsResult.h>
+#include <json/json.h>
+
+using namespace AlibabaCloud::HBase;
+using namespace AlibabaCloud::HBase::Model;
+
+ListTagsResult::ListTagsResult() :
+	ServiceResult()
+{}
+
+ListTagsResult::ListTagsResult(const std::string &payload) :
+	ServiceResult()
+{
+	parse(payload);
+}
+
+ListTagsResult::~ListTagsResult()
+{}
+
+void ListTagsResult::parse(const std::string &payload)
+{
+	Json::Reader reader;
+	Json::Value value;
+	reader.parse(payload, value);
+	setRequestId(value["RequestId"].asString());
+	auto allTagsNode = value["Tags"]["Tag"];
+	for (auto valueTagsTag : allTagsNode)
+	{
+		Tag tagsObject;
+		if(!valueTagsTag["TagKey"].isNull())
+			tagsObject.tagKey = valueTagsTag["TagKey"].asString();
+		if(!valueTagsTag["TagValue"].isNull())
+			tagsObject.tagValue = valueTagsTag["TagValue"].asString();
+		tags_.push_back(tagsObject);
+	}
+
+}
+
+std::vector<ListTagsResult::Tag> ListTagsResult::getTags()const
+{
+	return tags_;
+}
+