# -*- coding: utf8 -*-
# Copyright (c) 2017-2021 THL A29 Limited, a Tencent company. 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.
import json
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.common.abstract_client import AbstractClient
from tencentcloud.tic.v20201117 import models
class TicClient(AbstractClient):
_apiVersion = '2020-11-17'
_endpoint = 'tic.tencentcloudapi.com'
_service = 'tic'
def ApplyStack(self, request):
"""本接口(ApplyStack)用于触发资源栈下某个版本的Apply事件。
- 当版本处于PLAN_IN_PROGRESS或APPLY_IN_PROGRESS状态时,将无法再执行本操作
- 当版本处于APPLY_COMPLETED状态时,本操作无法执行
:param request: Request instance for ApplyStack.
:type request: :class:`tencentcloud.tic.v20201117.models.ApplyStackRequest`
:rtype: :class:`tencentcloud.tic.v20201117.models.ApplyStackResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("ApplyStack", params, headers=headers)
response = json.loads(body)
model = models.ApplyStackResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def CreateStack(self, request):
"""本接口(CreateStack)用于通过传递一个COS的terraform zip模版URL来创建一个资源栈。创建资源栈后仍需要用户调用对应的plan, apply, destory执行对应的事件。
:param request: Request instance for CreateStack.
:type request: :class:`tencentcloud.tic.v20201117.models.CreateStackRequest`
:rtype: :class:`tencentcloud.tic.v20201117.models.CreateStackResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("CreateStack", params, headers=headers)
response = json.loads(body)
model = models.CreateStackResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def CreateStackVersion(self, request):
"""本接口(CreateStackVersion)用于给资源栈新增一个HCL模版版本,仅限COS链接,且为zip格式。
:param request: Request instance for CreateStackVersion.
:type request: :class:`tencentcloud.tic.v20201117.models.CreateStackVersionRequest`
:rtype: :class:`tencentcloud.tic.v20201117.models.CreateStackVersionResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("CreateStackVersion", params, headers=headers)
response = json.loads(body)
model = models.CreateStackVersionResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DeleteStack(self, request):
"""本接口(DeleteStack)用于删除一个资源栈(配置、版本、事件信息)。但不会销毁资源管理的云资源。如果需要销毁资源栈管理的云资源,请调用 DestoryStack 接口销毁云资源。
:param request: Request instance for DeleteStack.
:type request: :class:`tencentcloud.tic.v20201117.models.DeleteStackRequest`
:rtype: :class:`tencentcloud.tic.v20201117.models.DeleteStackResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DeleteStack", params, headers=headers)
response = json.loads(body)
model = models.DeleteStackResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DeleteStackVersion(self, request):
"""本接口(DeleteStackVersion)用于删除一个版本,处于PLAN_IN_PROGRESS和APPLY_IN_PROGRESS状态中的版本无法删除。
:param request: Request instance for DeleteStackVersion.
:type request: :class:`tencentcloud.tic.v20201117.models.DeleteStackVersionRequest`
:rtype: :class:`tencentcloud.tic.v20201117.models.DeleteStackVersionResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DeleteStackVersion", params, headers=headers)
response = json.loads(body)
model = models.DeleteStackVersionResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeStackEvent(self, request):
"""本接口(DescribeStackEvent)用于获取单个事件详情,尤其是可以得到事件的详细控制台输出文本。
:param request: Request instance for DescribeStackEvent.
:type request: :class:`tencentcloud.tic.v20201117.models.DescribeStackEventRequest`
:rtype: :class:`tencentcloud.tic.v20201117.models.DescribeStackEventResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeStackEvent", params, headers=headers)
response = json.loads(body)
model = models.DescribeStackEventResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeStackEvents(self, request):
"""本接口(DescribeStackEvents)用于查看一个或多个事件详细信息。
- 可以根据事件ID过滤感兴趣的事件
- 也可以根据版本ID,资源栈ID,事件类型,事件状态过滤事件,过滤信息详细请见过滤器Filter
- 如果参数为空,返回当前用户一定数量(Limit所指定的数量,默认为20)的事件
:param request: Request instance for DescribeStackEvents.
:type request: :class:`tencentcloud.tic.v20201117.models.DescribeStackEventsRequest`
:rtype: :class:`tencentcloud.tic.v20201117.models.DescribeStackEventsResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeStackEvents", params, headers=headers)
response = json.loads(body)
model = models.DescribeStackEventsResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeStackVersions(self, request):
"""本接口(DescribeStackVersions)用于查询一个或多个版本的详细信息。
- 可以根据版本ID查询感兴趣的版本
- 可以根据版本名字和状态来过滤版本,详见过滤器Filter
- 如果参数为空,返回当前用户一定数量(Limit所指定的数量,默认为20)的版本
:param request: Request instance for DescribeStackVersions.
:type request: :class:`tencentcloud.tic.v20201117.models.DescribeStackVersionsRequest`
:rtype: :class:`tencentcloud.tic.v20201117.models.DescribeStackVersionsResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeStackVersions", params, headers=headers)
response = json.loads(body)
model = models.DescribeStackVersionsResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeStacks(self, request):
"""本接口(DescribeStacks)用于查询一个或多个资源栈的详细信息。
- 可以根据资源栈ID来查询感兴趣的资源栈信息
- 若参数为空,返回当前用户一定数量(Limit所指定的数量,默认为20)的资源栈
:param request: Request instance for DescribeStacks.
:type request: :class:`tencentcloud.tic.v20201117.models.DescribeStacksRequest`
:rtype: :class:`tencentcloud.tic.v20201117.models.DescribeStacksResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeStacks", params, headers=headers)
response = json.loads(body)
model = models.DescribeStacksResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DestroyStack(self, request):
"""本接口(DestroyStack)用于删除资源栈下的某个版本所创建的资源。
:param request: Request instance for DestroyStack.
:type request: :class:`tencentcloud.tic.v20201117.models.DestroyStackRequest`
:rtype: :class:`tencentcloud.tic.v20201117.models.DestroyStackResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DestroyStack", params, headers=headers)
response = json.loads(body)
model = models.DestroyStackResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def PlanStack(self, request):
"""本接口(PlanStack)用于触发资源栈下某个版本的PLAN事件。
- 当版本处于PLAN_IN_PROGRESS或APPLY_IN_PROGRESS状态时,将无法再执行本操作
- 当版本处于APPLY_COMPLETED状态时,本操作无法执行
:param request: Request instance for PlanStack.
:type request: :class:`tencentcloud.tic.v20201117.models.PlanStackRequest`
:rtype: :class:`tencentcloud.tic.v20201117.models.PlanStackResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("PlanStack", params, headers=headers)
response = json.loads(body)
model = models.PlanStackResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def UpdateStack(self, request):
"""本接口(UpdateStack)用于更新资源栈的名称和描述。
:param request: Request instance for UpdateStack.
:type request: :class:`tencentcloud.tic.v20201117.models.UpdateStackRequest`
:rtype: :class:`tencentcloud.tic.v20201117.models.UpdateStackResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("UpdateStack", params, headers=headers)
response = json.loads(body)
model = models.UpdateStackResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def UpdateStackVersion(self, request):
"""本接口(UpdateStackVersion)用于更新一个版本的模版内容,名称或描述,模版仅限COS URL,且为zip格式。
:param request: Request instance for UpdateStackVersion.
:type request: :class:`tencentcloud.tic.v20201117.models.UpdateStackVersionRequest`
:rtype: :class:`tencentcloud.tic.v20201117.models.UpdateStackVersionResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("UpdateStackVersion", params, headers=headers)
response = json.loads(body)
model = models.UpdateStackVersionResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))