tccli 3.0.1215.1__py2.py3-none-any.whl → 3.0.1217.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 (282) hide show
  1. tccli/__init__.py +1 -1
  2. tccli/argparser.py +1 -1
  3. tccli/command.py +2 -2
  4. tccli/configure.py +46 -1
  5. tccli/credentials.py +25 -0
  6. tccli/main.py +6 -2
  7. tccli/plugins/sso/__init__.py +61 -0
  8. tccli/plugins/sso/configs.py +4 -0
  9. tccli/plugins/sso/configure.py +45 -0
  10. tccli/plugins/sso/login.py +144 -0
  11. tccli/plugins/sso/logout.py +21 -0
  12. tccli/plugins/sso/terminal.py +161 -0
  13. tccli/plugins/sso/texts.py +40 -0
  14. tccli/services/__init__.py +6 -3
  15. tccli/services/acp/v20220105/api.json +7 -7
  16. tccli/services/acp/v20220105/examples.json +2 -2
  17. tccli/services/aiart/v20221229/api.json +29 -29
  18. tccli/services/aiart/v20221229/examples.json +8 -8
  19. tccli/services/apigateway/v20180808/api.json +18 -17
  20. tccli/services/apigateway/v20180808/examples.json +12 -12
  21. tccli/services/apm/v20210622/api.json +118 -4
  22. tccli/services/asr/v20190614/api.json +21 -20
  23. tccli/services/asr/v20190614/examples.json +13 -13
  24. tccli/services/autoscaling/v20180419/api.json +371 -309
  25. tccli/services/autoscaling/v20180419/examples.json +17 -17
  26. tccli/services/batch/v20170312/api.json +7 -7
  27. tccli/services/bda/v20200324/api.json +39 -31
  28. tccli/services/bda/v20200324/examples.json +9 -9
  29. tccli/services/bh/__init__.py +4 -0
  30. tccli/services/bh/bh_client.py +3428 -0
  31. tccli/services/bh/v20230418/api.json +8180 -0
  32. tccli/services/bh/v20230418/examples.json +519 -0
  33. tccli/services/bi/v20220105/api.json +80 -4
  34. tccli/services/bi/v20220105/examples.json +1 -1
  35. tccli/services/billing/billing_client.py +53 -0
  36. tccli/services/billing/v20180709/api.json +330 -24
  37. tccli/services/billing/v20180709/examples.json +8 -0
  38. tccli/services/bsca/v20210811/api.json +223 -18
  39. tccli/services/bsca/v20210811/examples.json +4 -4
  40. tccli/services/btoe/v20210514/api.json +4 -4
  41. tccli/services/btoe/v20210514/examples.json +2 -2
  42. tccli/services/ca/v20230228/api.json +60 -0
  43. tccli/services/cam/v20190116/api.json +11 -11
  44. tccli/services/cat/v20180409/api.json +9 -0
  45. tccli/services/cbs/v20170312/api.json +200 -188
  46. tccli/services/cbs/v20170312/examples.json +4 -4
  47. tccli/services/ccc/ccc_client.py +53 -0
  48. tccli/services/ccc/v20200210/api.json +541 -325
  49. tccli/services/ccc/v20200210/examples.json +26 -18
  50. tccli/services/cdb/cdb_client.py +13 -13
  51. tccli/services/cdb/v20170320/api.json +308 -274
  52. tccli/services/cdb/v20170320/examples.json +38 -38
  53. tccli/services/cdc/v20201214/api.json +283 -270
  54. tccli/services/cdc/v20201214/examples.json +26 -26
  55. tccli/services/cdn/v20180606/api.json +5 -3
  56. tccli/services/cds/v20180420/api.json +82 -76
  57. tccli/services/cds/v20180420/examples.json +1 -1
  58. tccli/services/cdwch/v20200915/api.json +1 -1
  59. tccli/services/cdwdoris/v20211228/api.json +54 -4
  60. tccli/services/cdz/v20221123/api.json +41 -5
  61. tccli/services/cfg/v20210820/api.json +31 -0
  62. tccli/services/cfs/v20190719/api.json +89 -1
  63. tccli/services/cfs/v20190719/examples.json +1 -1
  64. tccli/services/cfw/cfw_client.py +0 -53
  65. tccli/services/cfw/v20190904/api.json +1895 -2011
  66. tccli/services/cfw/v20190904/examples.json +175 -171
  67. tccli/services/ciam/v20220331/api.json +316 -315
  68. tccli/services/ciam/v20220331/examples.json +49 -49
  69. tccli/services/ckafka/v20190819/api.json +104 -75
  70. tccli/services/clb/v20180317/api.json +48 -26
  71. tccli/services/clb/v20180317/examples.json +1 -1
  72. tccli/services/cloudapp/v20220530/api.json +5 -1
  73. tccli/services/cloudaudit/cloudaudit_client.py +30 -30
  74. tccli/services/cloudaudit/v20190319/api.json +254 -211
  75. tccli/services/cloudaudit/v20190319/examples.json +19 -19
  76. tccli/services/cloudstudio/v20230508/api.json +38 -37
  77. tccli/services/cloudstudio/v20230508/examples.json +4 -4
  78. tccli/services/cls/cls_client.py +216 -4
  79. tccli/services/cls/v20201016/api.json +935 -147
  80. tccli/services/cls/v20201016/examples.json +43 -5
  81. tccli/services/csip/v20221121/api.json +2566 -2386
  82. tccli/services/csip/v20221121/examples.json +108 -108
  83. tccli/services/cvm/v20170312/api.json +191 -112
  84. tccli/services/cvm/v20170312/examples.json +2 -2
  85. tccli/services/cwp/cwp_client.py +4 -110
  86. tccli/services/cwp/v20180228/api.json +6498 -6252
  87. tccli/services/cwp/v20180228/examples.json +372 -412
  88. tccli/services/cynosdb/v20190107/api.json +170 -110
  89. tccli/services/cynosdb/v20190107/examples.json +91 -91
  90. tccli/services/dasb/v20191018/api.json +859 -637
  91. tccli/services/dasb/v20191018/examples.json +101 -101
  92. tccli/services/dcdb/dcdb_client.py +114 -61
  93. tccli/services/dcdb/v20180411/api.json +141 -7
  94. tccli/services/dcdb/v20180411/examples.json +32 -0
  95. tccli/services/dlc/v20210125/api.json +21 -11
  96. tccli/services/dnspod/dnspod_client.py +417 -46
  97. tccli/services/dnspod/v20210323/api.json +751 -30
  98. tccli/services/dnspod/v20210323/examples.json +62 -0
  99. tccli/services/domain/v20180808/api.json +3 -3
  100. tccli/services/domain/v20180808/examples.json +3 -3
  101. tccli/services/dts/v20211206/api.json +4 -4
  102. tccli/services/eb/v20210416/api.json +15 -15
  103. tccli/services/eb/v20210416/examples.json +1 -1
  104. tccli/services/ecm/v20190719/api.json +2 -2
  105. tccli/services/emr/v20190103/api.json +339 -114
  106. tccli/services/emr/v20190103/examples.json +64 -82
  107. tccli/services/es/es_client.py +249 -37
  108. tccli/services/es/v20180416/api.json +550 -0
  109. tccli/services/es/v20180416/examples.json +33 -1
  110. tccli/services/ess/ess_client.py +53 -0
  111. tccli/services/ess/v20201111/api.json +192 -38
  112. tccli/services/ess/v20201111/examples.json +35 -9
  113. tccli/services/essbasic/essbasic_client.py +106 -0
  114. tccli/services/essbasic/v20210526/api.json +287 -60
  115. tccli/services/essbasic/v20210526/examples.json +58 -18
  116. tccli/services/facefusion/v20181201/api.json +47 -45
  117. tccli/services/facefusion/v20181201/examples.json +2 -2
  118. tccli/services/facefusion/v20220927/api.json +54 -48
  119. tccli/services/facefusion/v20220927/examples.json +5 -5
  120. tccli/services/faceid/v20180301/api.json +497 -496
  121. tccli/services/faceid/v20180301/examples.json +219 -101
  122. tccli/services/fmu/v20191213/api.json +59 -67
  123. tccli/services/fmu/v20191213/examples.json +22 -22
  124. tccli/services/ft/v20200304/api.json +53 -57
  125. tccli/services/ft/v20200304/examples.json +14 -14
  126. tccli/services/gaap/v20180529/api.json +44 -26
  127. tccli/services/gaap/v20180529/examples.json +24 -30
  128. tccli/services/gme/v20180711/api.json +21 -11
  129. tccli/services/gme/v20180711/examples.json +1 -1
  130. tccli/services/hai/v20230812/api.json +116 -9
  131. tccli/services/hai/v20230812/examples.json +4 -4
  132. tccli/services/hunyuan/hunyuan_client.py +436 -12
  133. tccli/services/hunyuan/v20230901/api.json +1482 -118
  134. tccli/services/hunyuan/v20230901/examples.json +82 -18
  135. tccli/services/iai/v20180301/api.json +23 -19
  136. tccli/services/iai/v20180301/examples.json +2 -2
  137. tccli/services/iai/v20200303/api.json +530 -511
  138. tccli/services/iai/v20200303/examples.json +116 -86
  139. tccli/services/ig/__init__.py +4 -0
  140. tccli/services/ig/ig_client.py +195 -0
  141. tccli/services/ig/v20210518/api.json +83 -0
  142. tccli/services/ig/v20210518/examples.json +13 -0
  143. tccli/services/ioa/ioa_client.py +53 -0
  144. tccli/services/ioa/v20220601/api.json +662 -413
  145. tccli/services/ioa/v20220601/examples.json +24 -10
  146. tccli/services/iotexplorer/v20190423/api.json +73 -13
  147. tccli/services/iotexplorer/v20190423/examples.json +3 -3
  148. tccli/services/iotvideo/iotvideo_client.py +106 -0
  149. tccli/services/iotvideo/v20191126/api.json +256 -24
  150. tccli/services/iotvideo/v20191126/examples.json +19 -3
  151. tccli/services/iotvideo/v20201215/api.json +1 -1
  152. tccli/services/iotvideo/v20201215/examples.json +1 -1
  153. tccli/services/iotvideo/v20211125/api.json +1 -1
  154. tccli/services/iotvideo/v20211125/examples.json +2 -2
  155. tccli/services/iss/iss_client.py +69 -122
  156. tccli/services/iss/v20230517/api.json +10 -54
  157. tccli/services/iss/v20230517/examples.json +0 -14
  158. tccli/services/kms/v20190118/api.json +301 -268
  159. tccli/services/kms/v20190118/examples.json +45 -51
  160. tccli/services/lcic/lcic_client.py +159 -0
  161. tccli/services/lcic/v20220817/api.json +273 -1
  162. tccli/services/lcic/v20220817/examples.json +24 -0
  163. tccli/services/lighthouse/v20200324/api.json +56 -0
  164. tccli/services/live/live_client.py +159 -0
  165. tccli/services/live/v20180801/api.json +279 -9
  166. tccli/services/live/v20180801/examples.json +24 -0
  167. tccli/services/lke/v20231130/api.json +17 -17
  168. tccli/services/lke/v20231130/examples.json +19 -25
  169. tccli/services/mariadb/v20170312/api.json +7 -7
  170. tccli/services/market/v20191010/api.json +3 -3
  171. tccli/services/market/v20191010/examples.json +2 -2
  172. tccli/services/mmps/v20200710/api.json +47 -47
  173. tccli/services/mmps/v20200710/examples.json +3 -3
  174. tccli/services/mongodb/v20190725/api.json +10 -12
  175. tccli/services/monitor/v20180724/api.json +46 -19
  176. tccli/services/mps/v20190612/api.json +282 -5
  177. tccli/services/mps/v20190612/examples.json +25 -1
  178. tccli/services/mqtt/v20240516/api.json +2 -2
  179. tccli/services/mrs/v20200910/api.json +72 -34
  180. tccli/services/mrs/v20200910/examples.json +2 -2
  181. tccli/services/ms/v20180408/api.json +535 -506
  182. tccli/services/ms/v20180408/examples.json +25 -25
  183. tccli/services/oceanus/v20190422/api.json +130 -0
  184. tccli/services/ocr/ocr_client.py +232 -20
  185. tccli/services/ocr/v20181119/api.json +2263 -758
  186. tccli/services/ocr/v20181119/examples.json +200 -180
  187. tccli/services/omics/v20221128/api.json +614 -553
  188. tccli/services/omics/v20221128/examples.json +9 -9
  189. tccli/services/organization/organization_client.py +352 -34
  190. tccli/services/organization/v20210331/api.json +464 -4
  191. tccli/services/organization/v20210331/examples.json +49 -1
  192. tccli/services/partners/v20180321/api.json +244 -234
  193. tccli/services/partners/v20180321/examples.json +19 -19
  194. tccli/services/privatedns/privatedns_client.py +428 -4
  195. tccli/services/privatedns/v20201028/api.json +815 -11
  196. tccli/services/privatedns/v20201028/examples.json +64 -0
  197. tccli/services/pts/v20210728/api.json +18 -0
  198. tccli/services/pts/v20210728/examples.json +1 -1
  199. tccli/services/rce/rce_client.py +53 -0
  200. tccli/services/rce/v20201103/api.json +146 -0
  201. tccli/services/rce/v20201103/examples.json +8 -0
  202. tccli/services/redis/v20180412/api.json +42 -42
  203. tccli/services/redis/v20180412/examples.json +19 -19
  204. tccli/services/region/v20220627/api.json +1 -1
  205. tccli/services/rum/v20210622/api.json +9 -0
  206. tccli/services/scf/scf_client.py +269 -4
  207. tccli/services/scf/v20180416/api.json +569 -15
  208. tccli/services/scf/v20180416/examples.json +47 -1
  209. tccli/services/smop/v20201203/api.json +46 -42
  210. tccli/services/smop/v20201203/examples.json +2 -2
  211. tccli/services/soe/v20180724/api.json +10 -10
  212. tccli/services/sqlserver/v20180328/api.json +21 -8
  213. tccli/services/sqlserver/v20180328/examples.json +5 -5
  214. tccli/services/ssl/v20191205/api.json +98 -5
  215. tccli/services/ssm/v20190923/api.json +292 -231
  216. tccli/services/ssm/v20190923/examples.json +42 -42
  217. tccli/services/tat/v20201028/api.json +124 -122
  218. tccli/services/tat/v20201028/examples.json +24 -30
  219. tccli/services/tchd/v20230306/api.json +5 -5
  220. tccli/services/tchd/v20230306/examples.json +3 -3
  221. tccli/services/tcr/v20190924/api.json +1 -1
  222. tccli/services/tcr/v20190924/examples.json +1 -1
  223. tccli/services/tcss/v20201101/api.json +1984 -1437
  224. tccli/services/tcss/v20201101/examples.json +350 -368
  225. tccli/services/tdmq/v20200217/api.json +603 -464
  226. tccli/services/tdmq/v20200217/examples.json +105 -105
  227. tccli/services/tds/v20220801/api.json +4 -4
  228. tccli/services/tem/v20210701/api.json +429 -372
  229. tccli/services/tem/v20210701/examples.json +85 -85
  230. tccli/services/teo/teo_client.py +277 -12
  231. tccli/services/teo/v20220901/api.json +1029 -124
  232. tccli/services/teo/v20220901/examples.json +84 -8
  233. tccli/services/thpc/v20230321/api.json +5 -5
  234. tccli/services/tke/tke_client.py +270 -58
  235. tccli/services/tke/v20180525/api.json +79 -27
  236. tccli/services/tke/v20180525/examples.json +9 -1
  237. tccli/services/tke/v20220501/api.json +176 -0
  238. tccli/services/tke/v20220501/examples.json +24 -0
  239. tccli/services/tms/tms_client.py +4 -57
  240. tccli/services/tms/v20201229/api.json +0 -354
  241. tccli/services/tms/v20201229/examples.json +0 -8
  242. tccli/services/tmt/v20180321/api.json +38 -8
  243. tccli/services/trp/v20210515/api.json +86 -74
  244. tccli/services/trp/v20210515/examples.json +65 -65
  245. tccli/services/trro/v20220325/api.json +72 -71
  246. tccli/services/trro/v20220325/examples.json +8 -8
  247. tccli/services/trtc/trtc_client.py +8 -61
  248. tccli/services/trtc/v20190722/api.json +293 -52
  249. tccli/services/trtc/v20190722/examples.json +3 -11
  250. tccli/services/tse/tse_client.py +110 -4
  251. tccli/services/tse/v20201207/api.json +122 -7
  252. tccli/services/tse/v20201207/examples.json +25 -9
  253. tccli/services/vclm/v20240523/api.json +225 -82
  254. tccli/services/vclm/v20240523/examples.json +13 -19
  255. tccli/services/vod/v20180717/api.json +431 -4
  256. tccli/services/vod/v20180717/examples.json +25 -5
  257. tccli/services/vod/v20240718/api.json +11 -11
  258. tccli/services/vod/v20240718/examples.json +4 -4
  259. tccli/services/vod/vod_client.py +53 -0
  260. tccli/services/vpc/v20170312/api.json +1195 -892
  261. tccli/services/vpc/v20170312/examples.json +84 -68
  262. tccli/services/vpc/vpc_client.py +168 -62
  263. tccli/services/waf/v20180125/api.json +2611 -2187
  264. tccli/services/waf/v20180125/examples.json +224 -284
  265. tccli/services/waf/waf_client.py +225 -119
  266. tccli/services/wav/v20210129/api.json +48 -48
  267. tccli/services/wav/v20210129/examples.json +4 -4
  268. tccli/services/wedata/v20210820/api.json +1595 -25
  269. tccli/services/wedata/v20210820/examples.json +44 -4
  270. tccli/services/wedata/wedata_client.py +265 -0
  271. tccli/services/weilingwith/v20230427/api.json +6 -6
  272. tccli/services/weilingwith/v20230427/examples.json +3 -3
  273. tccli/sso.py +229 -0
  274. {tccli-3.0.1215.1.dist-info → tccli-3.0.1217.1.dist-info}/METADATA +6 -2
  275. {tccli-3.0.1215.1.dist-info → tccli-3.0.1217.1.dist-info}/RECORD +278 -265
  276. tccli/services/cr/__init__.py +0 -4
  277. tccli/services/cr/cr_client.py +0 -1626
  278. tccli/services/cr/v20180321/api.json +0 -2829
  279. tccli/services/cr/v20180321/examples.json +0 -235
  280. {tccli-3.0.1215.1.dist-info → tccli-3.0.1217.1.dist-info}/WHEEL +0 -0
  281. {tccli-3.0.1215.1.dist-info → tccli-3.0.1217.1.dist-info}/entry_points.txt +0 -0
  282. {tccli-3.0.1215.1.dist-info → tccli-3.0.1217.1.dist-info}/license_files/LICENSE +0 -0
tccli/sso.py ADDED
@@ -0,0 +1,229 @@
1
+ import json
2
+ import os
3
+ import time
4
+ import uuid
5
+
6
+ import requests
7
+
8
+ _API_ENDPOINT = "https://cli.cloud.tencent.com"
9
+ _CRED_REFRESH_SAFE_DUR = 60 * 5
10
+ _SKEY_REFRESH_SAFE_DUR = 3600 * 12 - 300
11
+
12
+
13
+ def maybe_refresh_credential(profile):
14
+ cred_path = cred_path_of_profile(profile)
15
+ try:
16
+ with open(cred_path, "r") as cred_file:
17
+ cred = json.load(cred_file)
18
+ except IOError:
19
+ # file not found, don't check
20
+ return
21
+
22
+ if cred.get("type") != "sso":
23
+ return
24
+
25
+ try:
26
+ now = time.time()
27
+
28
+ expires_at = cred["expiresAt"]
29
+ if expires_at - now > _CRED_REFRESH_SAFE_DUR:
30
+ return
31
+
32
+ sso_info = cred["sso"]
33
+ site = sso_info["site"]
34
+ sso_expires = sso_info["expiresAt"]
35
+ if sso_expires - now < _SKEY_REFRESH_SAFE_DUR:
36
+ # sso can't be refreshed if expired, re-login is required
37
+ return
38
+
39
+ saml_resp = gen_saml_response(
40
+ sso_info["token"], "RoleSAML", sso_info["uin"], "", sso_info["roleConfigurationId"],
41
+ sso_info["site"]
42
+ )
43
+
44
+ role_arn = "qcs::cam::uin/%s:roleName/TencentCloudSSO-%s" % (sso_info["uin"], sso_info["roleConfigurationName"])
45
+ principal_arn = "qcs::cam::uin/%s:saml-provider/TencentReservedSSO-%s" % (sso_info["uin"], sso_info["zoneId"])
46
+ cred = assume_role_with_saml(
47
+ saml_resp["SAMLResponse"], principal_arn, role_arn, "ses-%s" % uuid.uuid4(), 7200, site)
48
+ save_credential(cred, sso_info, profile)
49
+
50
+ except KeyError as e:
51
+ print("failed to refresh credential, your credential file(%s) is corrupted, %s" % (cred_path, e))
52
+
53
+ except Exception as e:
54
+ print("failed to refresh credential, %s" % e)
55
+
56
+
57
+ def verify_login_skey(token, site):
58
+ api_endpoint = _API_ENDPOINT + "/api/org/verify_login_skey"
59
+
60
+ body = {
61
+ "TraceId": str(uuid.uuid4()),
62
+ "Site": site,
63
+ "LoginSkey": token,
64
+ }
65
+ http_response = requests.post(api_endpoint, json=body)
66
+ try:
67
+ resp = http_response.json()
68
+ if "Error" in resp:
69
+ raise ValueError(http_response.content)
70
+ return resp
71
+ except Exception:
72
+ print(http_response.content)
73
+ raise
74
+
75
+
76
+ def list_accounts_for_access_assignment(token, site):
77
+ api_endpoint = _API_ENDPOINT + "/api/org/list_accounts_for_access_assignment"
78
+ page_num = 1
79
+ page_size = 20
80
+
81
+ accounts = []
82
+ while True:
83
+ body = {
84
+ "TraceId": str(uuid.uuid4()),
85
+ "Site": site,
86
+ "LoginToken": token,
87
+ "PageNum": page_num,
88
+ "PageSize": page_size,
89
+ }
90
+ http_response = requests.post(api_endpoint, json=body)
91
+ resp = http_response.json()
92
+ if "Error" in resp:
93
+ raise ValueError(http_response.content)
94
+
95
+ try:
96
+ accounts.extend(resp.get("Accounts", []))
97
+ if resp["TotalCounts"] <= len(accounts):
98
+ break
99
+
100
+ page_num += 1
101
+ except Exception:
102
+ print(http_response.content)
103
+ raise
104
+
105
+ return accounts
106
+
107
+
108
+ def list_role_configurations_for_account(uin, token, site):
109
+ api_endpoint = _API_ENDPOINT + "/api/org/list_role_configurations_for_account"
110
+ page_size = 20
111
+
112
+ configs = []
113
+ next_token = ""
114
+ while True:
115
+ body = {
116
+ "TraceId": str(uuid.uuid4()),
117
+ "Site": site,
118
+ "TargetUin": uin,
119
+ "LoginToken": token,
120
+ "MaxResults": page_size,
121
+ "NextToken": next_token,
122
+ }
123
+ http_response = requests.post(api_endpoint, json=body)
124
+ try:
125
+ resp = http_response.json()
126
+
127
+ if "Error" in resp:
128
+ raise ValueError(http_response.content)
129
+
130
+ configs.extend(resp.get("RoleConfigurationsForAccount", []))
131
+ if not resp["IsTruncated"]:
132
+ break
133
+
134
+ next_token = resp["NextToken"]
135
+ except Exception:
136
+ print(http_response.content)
137
+ raise
138
+
139
+ return configs
140
+
141
+
142
+ def gen_saml_response(token, login_type, uin, user_id, conf_id, site):
143
+ api_endpoint = _API_ENDPOINT + "/api/org/gen_saml_response"
144
+
145
+ body = {
146
+ "TraceId": str(uuid.uuid4()),
147
+ "Site": site,
148
+ "LoginToken": token,
149
+ "LoginType": login_type,
150
+ "TargetUin": uin,
151
+ "UserId": user_id,
152
+ "RoleConfigurationId": conf_id,
153
+ }
154
+ http_response = requests.post(api_endpoint, json=body)
155
+ try:
156
+ resp = http_response.json()
157
+ if "Error" in resp:
158
+ raise ValueError(http_response.content)
159
+
160
+ return resp
161
+ except Exception:
162
+ print(http_response.content)
163
+ raise
164
+
165
+
166
+ def assume_role_with_saml(saml_assertion, principal_arn, role_arn, role_ses_name, dur, site):
167
+ api_endpoint = _API_ENDPOINT + "/api/sts/assume_role_with_saml"
168
+
169
+ body = {
170
+ "TraceId": str(uuid.uuid4()),
171
+ "Site": site,
172
+ "SAMLAssertion": saml_assertion,
173
+ "PrincipalArn": principal_arn,
174
+ "RoleArn": role_arn,
175
+ "RoleSessionName": role_ses_name,
176
+ "DurationSeconds": dur,
177
+ }
178
+ http_response = requests.post(api_endpoint, json=body)
179
+ try:
180
+ resp = http_response.json()
181
+ if "Error" in resp:
182
+ raise ValueError(http_response.content)
183
+ return resp
184
+ except Exception:
185
+ print(http_response.content)
186
+ raise
187
+
188
+
189
+ def save_credential(cred, sso_info, profile):
190
+ cred_path = cred_path_of_profile(profile)
191
+
192
+ cred = {
193
+ "type": "sso",
194
+ "secretId": cred["Credentials"]["TmpSecretId"],
195
+ "secretKey": cred["Credentials"]["TmpSecretKey"],
196
+ "token": cred["Credentials"]["Token"],
197
+ "expiresAt": cred["ExpiredTime"],
198
+ "sso": {
199
+ "token": sso_info["token"],
200
+ "uin": sso_info["uin"],
201
+ "roleConfigurationId": sso_info["roleConfigurationId"],
202
+ "roleConfigurationName": sso_info["roleConfigurationName"],
203
+ "zoneId": sso_info["zoneId"],
204
+ "site": sso_info["site"],
205
+ "authUrl": sso_info["authUrl"],
206
+ "expiresAt": sso_info["expiresAt"],
207
+ },
208
+ }
209
+ with open(cred_path, "w") as cred_file:
210
+ json.dump(cred, cred_file, indent=4)
211
+
212
+
213
+ def cred_path_of_profile(profile):
214
+ return os.path.join(os.path.expanduser("~"), ".tccli", profile + ".credential")
215
+
216
+
217
+ def check_login_state(state):
218
+ api_endpoint = _API_ENDPOINT + "/api/sso/check_login_state"
219
+
220
+ body = {
221
+ "TraceId": str(uuid.uuid4()),
222
+ "State": state,
223
+ }
224
+ http_response = requests.post(api_endpoint, json=body)
225
+ try:
226
+ return http_response.json()
227
+ except Exception:
228
+ print(http_response.content)
229
+ raise
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tccli
3
- Version: 3.0.1215.1
3
+ Version: 3.0.1217.1
4
4
  Summary: Universal Command Line Environment for Tencent Cloud
5
5
  Project-URL: Bug Tracker, https://github.com/TencentCloud/tencentcloud-cli/issues
6
6
  Project-URL: Homepage, https://github.com/TencentCloud/tencentcloud-cli
@@ -13,7 +13,7 @@ Classifier: Programming Language :: Python :: 2.7
13
13
  Classifier: Programming Language :: Python :: 3
14
14
  Requires-Dist: jmespath==0.10.0
15
15
  Requires-Dist: six==1.16.0
16
- Requires-Dist: tencentcloud-sdk-python>=3.0.1215
16
+ Requires-Dist: tencentcloud-sdk-python>=3.0.1217
17
17
  Description-Content-Type: text/markdown
18
18
 
19
19
  # 命令行工具简介
@@ -89,6 +89,9 @@ output: 可选参数,请求回包输出格式,支持[json table text]三
89
89
  tccli configure set secretId AKIDwLw1234MMfPRle2g9nR2OTI787aBCDP
90
90
  tccli configure set region ap-guangzhou output json language zh-CN
91
91
 
92
+ # set-root-domain命令可以将配置文件中的endpoint的根域名全部设置为同一值。
93
+ tccli configure set-root-domain internal.tencentcloudapi.com
94
+
92
95
  # get子命令用于获取配置信息。
93
96
  tccli configure get secretKey
94
97
  secretKey = OxXj7khcV1234dQSSYNABcdCc1LiArFd
@@ -122,6 +125,7 @@ tccli configure set region ap-guangzhou output json language zh-CN --profile te
122
125
  tccli configure get secretKey --profile test
123
126
  tccli configure list --profile test
124
127
  tccli configure remove --profile test
128
+ tccli configure set-root-domain internal.tencentcloudapi.com --profile test
125
129
 
126
130
 
127
131
  在调用接口时指定账户(以cvm DescribeZones接口为例)。