# -*- 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.dbbrain.v20191016 import models
class DbbrainClient(AbstractClient):
_apiVersion = '2019-10-16'
_endpoint = 'dbbrain.tencentcloudapi.com'
_service = 'dbbrain'
def AddUserContact(self, request):
"""添加邮件接收联系人的姓名, 邮件地址,返回值为添加成功的联系人id。Region统一选择广州。
:param request: Request instance for AddUserContact.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.AddUserContactRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.AddUserContactResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("AddUserContact", params, headers=headers)
response = json.loads(body)
model = models.AddUserContactResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def CreateDBDiagReportTask(self, request):
"""创建健康报告,并可以选择是否发送邮件。
:param request: Request instance for CreateDBDiagReportTask.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.CreateDBDiagReportTaskRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.CreateDBDiagReportTaskResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("CreateDBDiagReportTask", params, headers=headers)
response = json.loads(body)
model = models.CreateDBDiagReportTaskResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def CreateDBDiagReportUrl(self, request):
"""创建健康报告的浏览地址。
:param request: Request instance for CreateDBDiagReportUrl.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.CreateDBDiagReportUrlRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.CreateDBDiagReportUrlResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("CreateDBDiagReportUrl", params, headers=headers)
response = json.loads(body)
model = models.CreateDBDiagReportUrlResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def CreateMailProfile(self, request):
"""创建邮件配置。其中入参ProfileType表示所创建配置的类型,ProfileType 取值包括:dbScan_mail_configuration(数据库巡检邮件配置)、scheduler_mail_configuration(定期生成健康报告的邮件发送配置)。Region统一选择广州,和实例所属地域无关。
:param request: Request instance for CreateMailProfile.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.CreateMailProfileRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.CreateMailProfileResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("CreateMailProfile", params, headers=headers)
response = json.loads(body)
model = models.CreateMailProfileResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def CreateSchedulerMailProfile(self, request):
"""该接口用于创建定期生成健康报告并邮件发送的配置,将健康报告的定期生成时间作为参数传入(周一至周日),用于设置健康报告的定期生成时间,同时保存相应的定期邮件发送的配置。
:param request: Request instance for CreateSchedulerMailProfile.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.CreateSchedulerMailProfileRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.CreateSchedulerMailProfileResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("CreateSchedulerMailProfile", params, headers=headers)
response = json.loads(body)
model = models.CreateSchedulerMailProfileResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def CreateSecurityAuditLogExportTask(self, request):
"""创建安全审计日志导出任务。
:param request: Request instance for CreateSecurityAuditLogExportTask.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.CreateSecurityAuditLogExportTaskRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.CreateSecurityAuditLogExportTaskResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("CreateSecurityAuditLogExportTask", params, headers=headers)
response = json.loads(body)
model = models.CreateSecurityAuditLogExportTaskResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DeleteSecurityAuditLogExportTasks(self, request):
"""删除安全审计日志导出任务。
:param request: Request instance for DeleteSecurityAuditLogExportTasks.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.DeleteSecurityAuditLogExportTasksRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.DeleteSecurityAuditLogExportTasksResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DeleteSecurityAuditLogExportTasks", params, headers=headers)
response = json.loads(body)
model = models.DeleteSecurityAuditLogExportTasksResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeAllUserContact(self, request):
"""获取邮件发送中联系人的相关信息。
:param request: Request instance for DescribeAllUserContact.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.DescribeAllUserContactRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.DescribeAllUserContactResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeAllUserContact", params, headers=headers)
response = json.loads(body)
model = models.DescribeAllUserContactResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeAllUserGroup(self, request):
"""获取邮件发送联系组的相关信息。
:param request: Request instance for DescribeAllUserGroup.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.DescribeAllUserGroupRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.DescribeAllUserGroupResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeAllUserGroup", params, headers=headers)
response = json.loads(body)
model = models.DescribeAllUserGroupResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeDBDiagEvent(self, request):
"""获取实例异常诊断事件的详情信息。
:param request: Request instance for DescribeDBDiagEvent.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.DescribeDBDiagEventRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.DescribeDBDiagEventResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeDBDiagEvent", params, headers=headers)
response = json.loads(body)
model = models.DescribeDBDiagEventResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeDBDiagHistory(self, request):
"""获取实例诊断事件的列表。
:param request: Request instance for DescribeDBDiagHistory.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.DescribeDBDiagHistoryRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.DescribeDBDiagHistoryResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeDBDiagHistory", params, headers=headers)
response = json.loads(body)
model = models.DescribeDBDiagHistoryResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeDBDiagReportTasks(self, request):
"""查询健康报告生成任务列表。
:param request: Request instance for DescribeDBDiagReportTasks.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.DescribeDBDiagReportTasksRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.DescribeDBDiagReportTasksResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeDBDiagReportTasks", params, headers=headers)
response = json.loads(body)
model = models.DescribeDBDiagReportTasksResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeDBSpaceStatus(self, request):
"""获取指定时间段内的实例空间使用概览,包括磁盘增长量(MB)、磁盘剩余(MB)、磁盘总量(MB)及预计可用天数。
:param request: Request instance for DescribeDBSpaceStatus.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.DescribeDBSpaceStatusRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.DescribeDBSpaceStatusResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeDBSpaceStatus", params, headers=headers)
response = json.loads(body)
model = models.DescribeDBSpaceStatusResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeDiagDBInstances(self, request):
"""获取实例信息列表。Region统一选择广州。
:param request: Request instance for DescribeDiagDBInstances.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.DescribeDiagDBInstancesRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.DescribeDiagDBInstancesResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeDiagDBInstances", params, headers=headers)
response = json.loads(body)
model = models.DescribeDiagDBInstancesResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeHealthScore(self, request):
"""根据实例ID获取指定时间段(30分钟)的健康得分,以及异常扣分项。
:param request: Request instance for DescribeHealthScore.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.DescribeHealthScoreRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.DescribeHealthScoreResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeHealthScore", params, headers=headers)
response = json.loads(body)
model = models.DescribeHealthScoreResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeMailProfile(self, request):
"""获取发送邮件的配置, 包括数据库巡检的邮件配置以及定期生成健康报告的邮件发送配置。Region统一选择广州。
:param request: Request instance for DescribeMailProfile.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.DescribeMailProfileRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.DescribeMailProfileResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeMailProfile", params, headers=headers)
response = json.loads(body)
model = models.DescribeMailProfileResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeSecurityAuditLogDownloadUrls(self, request):
"""查询安全审计日志导出文件下载链接。目前日志文件下载仅提供腾讯云内网地址,请通过广州地域的腾讯云服务器进行下载。
:param request: Request instance for DescribeSecurityAuditLogDownloadUrls.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.DescribeSecurityAuditLogDownloadUrlsRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.DescribeSecurityAuditLogDownloadUrlsResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeSecurityAuditLogDownloadUrls", params, headers=headers)
response = json.loads(body)
model = models.DescribeSecurityAuditLogDownloadUrlsResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeSecurityAuditLogExportTasks(self, request):
"""查询安全审计日志导出任务列表。
:param request: Request instance for DescribeSecurityAuditLogExportTasks.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.DescribeSecurityAuditLogExportTasksRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.DescribeSecurityAuditLogExportTasksResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeSecurityAuditLogExportTasks", params, headers=headers)
response = json.loads(body)
model = models.DescribeSecurityAuditLogExportTasksResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeSlowLogTimeSeriesStats(self, request):
"""获取慢日志统计柱状图。
:param request: Request instance for DescribeSlowLogTimeSeriesStats.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.DescribeSlowLogTimeSeriesStatsRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.DescribeSlowLogTimeSeriesStatsResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeSlowLogTimeSeriesStats", params, headers=headers)
response = json.loads(body)
model = models.DescribeSlowLogTimeSeriesStatsResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeSlowLogTopSqls(self, request):
"""按照Sql模板+schema的聚合方式,统计排序指定时间段内的top慢sql。
:param request: Request instance for DescribeSlowLogTopSqls.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.DescribeSlowLogTopSqlsRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.DescribeSlowLogTopSqlsResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeSlowLogTopSqls", params, headers=headers)
response = json.loads(body)
model = models.DescribeSlowLogTopSqlsResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeSlowLogUserHostStats(self, request):
"""获取慢日志来源地址统计分布图。
:param request: Request instance for DescribeSlowLogUserHostStats.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.DescribeSlowLogUserHostStatsRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.DescribeSlowLogUserHostStatsResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeSlowLogUserHostStats", params, headers=headers)
response = json.loads(body)
model = models.DescribeSlowLogUserHostStatsResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeTopSpaceSchemaTimeSeries(self, request):
"""获取实例占用空间最大的前几个库在指定时间段内的每日由DBbrain定时采集的空间数据,默认返回按大小排序。
:param request: Request instance for DescribeTopSpaceSchemaTimeSeries.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.DescribeTopSpaceSchemaTimeSeriesRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.DescribeTopSpaceSchemaTimeSeriesResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeTopSpaceSchemaTimeSeries", params, headers=headers)
response = json.loads(body)
model = models.DescribeTopSpaceSchemaTimeSeriesResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeTopSpaceSchemas(self, request):
"""获取实例Top库的实时空间统计信息,默认返回按大小排序。
:param request: Request instance for DescribeTopSpaceSchemas.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.DescribeTopSpaceSchemasRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.DescribeTopSpaceSchemasResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeTopSpaceSchemas", params, headers=headers)
response = json.loads(body)
model = models.DescribeTopSpaceSchemasResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeTopSpaceTableTimeSeries(self, request):
"""获取实例占用空间最大的前几张表在指定时间段内的每日由DBbrain定时采集的空间数据,默认返回按大小排序。
:param request: Request instance for DescribeTopSpaceTableTimeSeries.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.DescribeTopSpaceTableTimeSeriesRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.DescribeTopSpaceTableTimeSeriesResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeTopSpaceTableTimeSeries", params, headers=headers)
response = json.loads(body)
model = models.DescribeTopSpaceTableTimeSeriesResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeTopSpaceTables(self, request):
"""获取实例Top表的实时空间统计信息,默认返回按大小排序。
:param request: Request instance for DescribeTopSpaceTables.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.DescribeTopSpaceTablesRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.DescribeTopSpaceTablesResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeTopSpaceTables", params, headers=headers)
response = json.loads(body)
model = models.DescribeTopSpaceTablesResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def DescribeUserSqlAdvice(self, request):
"""获取SQL优化建议。
:param request: Request instance for DescribeUserSqlAdvice.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.DescribeUserSqlAdviceRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.DescribeUserSqlAdviceResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("DescribeUserSqlAdvice", params, headers=headers)
response = json.loads(body)
model = models.DescribeUserSqlAdviceResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))
def ModifyDiagDBInstanceConf(self, request):
"""修改实例巡检开关。
:param request: Request instance for ModifyDiagDBInstanceConf.
:type request: :class:`tencentcloud.dbbrain.v20191016.models.ModifyDiagDBInstanceConfRequest`
:rtype: :class:`tencentcloud.dbbrain.v20191016.models.ModifyDiagDBInstanceConfResponse`
"""
try:
params = request._serialize()
headers = request.headers
body = self.call("ModifyDiagDBInstanceConf", params, headers=headers)
response = json.loads(body)
model = models.ModifyDiagDBInstanceConfResponse()
model._deserialize(response["Response"])
return model
except Exception as e:
if isinstance(e, TencentCloudSDKException):
raise
else:
raise TencentCloudSDKException(type(e).__name__, str(e))