tccli-intl-en 3.0.1188.1__py2.py3-none-any.whl → 3.1.28.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 (292) hide show
  1. tccli/__init__.py +1 -1
  2. tccli/argument.py +1 -1
  3. tccli/plugins/sso/__init__.py +14 -0
  4. tccli/plugins/sso/login.py +23 -6
  5. tccli/plugins/sso/texts.py +4 -0
  6. tccli/services/__init__.py +46 -2
  7. tccli/services/advisor/advisor_client.py +10 -4
  8. tccli/services/ai3d/__init__.py +4 -0
  9. tccli/services/ai3d/ai3d_client.py +266 -0
  10. tccli/services/ai3d/v20250513/api.json +264 -0
  11. tccli/services/ai3d/v20250513/examples.json +20 -0
  12. tccli/services/aiart/aiart_client.py +5 -2
  13. tccli/services/ams/ams_client.py +20 -8
  14. tccli/services/antiddos/antiddos_client.py +350 -140
  15. tccli/services/apigateway/apigateway_client.py +465 -186
  16. tccli/services/apm/apm_client.py +835 -68
  17. tccli/services/apm/v20210622/api.json +3936 -1145
  18. tccli/services/apm/v20210622/examples.json +133 -23
  19. tccli/services/asr/asr_client.py +10 -4
  20. tccli/services/autoscaling/autoscaling_client.py +341 -114
  21. tccli/services/autoscaling/v20180419/api.json +444 -272
  22. tccli/services/autoscaling/v20180419/examples.json +46 -38
  23. tccli/services/batch/batch_client.py +140 -56
  24. tccli/services/bi/__init__.py +4 -0
  25. tccli/services/bi/bi_client.py +1498 -0
  26. tccli/services/bi/v20220105/api.json +5769 -0
  27. tccli/services/bi/v20220105/examples.json +215 -0
  28. tccli/services/billing/billing_client.py +1007 -139
  29. tccli/services/billing/v20180709/api.json +1707 -429
  30. tccli/services/billing/v20180709/examples.json +161 -25
  31. tccli/services/cam/cam_client.py +405 -162
  32. tccli/services/captcha/captcha_client.py +5 -2
  33. tccli/services/captcha/v20190722/api.json +16 -6
  34. tccli/services/captcha/v20190722/examples.json +3 -3
  35. tccli/services/car/car_client.py +165 -66
  36. tccli/services/cbs/cbs_client.py +190 -76
  37. tccli/services/ccc/ccc_client.py +1167 -268
  38. tccli/services/ccc/v20200210/api.json +2263 -202
  39. tccli/services/ccc/v20200210/examples.json +116 -12
  40. tccli/services/cdb/cdb_client.py +665 -266
  41. tccli/services/cdb/v20170320/api.json +463 -208
  42. tccli/services/cdb/v20170320/examples.json +8 -8
  43. tccli/services/cdc/cdc_client.py +100 -40
  44. tccli/services/cdc/v20201214/api.json +2 -2
  45. tccli/services/cdc/v20201214/examples.json +4 -4
  46. tccli/services/cdn/cdn_client.py +220 -88
  47. tccli/services/cdn/v20180606/api.json +22 -22
  48. tccli/services/cdn/v20180606/examples.json +1 -1
  49. tccli/services/cdwdoris/cdwdoris_client.py +385 -154
  50. tccli/services/cdwpg/cdwpg_client.py +120 -48
  51. tccli/services/cdz/__init__.py +4 -0
  52. tccli/services/cdz/cdz_client.py +210 -0
  53. tccli/services/cdz/v20221123/api.json +233 -0
  54. tccli/services/cdz/v20221123/examples.json +12 -0
  55. tccli/services/cfg/cfg_client.py +80 -32
  56. tccli/services/cfg/v20210820/api.json +30 -10
  57. tccli/services/cfg/v20210820/examples.json +1 -1
  58. tccli/services/cfs/cfs_client.py +195 -78
  59. tccli/services/cfw/cfw_client.py +330 -132
  60. tccli/services/chdfs/chdfs_client.py +145 -58
  61. tccli/services/ciam/ciam_client.py +80 -32
  62. tccli/services/ckafka/ckafka_client.py +1149 -259
  63. tccli/services/ckafka/v20190819/api.json +3738 -1696
  64. tccli/services/ckafka/v20190819/examples.json +266 -162
  65. tccli/services/clb/clb_client.py +1054 -469
  66. tccli/services/clb/v20180317/api.json +2273 -1020
  67. tccli/services/clb/v20180317/examples.json +184 -124
  68. tccli/services/cloudaudit/cloudaudit_client.py +90 -36
  69. tccli/services/cls/cls_client.py +434 -173
  70. tccli/services/cmq/cmq_client.py +14 -803
  71. tccli/services/cmq/v20190304/api.json +173 -1367
  72. tccli/services/cmq/v20190304/examples.json +0 -120
  73. tccli/services/config/config_client.py +30 -12
  74. tccli/services/controlcenter/controlcenter_client.py +229 -2
  75. tccli/services/controlcenter/v20230110/api.json +528 -5
  76. tccli/services/controlcenter/v20230110/examples.json +32 -0
  77. tccli/services/csip/csip_client.py +339 -78
  78. tccli/services/csip/v20221121/api.json +1011 -38
  79. tccli/services/csip/v20221121/examples.json +24 -0
  80. tccli/services/ctsdb/__init__.py +4 -0
  81. tccli/services/ctsdb/ctsdb_client.py +266 -0
  82. tccli/services/ctsdb/v20230202/api.json +677 -0
  83. tccli/services/ctsdb/v20230202/examples.json +20 -0
  84. tccli/services/cvm/cvm_client.py +706 -189
  85. tccli/services/cvm/v20170312/api.json +1003 -453
  86. tccli/services/cvm/v20170312/examples.json +176 -130
  87. tccli/services/cwp/cwp_client.py +2325 -930
  88. tccli/services/cynosdb/cynosdb_client.py +2272 -591
  89. tccli/services/cynosdb/v20190107/api.json +12480 -7740
  90. tccli/services/cynosdb/v20190107/examples.json +193 -9
  91. tccli/services/dataintegration/dataintegration_client.py +5 -2
  92. tccli/services/dayu/dayu_client.py +515 -206
  93. tccli/services/dbbrain/dbbrain_client.py +210 -84
  94. tccli/services/dc/dc_client.py +90 -36
  95. tccli/services/dcdb/dcdb_client.py +310 -124
  96. tccli/services/dlc/dlc_client.py +859 -214
  97. tccli/services/dlc/v20210125/api.json +637 -13
  98. tccli/services/dlc/v20210125/examples.json +48 -0
  99. tccli/services/dms/dms_client.py +10 -4
  100. tccli/services/dnspod/dnspod_client.py +390 -111
  101. tccli/services/dnspod/v20210323/api.json +196 -0
  102. tccli/services/dnspod/v20210323/examples.json +24 -0
  103. tccli/services/domain/domain_client.py +120 -48
  104. tccli/services/dts/dts_client.py +415 -166
  105. tccli/services/eb/eb_client.py +130 -52
  106. tccli/services/ecdn/ecdn_client.py +75 -30
  107. tccli/services/ecm/ecm_client.py +620 -248
  108. tccli/services/eiam/eiam_client.py +200 -80
  109. tccli/services/emr/emr_client.py +3104 -117
  110. tccli/services/emr/v20190103/api.json +15311 -4361
  111. tccli/services/emr/v20190103/examples.json +452 -42
  112. tccli/services/es/es_client.py +105 -42
  113. tccli/services/facefusion/facefusion_client.py +15 -6
  114. tccli/services/faceid/faceid_client.py +95 -38
  115. tccli/services/faceid/v20180301/api.json +172 -45
  116. tccli/services/faceid/v20180301/examples.json +3 -3
  117. tccli/services/gaap/gaap_client.py +440 -176
  118. tccli/services/gme/gme_client.py +50 -20
  119. tccli/services/gpm/gpm_client.py +90 -36
  120. tccli/services/gse/gse_client.py +110 -44
  121. tccli/services/gwlb/gwlb_client.py +90 -36
  122. tccli/services/hunyuan/__init__.py +4 -0
  123. tccli/services/hunyuan/hunyuan_client.py +490 -0
  124. tccli/services/hunyuan/v20230901/api.json +566 -0
  125. tccli/services/hunyuan/v20230901/examples.json +52 -0
  126. tccli/services/iai/iai_client.py +145 -58
  127. tccli/services/iai/v20200303/api.json +187 -51
  128. tccli/services/iai/v20200303/examples.json +30 -12
  129. tccli/services/iap/iap_client.py +30 -12
  130. tccli/services/ims/ims_client.py +5 -2
  131. tccli/services/ims/v20201229/api.json +133 -141
  132. tccli/services/ims/v20201229/examples.json +3 -3
  133. tccli/services/intlpartnersmgt/intlpartnersmgt_client.py +363 -78
  134. tccli/services/intlpartnersmgt/v20220928/api.json +513 -22
  135. tccli/services/intlpartnersmgt/v20220928/examples.json +24 -0
  136. tccli/services/iotcloud/iotcloud_client.py +100 -40
  137. tccli/services/iotcloud/v20210408/api.json +216 -107
  138. tccli/services/iotcloud/v20210408/examples.json +9 -9
  139. tccli/services/ip/ip_client.py +30 -12
  140. tccli/services/kms/kms_client.py +1226 -227
  141. tccli/services/kms/v20190118/api.json +1465 -123
  142. tccli/services/kms/v20190118/examples.json +129 -3
  143. tccli/services/lcic/lcic_client.py +265 -106
  144. tccli/services/lighthouse/lighthouse_client.py +730 -172
  145. tccli/services/lighthouse/v20200324/api.json +502 -14
  146. tccli/services/lighthouse/v20200324/examples.json +59 -5
  147. tccli/services/live/live_client.py +804 -232
  148. tccli/services/live/v20180801/api.json +272 -0
  149. tccli/services/live/v20180801/examples.json +32 -0
  150. tccli/services/lke/__init__.py +4 -0
  151. tccli/services/lke/lke_client.py +5194 -0
  152. tccli/services/lke/v20231130/api.json +14803 -0
  153. tccli/services/lke/v20231130/examples.json +736 -0
  154. tccli/services/lkeap/__init__.py +4 -0
  155. tccli/services/lkeap/lkeap_client.py +602 -0
  156. tccli/services/lkeap/v20240522/api.json +989 -0
  157. tccli/services/lkeap/v20240522/examples.json +92 -0
  158. tccli/services/mariadb/mariadb_client.py +250 -100
  159. tccli/services/mdc/mdc_client.py +90 -36
  160. tccli/services/mdl/mdl_client.py +402 -82
  161. tccli/services/mdl/v20200326/api.json +1437 -100
  162. tccli/services/mdl/v20200326/examples.json +48 -16
  163. tccli/services/mdp/mdp_client.py +785 -122
  164. tccli/services/mdp/v20200527/api.json +1336 -49
  165. tccli/services/mdp/v20200527/examples.json +151 -79
  166. tccli/services/message/__init__.py +4 -0
  167. tccli/services/message/message_client.py +210 -0
  168. tccli/services/message/v20181225/api.json +72 -0
  169. tccli/services/message/v20181225/examples.json +13 -0
  170. tccli/services/mongodb/mongodb_client.py +1452 -136
  171. tccli/services/mongodb/v20190725/api.json +4393 -1462
  172. tccli/services/mongodb/v20190725/examples.json +265 -71
  173. tccli/services/monitor/monitor_client.py +1008 -296
  174. tccli/services/monitor/v20180724/api.json +664 -15
  175. tccli/services/monitor/v20180724/examples.json +152 -4
  176. tccli/services/mps/mps_client.py +1878 -379
  177. tccli/services/mps/v20190612/api.json +7473 -1626
  178. tccli/services/mps/v20190612/examples.json +276 -82
  179. tccli/services/mqtt/__init__.py +4 -0
  180. tccli/services/mqtt/mqtt_client.py +1610 -0
  181. tccli/services/mqtt/v20240516/api.json +3057 -0
  182. tccli/services/mqtt/v20240516/examples.json +213 -0
  183. tccli/services/msp/msp_client.py +35 -14
  184. tccli/services/ocr/ocr_client.py +515 -74
  185. tccli/services/ocr/v20181119/api.json +1991 -168
  186. tccli/services/ocr/v20181119/examples.json +58 -4
  187. tccli/services/omics/omics_client.py +100 -40
  188. tccli/services/organization/organization_client.py +580 -232
  189. tccli/services/postgres/postgres_client.py +455 -182
  190. tccli/services/postgres/v20170312/api.json +134 -109
  191. tccli/services/postgres/v20170312/examples.json +14 -14
  192. tccli/services/privatedns/privatedns_client.py +206 -60
  193. tccli/services/privatedns/v20201028/api.json +179 -0
  194. tccli/services/privatedns/v20201028/examples.json +8 -0
  195. tccli/services/pts/pts_client.py +240 -96
  196. tccli/services/quota/__init__.py +4 -0
  197. tccli/services/quota/quota_client.py +434 -0
  198. tccli/services/quota/v20241204/api.json +548 -0
  199. tccli/services/quota/v20241204/examples.json +51 -0
  200. tccli/services/rce/rce_client.py +5 -2
  201. tccli/services/redis/redis_client.py +698 -212
  202. tccli/services/redis/v20180412/api.json +968 -563
  203. tccli/services/redis/v20180412/examples.json +98 -56
  204. tccli/services/region/__init__.py +4 -0
  205. tccli/services/region/region_client.py +322 -0
  206. tccli/services/region/v20220627/api.json +399 -0
  207. tccli/services/region/v20220627/examples.json +29 -0
  208. tccli/services/rum/rum_client.py +300 -120
  209. tccli/services/scf/scf_client.py +210 -84
  210. tccli/services/ses/ses_client.py +368 -69
  211. tccli/services/ses/v20201002/api.json +240 -0
  212. tccli/services/ses/v20201002/examples.json +32 -0
  213. tccli/services/smh/__init__.py +4 -0
  214. tccli/services/smh/smh_client.py +714 -0
  215. tccli/services/smh/v20210712/api.json +1287 -0
  216. tccli/services/smh/v20210712/examples.json +85 -0
  217. tccli/services/sms/sms_client.py +90 -36
  218. tccli/services/sqlserver/sqlserver_client.py +3855 -470
  219. tccli/services/sqlserver/v20180328/api.json +9757 -3347
  220. tccli/services/sqlserver/v20180328/examples.json +480 -20
  221. tccli/services/ssl/ssl_client.py +504 -72
  222. tccli/services/ssl/v20191205/api.json +789 -21
  223. tccli/services/ssl/v20191205/examples.json +54 -0
  224. tccli/services/ssm/ssm_client.py +120 -48
  225. tccli/services/sts/sts_client.py +25 -10
  226. tccli/services/tag/tag_client.py +150 -60
  227. tccli/services/tat/tat_client.py +95 -38
  228. tccli/services/tbaas/tbaas_client.py +20 -8
  229. tccli/services/tcaplusdb/tcaplusdb_client.py +260 -104
  230. tccli/services/tcaplusdb/v20190823/api.json +836 -760
  231. tccli/services/tcaplusdb/v20190823/examples.json +3 -3
  232. tccli/services/tchd/tchd_client.py +5 -2
  233. tccli/services/tcmpp/tcmpp_client.py +520 -208
  234. tccli/services/tcr/tcr_client.py +380 -152
  235. tccli/services/tcsas/tcsas_client.py +295 -118
  236. tccli/services/tcsas/v20250106/api.json +1084 -980
  237. tccli/services/tcsas/v20250106/examples.json +15 -15
  238. tccli/services/tcss/tcss_client.py +1650 -660
  239. tccli/services/tdid/tdid_client.py +240 -96
  240. tccli/services/tdmq/tdmq_client.py +2876 -466
  241. tccli/services/tdmq/v20200217/api.json +11607 -3958
  242. tccli/services/tdmq/v20200217/examples.json +562 -264
  243. tccli/services/tem/tem_client.py +280 -112
  244. tccli/services/teo/teo_client.py +4507 -966
  245. tccli/services/teo/v20220901/api.json +7341 -1405
  246. tccli/services/teo/v20220901/examples.json +679 -99
  247. tccli/services/tione/__init__.py +4 -0
  248. tccli/services/tione/tione_client.py +210 -0
  249. tccli/services/tione/v20211111/api.json +3074 -0
  250. tccli/services/tione/v20211111/examples.json +12 -0
  251. tccli/services/tiw/tiw_client.py +255 -102
  252. tccli/services/tke/tke_client.py +858 -276
  253. tccli/services/tke/v20180525/api.json +227 -0
  254. tccli/services/tke/v20180525/examples.json +24 -0
  255. tccli/services/tms/tms_client.py +5 -2
  256. tccli/services/tms/v20201229/api.json +91 -100
  257. tccli/services/tmt/tmt_client.py +5 -2
  258. tccli/services/trabbit/trabbit_client.py +145 -58
  259. tccli/services/trocket/__init__.py +4 -0
  260. tccli/services/trocket/trocket_client.py +2450 -0
  261. tccli/services/trocket/v20230308/api.json +6062 -0
  262. tccli/services/trocket/v20230308/examples.json +339 -0
  263. tccli/services/trro/trro_client.py +95 -38
  264. tccli/services/trtc/trtc_client.py +928 -192
  265. tccli/services/trtc/v20190722/api.json +1810 -256
  266. tccli/services/trtc/v20190722/examples.json +100 -6
  267. tccli/services/tts/tts_client.py +5 -2
  268. tccli/services/vclm/vclm_client.py +10 -4
  269. tccli/services/vm/v20210922/api.json +61 -30
  270. tccli/services/vm/v20210922/examples.json +0 -12
  271. tccli/services/vm/vm_client.py +20 -8
  272. tccli/services/vod/v20180717/api.json +531 -54
  273. tccli/services/vod/v20180717/examples.json +25 -7
  274. tccli/services/vod/v20240718/api.json +1105 -0
  275. tccli/services/vod/v20240718/examples.json +97 -0
  276. tccli/services/vod/vod_client.py +1428 -350
  277. tccli/services/vpc/v20170312/api.json +1031 -133
  278. tccli/services/vpc/v20170312/examples.json +119 -23
  279. tccli/services/vpc/vpc_client.py +2159 -644
  280. tccli/services/waf/v20180125/api.json +1372 -194
  281. tccli/services/waf/v20180125/examples.json +89 -1
  282. tccli/services/waf/waf_client.py +1149 -245
  283. tccli/services/wedata/v20250806/api.json +13644 -0
  284. tccli/services/wedata/v20250806/examples.json +621 -0
  285. tccli/services/wedata/wedata_client.py +6067 -1263
  286. tccli/services/yunjing/yunjing_client.py +355 -142
  287. {tccli_intl_en-3.0.1188.1.dist-info → tccli_intl_en-3.1.28.1.dist-info}/METADATA +4 -7
  288. {tccli_intl_en-3.0.1188.1.dist-info → tccli_intl_en-3.1.28.1.dist-info}/RECORD +292 -232
  289. {tccli_intl_en-3.0.1188.1.dist-info → tccli_intl_en-3.1.28.1.dist-info}/WHEEL +1 -1
  290. {tccli_intl_en-3.0.1188.1.dist-info → tccli_intl_en-3.1.28.1.dist-info}/entry_points.txt +0 -1
  291. {tccli_intl_en-3.0.1188.1.dist-info → tccli_intl_en-3.1.28.1.dist-info}/LICENSE +0 -0
  292. {tccli_intl_en-3.0.1188.1.dist-info → tccli_intl_en-3.1.28.1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,322 @@
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.region.v20220627 import region_client as region_client_v20220627
15
+ from tencentcloud.region.v20220627 import models as models_v20220627
16
+
17
+ from jmespath import search
18
+ import time
19
+
20
+ def doDescribeProducts(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.RegionClient(cred, g_param[OptionsDefine.Region], profile)
50
+ client._sdkVersion += ("_CLI_" + __version__)
51
+ models = MODELS_MAP[g_param[OptionsDefine.Version]]
52
+ model = models.DescribeProductsRequest()
53
+ model.from_json_string(json.dumps(args))
54
+ start_time = time.time()
55
+ while True:
56
+ rsp = client.DescribeProducts(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 doDescribeRegions(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.RegionClient(cred, g_param[OptionsDefine.Region], profile)
105
+ client._sdkVersion += ("_CLI_" + __version__)
106
+ models = MODELS_MAP[g_param[OptionsDefine.Version]]
107
+ model = models.DescribeRegionsRequest()
108
+ model.from_json_string(json.dumps(args))
109
+ start_time = time.time()
110
+ while True:
111
+ rsp = client.DescribeRegions(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 doDescribeZones(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.RegionClient(cred, g_param[OptionsDefine.Region], profile)
160
+ client._sdkVersion += ("_CLI_" + __version__)
161
+ models = MODELS_MAP[g_param[OptionsDefine.Version]]
162
+ model = models.DescribeZonesRequest()
163
+ model.from_json_string(json.dumps(args))
164
+ start_time = time.time()
165
+ while True:
166
+ rsp = client.DescribeZones(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
+ CLIENT_MAP = {
186
+ "v20220627": region_client_v20220627,
187
+
188
+ }
189
+
190
+ MODELS_MAP = {
191
+ "v20220627": models_v20220627,
192
+
193
+ }
194
+
195
+ ACTION_MAP = {
196
+ "DescribeProducts": doDescribeProducts,
197
+ "DescribeRegions": doDescribeRegions,
198
+ "DescribeZones": doDescribeZones,
199
+
200
+ }
201
+
202
+ AVAILABLE_VERSION_LIST = [
203
+ "v20220627",
204
+
205
+ ]
206
+
207
+
208
+ def action_caller():
209
+ return ACTION_MAP
210
+
211
+
212
+ def parse_global_arg(parsed_globals):
213
+ g_param = parsed_globals
214
+ cvm_role_flag = True
215
+ for param in parsed_globals.keys():
216
+ if param in [OptionsDefine.SecretKey, OptionsDefine.SecretId, OptionsDefine.RoleArn,
217
+ OptionsDefine.RoleSessionName]:
218
+ if parsed_globals[param] is not None:
219
+ cvm_role_flag = False
220
+ break
221
+ is_exist_profile = True
222
+ if not parsed_globals["profile"]:
223
+ is_exist_profile = False
224
+ g_param["profile"] = os.environ.get("TCCLI_PROFILE", "default")
225
+
226
+ configure_path = os.path.join(os.path.expanduser("~"), ".tccli")
227
+ is_conf_exist, conf_path = Utils.file_existed(configure_path, g_param["profile"] + ".configure")
228
+ is_cred_exist, cred_path = Utils.file_existed(configure_path, g_param["profile"] + ".credential")
229
+
230
+ conf = {}
231
+ cred = {}
232
+
233
+ if is_conf_exist:
234
+ conf = Utils.load_json_msg(conf_path)
235
+ if is_cred_exist:
236
+ cred = Utils.load_json_msg(cred_path)
237
+
238
+ if not (isinstance(conf, dict) and isinstance(cred, dict)):
239
+ raise ConfigurationError(
240
+ "file: %s or %s is not json format"
241
+ % (g_param["profile"] + ".configure", g_param["profile"] + ".credential"))
242
+
243
+ if OptionsDefine.Token not in cred:
244
+ cred[OptionsDefine.Token] = None
245
+
246
+ if not is_exist_profile:
247
+ if os.environ.get(OptionsDefine.ENV_SECRET_ID) and os.environ.get(OptionsDefine.ENV_SECRET_KEY):
248
+ cred[OptionsDefine.SecretId] = os.environ.get(OptionsDefine.ENV_SECRET_ID)
249
+ cred[OptionsDefine.SecretKey] = os.environ.get(OptionsDefine.ENV_SECRET_KEY)
250
+ cred[OptionsDefine.Token] = os.environ.get(OptionsDefine.ENV_TOKEN)
251
+ cvm_role_flag = False
252
+
253
+ if os.environ.get(OptionsDefine.ENV_REGION):
254
+ conf[OptionsDefine.SysParam][OptionsDefine.Region] = os.environ.get(OptionsDefine.ENV_REGION)
255
+
256
+ if os.environ.get(OptionsDefine.ENV_ROLE_ARN) and os.environ.get(OptionsDefine.ENV_ROLE_SESSION_NAME):
257
+ cred[OptionsDefine.RoleArn] = os.environ.get(OptionsDefine.ENV_ROLE_ARN)
258
+ cred[OptionsDefine.RoleSessionName] = os.environ.get(OptionsDefine.ENV_ROLE_SESSION_NAME)
259
+ cvm_role_flag = False
260
+
261
+ if cvm_role_flag:
262
+ if "type" in cred and cred["type"] == "cvm-role":
263
+ g_param[OptionsDefine.UseCVMRole.replace('-', '_')] = True
264
+
265
+ for param in g_param.keys():
266
+ if g_param[param] is None:
267
+ if param in [OptionsDefine.SecretKey, OptionsDefine.SecretId, OptionsDefine.Token]:
268
+ if param in cred:
269
+ g_param[param] = cred[param]
270
+ elif not (g_param[OptionsDefine.UseCVMRole.replace('-', '_')]
271
+ or os.getenv(OptionsDefine.ENV_TKE_ROLE_ARN)):
272
+ raise ConfigurationError("%s is invalid" % param)
273
+ elif param in [OptionsDefine.Region, OptionsDefine.Output, OptionsDefine.Language]:
274
+ if param in conf[OptionsDefine.SysParam]:
275
+ g_param[param] = conf[OptionsDefine.SysParam][param]
276
+ elif param != OptionsDefine.Language:
277
+ raise ConfigurationError("%s is invalid" % param)
278
+ elif param.replace('_', '-') in [OptionsDefine.RoleArn, OptionsDefine.RoleSessionName]:
279
+ if param.replace('_', '-') in cred:
280
+ g_param[param] = cred[param.replace('_', '-')]
281
+
282
+ try:
283
+ if g_param[OptionsDefine.ServiceVersion]:
284
+ g_param[OptionsDefine.Version] = "v" + g_param[OptionsDefine.ServiceVersion].replace('-', '')
285
+ else:
286
+ version = conf["region"][OptionsDefine.Version]
287
+ g_param[OptionsDefine.Version] = "v" + version.replace('-', '')
288
+
289
+ if g_param[OptionsDefine.Endpoint] is None:
290
+ g_param[OptionsDefine.Endpoint] = conf["region"][OptionsDefine.Endpoint]
291
+ g_param["sts_cred_endpoint"] = conf.get("sts", {}).get("endpoint")
292
+ except Exception as err:
293
+ raise ConfigurationError("config file:%s error, %s" % (conf_path, str(err)))
294
+
295
+ if g_param[OptionsDefine.Version] not in AVAILABLE_VERSION_LIST:
296
+ raise Exception("available versions: %s" % " ".join(AVAILABLE_VERSION_LIST))
297
+
298
+ if g_param[OptionsDefine.Waiter]:
299
+ param = eval(g_param[OptionsDefine.Waiter])
300
+ if 'expr' not in param:
301
+ raise Exception('`expr` in `--waiter` must be defined')
302
+ if 'to' not in param:
303
+ raise Exception('`to` in `--waiter` must be defined')
304
+ if 'timeout' not in param:
305
+ if 'waiter' in conf and 'timeout' in conf['waiter']:
306
+ param['timeout'] = conf['waiter']['timeout']
307
+ else:
308
+ param['timeout'] = 180
309
+ if 'interval' not in param:
310
+ if 'waiter' in conf and 'interval' in conf['waiter']:
311
+ param['interval'] = conf['waiter']['interval']
312
+ else:
313
+ param['interval'] = 5
314
+ param['interval'] = min(param['interval'], param['timeout'])
315
+ g_param['OptionsDefine.WaiterInfo'] = param
316
+
317
+ if six.PY2:
318
+ for key, value in g_param.items():
319
+ if isinstance(value, six.text_type):
320
+ g_param[key] = value.encode('utf-8')
321
+ return g_param
322
+