TCE-标签的创建与关联

批量添加标签,并关联Instances

  • setting.ini
[defaults]
SecretId=xx
SecretKey=yy

[params]
Limit = 100
MetricName = [
	"CPUUsage", 
	"MemUsage", 
	"CvmDiskUsage"
	]

[label]
label_endpoint=tag.tencentcloudapi.com

  • 批量创建tag,并关联instance。
    判断如果有的情况,不做创建。
import json
import xlrd
import configparser
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.tag.v20180813 import tag_client, models

class getlabels(object):
    def __init__(self, SecretId, SecretKey):
        self.SecretId = SecretId
        self.SecretKey = SecretKey

    def getlabels(self):
        try:
            cred = credential.Credential(self.SecretId, self.SecretKey)
            httpProfile = HttpProfile()
            httpProfile.endpoint = "tag.tencentcloudapi.com" 

            clientProfile = ClientProfile()
            clientProfile.httpProfile = httpProfile
            client = tag_client.TagClient(cred, "", clientProfile) 

            # req = models.CreateTagRequest()
            req = models.DescribeTagKeysRequest()
            # req = models.DescribeTagValuesRequest()
            params = {
                # "TagKeys": [ "子系统", "负责人", "系统", "到期时间" ],
                "Limit": 100
            }
            req.from_json_string(json.dumps(params))

            # resp = client.DescribeTagValues(req) 
            resp = client.DescribeTagKeys(req)
            tags = json.loads(resp.to_json_string())
            return tags.get('Tags')

        except TencentCloudSDKException as err: 
            print(err.message)


class addlabels(object):
    def __init__(self, SecretId, SecretKey):
        self.SecretId = SecretId
        self.SecretKey = SecretKey

    def addlabels(self, param):
        try: 
            cred = credential.Credential(self.SecretId, self.SecretKey) 
            httpProfile = HttpProfile()
            httpProfile.endpoint = "tag.tencentcloudapi.com"

            clientProfile = ClientProfile()
            clientProfile.httpProfile = httpProfile
            client = tag_client.TagClient(cred, "", clientProfile) 

            req = models.CreateTagRequest()

            req.from_json_string(json.dumps(param))

            resp = client.CreateTag(req) 
            # print(resp.to_json_string()) 

        except TencentCloudSDKException as err: 
            print(err.message)


class cvmConnLabel(object):
    def __init__(self, SecretId, SecretKey):
        self.SecretId = SecretId
        self.SecretKey = SecretKey

    def cvmconnLabel(self, param):
        try: 
            cred = credential.Credential(self.SecretId, self.SecretKey) 
            httpProfile = HttpProfile()
            httpProfile.endpoint = "tag.tencentcloudapi.com"

            clientProfile = ClientProfile()
            clientProfile.httpProfile = httpProfile
            client = tag_client.TagClient(cred, "", clientProfile) 

            req = models.AddResourceTagRequest()

            req.from_json_string(json.dumps(param))

            resp = client.AddResourceTag(req) 
            # print(resp.to_json_string()) 

        except TencentCloudSDKException as err: 
            print(err.message)


if __name__ == '__main__':
    config = configparser.ConfigParser()
    config.read("setting.ini", encoding="utf-8")

    label = getlabels(config.get("defaults", "SecretId"), config.get("defaults", "SecretKey"))
    label_list = label.getlabels()

    label_add = addlabels(config.get("defaults", "SecretId"), config.get("defaults", "SecretKey"))
    conn_cvm = cvmConnLabel(config.get("defaults", "SecretId"), config.get("defaults", "SecretKey"))

    data = xlrd.open_workbook(r'label_test.xls')
    table = data.sheet_by_name('label')
    nrows = table.nrows
    ncols = table.ncols
    title_value = table.row_values(0, start_colx=2, end_colx=None)
    for row in range(1, nrows):
        row_value = table.row_values(row, start_colx=0, end_colx=None)
        for i in range(len(title_value)):
            param = {}
            param['TagKey'] = title_value[i]
            param['TagValue'] = str(row_value[i+2])
            if param['TagKey'] in label_list:
                label_add.addlabels(param)    
            else:
                # print("The key is not in the system")
                continue

            resource = "qcs::cvm:" + row_value[0] + ":uin/100016245427:instance/" + row_value[1]
            param['Resource'] = resource

            conn_cvm.cvmconnLabel(param)

  • EXCEL label_test.xls
    label_test
posted @ 2021-08-11 17:51  独孤云翔  阅读(80)  评论(0)    收藏  举报