tccli-intl-en 3.0.1248.1__py2.py3-none-any.whl → 3.1.33.1__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. tccli/__init__.py +1 -1
  2. tccli/argument.py +1 -1
  3. tccli/services/__init__.py +32 -1
  4. tccli/services/advisor/advisor_client.py +10 -4
  5. tccli/services/ai3d/__init__.py +4 -0
  6. tccli/services/ai3d/ai3d_client.py +266 -0
  7. tccli/services/ai3d/v20250513/api.json +264 -0
  8. tccli/services/ai3d/v20250513/examples.json +20 -0
  9. tccli/services/aiart/aiart_client.py +5 -2
  10. tccli/services/ams/ams_client.py +20 -8
  11. tccli/services/antiddos/antiddos_client.py +350 -140
  12. tccli/services/apigateway/apigateway_client.py +465 -186
  13. tccli/services/apm/apm_client.py +835 -68
  14. tccli/services/apm/v20210622/api.json +3936 -1145
  15. tccli/services/apm/v20210622/examples.json +133 -23
  16. tccli/services/asr/asr_client.py +10 -4
  17. tccli/services/autoscaling/autoscaling_client.py +290 -116
  18. tccli/services/autoscaling/v20180419/api.json +78 -28
  19. tccli/services/batch/batch_client.py +140 -56
  20. tccli/services/bi/bi_client.py +120 -48
  21. tccli/services/billing/billing_client.py +210 -84
  22. tccli/services/cam/cam_client.py +405 -162
  23. tccli/services/captcha/captcha_client.py +5 -2
  24. tccli/services/car/car_client.py +165 -66
  25. tccli/services/cbs/cbs_client.py +190 -76
  26. tccli/services/ccc/ccc_client.py +794 -160
  27. tccli/services/ccc/v20200210/api.json +1778 -202
  28. tccli/services/ccc/v20200210/examples.json +64 -0
  29. tccli/services/cdb/cdb_client.py +1770 -531
  30. tccli/services/cdb/v20170320/api.json +2166 -335
  31. tccli/services/cdb/v20170320/examples.json +126 -6
  32. tccli/services/cdc/cdc_client.py +100 -40
  33. tccli/services/cdc/v20201214/api.json +2 -2
  34. tccli/services/cdc/v20201214/examples.json +4 -4
  35. tccli/services/cdn/cdn_client.py +220 -88
  36. tccli/services/cdn/v20180606/api.json +22 -22
  37. tccli/services/cdn/v20180606/examples.json +1 -1
  38. tccli/services/cdwdoris/cdwdoris_client.py +385 -154
  39. tccli/services/cdwpg/cdwpg_client.py +120 -48
  40. tccli/services/cdz/__init__.py +4 -0
  41. tccli/services/cdz/cdz_client.py +210 -0
  42. tccli/services/cdz/v20221123/api.json +233 -0
  43. tccli/services/cdz/v20221123/examples.json +12 -0
  44. tccli/services/cfg/cfg_client.py +80 -32
  45. tccli/services/cfs/cfs_client.py +195 -78
  46. tccli/services/cfw/cfw_client.py +330 -132
  47. tccli/services/chdfs/chdfs_client.py +145 -58
  48. tccli/services/ciam/ciam_client.py +80 -32
  49. tccli/services/ckafka/ckafka_client.py +1149 -259
  50. tccli/services/ckafka/v20190819/api.json +3738 -1696
  51. tccli/services/ckafka/v20190819/examples.json +266 -162
  52. tccli/services/clb/clb_client.py +1054 -469
  53. tccli/services/clb/v20180317/api.json +2273 -1020
  54. tccli/services/clb/v20180317/examples.json +184 -124
  55. tccli/services/cloudaudit/cloudaudit_client.py +90 -36
  56. tccli/services/cls/cls_client.py +434 -173
  57. tccli/services/cmq/cmq_client.py +14 -803
  58. tccli/services/cmq/v20190304/api.json +173 -1367
  59. tccli/services/cmq/v20190304/examples.json +0 -120
  60. tccli/services/config/config_client.py +30 -12
  61. tccli/services/controlcenter/controlcenter_client.py +229 -2
  62. tccli/services/controlcenter/v20230110/api.json +528 -5
  63. tccli/services/controlcenter/v20230110/examples.json +32 -0
  64. tccli/services/csip/csip_client.py +170 -68
  65. tccli/services/ctsdb/ctsdb_client.py +10 -4
  66. tccli/services/cvm/cvm_client.py +706 -189
  67. tccli/services/cvm/v20170312/api.json +598 -185
  68. tccli/services/cvm/v20170312/examples.json +172 -126
  69. tccli/services/cwp/cwp_client.py +2325 -930
  70. tccli/services/cynosdb/cynosdb_client.py +1887 -577
  71. tccli/services/cynosdb/v20190107/api.json +11763 -7697
  72. tccli/services/cynosdb/v20190107/examples.json +132 -4
  73. tccli/services/dataintegration/dataintegration_client.py +5 -2
  74. tccli/services/dayu/dayu_client.py +515 -206
  75. tccli/services/dbbrain/dbbrain_client.py +210 -84
  76. tccli/services/dc/dc_client.py +90 -36
  77. tccli/services/dcdb/dcdb_client.py +310 -124
  78. tccli/services/dlc/dlc_client.py +859 -214
  79. tccli/services/dlc/v20210125/api.json +637 -13
  80. tccli/services/dlc/v20210125/examples.json +48 -0
  81. tccli/services/dms/dms_client.py +10 -4
  82. tccli/services/dnspod/dnspod_client.py +302 -76
  83. tccli/services/dnspod/v20210323/api.json +153 -0
  84. tccli/services/dnspod/v20210323/examples.json +16 -0
  85. tccli/services/domain/domain_client.py +120 -48
  86. tccli/services/dts/dts_client.py +415 -166
  87. tccli/services/eb/eb_client.py +130 -52
  88. tccli/services/ecdn/ecdn_client.py +75 -30
  89. tccli/services/ecm/ecm_client.py +620 -248
  90. tccli/services/eiam/eiam_client.py +200 -80
  91. tccli/services/emr/emr_client.py +2815 -146
  92. tccli/services/emr/v20190103/api.json +14527 -4841
  93. tccli/services/emr/v20190103/examples.json +404 -36
  94. tccli/services/es/es_client.py +105 -42
  95. tccli/services/facefusion/facefusion_client.py +15 -6
  96. tccli/services/faceid/faceid_client.py +95 -38
  97. tccli/services/faceid/v20180301/api.json +196 -53
  98. tccli/services/faceid/v20180301/examples.json +3 -3
  99. tccli/services/gaap/gaap_client.py +440 -176
  100. tccli/services/gme/gme_client.py +50 -20
  101. tccli/services/gpm/gpm_client.py +90 -36
  102. tccli/services/gse/gse_client.py +110 -44
  103. tccli/services/gwlb/gwlb_client.py +90 -36
  104. tccli/services/hunyuan/__init__.py +4 -0
  105. tccli/services/hunyuan/hunyuan_client.py +546 -0
  106. tccli/services/hunyuan/v20230901/api.json +628 -0
  107. tccli/services/hunyuan/v20230901/examples.json +60 -0
  108. tccli/services/iai/iai_client.py +145 -58
  109. tccli/services/iap/iap_client.py +30 -12
  110. tccli/services/ims/ims_client.py +5 -2
  111. tccli/services/intlpartnersmgt/intlpartnersmgt_client.py +210 -84
  112. tccli/services/iotcloud/iotcloud_client.py +100 -40
  113. tccli/services/ip/ip_client.py +30 -12
  114. tccli/services/kms/kms_client.py +340 -136
  115. tccli/services/kms/v20190118/api.json +80 -3
  116. tccli/services/kms/v20190118/examples.json +3 -3
  117. tccli/services/lcic/lcic_client.py +265 -106
  118. tccli/services/lighthouse/lighthouse_client.py +730 -172
  119. tccli/services/lighthouse/v20200324/api.json +502 -14
  120. tccli/services/lighthouse/v20200324/examples.json +59 -5
  121. tccli/services/live/live_client.py +600 -240
  122. tccli/services/lke/lke_client.py +450 -180
  123. tccli/services/lkeap/__init__.py +4 -0
  124. tccli/services/lkeap/lkeap_client.py +602 -0
  125. tccli/services/lkeap/v20240522/api.json +989 -0
  126. tccli/services/lkeap/v20240522/examples.json +92 -0
  127. tccli/services/mariadb/mariadb_client.py +250 -100
  128. tccli/services/mdc/mdc_client.py +90 -36
  129. tccli/services/mdl/mdl_client.py +357 -90
  130. tccli/services/mdl/v20200326/api.json +1095 -77
  131. tccli/services/mdl/v20200326/examples.json +40 -16
  132. tccli/services/mdp/mdp_client.py +416 -124
  133. tccli/services/mdp/v20200527/api.json +335 -40
  134. tccli/services/mdp/v20200527/examples.json +95 -79
  135. tccli/services/message/__init__.py +4 -0
  136. tccli/services/message/message_client.py +210 -0
  137. tccli/services/message/v20181225/api.json +72 -0
  138. tccli/services/message/v20181225/examples.json +13 -0
  139. tccli/services/mongodb/mongodb_client.py +1404 -141
  140. tccli/services/mongodb/v20190725/api.json +2919 -677
  141. tccli/services/mongodb/v20190725/examples.json +190 -22
  142. tccli/services/monitor/monitor_client.py +1008 -296
  143. tccli/services/monitor/v20180724/api.json +664 -15
  144. tccli/services/monitor/v20180724/examples.json +152 -4
  145. tccli/services/mps/mps_client.py +1721 -381
  146. tccli/services/mps/v20190612/api.json +4905 -561
  147. tccli/services/mps/v20190612/examples.json +221 -69
  148. tccli/services/mqtt/__init__.py +4 -0
  149. tccli/services/mqtt/mqtt_client.py +1610 -0
  150. tccli/services/mqtt/v20240516/api.json +3057 -0
  151. tccli/services/mqtt/v20240516/examples.json +213 -0
  152. tccli/services/msp/msp_client.py +35 -14
  153. tccli/services/ocr/ocr_client.py +358 -76
  154. tccli/services/ocr/v20181119/api.json +731 -88
  155. tccli/services/ocr/v20181119/examples.json +40 -10
  156. tccli/services/omics/omics_client.py +100 -40
  157. tccli/services/organization/organization_client.py +580 -232
  158. tccli/services/postgres/postgres_client.py +455 -182
  159. tccli/services/privatedns/privatedns_client.py +155 -62
  160. tccli/services/pts/pts_client.py +240 -96
  161. tccli/services/quota/__init__.py +4 -0
  162. tccli/services/quota/quota_client.py +434 -0
  163. tccli/services/quota/v20241204/api.json +548 -0
  164. tccli/services/quota/v20241204/examples.json +51 -0
  165. tccli/services/rce/rce_client.py +5 -2
  166. tccli/services/redis/redis_client.py +545 -218
  167. tccli/services/redis/v20180412/api.json +227 -115
  168. tccli/services/redis/v20180412/examples.json +19 -19
  169. tccli/services/region/region_client.py +15 -6
  170. tccli/services/rum/rum_client.py +300 -120
  171. tccli/services/scf/scf_client.py +210 -84
  172. tccli/services/ses/ses_client.py +145 -58
  173. tccli/services/smh/__init__.py +4 -0
  174. tccli/services/smh/smh_client.py +714 -0
  175. tccli/services/smh/v20210712/api.json +1287 -0
  176. tccli/services/smh/v20210712/examples.json +85 -0
  177. tccli/services/sms/sms_client.py +90 -36
  178. tccli/services/sqlserver/sqlserver_client.py +3759 -480
  179. tccli/services/sqlserver/v20180328/api.json +8909 -2941
  180. tccli/services/sqlserver/v20180328/examples.json +447 -3
  181. tccli/services/ssl/ssl_client.py +190 -76
  182. tccli/services/ssm/ssm_client.py +120 -48
  183. tccli/services/sts/sts_client.py +25 -10
  184. tccli/services/tag/tag_client.py +150 -60
  185. tccli/services/tat/tat_client.py +95 -38
  186. tccli/services/tbaas/tbaas_client.py +20 -8
  187. tccli/services/tcaplusdb/tcaplusdb_client.py +260 -104
  188. tccli/services/tcaplusdb/v20190823/api.json +836 -760
  189. tccli/services/tcaplusdb/v20190823/examples.json +3 -3
  190. tccli/services/tchd/tchd_client.py +5 -2
  191. tccli/services/tcmpp/tcmpp_client.py +520 -208
  192. tccli/services/tcr/tcr_client.py +380 -152
  193. tccli/services/tcsas/tcsas_client.py +2576 -327
  194. tccli/services/tcsas/v20250106/api.json +8304 -3241
  195. tccli/services/tcsas/v20250106/examples.json +311 -15
  196. tccli/services/tcss/tcss_client.py +1650 -660
  197. tccli/services/tdid/tdid_client.py +240 -96
  198. tccli/services/tdmq/tdmq_client.py +2876 -466
  199. tccli/services/tdmq/v20200217/api.json +11607 -3958
  200. tccli/services/tdmq/v20200217/examples.json +562 -264
  201. tccli/services/tem/tem_client.py +280 -112
  202. tccli/services/teo/teo_client.py +1590 -540
  203. tccli/services/teo/v20220901/api.json +703 -71
  204. tccli/services/teo/v20220901/examples.json +88 -22
  205. tccli/services/tione/__init__.py +4 -0
  206. tccli/services/tione/tione_client.py +210 -0
  207. tccli/services/tione/v20211111/api.json +3074 -0
  208. tccli/services/tione/v20211111/examples.json +12 -0
  209. tccli/services/tiw/tiw_client.py +255 -102
  210. tccli/services/tke/tke_client.py +858 -276
  211. tccli/services/tke/v20180525/api.json +227 -0
  212. tccli/services/tke/v20180525/examples.json +24 -0
  213. tccli/services/tms/tms_client.py +5 -2
  214. tccli/services/tmt/tmt_client.py +5 -2
  215. tccli/services/trabbit/trabbit_client.py +145 -58
  216. tccli/services/trocket/__init__.py +4 -0
  217. tccli/services/trocket/trocket_client.py +2450 -0
  218. tccli/services/trocket/v20230308/api.json +6062 -0
  219. tccli/services/trocket/v20230308/examples.json +339 -0
  220. tccli/services/trro/trro_client.py +95 -38
  221. tccli/services/trtc/trtc_client.py +255 -102
  222. tccli/services/trtc/v20190722/api.json +135 -31
  223. tccli/services/trtc/v20190722/examples.json +7 -7
  224. tccli/services/tts/tts_client.py +5 -2
  225. tccli/services/vclm/vclm_client.py +10 -4
  226. tccli/services/vm/vm_client.py +20 -8
  227. tccli/services/vod/v20180717/api.json +2929 -296
  228. tccli/services/vod/v20180717/examples.json +40 -6
  229. tccli/services/vod/vod_client.py +1175 -358
  230. tccli/services/vpc/v20170312/api.json +1102 -137
  231. tccli/services/vpc/v20170312/examples.json +127 -23
  232. tccli/services/vpc/vpc_client.py +2241 -670
  233. tccli/services/waf/v20180125/api.json +1372 -194
  234. tccli/services/waf/v20180125/examples.json +89 -1
  235. tccli/services/waf/waf_client.py +1149 -245
  236. tccli/services/wedata/v20250806/api.json +13644 -0
  237. tccli/services/wedata/v20250806/examples.json +621 -0
  238. tccli/services/wedata/wedata_client.py +6067 -1263
  239. tccli/services/yunjing/yunjing_client.py +355 -142
  240. {tccli_intl_en-3.0.1248.1.dist-info → tccli_intl_en-3.1.33.1.dist-info}/METADATA +4 -7
  241. {tccli_intl_en-3.0.1248.1.dist-info → tccli_intl_en-3.1.33.1.dist-info}/RECORD +245 -203
  242. {tccli_intl_en-3.0.1248.1.dist-info → tccli_intl_en-3.1.33.1.dist-info}/WHEEL +1 -1
  243. {tccli_intl_en-3.0.1248.1.dist-info → tccli_intl_en-3.1.33.1.dist-info}/entry_points.txt +0 -1
  244. {tccli_intl_en-3.0.1248.1.dist-info → tccli_intl_en-3.1.33.1.dist-info}/LICENSE +0 -0
  245. {tccli_intl_en-3.0.1248.1.dist-info → tccli_intl_en-3.1.33.1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,4 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ from tccli.services.quota.quota_client import action_caller
4
+
@@ -0,0 +1,434 @@
1
+ # -*- coding: utf-8 -*-
2
+ import os
3
+ import sys
4
+ import six
5
+ import json
6
+ import tccli.options_define as OptionsDefine
7
+ import tccli.format_output as FormatOutput
8
+ from tccli import __version__
9
+ from tccli.utils import Utils
10
+ from tccli.exceptions import ConfigurationError, ClientError, ParamError
11
+ from tencentcloud.common import credential
12
+ from tencentcloud.common.profile.http_profile import HttpProfile
13
+ from tencentcloud.common.profile.client_profile import ClientProfile
14
+ from tencentcloud.quota.v20241204 import quota_client as quota_client_v20241204
15
+ from tencentcloud.quota.v20241204 import models as models_v20241204
16
+
17
+ from jmespath import search
18
+ import time
19
+
20
+ def doCreateAlarm(args, parsed_globals):
21
+ g_param = parse_global_arg(parsed_globals)
22
+
23
+ if g_param[OptionsDefine.UseCVMRole.replace('-', '_')]:
24
+ cred = credential.CVMRoleCredential()
25
+ elif g_param[OptionsDefine.RoleArn.replace('-', '_')] and g_param[OptionsDefine.RoleSessionName.replace('-', '_')]:
26
+ cred = credential.STSAssumeRoleCredential(
27
+ g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.RoleArn.replace('-', '_')],
28
+ g_param[OptionsDefine.RoleSessionName.replace('-', '_')], endpoint=g_param["sts_cred_endpoint"]
29
+ )
30
+ elif os.getenv(OptionsDefine.ENV_TKE_REGION) \
31
+ and os.getenv(OptionsDefine.ENV_TKE_PROVIDER_ID) \
32
+ and os.getenv(OptionsDefine.ENV_TKE_WEB_IDENTITY_TOKEN_FILE) \
33
+ and os.getenv(OptionsDefine.ENV_TKE_ROLE_ARN):
34
+ cred = credential.DefaultTkeOIDCRoleArnProvider().get_credentials()
35
+ else:
36
+ cred = credential.Credential(
37
+ g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.Token]
38
+ )
39
+ http_profile = HttpProfile(
40
+ reqTimeout=60 if g_param[OptionsDefine.Timeout] is None else int(g_param[OptionsDefine.Timeout]),
41
+ reqMethod="POST",
42
+ endpoint=g_param[OptionsDefine.Endpoint],
43
+ proxy=g_param[OptionsDefine.HttpsProxy.replace('-', '_')]
44
+ )
45
+ profile = ClientProfile(httpProfile=http_profile, signMethod="TC3-HMAC-SHA256")
46
+ if g_param[OptionsDefine.Language]:
47
+ profile.language = g_param[OptionsDefine.Language]
48
+ mod = CLIENT_MAP[g_param[OptionsDefine.Version]]
49
+ client = mod.QuotaClient(cred, g_param[OptionsDefine.Region], profile)
50
+ client._sdkVersion += ("_CLI_" + __version__)
51
+ models = MODELS_MAP[g_param[OptionsDefine.Version]]
52
+ model = models.CreateAlarmRequest()
53
+ model.from_json_string(json.dumps(args))
54
+ start_time = time.time()
55
+ while True:
56
+ rsp = client.CreateAlarm(model)
57
+ result = rsp.to_json_string()
58
+ try:
59
+ json_obj = json.loads(result)
60
+ except TypeError as e:
61
+ json_obj = json.loads(result.decode('utf-8')) # python3.3
62
+ if not g_param[OptionsDefine.Waiter] or search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj) == g_param['OptionsDefine.WaiterInfo']['to']:
63
+ break
64
+ cur_time = time.time()
65
+ if cur_time - start_time >= g_param['OptionsDefine.WaiterInfo']['timeout']:
66
+ raise ClientError('Request timeout, wait `%s` to `%s` timeout, last request is %s' %
67
+ (g_param['OptionsDefine.WaiterInfo']['expr'], g_param['OptionsDefine.WaiterInfo']['to'],
68
+ search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj)))
69
+ else:
70
+ print('Inquiry result is %s.' % search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj))
71
+ time.sleep(g_param['OptionsDefine.WaiterInfo']['interval'])
72
+ FormatOutput.output("action", json_obj, g_param[OptionsDefine.Output], g_param[OptionsDefine.Filter])
73
+
74
+
75
+ def doUpdateAlarm(args, parsed_globals):
76
+ g_param = parse_global_arg(parsed_globals)
77
+
78
+ if g_param[OptionsDefine.UseCVMRole.replace('-', '_')]:
79
+ cred = credential.CVMRoleCredential()
80
+ elif g_param[OptionsDefine.RoleArn.replace('-', '_')] and g_param[OptionsDefine.RoleSessionName.replace('-', '_')]:
81
+ cred = credential.STSAssumeRoleCredential(
82
+ g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.RoleArn.replace('-', '_')],
83
+ g_param[OptionsDefine.RoleSessionName.replace('-', '_')], endpoint=g_param["sts_cred_endpoint"]
84
+ )
85
+ elif os.getenv(OptionsDefine.ENV_TKE_REGION) \
86
+ and os.getenv(OptionsDefine.ENV_TKE_PROVIDER_ID) \
87
+ and os.getenv(OptionsDefine.ENV_TKE_WEB_IDENTITY_TOKEN_FILE) \
88
+ and os.getenv(OptionsDefine.ENV_TKE_ROLE_ARN):
89
+ cred = credential.DefaultTkeOIDCRoleArnProvider().get_credentials()
90
+ else:
91
+ cred = credential.Credential(
92
+ g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.Token]
93
+ )
94
+ http_profile = HttpProfile(
95
+ reqTimeout=60 if g_param[OptionsDefine.Timeout] is None else int(g_param[OptionsDefine.Timeout]),
96
+ reqMethod="POST",
97
+ endpoint=g_param[OptionsDefine.Endpoint],
98
+ proxy=g_param[OptionsDefine.HttpsProxy.replace('-', '_')]
99
+ )
100
+ profile = ClientProfile(httpProfile=http_profile, signMethod="TC3-HMAC-SHA256")
101
+ if g_param[OptionsDefine.Language]:
102
+ profile.language = g_param[OptionsDefine.Language]
103
+ mod = CLIENT_MAP[g_param[OptionsDefine.Version]]
104
+ client = mod.QuotaClient(cred, g_param[OptionsDefine.Region], profile)
105
+ client._sdkVersion += ("_CLI_" + __version__)
106
+ models = MODELS_MAP[g_param[OptionsDefine.Version]]
107
+ model = models.UpdateAlarmRequest()
108
+ model.from_json_string(json.dumps(args))
109
+ start_time = time.time()
110
+ while True:
111
+ rsp = client.UpdateAlarm(model)
112
+ result = rsp.to_json_string()
113
+ try:
114
+ json_obj = json.loads(result)
115
+ except TypeError as e:
116
+ json_obj = json.loads(result.decode('utf-8')) # python3.3
117
+ if not g_param[OptionsDefine.Waiter] or search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj) == g_param['OptionsDefine.WaiterInfo']['to']:
118
+ break
119
+ cur_time = time.time()
120
+ if cur_time - start_time >= g_param['OptionsDefine.WaiterInfo']['timeout']:
121
+ raise ClientError('Request timeout, wait `%s` to `%s` timeout, last request is %s' %
122
+ (g_param['OptionsDefine.WaiterInfo']['expr'], g_param['OptionsDefine.WaiterInfo']['to'],
123
+ search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj)))
124
+ else:
125
+ print('Inquiry result is %s.' % search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj))
126
+ time.sleep(g_param['OptionsDefine.WaiterInfo']['interval'])
127
+ FormatOutput.output("action", json_obj, g_param[OptionsDefine.Output], g_param[OptionsDefine.Filter])
128
+
129
+
130
+ def doDeleteAlarm(args, parsed_globals):
131
+ g_param = parse_global_arg(parsed_globals)
132
+
133
+ if g_param[OptionsDefine.UseCVMRole.replace('-', '_')]:
134
+ cred = credential.CVMRoleCredential()
135
+ elif g_param[OptionsDefine.RoleArn.replace('-', '_')] and g_param[OptionsDefine.RoleSessionName.replace('-', '_')]:
136
+ cred = credential.STSAssumeRoleCredential(
137
+ g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.RoleArn.replace('-', '_')],
138
+ g_param[OptionsDefine.RoleSessionName.replace('-', '_')], endpoint=g_param["sts_cred_endpoint"]
139
+ )
140
+ elif os.getenv(OptionsDefine.ENV_TKE_REGION) \
141
+ and os.getenv(OptionsDefine.ENV_TKE_PROVIDER_ID) \
142
+ and os.getenv(OptionsDefine.ENV_TKE_WEB_IDENTITY_TOKEN_FILE) \
143
+ and os.getenv(OptionsDefine.ENV_TKE_ROLE_ARN):
144
+ cred = credential.DefaultTkeOIDCRoleArnProvider().get_credentials()
145
+ else:
146
+ cred = credential.Credential(
147
+ g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.Token]
148
+ )
149
+ http_profile = HttpProfile(
150
+ reqTimeout=60 if g_param[OptionsDefine.Timeout] is None else int(g_param[OptionsDefine.Timeout]),
151
+ reqMethod="POST",
152
+ endpoint=g_param[OptionsDefine.Endpoint],
153
+ proxy=g_param[OptionsDefine.HttpsProxy.replace('-', '_')]
154
+ )
155
+ profile = ClientProfile(httpProfile=http_profile, signMethod="TC3-HMAC-SHA256")
156
+ if g_param[OptionsDefine.Language]:
157
+ profile.language = g_param[OptionsDefine.Language]
158
+ mod = CLIENT_MAP[g_param[OptionsDefine.Version]]
159
+ client = mod.QuotaClient(cred, g_param[OptionsDefine.Region], profile)
160
+ client._sdkVersion += ("_CLI_" + __version__)
161
+ models = MODELS_MAP[g_param[OptionsDefine.Version]]
162
+ model = models.DeleteAlarmRequest()
163
+ model.from_json_string(json.dumps(args))
164
+ start_time = time.time()
165
+ while True:
166
+ rsp = client.DeleteAlarm(model)
167
+ result = rsp.to_json_string()
168
+ try:
169
+ json_obj = json.loads(result)
170
+ except TypeError as e:
171
+ json_obj = json.loads(result.decode('utf-8')) # python3.3
172
+ if not g_param[OptionsDefine.Waiter] or search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj) == g_param['OptionsDefine.WaiterInfo']['to']:
173
+ break
174
+ cur_time = time.time()
175
+ if cur_time - start_time >= g_param['OptionsDefine.WaiterInfo']['timeout']:
176
+ raise ClientError('Request timeout, wait `%s` to `%s` timeout, last request is %s' %
177
+ (g_param['OptionsDefine.WaiterInfo']['expr'], g_param['OptionsDefine.WaiterInfo']['to'],
178
+ search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj)))
179
+ else:
180
+ print('Inquiry result is %s.' % search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj))
181
+ time.sleep(g_param['OptionsDefine.WaiterInfo']['interval'])
182
+ FormatOutput.output("action", json_obj, g_param[OptionsDefine.Output], g_param[OptionsDefine.Filter])
183
+
184
+
185
+ def doDescribeAlarms(args, parsed_globals):
186
+ g_param = parse_global_arg(parsed_globals)
187
+
188
+ if g_param[OptionsDefine.UseCVMRole.replace('-', '_')]:
189
+ cred = credential.CVMRoleCredential()
190
+ elif g_param[OptionsDefine.RoleArn.replace('-', '_')] and g_param[OptionsDefine.RoleSessionName.replace('-', '_')]:
191
+ cred = credential.STSAssumeRoleCredential(
192
+ g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.RoleArn.replace('-', '_')],
193
+ g_param[OptionsDefine.RoleSessionName.replace('-', '_')], endpoint=g_param["sts_cred_endpoint"]
194
+ )
195
+ elif os.getenv(OptionsDefine.ENV_TKE_REGION) \
196
+ and os.getenv(OptionsDefine.ENV_TKE_PROVIDER_ID) \
197
+ and os.getenv(OptionsDefine.ENV_TKE_WEB_IDENTITY_TOKEN_FILE) \
198
+ and os.getenv(OptionsDefine.ENV_TKE_ROLE_ARN):
199
+ cred = credential.DefaultTkeOIDCRoleArnProvider().get_credentials()
200
+ else:
201
+ cred = credential.Credential(
202
+ g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.Token]
203
+ )
204
+ http_profile = HttpProfile(
205
+ reqTimeout=60 if g_param[OptionsDefine.Timeout] is None else int(g_param[OptionsDefine.Timeout]),
206
+ reqMethod="POST",
207
+ endpoint=g_param[OptionsDefine.Endpoint],
208
+ proxy=g_param[OptionsDefine.HttpsProxy.replace('-', '_')]
209
+ )
210
+ profile = ClientProfile(httpProfile=http_profile, signMethod="TC3-HMAC-SHA256")
211
+ if g_param[OptionsDefine.Language]:
212
+ profile.language = g_param[OptionsDefine.Language]
213
+ mod = CLIENT_MAP[g_param[OptionsDefine.Version]]
214
+ client = mod.QuotaClient(cred, g_param[OptionsDefine.Region], profile)
215
+ client._sdkVersion += ("_CLI_" + __version__)
216
+ models = MODELS_MAP[g_param[OptionsDefine.Version]]
217
+ model = models.DescribeAlarmsRequest()
218
+ model.from_json_string(json.dumps(args))
219
+ start_time = time.time()
220
+ while True:
221
+ rsp = client.DescribeAlarms(model)
222
+ result = rsp.to_json_string()
223
+ try:
224
+ json_obj = json.loads(result)
225
+ except TypeError as e:
226
+ json_obj = json.loads(result.decode('utf-8')) # python3.3
227
+ if not g_param[OptionsDefine.Waiter] or search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj) == g_param['OptionsDefine.WaiterInfo']['to']:
228
+ break
229
+ cur_time = time.time()
230
+ if cur_time - start_time >= g_param['OptionsDefine.WaiterInfo']['timeout']:
231
+ raise ClientError('Request timeout, wait `%s` to `%s` timeout, last request is %s' %
232
+ (g_param['OptionsDefine.WaiterInfo']['expr'], g_param['OptionsDefine.WaiterInfo']['to'],
233
+ search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj)))
234
+ else:
235
+ print('Inquiry result is %s.' % search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj))
236
+ time.sleep(g_param['OptionsDefine.WaiterInfo']['interval'])
237
+ FormatOutput.output("action", json_obj, g_param[OptionsDefine.Output], g_param[OptionsDefine.Filter])
238
+
239
+
240
+ def doEnableAlarm(args, parsed_globals):
241
+ g_param = parse_global_arg(parsed_globals)
242
+
243
+ if g_param[OptionsDefine.UseCVMRole.replace('-', '_')]:
244
+ cred = credential.CVMRoleCredential()
245
+ elif g_param[OptionsDefine.RoleArn.replace('-', '_')] and g_param[OptionsDefine.RoleSessionName.replace('-', '_')]:
246
+ cred = credential.STSAssumeRoleCredential(
247
+ g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.RoleArn.replace('-', '_')],
248
+ g_param[OptionsDefine.RoleSessionName.replace('-', '_')], endpoint=g_param["sts_cred_endpoint"]
249
+ )
250
+ elif os.getenv(OptionsDefine.ENV_TKE_REGION) \
251
+ and os.getenv(OptionsDefine.ENV_TKE_PROVIDER_ID) \
252
+ and os.getenv(OptionsDefine.ENV_TKE_WEB_IDENTITY_TOKEN_FILE) \
253
+ and os.getenv(OptionsDefine.ENV_TKE_ROLE_ARN):
254
+ cred = credential.DefaultTkeOIDCRoleArnProvider().get_credentials()
255
+ else:
256
+ cred = credential.Credential(
257
+ g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.Token]
258
+ )
259
+ http_profile = HttpProfile(
260
+ reqTimeout=60 if g_param[OptionsDefine.Timeout] is None else int(g_param[OptionsDefine.Timeout]),
261
+ reqMethod="POST",
262
+ endpoint=g_param[OptionsDefine.Endpoint],
263
+ proxy=g_param[OptionsDefine.HttpsProxy.replace('-', '_')]
264
+ )
265
+ profile = ClientProfile(httpProfile=http_profile, signMethod="TC3-HMAC-SHA256")
266
+ if g_param[OptionsDefine.Language]:
267
+ profile.language = g_param[OptionsDefine.Language]
268
+ mod = CLIENT_MAP[g_param[OptionsDefine.Version]]
269
+ client = mod.QuotaClient(cred, g_param[OptionsDefine.Region], profile)
270
+ client._sdkVersion += ("_CLI_" + __version__)
271
+ models = MODELS_MAP[g_param[OptionsDefine.Version]]
272
+ model = models.EnableAlarmRequest()
273
+ model.from_json_string(json.dumps(args))
274
+ start_time = time.time()
275
+ while True:
276
+ rsp = client.EnableAlarm(model)
277
+ result = rsp.to_json_string()
278
+ try:
279
+ json_obj = json.loads(result)
280
+ except TypeError as e:
281
+ json_obj = json.loads(result.decode('utf-8')) # python3.3
282
+ if not g_param[OptionsDefine.Waiter] or search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj) == g_param['OptionsDefine.WaiterInfo']['to']:
283
+ break
284
+ cur_time = time.time()
285
+ if cur_time - start_time >= g_param['OptionsDefine.WaiterInfo']['timeout']:
286
+ raise ClientError('Request timeout, wait `%s` to `%s` timeout, last request is %s' %
287
+ (g_param['OptionsDefine.WaiterInfo']['expr'], g_param['OptionsDefine.WaiterInfo']['to'],
288
+ search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj)))
289
+ else:
290
+ print('Inquiry result is %s.' % search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj))
291
+ time.sleep(g_param['OptionsDefine.WaiterInfo']['interval'])
292
+ FormatOutput.output("action", json_obj, g_param[OptionsDefine.Output], g_param[OptionsDefine.Filter])
293
+
294
+
295
+ CLIENT_MAP = {
296
+ "v20241204": quota_client_v20241204,
297
+
298
+ }
299
+
300
+ MODELS_MAP = {
301
+ "v20241204": models_v20241204,
302
+
303
+ }
304
+
305
+ ACTION_MAP = {
306
+ "CreateAlarm": doCreateAlarm,
307
+ "UpdateAlarm": doUpdateAlarm,
308
+ "DeleteAlarm": doDeleteAlarm,
309
+ "DescribeAlarms": doDescribeAlarms,
310
+ "EnableAlarm": doEnableAlarm,
311
+
312
+ }
313
+
314
+ AVAILABLE_VERSION_LIST = [
315
+ "v20241204",
316
+
317
+ ]
318
+
319
+
320
+ def action_caller():
321
+ return ACTION_MAP
322
+
323
+
324
+ def parse_global_arg(parsed_globals):
325
+ g_param = parsed_globals
326
+ cvm_role_flag = True
327
+ for param in parsed_globals.keys():
328
+ if param in [OptionsDefine.SecretKey, OptionsDefine.SecretId, OptionsDefine.RoleArn,
329
+ OptionsDefine.RoleSessionName]:
330
+ if parsed_globals[param] is not None:
331
+ cvm_role_flag = False
332
+ break
333
+ is_exist_profile = True
334
+ if not parsed_globals["profile"]:
335
+ is_exist_profile = False
336
+ g_param["profile"] = os.environ.get("TCCLI_PROFILE", "default")
337
+
338
+ configure_path = os.path.join(os.path.expanduser("~"), ".tccli")
339
+ is_conf_exist, conf_path = Utils.file_existed(configure_path, g_param["profile"] + ".configure")
340
+ is_cred_exist, cred_path = Utils.file_existed(configure_path, g_param["profile"] + ".credential")
341
+
342
+ conf = {}
343
+ cred = {}
344
+
345
+ if is_conf_exist:
346
+ conf = Utils.load_json_msg(conf_path)
347
+ if is_cred_exist:
348
+ cred = Utils.load_json_msg(cred_path)
349
+
350
+ if not (isinstance(conf, dict) and isinstance(cred, dict)):
351
+ raise ConfigurationError(
352
+ "file: %s or %s is not json format"
353
+ % (g_param["profile"] + ".configure", g_param["profile"] + ".credential"))
354
+
355
+ if OptionsDefine.Token not in cred:
356
+ cred[OptionsDefine.Token] = None
357
+
358
+ if not is_exist_profile:
359
+ if os.environ.get(OptionsDefine.ENV_SECRET_ID) and os.environ.get(OptionsDefine.ENV_SECRET_KEY):
360
+ cred[OptionsDefine.SecretId] = os.environ.get(OptionsDefine.ENV_SECRET_ID)
361
+ cred[OptionsDefine.SecretKey] = os.environ.get(OptionsDefine.ENV_SECRET_KEY)
362
+ cred[OptionsDefine.Token] = os.environ.get(OptionsDefine.ENV_TOKEN)
363
+ cvm_role_flag = False
364
+
365
+ if os.environ.get(OptionsDefine.ENV_REGION):
366
+ conf[OptionsDefine.SysParam][OptionsDefine.Region] = os.environ.get(OptionsDefine.ENV_REGION)
367
+
368
+ if os.environ.get(OptionsDefine.ENV_ROLE_ARN) and os.environ.get(OptionsDefine.ENV_ROLE_SESSION_NAME):
369
+ cred[OptionsDefine.RoleArn] = os.environ.get(OptionsDefine.ENV_ROLE_ARN)
370
+ cred[OptionsDefine.RoleSessionName] = os.environ.get(OptionsDefine.ENV_ROLE_SESSION_NAME)
371
+ cvm_role_flag = False
372
+
373
+ if cvm_role_flag:
374
+ if "type" in cred and cred["type"] == "cvm-role":
375
+ g_param[OptionsDefine.UseCVMRole.replace('-', '_')] = True
376
+
377
+ for param in g_param.keys():
378
+ if g_param[param] is None:
379
+ if param in [OptionsDefine.SecretKey, OptionsDefine.SecretId, OptionsDefine.Token]:
380
+ if param in cred:
381
+ g_param[param] = cred[param]
382
+ elif not (g_param[OptionsDefine.UseCVMRole.replace('-', '_')]
383
+ or os.getenv(OptionsDefine.ENV_TKE_ROLE_ARN)):
384
+ raise ConfigurationError("%s is invalid" % param)
385
+ elif param in [OptionsDefine.Region, OptionsDefine.Output, OptionsDefine.Language]:
386
+ if param in conf[OptionsDefine.SysParam]:
387
+ g_param[param] = conf[OptionsDefine.SysParam][param]
388
+ elif param != OptionsDefine.Language:
389
+ raise ConfigurationError("%s is invalid" % param)
390
+ elif param.replace('_', '-') in [OptionsDefine.RoleArn, OptionsDefine.RoleSessionName]:
391
+ if param.replace('_', '-') in cred:
392
+ g_param[param] = cred[param.replace('_', '-')]
393
+
394
+ try:
395
+ if g_param[OptionsDefine.ServiceVersion]:
396
+ g_param[OptionsDefine.Version] = "v" + g_param[OptionsDefine.ServiceVersion].replace('-', '')
397
+ else:
398
+ version = conf["quota"][OptionsDefine.Version]
399
+ g_param[OptionsDefine.Version] = "v" + version.replace('-', '')
400
+
401
+ if g_param[OptionsDefine.Endpoint] is None:
402
+ g_param[OptionsDefine.Endpoint] = conf["quota"][OptionsDefine.Endpoint]
403
+ g_param["sts_cred_endpoint"] = conf.get("sts", {}).get("endpoint")
404
+ except Exception as err:
405
+ raise ConfigurationError("config file:%s error, %s" % (conf_path, str(err)))
406
+
407
+ if g_param[OptionsDefine.Version] not in AVAILABLE_VERSION_LIST:
408
+ raise Exception("available versions: %s" % " ".join(AVAILABLE_VERSION_LIST))
409
+
410
+ if g_param[OptionsDefine.Waiter]:
411
+ param = eval(g_param[OptionsDefine.Waiter])
412
+ if 'expr' not in param:
413
+ raise Exception('`expr` in `--waiter` must be defined')
414
+ if 'to' not in param:
415
+ raise Exception('`to` in `--waiter` must be defined')
416
+ if 'timeout' not in param:
417
+ if 'waiter' in conf and 'timeout' in conf['waiter']:
418
+ param['timeout'] = conf['waiter']['timeout']
419
+ else:
420
+ param['timeout'] = 180
421
+ if 'interval' not in param:
422
+ if 'waiter' in conf and 'interval' in conf['waiter']:
423
+ param['interval'] = conf['waiter']['interval']
424
+ else:
425
+ param['interval'] = 5
426
+ param['interval'] = min(param['interval'], param['timeout'])
427
+ g_param['OptionsDefine.WaiterInfo'] = param
428
+
429
+ if six.PY2:
430
+ for key, value in g_param.items():
431
+ if isinstance(value, six.text_type):
432
+ g_param[key] = value.encode('utf-8')
433
+ return g_param
434
+