Ver código fonte

Support record for ecs.

sdk-team 2 anos atrás
pai
commit
1c261b822a
25 arquivos alterados com 1850 adições e 1 exclusões
  1. 1 1
      VERSION
  2. 102 0
      ecs-workbench/CMakeLists.txt
  3. 86 0
      ecs-workbench/include/alibabacloud/ecs-workbench/Ecs_workbenchClient.h
  4. 32 0
      ecs-workbench/include/alibabacloud/ecs-workbench/Ecs_workbenchExport.h
  5. 45 0
      ecs-workbench/include/alibabacloud/ecs-workbench/model/GetInstanceRecordConfigRequest.h
  6. 64 0
      ecs-workbench/include/alibabacloud/ecs-workbench/model/GetInstanceRecordConfigResult.h
  7. 51 0
      ecs-workbench/include/alibabacloud/ecs-workbench/model/ListInstanceRecordsRequest.h
  8. 73 0
      ecs-workbench/include/alibabacloud/ecs-workbench/model/ListInstanceRecordsResult.h
  9. 114 0
      ecs-workbench/include/alibabacloud/ecs-workbench/model/LoginInstanceRequest.h
  10. 83 0
      ecs-workbench/include/alibabacloud/ecs-workbench/model/LoginInstanceResult.h
  11. 54 0
      ecs-workbench/include/alibabacloud/ecs-workbench/model/SetInstanceRecordConfigRequest.h
  12. 57 0
      ecs-workbench/include/alibabacloud/ecs-workbench/model/SetInstanceRecordConfigResult.h
  13. 48 0
      ecs-workbench/include/alibabacloud/ecs-workbench/model/ViewInstanceRecordsRequest.h
  14. 57 0
      ecs-workbench/include/alibabacloud/ecs-workbench/model/ViewInstanceRecordsResult.h
  15. 233 0
      ecs-workbench/src/Ecs-workbenchClient.cc
  16. 45 0
      ecs-workbench/src/model/GetInstanceRecordConfigRequest.cc
  17. 79 0
      ecs-workbench/src/model/GetInstanceRecordConfigResult.cc
  18. 63 0
      ecs-workbench/src/model/ListInstanceRecordsRequest.cc
  19. 95 0
      ecs-workbench/src/model/ListInstanceRecordsResult.cc
  20. 104 0
      ecs-workbench/src/model/LoginInstanceRequest.cc
  21. 94 0
      ecs-workbench/src/model/LoginInstanceResult.cc
  22. 72 0
      ecs-workbench/src/model/SetInstanceRecordConfigRequest.cc
  23. 72 0
      ecs-workbench/src/model/SetInstanceRecordConfigResult.cc
  24. 54 0
      ecs-workbench/src/model/ViewInstanceRecordsRequest.cc
  25. 72 0
      ecs-workbench/src/model/ViewInstanceRecordsResult.cc

+ 1 - 1
VERSION

@@ -1 +1 @@
-1.36.1975
+1.36.1976

+ 102 - 0
ecs-workbench/CMakeLists.txt

@@ -0,0 +1,102 @@
+#
+# 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.
+#
+
+set(public_header_dir ${CMAKE_CURRENT_SOURCE_DIR}/../include)
+
+set(ecs-workbench_public_header 
+	include/alibabacloud/ecs-workbench/Ecs_workbenchClient.h
+	include/alibabacloud/ecs-workbench/Ecs_workbenchExport.h )
+
+set(ecs-workbench_public_header_model 
+	include/alibabacloud/ecs-workbench/model/GetInstanceRecordConfigRequest.h
+	include/alibabacloud/ecs-workbench/model/GetInstanceRecordConfigResult.h
+	include/alibabacloud/ecs-workbench/model/ListInstanceRecordsRequest.h
+	include/alibabacloud/ecs-workbench/model/ListInstanceRecordsResult.h
+	include/alibabacloud/ecs-workbench/model/LoginInstanceRequest.h
+	include/alibabacloud/ecs-workbench/model/LoginInstanceResult.h
+	include/alibabacloud/ecs-workbench/model/SetInstanceRecordConfigRequest.h
+	include/alibabacloud/ecs-workbench/model/SetInstanceRecordConfigResult.h
+	include/alibabacloud/ecs-workbench/model/ViewInstanceRecordsRequest.h
+	include/alibabacloud/ecs-workbench/model/ViewInstanceRecordsResult.h )
+
+set(ecs-workbench_src 
+	src/Ecs-workbenchClient.cc
+	src/model/GetInstanceRecordConfigRequest.cc
+	src/model/GetInstanceRecordConfigResult.cc
+	src/model/ListInstanceRecordsRequest.cc
+	src/model/ListInstanceRecordsResult.cc
+	src/model/LoginInstanceRequest.cc
+	src/model/LoginInstanceResult.cc
+	src/model/SetInstanceRecordConfigRequest.cc
+	src/model/SetInstanceRecordConfigResult.cc
+	src/model/ViewInstanceRecordsRequest.cc
+	src/model/ViewInstanceRecordsResult.cc )
+
+add_library(ecs-workbench ${LIB_TYPE}
+	${ecs-workbench_public_header}
+	${ecs-workbench_public_header_model}
+	${ecs-workbench_src})
+
+set_target_properties(ecs-workbench
+	PROPERTIES
+	LINKER_LANGUAGE CXX
+	ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib
+	LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib
+	RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
+	OUTPUT_NAME ${TARGET_OUTPUT_NAME_PREFIX}ecs-workbench
+	)
+
+if(${LIB_TYPE} STREQUAL "SHARED")
+	set_target_properties(ecs-workbench
+		PROPERTIES
+		DEFINE_SYMBOL ALIBABACLOUD_ECS_WORKBENCH_LIBRARY)
+endif()
+
+target_include_directories(ecs-workbench
+	PRIVATE include
+		${CMAKE_SOURCE_DIR}/core/include
+	)
+target_link_libraries(ecs-workbench
+	core)
+
+if(CMAKE_HOST_WIN32)
+	ExternalProject_Get_Property(jsoncpp INSTALL_DIR)
+	set(jsoncpp_install_dir ${INSTALL_DIR})
+	add_dependencies(ecs-workbench
+		jsoncpp)
+	target_include_directories(ecs-workbench
+		PRIVATE	${jsoncpp_install_dir}/include)
+	target_link_libraries(ecs-workbench
+		${jsoncpp_install_dir}/lib/jsoncpp.lib)
+	set_target_properties(ecs-workbench
+    	PROPERTIES
+    		COMPILE_OPTIONS "/bigobj")
+else()
+	target_include_directories(ecs-workbench
+		PRIVATE /usr/include/jsoncpp)
+	target_link_libraries(ecs-workbench
+		jsoncpp)
+endif()
+
+install(FILES ${ecs-workbench_public_header}
+	DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/alibabacloud/ecs-workbench)
+install(FILES ${ecs-workbench_public_header_model}
+	DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/alibabacloud/ecs-workbench/model)
+install(TARGETS ecs-workbench
+	ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+	LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+	RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+	)

+ 86 - 0
ecs-workbench/include/alibabacloud/ecs-workbench/Ecs_workbenchClient.h

@@ -0,0 +1,86 @@
+/*
+ * 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_ECS_WORKBENCH_ECS_WORKBENCHCLIENT_H_
+#define ALIBABACLOUD_ECS_WORKBENCH_ECS_WORKBENCHCLIENT_H_
+
+#include <future>
+#include <alibabacloud/core/AsyncCallerContext.h>
+#include <alibabacloud/core/EndpointProvider.h>
+#include <alibabacloud/core/RpcServiceClient.h>
+#include "Ecs_workbenchExport.h"
+#include "model/GetInstanceRecordConfigRequest.h"
+#include "model/GetInstanceRecordConfigResult.h"
+#include "model/ListInstanceRecordsRequest.h"
+#include "model/ListInstanceRecordsResult.h"
+#include "model/LoginInstanceRequest.h"
+#include "model/LoginInstanceResult.h"
+#include "model/SetInstanceRecordConfigRequest.h"
+#include "model/SetInstanceRecordConfigResult.h"
+#include "model/ViewInstanceRecordsRequest.h"
+#include "model/ViewInstanceRecordsResult.h"
+
+
+namespace AlibabaCloud
+{
+	namespace Ecs_workbench
+	{
+		class ALIBABACLOUD_ECS_WORKBENCH_EXPORT Ecs_workbenchClient : public RpcServiceClient
+		{
+		public:
+			typedef Outcome<Error, Model::GetInstanceRecordConfigResult> GetInstanceRecordConfigOutcome;
+			typedef std::future<GetInstanceRecordConfigOutcome> GetInstanceRecordConfigOutcomeCallable;
+			typedef std::function<void(const Ecs_workbenchClient*, const Model::GetInstanceRecordConfigRequest&, const GetInstanceRecordConfigOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> GetInstanceRecordConfigAsyncHandler;
+			typedef Outcome<Error, Model::ListInstanceRecordsResult> ListInstanceRecordsOutcome;
+			typedef std::future<ListInstanceRecordsOutcome> ListInstanceRecordsOutcomeCallable;
+			typedef std::function<void(const Ecs_workbenchClient*, const Model::ListInstanceRecordsRequest&, const ListInstanceRecordsOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> ListInstanceRecordsAsyncHandler;
+			typedef Outcome<Error, Model::LoginInstanceResult> LoginInstanceOutcome;
+			typedef std::future<LoginInstanceOutcome> LoginInstanceOutcomeCallable;
+			typedef std::function<void(const Ecs_workbenchClient*, const Model::LoginInstanceRequest&, const LoginInstanceOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> LoginInstanceAsyncHandler;
+			typedef Outcome<Error, Model::SetInstanceRecordConfigResult> SetInstanceRecordConfigOutcome;
+			typedef std::future<SetInstanceRecordConfigOutcome> SetInstanceRecordConfigOutcomeCallable;
+			typedef std::function<void(const Ecs_workbenchClient*, const Model::SetInstanceRecordConfigRequest&, const SetInstanceRecordConfigOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> SetInstanceRecordConfigAsyncHandler;
+			typedef Outcome<Error, Model::ViewInstanceRecordsResult> ViewInstanceRecordsOutcome;
+			typedef std::future<ViewInstanceRecordsOutcome> ViewInstanceRecordsOutcomeCallable;
+			typedef std::function<void(const Ecs_workbenchClient*, const Model::ViewInstanceRecordsRequest&, const ViewInstanceRecordsOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> ViewInstanceRecordsAsyncHandler;
+
+			Ecs_workbenchClient(const Credentials &credentials, const ClientConfiguration &configuration);
+			Ecs_workbenchClient(const std::shared_ptr<CredentialsProvider> &credentialsProvider, const ClientConfiguration &configuration);
+			Ecs_workbenchClient(const std::string &accessKeyId, const std::string &accessKeySecret, const ClientConfiguration &configuration);
+			~Ecs_workbenchClient();
+			GetInstanceRecordConfigOutcome getInstanceRecordConfig(const Model::GetInstanceRecordConfigRequest &request)const;
+			void getInstanceRecordConfigAsync(const Model::GetInstanceRecordConfigRequest& request, const GetInstanceRecordConfigAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			GetInstanceRecordConfigOutcomeCallable getInstanceRecordConfigCallable(const Model::GetInstanceRecordConfigRequest& request) const;
+			ListInstanceRecordsOutcome listInstanceRecords(const Model::ListInstanceRecordsRequest &request)const;
+			void listInstanceRecordsAsync(const Model::ListInstanceRecordsRequest& request, const ListInstanceRecordsAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			ListInstanceRecordsOutcomeCallable listInstanceRecordsCallable(const Model::ListInstanceRecordsRequest& request) const;
+			LoginInstanceOutcome loginInstance(const Model::LoginInstanceRequest &request)const;
+			void loginInstanceAsync(const Model::LoginInstanceRequest& request, const LoginInstanceAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			LoginInstanceOutcomeCallable loginInstanceCallable(const Model::LoginInstanceRequest& request) const;
+			SetInstanceRecordConfigOutcome setInstanceRecordConfig(const Model::SetInstanceRecordConfigRequest &request)const;
+			void setInstanceRecordConfigAsync(const Model::SetInstanceRecordConfigRequest& request, const SetInstanceRecordConfigAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			SetInstanceRecordConfigOutcomeCallable setInstanceRecordConfigCallable(const Model::SetInstanceRecordConfigRequest& request) const;
+			ViewInstanceRecordsOutcome viewInstanceRecords(const Model::ViewInstanceRecordsRequest &request)const;
+			void viewInstanceRecordsAsync(const Model::ViewInstanceRecordsRequest& request, const ViewInstanceRecordsAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			ViewInstanceRecordsOutcomeCallable viewInstanceRecordsCallable(const Model::ViewInstanceRecordsRequest& request) const;
+	
+		private:
+			std::shared_ptr<EndpointProvider> endpointProvider_;
+		};
+	}
+}
+
+#endif // !ALIBABACLOUD_ECS_WORKBENCH_ECS_WORKBENCHCLIENT_H_

+ 32 - 0
ecs-workbench/include/alibabacloud/ecs-workbench/Ecs_workbenchExport.h

@@ -0,0 +1,32 @@
+/*
+ * 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_ECS_WORKBENCH_ECS_WORKBENCHEXPORT_H_
+#define ALIBABACLOUD_ECS_WORKBENCH_ECS_WORKBENCHEXPORT_H_
+
+#include <alibabacloud/core/Global.h>
+
+#if defined(ALIBABACLOUD_SHARED)
+#	if defined(ALIBABACLOUD_ECS_WORKBENCH_LIBRARY)
+#		define ALIBABACLOUD_ECS_WORKBENCH_EXPORT ALIBABACLOUD_DECL_EXPORT
+#	else
+#		define ALIBABACLOUD_ECS_WORKBENCH_EXPORT ALIBABACLOUD_DECL_IMPORT
+#	endif
+#else
+#	define ALIBABACLOUD_ECS_WORKBENCH_EXPORT
+#endif
+
+#endif // !ALIBABACLOUD_ECS_WORKBENCH_ECS_WORKBENCHEXPORT_H_

+ 45 - 0
ecs-workbench/include/alibabacloud/ecs-workbench/model/GetInstanceRecordConfigRequest.h

@@ -0,0 +1,45 @@
+/*
+ * 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_ECS_WORKBENCH_MODEL_GETINSTANCERECORDCONFIGREQUEST_H_
+#define ALIBABACLOUD_ECS_WORKBENCH_MODEL_GETINSTANCERECORDCONFIGREQUEST_H_
+
+#include <alibabacloud/ecs-workbench/Ecs_workbenchExport.h>
+#include <alibabacloud/core/RpcServiceRequest.h>
+#include <string>
+#include <vector>
+#include <map>
+
+namespace AlibabaCloud {
+namespace Ecs_workbench {
+namespace Model {
+class ALIBABACLOUD_ECS_WORKBENCH_EXPORT GetInstanceRecordConfigRequest : public RpcServiceRequest {
+public:
+	GetInstanceRecordConfigRequest();
+	~GetInstanceRecordConfigRequest();
+	std::string getInstanceId() const;
+	void setInstanceId(const std::string &instanceId);
+	std::string getRegionId() const;
+	void setRegionId(const std::string &regionId);
+
+private:
+	std::string instanceId_;
+	std::string regionId_;
+};
+} // namespace Model
+} // namespace Ecs_workbench
+} // namespace AlibabaCloud
+#endif // !ALIBABACLOUD_ECS_WORKBENCH_MODEL_GETINSTANCERECORDCONFIGREQUEST_H_

+ 64 - 0
ecs-workbench/include/alibabacloud/ecs-workbench/model/GetInstanceRecordConfigResult.h

@@ -0,0 +1,64 @@
+/*
+ * 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_ECS_WORKBENCH_MODEL_GETINSTANCERECORDCONFIGRESULT_H_
+#define ALIBABACLOUD_ECS_WORKBENCH_MODEL_GETINSTANCERECORDCONFIGRESULT_H_
+
+#include <string>
+#include <vector>
+#include <utility>
+#include <alibabacloud/core/ServiceResult.h>
+#include <alibabacloud/ecs-workbench/Ecs_workbenchExport.h>
+
+namespace AlibabaCloud
+{
+	namespace Ecs_workbench
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_ECS_WORKBENCH_EXPORT GetInstanceRecordConfigResult : public ServiceResult
+			{
+			public:
+				struct Root
+				{
+					std::string parentId;
+					std::string instanceId;
+					std::string recordStorageTarget;
+					int expirationDays;
+				};
+
+
+				GetInstanceRecordConfigResult();
+				explicit GetInstanceRecordConfigResult(const std::string &payload);
+				~GetInstanceRecordConfigResult();
+				Root getRoot()const;
+				std::string getMessage()const;
+				std::string getCode()const;
+				bool getSuccess()const;
+
+			protected:
+				void parse(const std::string &payload);
+			private:
+				Root root_;
+				std::string message_;
+				std::string code_;
+				bool success_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_ECS_WORKBENCH_MODEL_GETINSTANCERECORDCONFIGRESULT_H_

+ 51 - 0
ecs-workbench/include/alibabacloud/ecs-workbench/model/ListInstanceRecordsRequest.h

@@ -0,0 +1,51 @@
+/*
+ * 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_ECS_WORKBENCH_MODEL_LISTINSTANCERECORDSREQUEST_H_
+#define ALIBABACLOUD_ECS_WORKBENCH_MODEL_LISTINSTANCERECORDSREQUEST_H_
+
+#include <alibabacloud/ecs-workbench/Ecs_workbenchExport.h>
+#include <alibabacloud/core/RpcServiceRequest.h>
+#include <string>
+#include <vector>
+#include <map>
+
+namespace AlibabaCloud {
+namespace Ecs_workbench {
+namespace Model {
+class ALIBABACLOUD_ECS_WORKBENCH_EXPORT ListInstanceRecordsRequest : public RpcServiceRequest {
+public:
+	ListInstanceRecordsRequest();
+	~ListInstanceRecordsRequest();
+	int getPageNumber() const;
+	void setPageNumber(int pageNumber);
+	std::string getInstanceId() const;
+	void setInstanceId(const std::string &instanceId);
+	std::string getRegionId() const;
+	void setRegionId(const std::string &regionId);
+	int getPageSize() const;
+	void setPageSize(int pageSize);
+
+private:
+	int pageNumber_;
+	std::string instanceId_;
+	std::string regionId_;
+	int pageSize_;
+};
+} // namespace Model
+} // namespace Ecs_workbench
+} // namespace AlibabaCloud
+#endif // !ALIBABACLOUD_ECS_WORKBENCH_MODEL_LISTINSTANCERECORDSREQUEST_H_

+ 73 - 0
ecs-workbench/include/alibabacloud/ecs-workbench/model/ListInstanceRecordsResult.h

@@ -0,0 +1,73 @@
+/*
+ * 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_ECS_WORKBENCH_MODEL_LISTINSTANCERECORDSRESULT_H_
+#define ALIBABACLOUD_ECS_WORKBENCH_MODEL_LISTINSTANCERECORDSRESULT_H_
+
+#include <string>
+#include <vector>
+#include <utility>
+#include <alibabacloud/core/ServiceResult.h>
+#include <alibabacloud/ecs-workbench/Ecs_workbenchExport.h>
+
+namespace AlibabaCloud
+{
+	namespace Ecs_workbench
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_ECS_WORKBENCH_EXPORT ListInstanceRecordsResult : public ServiceResult
+			{
+			public:
+				struct Root
+				{
+					struct RecordListItem
+					{
+						std::string terminalSessionToken;
+						std::string status;
+						std::string gmtCreate;
+						long accountId;
+						std::string instanceRecordUrl;
+						std::string instanceId;
+						long recordDurationMillis;
+						std::string expireTime;
+					};
+					int totalCount;
+					std::vector<RecordListItem> recordList;
+				};
+
+
+				ListInstanceRecordsResult();
+				explicit ListInstanceRecordsResult(const std::string &payload);
+				~ListInstanceRecordsResult();
+				Root getRoot()const;
+				std::string getMessage()const;
+				std::string getCode()const;
+				bool getSuccess()const;
+
+			protected:
+				void parse(const std::string &payload);
+			private:
+				Root root_;
+				std::string message_;
+				std::string code_;
+				bool success_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_ECS_WORKBENCH_MODEL_LISTINSTANCERECORDSRESULT_H_

+ 114 - 0
ecs-workbench/include/alibabacloud/ecs-workbench/model/LoginInstanceRequest.h

@@ -0,0 +1,114 @@
+/*
+ * 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_ECS_WORKBENCH_MODEL_LOGININSTANCEREQUEST_H_
+#define ALIBABACLOUD_ECS_WORKBENCH_MODEL_LOGININSTANCEREQUEST_H_
+
+#include <alibabacloud/ecs-workbench/Ecs_workbenchExport.h>
+#include <alibabacloud/core/RpcServiceRequest.h>
+#include <string>
+#include <vector>
+#include <map>
+
+namespace AlibabaCloud {
+namespace Ecs_workbench {
+namespace Model {
+class ALIBABACLOUD_ECS_WORKBENCH_EXPORT LoginInstanceRequest : public RpcServiceRequest {
+public:
+	struct PartnerInfo {
+		std::string partnerName;
+		std::string partnerId;
+	};
+	struct InstanceLoginInfo {
+		std::string expireTime;
+		bool loginByInstanceShortcut;
+		std::string certificate;
+		std::string authenticationType;
+		std::string dockerExec;
+		std::string shortcutToken;
+		std::string resourceGroupId;
+		std::string protocol;
+		std::string password;
+		bool loginByInstanceCredential;
+		std::string instanceId;
+		std::string regionId;
+		int port;
+		std::string vpcId;
+		std::string host;
+		struct Options {
+			int operationDisableSeconds;
+			std::string notificationRecipientUrl;
+			std::string sessionControl;
+			int videoFreezeSeconds;
+			struct ContainerInfo {
+				std::map<std::string, std::string> headers;
+				std::string endpoint;
+				std::string containerName;
+				std::string clusterName;
+				std::string _namespace;
+				std::string podName;
+				std::string clusterId;
+				std::string deployment;
+			};
+			ContainerInfo containerInfo;
+			int notificationRetryIntervalSeconds;
+			int audioMuteSeconds;
+			int fixedHeight;
+			int fixedWidth;
+			std::string notificationEventTypes;
+			int notificationRetryLimit;
+		};
+		Options options;
+		std::string instanceType;
+		std::string dockerContainerName;
+		std::string passPhrase;
+		std::string credentialToken;
+		long durationSeconds;
+		std::string networkAccessMode;
+		std::string username;
+	};
+	struct UserAccount {
+		long accountId;
+		std::string empId;
+		std::string expireTime;
+		std::string loginName;
+		struct Options {
+			long loginLimit;
+		};
+		Options options;
+		std::string accountStructure;
+		long durationSeconds;
+		long parentId;
+		std::string accountPlatform;
+	};
+	LoginInstanceRequest();
+	~LoginInstanceRequest();
+	PartnerInfo getPartnerInfo() const;
+	void setPartnerInfo(const PartnerInfo &partnerInfo);
+	InstanceLoginInfo getInstanceLoginInfo() const;
+	void setInstanceLoginInfo(const InstanceLoginInfo &instanceLoginInfo);
+	UserAccount getUserAccount() const;
+	void setUserAccount(const UserAccount &userAccount);
+
+private:
+	PartnerInfo partnerInfo_;
+	InstanceLoginInfo instanceLoginInfo_;
+	UserAccount userAccount_;
+};
+} // namespace Model
+} // namespace Ecs_workbench
+} // namespace AlibabaCloud
+#endif // !ALIBABACLOUD_ECS_WORKBENCH_MODEL_LOGININSTANCEREQUEST_H_

+ 83 - 0
ecs-workbench/include/alibabacloud/ecs-workbench/model/LoginInstanceResult.h

@@ -0,0 +1,83 @@
+/*
+ * 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_ECS_WORKBENCH_MODEL_LOGININSTANCERESULT_H_
+#define ALIBABACLOUD_ECS_WORKBENCH_MODEL_LOGININSTANCERESULT_H_
+
+#include <string>
+#include <vector>
+#include <utility>
+#include <alibabacloud/core/ServiceResult.h>
+#include <alibabacloud/ecs-workbench/Ecs_workbenchExport.h>
+
+namespace AlibabaCloud
+{
+	namespace Ecs_workbench
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_ECS_WORKBENCH_EXPORT LoginInstanceResult : public ServiceResult
+			{
+			public:
+				struct Root
+				{
+					struct DisposableAccount
+					{
+						std::string loginFormActionUrl;
+						std::string loginUrl;
+					};
+					struct SessionControl
+					{
+						std::string baseUrl;
+					};
+					struct InstanceLoginInfoListItem
+					{
+						struct InstanceLoginView
+						{
+							std::string defaultViewUrl;
+						};
+						InstanceLoginView instanceLoginView;
+						std::string instanceLoginToken;
+						std::string instanceId;
+						bool loginSuccess;
+					};
+					DisposableAccount disposableAccount;
+					SessionControl sessionControl;
+					std::vector<InstanceLoginInfoListItem> instanceLoginInfoList;
+				};
+
+
+				LoginInstanceResult();
+				explicit LoginInstanceResult(const std::string &payload);
+				~LoginInstanceResult();
+				Root getRoot()const;
+				std::string getMessage()const;
+				std::string getCode()const;
+				std::string getSuccess()const;
+
+			protected:
+				void parse(const std::string &payload);
+			private:
+				Root root_;
+				std::string message_;
+				std::string code_;
+				std::string success_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_ECS_WORKBENCH_MODEL_LOGININSTANCERESULT_H_

+ 54 - 0
ecs-workbench/include/alibabacloud/ecs-workbench/model/SetInstanceRecordConfigRequest.h

@@ -0,0 +1,54 @@
+/*
+ * 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_ECS_WORKBENCH_MODEL_SETINSTANCERECORDCONFIGREQUEST_H_
+#define ALIBABACLOUD_ECS_WORKBENCH_MODEL_SETINSTANCERECORDCONFIGREQUEST_H_
+
+#include <alibabacloud/ecs-workbench/Ecs_workbenchExport.h>
+#include <alibabacloud/core/RpcServiceRequest.h>
+#include <string>
+#include <vector>
+#include <map>
+
+namespace AlibabaCloud {
+namespace Ecs_workbench {
+namespace Model {
+class ALIBABACLOUD_ECS_WORKBENCH_EXPORT SetInstanceRecordConfigRequest : public RpcServiceRequest {
+public:
+	SetInstanceRecordConfigRequest();
+	~SetInstanceRecordConfigRequest();
+	bool getEnabled() const;
+	void setEnabled(bool enabled);
+	std::string getRecordStorageTarget() const;
+	void setRecordStorageTarget(const std::string &recordStorageTarget);
+	std::string getInstanceId() const;
+	void setInstanceId(const std::string &instanceId);
+	std::string getRegionId() const;
+	void setRegionId(const std::string &regionId);
+	int getExpirationDays() const;
+	void setExpirationDays(int expirationDays);
+
+private:
+	bool enabled_;
+	std::string recordStorageTarget_;
+	std::string instanceId_;
+	std::string regionId_;
+	int expirationDays_;
+};
+} // namespace Model
+} // namespace Ecs_workbench
+} // namespace AlibabaCloud
+#endif // !ALIBABACLOUD_ECS_WORKBENCH_MODEL_SETINSTANCERECORDCONFIGREQUEST_H_

+ 57 - 0
ecs-workbench/include/alibabacloud/ecs-workbench/model/SetInstanceRecordConfigResult.h

@@ -0,0 +1,57 @@
+/*
+ * 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_ECS_WORKBENCH_MODEL_SETINSTANCERECORDCONFIGRESULT_H_
+#define ALIBABACLOUD_ECS_WORKBENCH_MODEL_SETINSTANCERECORDCONFIGRESULT_H_
+
+#include <string>
+#include <vector>
+#include <utility>
+#include <alibabacloud/core/ServiceResult.h>
+#include <alibabacloud/ecs-workbench/Ecs_workbenchExport.h>
+
+namespace AlibabaCloud
+{
+	namespace Ecs_workbench
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_ECS_WORKBENCH_EXPORT SetInstanceRecordConfigResult : public ServiceResult
+			{
+			public:
+
+
+				SetInstanceRecordConfigResult();
+				explicit SetInstanceRecordConfigResult(const std::string &payload);
+				~SetInstanceRecordConfigResult();
+				bool getRoot()const;
+				std::string getMessage()const;
+				std::string getCode()const;
+				bool getSuccess()const;
+
+			protected:
+				void parse(const std::string &payload);
+			private:
+				bool root_;
+				std::string message_;
+				std::string code_;
+				bool success_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_ECS_WORKBENCH_MODEL_SETINSTANCERECORDCONFIGRESULT_H_

+ 48 - 0
ecs-workbench/include/alibabacloud/ecs-workbench/model/ViewInstanceRecordsRequest.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_ECS_WORKBENCH_MODEL_VIEWINSTANCERECORDSREQUEST_H_
+#define ALIBABACLOUD_ECS_WORKBENCH_MODEL_VIEWINSTANCERECORDSREQUEST_H_
+
+#include <alibabacloud/ecs-workbench/Ecs_workbenchExport.h>
+#include <alibabacloud/core/RpcServiceRequest.h>
+#include <string>
+#include <vector>
+#include <map>
+
+namespace AlibabaCloud {
+namespace Ecs_workbench {
+namespace Model {
+class ALIBABACLOUD_ECS_WORKBENCH_EXPORT ViewInstanceRecordsRequest : public RpcServiceRequest {
+public:
+	ViewInstanceRecordsRequest();
+	~ViewInstanceRecordsRequest();
+	std::string getInstanceId() const;
+	void setInstanceId(const std::string &instanceId);
+	std::string getRegionId() const;
+	void setRegionId(const std::string &regionId);
+	std::string getTerminalSessionToken() const;
+	void setTerminalSessionToken(const std::string &terminalSessionToken);
+
+private:
+	std::string instanceId_;
+	std::string regionId_;
+	std::string terminalSessionToken_;
+};
+} // namespace Model
+} // namespace Ecs_workbench
+} // namespace AlibabaCloud
+#endif // !ALIBABACLOUD_ECS_WORKBENCH_MODEL_VIEWINSTANCERECORDSREQUEST_H_

+ 57 - 0
ecs-workbench/include/alibabacloud/ecs-workbench/model/ViewInstanceRecordsResult.h

@@ -0,0 +1,57 @@
+/*
+ * 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_ECS_WORKBENCH_MODEL_VIEWINSTANCERECORDSRESULT_H_
+#define ALIBABACLOUD_ECS_WORKBENCH_MODEL_VIEWINSTANCERECORDSRESULT_H_
+
+#include <string>
+#include <vector>
+#include <utility>
+#include <alibabacloud/core/ServiceResult.h>
+#include <alibabacloud/ecs-workbench/Ecs_workbenchExport.h>
+
+namespace AlibabaCloud
+{
+	namespace Ecs_workbench
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_ECS_WORKBENCH_EXPORT ViewInstanceRecordsResult : public ServiceResult
+			{
+			public:
+
+
+				ViewInstanceRecordsResult();
+				explicit ViewInstanceRecordsResult(const std::string &payload);
+				~ViewInstanceRecordsResult();
+				bool getRoot()const;
+				std::string getMessage()const;
+				std::string getCode()const;
+				bool getSuccess()const;
+
+			protected:
+				void parse(const std::string &payload);
+			private:
+				bool root_;
+				std::string message_;
+				std::string code_;
+				bool success_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_ECS_WORKBENCH_MODEL_VIEWINSTANCERECORDSRESULT_H_

+ 233 - 0
ecs-workbench/src/Ecs-workbenchClient.cc

@@ -0,0 +1,233 @@
+/*
+ * 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/ecs-workbench/Ecs_workbenchClient.h>
+#include <alibabacloud/core/SimpleCredentialsProvider.h>
+
+using namespace AlibabaCloud;
+using namespace AlibabaCloud::Location;
+using namespace AlibabaCloud::Ecs_workbench;
+using namespace AlibabaCloud::Ecs_workbench::Model;
+
+namespace
+{
+	const std::string SERVICE_NAME = "ecs-workbench";
+}
+
+Ecs_workbenchClient::Ecs_workbenchClient(const Credentials &credentials, const ClientConfiguration &configuration) :
+	RpcServiceClient(SERVICE_NAME, std::make_shared<SimpleCredentialsProvider>(credentials), configuration)
+{
+	auto locationClient = std::make_shared<LocationClient>(credentials, configuration);
+	endpointProvider_ = std::make_shared<EndpointProvider>(locationClient, configuration.regionId(), SERVICE_NAME, "ecs-workbench");
+}
+
+Ecs_workbenchClient::Ecs_workbenchClient(const std::shared_ptr<CredentialsProvider>& credentialsProvider, const ClientConfiguration & configuration) :
+	RpcServiceClient(SERVICE_NAME, credentialsProvider, configuration)
+{
+	auto locationClient = std::make_shared<LocationClient>(credentialsProvider, configuration);
+	endpointProvider_ = std::make_shared<EndpointProvider>(locationClient, configuration.regionId(), SERVICE_NAME, "ecs-workbench");
+}
+
+Ecs_workbenchClient::Ecs_workbenchClient(const std::string & accessKeyId, const std::string & accessKeySecret, const ClientConfiguration & configuration) :
+	RpcServiceClient(SERVICE_NAME, std::make_shared<SimpleCredentialsProvider>(accessKeyId, accessKeySecret), configuration)
+{
+	auto locationClient = std::make_shared<LocationClient>(accessKeyId, accessKeySecret, configuration);
+	endpointProvider_ = std::make_shared<EndpointProvider>(locationClient, configuration.regionId(), SERVICE_NAME, "ecs-workbench");
+}
+
+Ecs_workbenchClient::~Ecs_workbenchClient()
+{}
+
+Ecs_workbenchClient::GetInstanceRecordConfigOutcome Ecs_workbenchClient::getInstanceRecordConfig(const GetInstanceRecordConfigRequest &request) const
+{
+	auto endpointOutcome = endpointProvider_->getEndpoint();
+	if (!endpointOutcome.isSuccess())
+		return GetInstanceRecordConfigOutcome(endpointOutcome.error());
+
+	auto outcome = makeRequest(endpointOutcome.result(), request);
+
+	if (outcome.isSuccess())
+		return GetInstanceRecordConfigOutcome(GetInstanceRecordConfigResult(outcome.result()));
+	else
+		return GetInstanceRecordConfigOutcome(outcome.error());
+}
+
+void Ecs_workbenchClient::getInstanceRecordConfigAsync(const GetInstanceRecordConfigRequest& request, const GetInstanceRecordConfigAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context) const
+{
+	auto fn = [this, request, handler, context]()
+	{
+		handler(this, request, getInstanceRecordConfig(request), context);
+	};
+
+	asyncExecute(new Runnable(fn));
+}
+
+Ecs_workbenchClient::GetInstanceRecordConfigOutcomeCallable Ecs_workbenchClient::getInstanceRecordConfigCallable(const GetInstanceRecordConfigRequest &request) const
+{
+	auto task = std::make_shared<std::packaged_task<GetInstanceRecordConfigOutcome()>>(
+			[this, request]()
+			{
+			return this->getInstanceRecordConfig(request);
+			});
+
+	asyncExecute(new Runnable([task]() { (*task)(); }));
+	return task->get_future();
+}
+
+Ecs_workbenchClient::ListInstanceRecordsOutcome Ecs_workbenchClient::listInstanceRecords(const ListInstanceRecordsRequest &request) const
+{
+	auto endpointOutcome = endpointProvider_->getEndpoint();
+	if (!endpointOutcome.isSuccess())
+		return ListInstanceRecordsOutcome(endpointOutcome.error());
+
+	auto outcome = makeRequest(endpointOutcome.result(), request);
+
+	if (outcome.isSuccess())
+		return ListInstanceRecordsOutcome(ListInstanceRecordsResult(outcome.result()));
+	else
+		return ListInstanceRecordsOutcome(outcome.error());
+}
+
+void Ecs_workbenchClient::listInstanceRecordsAsync(const ListInstanceRecordsRequest& request, const ListInstanceRecordsAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context) const
+{
+	auto fn = [this, request, handler, context]()
+	{
+		handler(this, request, listInstanceRecords(request), context);
+	};
+
+	asyncExecute(new Runnable(fn));
+}
+
+Ecs_workbenchClient::ListInstanceRecordsOutcomeCallable Ecs_workbenchClient::listInstanceRecordsCallable(const ListInstanceRecordsRequest &request) const
+{
+	auto task = std::make_shared<std::packaged_task<ListInstanceRecordsOutcome()>>(
+			[this, request]()
+			{
+			return this->listInstanceRecords(request);
+			});
+
+	asyncExecute(new Runnable([task]() { (*task)(); }));
+	return task->get_future();
+}
+
+Ecs_workbenchClient::LoginInstanceOutcome Ecs_workbenchClient::loginInstance(const LoginInstanceRequest &request) const
+{
+	auto endpointOutcome = endpointProvider_->getEndpoint();
+	if (!endpointOutcome.isSuccess())
+		return LoginInstanceOutcome(endpointOutcome.error());
+
+	auto outcome = makeRequest(endpointOutcome.result(), request);
+
+	if (outcome.isSuccess())
+		return LoginInstanceOutcome(LoginInstanceResult(outcome.result()));
+	else
+		return LoginInstanceOutcome(outcome.error());
+}
+
+void Ecs_workbenchClient::loginInstanceAsync(const LoginInstanceRequest& request, const LoginInstanceAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context) const
+{
+	auto fn = [this, request, handler, context]()
+	{
+		handler(this, request, loginInstance(request), context);
+	};
+
+	asyncExecute(new Runnable(fn));
+}
+
+Ecs_workbenchClient::LoginInstanceOutcomeCallable Ecs_workbenchClient::loginInstanceCallable(const LoginInstanceRequest &request) const
+{
+	auto task = std::make_shared<std::packaged_task<LoginInstanceOutcome()>>(
+			[this, request]()
+			{
+			return this->loginInstance(request);
+			});
+
+	asyncExecute(new Runnable([task]() { (*task)(); }));
+	return task->get_future();
+}
+
+Ecs_workbenchClient::SetInstanceRecordConfigOutcome Ecs_workbenchClient::setInstanceRecordConfig(const SetInstanceRecordConfigRequest &request) const
+{
+	auto endpointOutcome = endpointProvider_->getEndpoint();
+	if (!endpointOutcome.isSuccess())
+		return SetInstanceRecordConfigOutcome(endpointOutcome.error());
+
+	auto outcome = makeRequest(endpointOutcome.result(), request);
+
+	if (outcome.isSuccess())
+		return SetInstanceRecordConfigOutcome(SetInstanceRecordConfigResult(outcome.result()));
+	else
+		return SetInstanceRecordConfigOutcome(outcome.error());
+}
+
+void Ecs_workbenchClient::setInstanceRecordConfigAsync(const SetInstanceRecordConfigRequest& request, const SetInstanceRecordConfigAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context) const
+{
+	auto fn = [this, request, handler, context]()
+	{
+		handler(this, request, setInstanceRecordConfig(request), context);
+	};
+
+	asyncExecute(new Runnable(fn));
+}
+
+Ecs_workbenchClient::SetInstanceRecordConfigOutcomeCallable Ecs_workbenchClient::setInstanceRecordConfigCallable(const SetInstanceRecordConfigRequest &request) const
+{
+	auto task = std::make_shared<std::packaged_task<SetInstanceRecordConfigOutcome()>>(
+			[this, request]()
+			{
+			return this->setInstanceRecordConfig(request);
+			});
+
+	asyncExecute(new Runnable([task]() { (*task)(); }));
+	return task->get_future();
+}
+
+Ecs_workbenchClient::ViewInstanceRecordsOutcome Ecs_workbenchClient::viewInstanceRecords(const ViewInstanceRecordsRequest &request) const
+{
+	auto endpointOutcome = endpointProvider_->getEndpoint();
+	if (!endpointOutcome.isSuccess())
+		return ViewInstanceRecordsOutcome(endpointOutcome.error());
+
+	auto outcome = makeRequest(endpointOutcome.result(), request);
+
+	if (outcome.isSuccess())
+		return ViewInstanceRecordsOutcome(ViewInstanceRecordsResult(outcome.result()));
+	else
+		return ViewInstanceRecordsOutcome(outcome.error());
+}
+
+void Ecs_workbenchClient::viewInstanceRecordsAsync(const ViewInstanceRecordsRequest& request, const ViewInstanceRecordsAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context) const
+{
+	auto fn = [this, request, handler, context]()
+	{
+		handler(this, request, viewInstanceRecords(request), context);
+	};
+
+	asyncExecute(new Runnable(fn));
+}
+
+Ecs_workbenchClient::ViewInstanceRecordsOutcomeCallable Ecs_workbenchClient::viewInstanceRecordsCallable(const ViewInstanceRecordsRequest &request) const
+{
+	auto task = std::make_shared<std::packaged_task<ViewInstanceRecordsOutcome()>>(
+			[this, request]()
+			{
+			return this->viewInstanceRecords(request);
+			});
+
+	asyncExecute(new Runnable([task]() { (*task)(); }));
+	return task->get_future();
+}
+

+ 45 - 0
ecs-workbench/src/model/GetInstanceRecordConfigRequest.cc

@@ -0,0 +1,45 @@
+/*
+ * 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/ecs-workbench/model/GetInstanceRecordConfigRequest.h>
+
+using AlibabaCloud::Ecs_workbench::Model::GetInstanceRecordConfigRequest;
+
+GetInstanceRecordConfigRequest::GetInstanceRecordConfigRequest()
+    : RpcServiceRequest("ecs-workbench", "2022-02-20", "GetInstanceRecordConfig") {
+  setMethod(HttpRequest::Method::Post);
+}
+
+GetInstanceRecordConfigRequest::~GetInstanceRecordConfigRequest() {}
+
+std::string GetInstanceRecordConfigRequest::getInstanceId() const {
+  return instanceId_;
+}
+
+void GetInstanceRecordConfigRequest::setInstanceId(const std::string &instanceId) {
+  instanceId_ = instanceId;
+  setBodyParameter(std::string("InstanceId"), instanceId);
+}
+
+std::string GetInstanceRecordConfigRequest::getRegionId() const {
+  return regionId_;
+}
+
+void GetInstanceRecordConfigRequest::setRegionId(const std::string &regionId) {
+  regionId_ = regionId;
+  setBodyParameter(std::string("RegionId"), regionId);
+}
+

+ 79 - 0
ecs-workbench/src/model/GetInstanceRecordConfigResult.cc

@@ -0,0 +1,79 @@
+/*
+ * 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/ecs-workbench/model/GetInstanceRecordConfigResult.h>
+#include <json/json.h>
+
+using namespace AlibabaCloud::Ecs_workbench;
+using namespace AlibabaCloud::Ecs_workbench::Model;
+
+GetInstanceRecordConfigResult::GetInstanceRecordConfigResult() :
+	ServiceResult()
+{}
+
+GetInstanceRecordConfigResult::GetInstanceRecordConfigResult(const std::string &payload) :
+	ServiceResult()
+{
+	parse(payload);
+}
+
+GetInstanceRecordConfigResult::~GetInstanceRecordConfigResult()
+{}
+
+void GetInstanceRecordConfigResult::parse(const std::string &payload)
+{
+	Json::Reader reader;
+	Json::Value value;
+	reader.parse(payload, value);
+	setRequestId(value["RequestId"].asString());
+	auto rootNode = value["Root"];
+	if(!rootNode["InstanceId"].isNull())
+		root_.instanceId = rootNode["InstanceId"].asString();
+	if(!rootNode["ParentId"].isNull())
+		root_.parentId = rootNode["ParentId"].asString();
+	if(!rootNode["RecordStorageTarget"].isNull())
+		root_.recordStorageTarget = rootNode["RecordStorageTarget"].asString();
+	if(!rootNode["ExpirationDays"].isNull())
+		root_.expirationDays = std::stoi(rootNode["ExpirationDays"].asString());
+	if(!value["Success"].isNull())
+		success_ = value["Success"].asString() == "true";
+	if(!value["Code"].isNull())
+		code_ = value["Code"].asString();
+	if(!value["Message"].isNull())
+		message_ = value["Message"].asString();
+
+}
+
+GetInstanceRecordConfigResult::Root GetInstanceRecordConfigResult::getRoot()const
+{
+	return root_;
+}
+
+std::string GetInstanceRecordConfigResult::getMessage()const
+{
+	return message_;
+}
+
+std::string GetInstanceRecordConfigResult::getCode()const
+{
+	return code_;
+}
+
+bool GetInstanceRecordConfigResult::getSuccess()const
+{
+	return success_;
+}
+

+ 63 - 0
ecs-workbench/src/model/ListInstanceRecordsRequest.cc

@@ -0,0 +1,63 @@
+/*
+ * 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/ecs-workbench/model/ListInstanceRecordsRequest.h>
+
+using AlibabaCloud::Ecs_workbench::Model::ListInstanceRecordsRequest;
+
+ListInstanceRecordsRequest::ListInstanceRecordsRequest()
+    : RpcServiceRequest("ecs-workbench", "2022-02-20", "ListInstanceRecords") {
+  setMethod(HttpRequest::Method::Post);
+}
+
+ListInstanceRecordsRequest::~ListInstanceRecordsRequest() {}
+
+int ListInstanceRecordsRequest::getPageNumber() const {
+  return pageNumber_;
+}
+
+void ListInstanceRecordsRequest::setPageNumber(int pageNumber) {
+  pageNumber_ = pageNumber;
+  setBodyParameter(std::string("PageNumber"), std::to_string(pageNumber));
+}
+
+std::string ListInstanceRecordsRequest::getInstanceId() const {
+  return instanceId_;
+}
+
+void ListInstanceRecordsRequest::setInstanceId(const std::string &instanceId) {
+  instanceId_ = instanceId;
+  setBodyParameter(std::string("InstanceId"), instanceId);
+}
+
+std::string ListInstanceRecordsRequest::getRegionId() const {
+  return regionId_;
+}
+
+void ListInstanceRecordsRequest::setRegionId(const std::string &regionId) {
+  regionId_ = regionId;
+  setBodyParameter(std::string("RegionId"), regionId);
+}
+
+int ListInstanceRecordsRequest::getPageSize() const {
+  return pageSize_;
+}
+
+void ListInstanceRecordsRequest::setPageSize(int pageSize) {
+  pageSize_ = pageSize;
+  setBodyParameter(std::string("PageSize"), std::to_string(pageSize));
+}
+

+ 95 - 0
ecs-workbench/src/model/ListInstanceRecordsResult.cc

@@ -0,0 +1,95 @@
+/*
+ * 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/ecs-workbench/model/ListInstanceRecordsResult.h>
+#include <json/json.h>
+
+using namespace AlibabaCloud::Ecs_workbench;
+using namespace AlibabaCloud::Ecs_workbench::Model;
+
+ListInstanceRecordsResult::ListInstanceRecordsResult() :
+	ServiceResult()
+{}
+
+ListInstanceRecordsResult::ListInstanceRecordsResult(const std::string &payload) :
+	ServiceResult()
+{
+	parse(payload);
+}
+
+ListInstanceRecordsResult::~ListInstanceRecordsResult()
+{}
+
+void ListInstanceRecordsResult::parse(const std::string &payload)
+{
+	Json::Reader reader;
+	Json::Value value;
+	reader.parse(payload, value);
+	setRequestId(value["RequestId"].asString());
+	auto rootNode = value["Root"];
+	if(!rootNode["TotalCount"].isNull())
+		root_.totalCount = std::stoi(rootNode["TotalCount"].asString());
+	auto allRecordListNode = rootNode["RecordList"]["RecordListItem"];
+	for (auto rootNodeRecordListRecordListItem : allRecordListNode)
+	{
+		Root::RecordListItem recordListItemObject;
+		if(!rootNodeRecordListRecordListItem["GmtCreate"].isNull())
+			recordListItemObject.gmtCreate = rootNodeRecordListRecordListItem["GmtCreate"].asString();
+		if(!rootNodeRecordListRecordListItem["AccountId"].isNull())
+			recordListItemObject.accountId = std::stol(rootNodeRecordListRecordListItem["AccountId"].asString());
+		if(!rootNodeRecordListRecordListItem["InstanceId"].isNull())
+			recordListItemObject.instanceId = rootNodeRecordListRecordListItem["InstanceId"].asString();
+		if(!rootNodeRecordListRecordListItem["TerminalSessionToken"].isNull())
+			recordListItemObject.terminalSessionToken = rootNodeRecordListRecordListItem["TerminalSessionToken"].asString();
+		if(!rootNodeRecordListRecordListItem["RecordDurationMillis"].isNull())
+			recordListItemObject.recordDurationMillis = std::stol(rootNodeRecordListRecordListItem["RecordDurationMillis"].asString());
+		if(!rootNodeRecordListRecordListItem["Status"].isNull())
+			recordListItemObject.status = rootNodeRecordListRecordListItem["Status"].asString();
+		if(!rootNodeRecordListRecordListItem["ExpireTime"].isNull())
+			recordListItemObject.expireTime = rootNodeRecordListRecordListItem["ExpireTime"].asString();
+		if(!rootNodeRecordListRecordListItem["InstanceRecordUrl"].isNull())
+			recordListItemObject.instanceRecordUrl = rootNodeRecordListRecordListItem["InstanceRecordUrl"].asString();
+		root_.recordList.push_back(recordListItemObject);
+	}
+	if(!value["Success"].isNull())
+		success_ = value["Success"].asString() == "true";
+	if(!value["Code"].isNull())
+		code_ = value["Code"].asString();
+	if(!value["Message"].isNull())
+		message_ = value["Message"].asString();
+
+}
+
+ListInstanceRecordsResult::Root ListInstanceRecordsResult::getRoot()const
+{
+	return root_;
+}
+
+std::string ListInstanceRecordsResult::getMessage()const
+{
+	return message_;
+}
+
+std::string ListInstanceRecordsResult::getCode()const
+{
+	return code_;
+}
+
+bool ListInstanceRecordsResult::getSuccess()const
+{
+	return success_;
+}
+

+ 104 - 0
ecs-workbench/src/model/LoginInstanceRequest.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/ecs-workbench/model/LoginInstanceRequest.h>
+
+using AlibabaCloud::Ecs_workbench::Model::LoginInstanceRequest;
+
+LoginInstanceRequest::LoginInstanceRequest()
+    : RpcServiceRequest("ecs-workbench", "2022-02-20", "LoginInstance") {
+  setMethod(HttpRequest::Method::Post);
+}
+
+LoginInstanceRequest::~LoginInstanceRequest() {}
+
+LoginInstanceRequest::PartnerInfo LoginInstanceRequest::getPartnerInfo() const {
+  return partnerInfo_;
+}
+
+void LoginInstanceRequest::setPartnerInfo(const LoginInstanceRequest::PartnerInfo &partnerInfo) {
+  partnerInfo_ = partnerInfo;
+  setParameter(std::string("PartnerInfo") + ".PartnerName", partnerInfo.partnerName);
+  setParameter(std::string("PartnerInfo") + ".PartnerId", partnerInfo.partnerId);
+}
+
+LoginInstanceRequest::InstanceLoginInfo LoginInstanceRequest::getInstanceLoginInfo() const {
+  return instanceLoginInfo_;
+}
+
+void LoginInstanceRequest::setInstanceLoginInfo(const LoginInstanceRequest::InstanceLoginInfo &instanceLoginInfo) {
+  instanceLoginInfo_ = instanceLoginInfo;
+  setParameter(std::string("InstanceLoginInfo") + ".ExpireTime", instanceLoginInfo.expireTime);
+  setParameter(std::string("InstanceLoginInfo") + ".LoginByInstanceShortcut", instanceLoginInfo.loginByInstanceShortcut ? "true" : "false");
+  setParameter(std::string("InstanceLoginInfo") + ".Certificate", instanceLoginInfo.certificate);
+  setParameter(std::string("InstanceLoginInfo") + ".AuthenticationType", instanceLoginInfo.authenticationType);
+  setParameter(std::string("InstanceLoginInfo") + ".DockerExec", instanceLoginInfo.dockerExec);
+  setParameter(std::string("InstanceLoginInfo") + ".ShortcutToken", instanceLoginInfo.shortcutToken);
+  setParameter(std::string("InstanceLoginInfo") + ".ResourceGroupId", instanceLoginInfo.resourceGroupId);
+  setParameter(std::string("InstanceLoginInfo") + ".Protocol", instanceLoginInfo.protocol);
+  setParameter(std::string("InstanceLoginInfo") + ".Password", instanceLoginInfo.password);
+  setParameter(std::string("InstanceLoginInfo") + ".LoginByInstanceCredential", instanceLoginInfo.loginByInstanceCredential ? "true" : "false");
+  setParameter(std::string("InstanceLoginInfo") + ".InstanceId", instanceLoginInfo.instanceId);
+  setParameter(std::string("InstanceLoginInfo") + ".RegionId", instanceLoginInfo.regionId);
+  setParameter(std::string("InstanceLoginInfo") + ".Port", std::to_string(instanceLoginInfo.port));
+  setParameter(std::string("InstanceLoginInfo") + ".VpcId", instanceLoginInfo.vpcId);
+  setParameter(std::string("InstanceLoginInfo") + ".Host", instanceLoginInfo.host);
+  setParameter(std::string("InstanceLoginInfo") + ".Options.OperationDisableSeconds", std::to_string(instanceLoginInfo.options.operationDisableSeconds));
+  setParameter(std::string("InstanceLoginInfo") + ".Options.NotificationRecipientUrl", instanceLoginInfo.options.notificationRecipientUrl);
+  setParameter(std::string("InstanceLoginInfo") + ".Options.SessionControl", instanceLoginInfo.options.sessionControl);
+  setParameter(std::string("InstanceLoginInfo") + ".Options.VideoFreezeSeconds", std::to_string(instanceLoginInfo.options.videoFreezeSeconds));
+  for(auto const &iter1 : instanceLoginInfo.options.containerInfo.headers) {
+    setParameter(std::string("InstanceLoginInfo") + ".Options.ContainerInfo.Headers." + iter1.first, iter1.second);
+  }
+  setParameter(std::string("InstanceLoginInfo") + ".Options.ContainerInfo.Endpoint", instanceLoginInfo.options.containerInfo.endpoint);
+  setParameter(std::string("InstanceLoginInfo") + ".Options.ContainerInfo.ContainerName", instanceLoginInfo.options.containerInfo.containerName);
+  setParameter(std::string("InstanceLoginInfo") + ".Options.ContainerInfo.ClusterName", instanceLoginInfo.options.containerInfo.clusterName);
+  setParameter(std::string("InstanceLoginInfo") + ".Options.ContainerInfo.Namespace", instanceLoginInfo.options.containerInfo._namespace);
+  setParameter(std::string("InstanceLoginInfo") + ".Options.ContainerInfo.PodName", instanceLoginInfo.options.containerInfo.podName);
+  setParameter(std::string("InstanceLoginInfo") + ".Options.ContainerInfo.ClusterId", instanceLoginInfo.options.containerInfo.clusterId);
+  setParameter(std::string("InstanceLoginInfo") + ".Options.ContainerInfo.Deployment", instanceLoginInfo.options.containerInfo.deployment);
+  setParameter(std::string("InstanceLoginInfo") + ".Options.NotificationRetryIntervalSeconds", std::to_string(instanceLoginInfo.options.notificationRetryIntervalSeconds));
+  setParameter(std::string("InstanceLoginInfo") + ".Options.AudioMuteSeconds", std::to_string(instanceLoginInfo.options.audioMuteSeconds));
+  setParameter(std::string("InstanceLoginInfo") + ".Options.FixedHeight", std::to_string(instanceLoginInfo.options.fixedHeight));
+  setParameter(std::string("InstanceLoginInfo") + ".Options.FixedWidth", std::to_string(instanceLoginInfo.options.fixedWidth));
+  setParameter(std::string("InstanceLoginInfo") + ".Options.NotificationEventTypes", instanceLoginInfo.options.notificationEventTypes);
+  setParameter(std::string("InstanceLoginInfo") + ".Options.NotificationRetryLimit", std::to_string(instanceLoginInfo.options.notificationRetryLimit));
+  setParameter(std::string("InstanceLoginInfo") + ".InstanceType", instanceLoginInfo.instanceType);
+  setParameter(std::string("InstanceLoginInfo") + ".DockerContainerName", instanceLoginInfo.dockerContainerName);
+  setParameter(std::string("InstanceLoginInfo") + ".PassPhrase", instanceLoginInfo.passPhrase);
+  setParameter(std::string("InstanceLoginInfo") + ".CredentialToken", instanceLoginInfo.credentialToken);
+  setParameter(std::string("InstanceLoginInfo") + ".DurationSeconds", std::to_string(instanceLoginInfo.durationSeconds));
+  setParameter(std::string("InstanceLoginInfo") + ".NetworkAccessMode", instanceLoginInfo.networkAccessMode);
+  setParameter(std::string("InstanceLoginInfo") + ".Username", instanceLoginInfo.username);
+}
+
+LoginInstanceRequest::UserAccount LoginInstanceRequest::getUserAccount() const {
+  return userAccount_;
+}
+
+void LoginInstanceRequest::setUserAccount(const LoginInstanceRequest::UserAccount &userAccount) {
+  userAccount_ = userAccount;
+  setParameter(std::string("UserAccount") + ".AccountId", std::to_string(userAccount.accountId));
+  setParameter(std::string("UserAccount") + ".EmpId", userAccount.empId);
+  setParameter(std::string("UserAccount") + ".ExpireTime", userAccount.expireTime);
+  setParameter(std::string("UserAccount") + ".LoginName", userAccount.loginName);
+  setParameter(std::string("UserAccount") + ".Options.LoginLimit", std::to_string(userAccount.options.loginLimit));
+  setParameter(std::string("UserAccount") + ".AccountStructure", userAccount.accountStructure);
+  setParameter(std::string("UserAccount") + ".DurationSeconds", std::to_string(userAccount.durationSeconds));
+  setParameter(std::string("UserAccount") + ".ParentId", std::to_string(userAccount.parentId));
+  setParameter(std::string("UserAccount") + ".AccountPlatform", userAccount.accountPlatform);
+}
+

+ 94 - 0
ecs-workbench/src/model/LoginInstanceResult.cc

@@ -0,0 +1,94 @@
+/*
+ * 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/ecs-workbench/model/LoginInstanceResult.h>
+#include <json/json.h>
+
+using namespace AlibabaCloud::Ecs_workbench;
+using namespace AlibabaCloud::Ecs_workbench::Model;
+
+LoginInstanceResult::LoginInstanceResult() :
+	ServiceResult()
+{}
+
+LoginInstanceResult::LoginInstanceResult(const std::string &payload) :
+	ServiceResult()
+{
+	parse(payload);
+}
+
+LoginInstanceResult::~LoginInstanceResult()
+{}
+
+void LoginInstanceResult::parse(const std::string &payload)
+{
+	Json::Reader reader;
+	Json::Value value;
+	reader.parse(payload, value);
+	setRequestId(value["RequestId"].asString());
+	auto rootNode = value["Root"];
+	auto allInstanceLoginInfoListNode = rootNode["InstanceLoginInfoList"]["instanceLoginInfoListItem"];
+	for (auto rootNodeInstanceLoginInfoListinstanceLoginInfoListItem : allInstanceLoginInfoListNode)
+	{
+		Root::InstanceLoginInfoListItem instanceLoginInfoListItemObject;
+		if(!rootNodeInstanceLoginInfoListinstanceLoginInfoListItem["InstanceId"].isNull())
+			instanceLoginInfoListItemObject.instanceId = rootNodeInstanceLoginInfoListinstanceLoginInfoListItem["InstanceId"].asString();
+		if(!rootNodeInstanceLoginInfoListinstanceLoginInfoListItem["InstanceLoginToken"].isNull())
+			instanceLoginInfoListItemObject.instanceLoginToken = rootNodeInstanceLoginInfoListinstanceLoginInfoListItem["InstanceLoginToken"].asString();
+		if(!rootNodeInstanceLoginInfoListinstanceLoginInfoListItem["LoginSuccess"].isNull())
+			instanceLoginInfoListItemObject.loginSuccess = rootNodeInstanceLoginInfoListinstanceLoginInfoListItem["LoginSuccess"].asString() == "true";
+		auto instanceLoginViewNode = value["InstanceLoginView"];
+		if(!instanceLoginViewNode["DefaultViewUrl"].isNull())
+			instanceLoginInfoListItemObject.instanceLoginView.defaultViewUrl = instanceLoginViewNode["DefaultViewUrl"].asString();
+		root_.instanceLoginInfoList.push_back(instanceLoginInfoListItemObject);
+	}
+	auto disposableAccountNode = rootNode["DisposableAccount"];
+	if(!disposableAccountNode["LoginUrl"].isNull())
+		root_.disposableAccount.loginUrl = disposableAccountNode["LoginUrl"].asString();
+	if(!disposableAccountNode["LoginFormActionUrl"].isNull())
+		root_.disposableAccount.loginFormActionUrl = disposableAccountNode["LoginFormActionUrl"].asString();
+	auto sessionControlNode = rootNode["SessionControl"];
+	if(!sessionControlNode["BaseUrl"].isNull())
+		root_.sessionControl.baseUrl = sessionControlNode["BaseUrl"].asString();
+	if(!value["Success"].isNull())
+		success_ = value["Success"].asString();
+	if(!value["Code"].isNull())
+		code_ = value["Code"].asString();
+	if(!value["Message"].isNull())
+		message_ = value["Message"].asString();
+
+}
+
+LoginInstanceResult::Root LoginInstanceResult::getRoot()const
+{
+	return root_;
+}
+
+std::string LoginInstanceResult::getMessage()const
+{
+	return message_;
+}
+
+std::string LoginInstanceResult::getCode()const
+{
+	return code_;
+}
+
+std::string LoginInstanceResult::getSuccess()const
+{
+	return success_;
+}
+

+ 72 - 0
ecs-workbench/src/model/SetInstanceRecordConfigRequest.cc

@@ -0,0 +1,72 @@
+/*
+ * 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/ecs-workbench/model/SetInstanceRecordConfigRequest.h>
+
+using AlibabaCloud::Ecs_workbench::Model::SetInstanceRecordConfigRequest;
+
+SetInstanceRecordConfigRequest::SetInstanceRecordConfigRequest()
+    : RpcServiceRequest("ecs-workbench", "2022-02-20", "SetInstanceRecordConfig") {
+  setMethod(HttpRequest::Method::Post);
+}
+
+SetInstanceRecordConfigRequest::~SetInstanceRecordConfigRequest() {}
+
+bool SetInstanceRecordConfigRequest::getEnabled() const {
+  return enabled_;
+}
+
+void SetInstanceRecordConfigRequest::setEnabled(bool enabled) {
+  enabled_ = enabled;
+  setBodyParameter(std::string("Enabled"), enabled ? "true" : "false");
+}
+
+std::string SetInstanceRecordConfigRequest::getRecordStorageTarget() const {
+  return recordStorageTarget_;
+}
+
+void SetInstanceRecordConfigRequest::setRecordStorageTarget(const std::string &recordStorageTarget) {
+  recordStorageTarget_ = recordStorageTarget;
+  setBodyParameter(std::string("RecordStorageTarget"), recordStorageTarget);
+}
+
+std::string SetInstanceRecordConfigRequest::getInstanceId() const {
+  return instanceId_;
+}
+
+void SetInstanceRecordConfigRequest::setInstanceId(const std::string &instanceId) {
+  instanceId_ = instanceId;
+  setBodyParameter(std::string("InstanceId"), instanceId);
+}
+
+std::string SetInstanceRecordConfigRequest::getRegionId() const {
+  return regionId_;
+}
+
+void SetInstanceRecordConfigRequest::setRegionId(const std::string &regionId) {
+  regionId_ = regionId;
+  setBodyParameter(std::string("RegionId"), regionId);
+}
+
+int SetInstanceRecordConfigRequest::getExpirationDays() const {
+  return expirationDays_;
+}
+
+void SetInstanceRecordConfigRequest::setExpirationDays(int expirationDays) {
+  expirationDays_ = expirationDays;
+  setBodyParameter(std::string("ExpirationDays"), std::to_string(expirationDays));
+}
+

+ 72 - 0
ecs-workbench/src/model/SetInstanceRecordConfigResult.cc

@@ -0,0 +1,72 @@
+/*
+ * 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/ecs-workbench/model/SetInstanceRecordConfigResult.h>
+#include <json/json.h>
+
+using namespace AlibabaCloud::Ecs_workbench;
+using namespace AlibabaCloud::Ecs_workbench::Model;
+
+SetInstanceRecordConfigResult::SetInstanceRecordConfigResult() :
+	ServiceResult()
+{}
+
+SetInstanceRecordConfigResult::SetInstanceRecordConfigResult(const std::string &payload) :
+	ServiceResult()
+{
+	parse(payload);
+}
+
+SetInstanceRecordConfigResult::~SetInstanceRecordConfigResult()
+{}
+
+void SetInstanceRecordConfigResult::parse(const std::string &payload)
+{
+	Json::Reader reader;
+	Json::Value value;
+	reader.parse(payload, value);
+	setRequestId(value["RequestId"].asString());
+	if(!value["Success"].isNull())
+		success_ = value["Success"].asString() == "true";
+	if(!value["Code"].isNull())
+		code_ = value["Code"].asString();
+	if(!value["Root"].isNull())
+		root_ = value["Root"].asString() == "true";
+	if(!value["Message"].isNull())
+		message_ = value["Message"].asString();
+
+}
+
+bool SetInstanceRecordConfigResult::getRoot()const
+{
+	return root_;
+}
+
+std::string SetInstanceRecordConfigResult::getMessage()const
+{
+	return message_;
+}
+
+std::string SetInstanceRecordConfigResult::getCode()const
+{
+	return code_;
+}
+
+bool SetInstanceRecordConfigResult::getSuccess()const
+{
+	return success_;
+}
+

+ 54 - 0
ecs-workbench/src/model/ViewInstanceRecordsRequest.cc

@@ -0,0 +1,54 @@
+/*
+ * 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/ecs-workbench/model/ViewInstanceRecordsRequest.h>
+
+using AlibabaCloud::Ecs_workbench::Model::ViewInstanceRecordsRequest;
+
+ViewInstanceRecordsRequest::ViewInstanceRecordsRequest()
+    : RpcServiceRequest("ecs-workbench", "2022-02-20", "ViewInstanceRecords") {
+  setMethod(HttpRequest::Method::Post);
+}
+
+ViewInstanceRecordsRequest::~ViewInstanceRecordsRequest() {}
+
+std::string ViewInstanceRecordsRequest::getInstanceId() const {
+  return instanceId_;
+}
+
+void ViewInstanceRecordsRequest::setInstanceId(const std::string &instanceId) {
+  instanceId_ = instanceId;
+  setBodyParameter(std::string("InstanceId"), instanceId);
+}
+
+std::string ViewInstanceRecordsRequest::getRegionId() const {
+  return regionId_;
+}
+
+void ViewInstanceRecordsRequest::setRegionId(const std::string &regionId) {
+  regionId_ = regionId;
+  setBodyParameter(std::string("RegionId"), regionId);
+}
+
+std::string ViewInstanceRecordsRequest::getTerminalSessionToken() const {
+  return terminalSessionToken_;
+}
+
+void ViewInstanceRecordsRequest::setTerminalSessionToken(const std::string &terminalSessionToken) {
+  terminalSessionToken_ = terminalSessionToken;
+  setBodyParameter(std::string("TerminalSessionToken"), terminalSessionToken);
+}
+

+ 72 - 0
ecs-workbench/src/model/ViewInstanceRecordsResult.cc

@@ -0,0 +1,72 @@
+/*
+ * 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/ecs-workbench/model/ViewInstanceRecordsResult.h>
+#include <json/json.h>
+
+using namespace AlibabaCloud::Ecs_workbench;
+using namespace AlibabaCloud::Ecs_workbench::Model;
+
+ViewInstanceRecordsResult::ViewInstanceRecordsResult() :
+	ServiceResult()
+{}
+
+ViewInstanceRecordsResult::ViewInstanceRecordsResult(const std::string &payload) :
+	ServiceResult()
+{
+	parse(payload);
+}
+
+ViewInstanceRecordsResult::~ViewInstanceRecordsResult()
+{}
+
+void ViewInstanceRecordsResult::parse(const std::string &payload)
+{
+	Json::Reader reader;
+	Json::Value value;
+	reader.parse(payload, value);
+	setRequestId(value["RequestId"].asString());
+	if(!value["Success"].isNull())
+		success_ = value["Success"].asString() == "true";
+	if(!value["Code"].isNull())
+		code_ = value["Code"].asString();
+	if(!value["Root"].isNull())
+		root_ = value["Root"].asString() == "true";
+	if(!value["Message"].isNull())
+		message_ = value["Message"].asString();
+
+}
+
+bool ViewInstanceRecordsResult::getRoot()const
+{
+	return root_;
+}
+
+std::string ViewInstanceRecordsResult::getMessage()const
+{
+	return message_;
+}
+
+std::string ViewInstanceRecordsResult::getCode()const
+{
+	return code_;
+}
+
+bool ViewInstanceRecordsResult::getSuccess()const
+{
+	return success_;
+}
+