# -*- 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.gwlb.v20240906 import models
class GwlbClient(AbstractClient):
_apiVersion = '2024-09-06'
_endpoint = 'gwlb.tencentcloudapi.com'
_service = 'gwlb'
def AssociateTargetGroups(self, request):
"""本接口(AssociateTargetGroups)用来将目标组绑定到负载均衡。
本接口为异步接口,本接口返回成功后需以返回的 RequestID 为入参,调用 DescribeTaskStatus 接口查询本次任务是否成功。
:param request: Request instance for AssociateTargetGroups.
:type request: :class:`tencentcloud.gwlb.v20240906.models.AssociateTargetGroupsRequest`
:rtype: :class:`tencentcloud.gwlb.v20240906.models.AssociateTargetGroupsResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("AssociateTargetGroups", params, headers=headers)
response = json.loads(body)
model = models.AssociateTargetGroupsResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def CreateGatewayLoadBalancer(self, request):
"""本接口(CreateGatewayLoadBalancer)用来创建网关负载均衡实例。为了使用网关负载均衡服务,您必须购买一个或多个网关负载均衡实例。成功调用该接口后,会返回网关负载均衡实例的唯一 ID。
注意:单个账号在每个地域的默认购买配额为:10个。
本接口为异步接口,接口成功返回后,可使用 DescribeGatewayLoadBalancers 接口查询负载均衡实例的状态(如创建中、正常),以确定是否创建成功。
:param request: Request instance for CreateGatewayLoadBalancer.
:type request: :class:`tencentcloud.gwlb.v20240906.models.CreateGatewayLoadBalancerRequest`
:rtype: :class:`tencentcloud.gwlb.v20240906.models.CreateGatewayLoadBalancerResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("CreateGatewayLoadBalancer", params, headers=headers)
response = json.loads(body)
model = models.CreateGatewayLoadBalancerResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def CreateTargetGroup(self, request):
"""创建目标组。该功能正在内测中,如需使用,请通过[工单申请](https://console.cloud.tencent.com/workorder/category?level1_id=6&level2_id=163&source=0&data_title=%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%20LB&step=1)。
:param request: Request instance for CreateTargetGroup.
:type request: :class:`tencentcloud.gwlb.v20240906.models.CreateTargetGroupRequest`
:rtype: :class:`tencentcloud.gwlb.v20240906.models.CreateTargetGroupResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("CreateTargetGroup", params, headers=headers)
response = json.loads(body)
model = models.CreateTargetGroupResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DeleteGatewayLoadBalancer(self, request):
"""DeleteGatewayLoadBalancer 接口用以删除指定的一个或多个网关负载均衡实例。成功删除后,会把网关负载均衡实例与后端服务解绑。
本接口为异步接口,接口返回成功后,需以返回的 RequestId 为入参,调用 DescribeTaskStatus 接口查询本次任务是否成功。
:param request: Request instance for DeleteGatewayLoadBalancer.
:type request: :class:`tencentcloud.gwlb.v20240906.models.DeleteGatewayLoadBalancerRequest`
:rtype: :class:`tencentcloud.gwlb.v20240906.models.DeleteGatewayLoadBalancerResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DeleteGatewayLoadBalancer", params, headers=headers)
response = json.loads(body)
model = models.DeleteGatewayLoadBalancerResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DeleteTargetGroups(self, request):
"""删除目标组
:param request: Request instance for DeleteTargetGroups.
:type request: :class:`tencentcloud.gwlb.v20240906.models.DeleteTargetGroupsRequest`
:rtype: :class:`tencentcloud.gwlb.v20240906.models.DeleteTargetGroupsResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DeleteTargetGroups", params, headers=headers)
response = json.loads(body)
model = models.DeleteTargetGroupsResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DeregisterTargetGroupInstances(self, request):
"""从目标组中解绑服务器。
本接口为异步接口,本接口返回成功后需以返回的 RequestID 为入参,调用 DescribeTaskStatus 接口查询本次任务是否成功。
:param request: Request instance for DeregisterTargetGroupInstances.
:type request: :class:`tencentcloud.gwlb.v20240906.models.DeregisterTargetGroupInstancesRequest`
:rtype: :class:`tencentcloud.gwlb.v20240906.models.DeregisterTargetGroupInstancesResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DeregisterTargetGroupInstances", params, headers=headers)
response = json.loads(body)
model = models.DeregisterTargetGroupInstancesResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeGatewayLoadBalancers(self, request):
"""查询一个地域的网关负载均衡实例列表。
:param request: Request instance for DescribeGatewayLoadBalancers.
:type request: :class:`tencentcloud.gwlb.v20240906.models.DescribeGatewayLoadBalancersRequest`
:rtype: :class:`tencentcloud.gwlb.v20240906.models.DescribeGatewayLoadBalancersResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeGatewayLoadBalancers", params, headers=headers)
response = json.loads(body)
model = models.DescribeGatewayLoadBalancersResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeTargetGroupInstanceStatus(self, request):
"""查询目标组后端服务状态。目前仅支持网关负载均衡类型的目标组支持查询后端服务状态。
:param request: Request instance for DescribeTargetGroupInstanceStatus.
:type request: :class:`tencentcloud.gwlb.v20240906.models.DescribeTargetGroupInstanceStatusRequest`
:rtype: :class:`tencentcloud.gwlb.v20240906.models.DescribeTargetGroupInstanceStatusResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeTargetGroupInstanceStatus", params, headers=headers)
response = json.loads(body)
model = models.DescribeTargetGroupInstanceStatusResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeTargetGroupInstances(self, request):
"""获取目标组绑定的服务器信息。
:param request: Request instance for DescribeTargetGroupInstances.
:type request: :class:`tencentcloud.gwlb.v20240906.models.DescribeTargetGroupInstancesRequest`
:rtype: :class:`tencentcloud.gwlb.v20240906.models.DescribeTargetGroupInstancesResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeTargetGroupInstances", params, headers=headers)
response = json.loads(body)
model = models.DescribeTargetGroupInstancesResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeTargetGroupList(self, request):
"""获取目标组列表
:param request: Request instance for DescribeTargetGroupList.
:type request: :class:`tencentcloud.gwlb.v20240906.models.DescribeTargetGroupListRequest`
:rtype: :class:`tencentcloud.gwlb.v20240906.models.DescribeTargetGroupListResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeTargetGroupList", params, headers=headers)
response = json.loads(body)
model = models.DescribeTargetGroupListResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeTargetGroups(self, request):
"""查询目标组信息
:param request: Request instance for DescribeTargetGroups.
:type request: :class:`tencentcloud.gwlb.v20240906.models.DescribeTargetGroupsRequest`
:rtype: :class:`tencentcloud.gwlb.v20240906.models.DescribeTargetGroupsResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeTargetGroups", params, headers=headers)
response = json.loads(body)
model = models.DescribeTargetGroupsResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeTaskStatus(self, request):
"""本接口用于查询异步任务的执行状态,对于非查询类的接口(创建/删除负载均衡实例等),在接口调用成功后,都需要使用本接口查询任务最终是否执行成功。
:param request: Request instance for DescribeTaskStatus.
:type request: :class:`tencentcloud.gwlb.v20240906.models.DescribeTaskStatusRequest`
:rtype: :class:`tencentcloud.gwlb.v20240906.models.DescribeTaskStatusResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeTaskStatus", params, headers=headers)
response = json.loads(body)
model = models.DescribeTaskStatusResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DisassociateTargetGroups(self, request):
"""解除负载均衡和目标组的关联关系。
本接口为异步接口,本接口返回成功后需以返回的 RequestID 为入参,调用 DescribeTaskStatus 接口查询本次任务是否成功。
:param request: Request instance for DisassociateTargetGroups.
:type request: :class:`tencentcloud.gwlb.v20240906.models.DisassociateTargetGroupsRequest`
:rtype: :class:`tencentcloud.gwlb.v20240906.models.DisassociateTargetGroupsResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DisassociateTargetGroups", params, headers=headers)
response = json.loads(body)
model = models.DisassociateTargetGroupsResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def InquirePriceCreateGatewayLoadBalancer(self, request):
"""InquirePriceCreateGatewayLoadBalancer接口查询创建网关负载均衡的价格。
:param request: Request instance for InquirePriceCreateGatewayLoadBalancer.
:type request: :class:`tencentcloud.gwlb.v20240906.models.InquirePriceCreateGatewayLoadBalancerRequest`
:rtype: :class:`tencentcloud.gwlb.v20240906.models.InquirePriceCreateGatewayLoadBalancerResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("InquirePriceCreateGatewayLoadBalancer", params, headers=headers)
response = json.loads(body)
model = models.InquirePriceCreateGatewayLoadBalancerResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def ModifyGatewayLoadBalancerAttribute(self, request):
"""ModifyGatewayLoadBalancerAttribute 接口用于修改负载均衡实例的属性。支持修改负载均衡实例的名称、带宽上限。
:param request: Request instance for ModifyGatewayLoadBalancerAttribute.
:type request: :class:`tencentcloud.gwlb.v20240906.models.ModifyGatewayLoadBalancerAttributeRequest`
:rtype: :class:`tencentcloud.gwlb.v20240906.models.ModifyGatewayLoadBalancerAttributeResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("ModifyGatewayLoadBalancerAttribute", params, headers=headers)
response = json.loads(body)
model = models.ModifyGatewayLoadBalancerAttributeResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def ModifyTargetGroupAttribute(self, request):
"""修改目标组的名称、健康探测等属性。
:param request: Request instance for ModifyTargetGroupAttribute.
:type request: :class:`tencentcloud.gwlb.v20240906.models.ModifyTargetGroupAttributeRequest`
:rtype: :class:`tencentcloud.gwlb.v20240906.models.ModifyTargetGroupAttributeResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("ModifyTargetGroupAttribute", params, headers=headers)
response = json.loads(body)
model = models.ModifyTargetGroupAttributeResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def ModifyTargetGroupInstancesWeight(self, request):
"""修改目标组的服务器权重。
本接口为异步接口,本接口返回成功后需以返回的 RequestID 为入参,调用 DescribeTaskStatus 接口查询本次任务是否成功。
:param request: Request instance for ModifyTargetGroupInstancesWeight.
:type request: :class:`tencentcloud.gwlb.v20240906.models.ModifyTargetGroupInstancesWeightRequest`
:rtype: :class:`tencentcloud.gwlb.v20240906.models.ModifyTargetGroupInstancesWeightResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("ModifyTargetGroupInstancesWeight", params, headers=headers)
response = json.loads(body)
model = models.ModifyTargetGroupInstancesWeightResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def RegisterTargetGroupInstances(self, request):
"""注册服务器到目标组。
本接口为异步接口,本接口返回成功后需以返回的 RequestID 为入参,调用 DescribeTaskStatus 接口查询本次任务是否成功。
:param request: Request instance for RegisterTargetGroupInstances.
:type request: :class:`tencentcloud.gwlb.v20240906.models.RegisterTargetGroupInstancesRequest`
:rtype: :class:`tencentcloud.gwlb.v20240906.models.RegisterTargetGroupInstancesResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("RegisterTargetGroupInstances", params, headers=headers)
response = json.loads(body)
model = models.RegisterTargetGroupInstancesResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))