tccli 3.0.1200.1__py2.py3-none-any.whl → 3.0.1201.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 (41) hide show
  1. tccli/__init__.py +1 -1
  2. tccli/services/__init__.py +3 -0
  3. tccli/services/autoscaling/v20180419/api.json +33 -5
  4. tccli/services/autoscaling/v20180419/examples.json +3 -3
  5. tccli/services/batch/v20170312/api.json +2 -2
  6. tccli/services/ca/__init__.py +4 -0
  7. tccli/services/ca/ca_client.py +301 -0
  8. tccli/services/ca/v20230228/api.json +264 -0
  9. tccli/services/ca/v20230228/examples.json +41 -0
  10. tccli/services/ccc/ccc_client.py +153 -47
  11. tccli/services/ccc/v20200210/api.json +185 -1
  12. tccli/services/ccc/v20200210/examples.json +17 -1
  13. tccli/services/cdn/v20180606/api.json +30 -1
  14. tccli/services/cdwdoris/v20211228/api.json +5 -1
  15. tccli/services/cvm/cvm_client.py +53 -0
  16. tccli/services/cvm/v20170312/api.json +173 -25
  17. tccli/services/cvm/v20170312/examples.json +9 -1
  18. tccli/services/cynosdb/v20190107/api.json +56 -56
  19. tccli/services/dts/v20211206/api.json +12 -12
  20. tccli/services/emr/v20190103/api.json +9 -0
  21. tccli/services/ess/v20201111/api.json +6 -6
  22. tccli/services/essbasic/v20210526/api.json +1 -1
  23. tccli/services/lcic/v20220817/api.json +1 -1
  24. tccli/services/lighthouse/v20200324/api.json +2 -2
  25. tccli/services/mqtt/v20240516/api.json +1 -1
  26. tccli/services/mrs/v20200910/api.json +71 -1
  27. tccli/services/ocr/v20181119/api.json +10 -0
  28. tccli/services/ses/v20201002/api.json +50 -0
  29. tccli/services/ses/v20201002/examples.json +6 -0
  30. tccli/services/teo/teo_client.py +724 -141
  31. tccli/services/teo/v20220901/api.json +993 -106
  32. tccli/services/teo/v20220901/examples.json +112 -0
  33. tccli/services/tke/v20180525/api.json +7 -4
  34. tccli/services/vpc/v20170312/api.json +1273 -17
  35. tccli/services/vpc/v20170312/examples.json +176 -0
  36. tccli/services/vpc/vpc_client.py +1315 -149
  37. {tccli-3.0.1200.1.dist-info → tccli-3.0.1201.1.dist-info}/METADATA +2 -2
  38. {tccli-3.0.1200.1.dist-info → tccli-3.0.1201.1.dist-info}/RECORD +41 -37
  39. {tccli-3.0.1200.1.dist-info → tccli-3.0.1201.1.dist-info}/WHEEL +0 -0
  40. {tccli-3.0.1200.1.dist-info → tccli-3.0.1201.1.dist-info}/entry_points.txt +0 -0
  41. {tccli-3.0.1200.1.dist-info → tccli-3.0.1201.1.dist-info}/license_files/LICENSE +0 -0
@@ -84,6 +84,13 @@
84
84
  "output": "CreateIVRSessionResponse",
85
85
  "status": "online"
86
86
  },
87
+ "CreateOwnNumberApply": {
88
+ "document": "创建客户自携号码接入审核",
89
+ "input": "CreateOwnNumberApplyRequest",
90
+ "name": "创建客户自携号码接入审核",
91
+ "output": "CreateOwnNumberApplyResponse",
92
+ "status": "online"
93
+ },
87
94
  "CreatePredictiveDialingCampaign": {
88
95
  "document": "创建预测式外呼任务",
89
96
  "input": "CreatePredictiveDialingCampaignRequest",
@@ -336,6 +343,13 @@
336
343
  "output": "ModifyExtensionResponse",
337
344
  "status": "online"
338
345
  },
346
+ "ModifyOwnNumberApply": {
347
+ "document": "修改客户自携号码审批单",
348
+ "input": "ModifyOwnNumberApplyRequest",
349
+ "name": "修改客户自携号码审批单",
350
+ "output": "ModifyOwnNumberApplyResponse",
351
+ "status": "online"
352
+ },
339
353
  "ModifyStaff": {
340
354
  "document": "修改客服账号",
341
355
  "input": "ModifyStaffRequest",
@@ -1454,7 +1468,7 @@
1454
1468
  {
1455
1469
  "disabled": false,
1456
1470
  "document": "用于设定AI座席人设、说话规则、任务等的全局提示词。",
1457
- "example": "你是一只ai问答机器人",
1471
+ "example": "您是一只AI问答机器人",
1458
1472
  "member": "string",
1459
1473
  "name": "SystemPrompt",
1460
1474
  "required": true,
@@ -2203,6 +2217,70 @@
2203
2217
  ],
2204
2218
  "type": "object"
2205
2219
  },
2220
+ "CreateOwnNumberApplyRequest": {
2221
+ "document": "CreateOwnNumberApply请求参数结构体",
2222
+ "members": [
2223
+ {
2224
+ "disabled": false,
2225
+ "document": "应用 ID(必填),可以查看 https://console.cloud.tencent.com/ccc",
2226
+ "example": "1400000000",
2227
+ "member": "uint64",
2228
+ "name": "SdkAppId",
2229
+ "required": true,
2230
+ "type": "int"
2231
+ },
2232
+ {
2233
+ "disabled": false,
2234
+ "document": "SIP通道ID",
2235
+ "example": "1",
2236
+ "member": "int64",
2237
+ "name": "SipTrunkId",
2238
+ "required": true,
2239
+ "type": "int"
2240
+ },
2241
+ {
2242
+ "disabled": false,
2243
+ "document": "线路相关参数",
2244
+ "example": "无",
2245
+ "member": "OwnNumberApplyDetailItem",
2246
+ "name": "DetailList",
2247
+ "required": true,
2248
+ "type": "list"
2249
+ },
2250
+ {
2251
+ "disabled": false,
2252
+ "document": "送号前缀",
2253
+ "example": "0",
2254
+ "member": "string",
2255
+ "name": "Prefix",
2256
+ "required": false,
2257
+ "type": "string"
2258
+ }
2259
+ ],
2260
+ "type": "object"
2261
+ },
2262
+ "CreateOwnNumberApplyResponse": {
2263
+ "document": "CreateOwnNumberApply返回参数结构体",
2264
+ "members": [
2265
+ {
2266
+ "disabled": false,
2267
+ "document": "审批单号",
2268
+ "example": "1",
2269
+ "member": "uint64",
2270
+ "name": "ApplyId",
2271
+ "output_required": true,
2272
+ "type": "int",
2273
+ "value_allowed_null": false
2274
+ },
2275
+ {
2276
+ "document": "唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。",
2277
+ "member": "string",
2278
+ "name": "RequestId",
2279
+ "type": "string"
2280
+ }
2281
+ ],
2282
+ "type": "object"
2283
+ },
2206
2284
  "CreatePredictiveDialingCampaignRequest": {
2207
2285
  "document": "CreatePredictiveDialingCampaign请求参数结构体",
2208
2286
  "members": [
@@ -5337,6 +5415,16 @@
5337
5415
  "output_required": true,
5338
5416
  "type": "object",
5339
5417
  "value_allowed_null": true
5418
+ },
5419
+ {
5420
+ "disabled": false,
5421
+ "document": "用户ID",
5422
+ "example": "user123",
5423
+ "member": "string",
5424
+ "name": "ClientUserId",
5425
+ "output_required": true,
5426
+ "type": "string",
5427
+ "value_allowed_null": false
5340
5428
  }
5341
5429
  ],
5342
5430
  "usage": "out"
@@ -5554,6 +5642,60 @@
5554
5642
  ],
5555
5643
  "type": "object"
5556
5644
  },
5645
+ "ModifyOwnNumberApplyRequest": {
5646
+ "document": "ModifyOwnNumberApply请求参数结构体",
5647
+ "members": [
5648
+ {
5649
+ "disabled": false,
5650
+ "document": "应用 ID(必填),可以查看 https://console.cloud.tencent.com/ccc",
5651
+ "example": "1400000000",
5652
+ "member": "uint64",
5653
+ "name": "SdkAppId",
5654
+ "required": true,
5655
+ "type": "int"
5656
+ },
5657
+ {
5658
+ "disabled": false,
5659
+ "document": "线路相关参数",
5660
+ "example": "无",
5661
+ "member": "OwnNumberApplyDetailItem",
5662
+ "name": "DetailList",
5663
+ "required": true,
5664
+ "type": "list"
5665
+ },
5666
+ {
5667
+ "disabled": false,
5668
+ "document": "审批单号",
5669
+ "example": "1",
5670
+ "member": "uint64",
5671
+ "name": "ApplyId",
5672
+ "required": false,
5673
+ "type": "int"
5674
+ },
5675
+ {
5676
+ "disabled": false,
5677
+ "document": "送号前缀",
5678
+ "example": "0",
5679
+ "member": "string",
5680
+ "name": "Prefix",
5681
+ "required": false,
5682
+ "type": "string"
5683
+ }
5684
+ ],
5685
+ "type": "object"
5686
+ },
5687
+ "ModifyOwnNumberApplyResponse": {
5688
+ "document": "ModifyOwnNumberApply返回参数结构体",
5689
+ "members": [
5690
+ {
5691
+ "document": "唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。",
5692
+ "member": "string",
5693
+ "name": "RequestId",
5694
+ "type": "string"
5695
+ }
5696
+ ],
5697
+ "type": "object"
5698
+ },
5557
5699
  "ModifyStaffPasswordRequest": {
5558
5700
  "document": "ModifyStaffPassword请求参数结构体",
5559
5701
  "members": [
@@ -5734,6 +5876,48 @@
5734
5876
  ],
5735
5877
  "usage": "out"
5736
5878
  },
5879
+ "OwnNumberApplyDetailItem": {
5880
+ "document": "用户自带号码审批明细数据类型",
5881
+ "members": [
5882
+ {
5883
+ "disabled": false,
5884
+ "document": "号码类型:0-呼入|1-呼出|2-呼入呼出",
5885
+ "example": "2",
5886
+ "member": "int64",
5887
+ "name": "CallType",
5888
+ "required": true,
5889
+ "type": "int"
5890
+ },
5891
+ {
5892
+ "disabled": false,
5893
+ "document": "线路号码",
5894
+ "example": "02066660000",
5895
+ "member": "string",
5896
+ "name": "PhoneNumber",
5897
+ "required": true,
5898
+ "type": "string"
5899
+ },
5900
+ {
5901
+ "disabled": false,
5902
+ "document": "最大并发呼叫数",
5903
+ "example": "1",
5904
+ "member": "int64",
5905
+ "name": "MaxCallCount",
5906
+ "required": true,
5907
+ "type": "int"
5908
+ },
5909
+ {
5910
+ "disabled": false,
5911
+ "document": "每秒最大并发数",
5912
+ "example": "1",
5913
+ "member": "int64",
5914
+ "name": "MaxCallPSec",
5915
+ "required": true,
5916
+ "type": "int"
5917
+ }
5918
+ ],
5919
+ "usage": "in"
5920
+ },
5737
5921
  "PSTNSession": {
5738
5922
  "document": "PSTN 会话类型。",
5739
5923
  "members": [
@@ -27,7 +27,7 @@
27
27
  "CreateAICall": [
28
28
  {
29
29
  "document": "",
30
- "input": "POST / HTTP/1.1\nHost: ccc.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: CreateAICall\n<公共请求参数>\n\n{\n \"Callee\": \"008612300000000\",\n \"SdkAppId\": 1400000000,\n \"SystemPrompt\": \"你是一只机器人\",\n \"LLMType\": \"openai\",\n \"Model\": \"gpt3\",\n \"APIKey\": \"114514\",\n \"APIUrl\": \"https://xxx/v1/chat/completions\",\n \"VoiceType\": \"ZhiMei\"\n}",
30
+ "input": "POST / HTTP/1.1\nHost: ccc.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: CreateAICall\n<公共请求参数>\n\n{\n \"Callee\": \"008612300000000\",\n \"SdkAppId\": 1400000000,\n \"SystemPrompt\": \"您是一只机器人\",\n \"LLMType\": \"openai\",\n \"Model\": \"gpt3\",\n \"APIKey\": \"114514\",\n \"APIUrl\": \"https://xxx/v1/chat/completions\",\n \"VoiceType\": \"ZhiMei\"\n}",
31
31
  "output": "{\n \"Response\": {\n \"RequestId\": \"6bb56a09-2787-40bc-80c5-dc6dab783eff\",\n \"SessionId\": \"6bb56a09278740bc80c5dc6dab783eff\"\n }\n}",
32
32
  "title": "创建ai 会话示例"
33
33
  }
@@ -96,6 +96,14 @@
96
96
  "title": "创建关联 IVR 的会话示例"
97
97
  }
98
98
  ],
99
+ "CreateOwnNumberApply": [
100
+ {
101
+ "document": "",
102
+ "input": "POST / HTTP/1.1\nHost: ccc.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: CreateOwnNumberApply\n<公共请求参数>\n\n{\n \"SdkAppId\": 1,\n \"Prefix\": \"123\",\n \"SipTrunkId\": 12,\n \"DetailList\": [\n {\n \"CallType\": 2,\n \"PhoneNumber\": \"02012345678\",\n \"MaxCallCount\": 1,\n \"MaxCallPSec\": 1\n }\n ]\n}",
103
+ "output": "{\n \"Response\": {\n \"RequestId\": \"abc\",\n \"ApplyId\": 1\n }\n}",
104
+ "title": "创建客户自携号码接入审核实例"
105
+ }
106
+ ],
99
107
  "CreatePredictiveDialingCampaign": [
100
108
  {
101
109
  "document": "创建预测式外呼任务",
@@ -384,6 +392,14 @@
384
392
  "title": "修改话机账号"
385
393
  }
386
394
  ],
395
+ "ModifyOwnNumberApply": [
396
+ {
397
+ "document": "",
398
+ "input": "POST / HTTP/1.1\nHost: ccc.tencentcloudapi.com\nContent-Type: application/json\nX-TC-Action: CreateOwnNumberApply\n<公共请求参数>\n\n{\n \"SdkAppId\": 1,\n \"ApplyId\": 1,\n \"Prefix\": \"123\",\n \"DetailList\": [\n {\n \"CallType\": 2,\n \"PhoneNumber\": \"02012345678\",\n \"MaxCallCount\": 1,\n \"MaxCallPSec\": 1\n }\n ]\n}",
399
+ "output": "{\n \"Response\": {\n \"RequestId\": \"abc\"\n }\n}",
400
+ "title": "修改客户自携号码审批单示例"
401
+ }
402
+ ],
387
403
  "ModifyStaff": [
388
404
  {
389
405
  "document": "修改客服示例",
@@ -3158,6 +3158,7 @@
3158
3158
  "example": "on",
3159
3159
  "member": "string",
3160
3160
  "name": "Switch",
3161
+ "output_required": true,
3161
3162
  "required": true,
3162
3163
  "type": "string",
3163
3164
  "value_allowed_null": true
@@ -3168,6 +3169,7 @@
3168
3169
  "example": "600",
3169
3170
  "member": "int64",
3170
3171
  "name": "CacheTime",
3172
+ "output_required": true,
3171
3173
  "required": true,
3172
3174
  "type": "int",
3173
3175
  "value_allowed_null": true
@@ -3178,6 +3180,7 @@
3178
3180
  "example": "off",
3179
3181
  "member": "string",
3180
3182
  "name": "CompareMaxAge",
3183
+ "output_required": true,
3181
3184
  "required": true,
3182
3185
  "type": "string",
3183
3186
  "value_allowed_null": true
@@ -3188,6 +3191,7 @@
3188
3191
  "example": "off",
3189
3192
  "member": "string",
3190
3193
  "name": "IgnoreCacheControl",
3194
+ "output_required": true,
3191
3195
  "required": true,
3192
3196
  "type": "string",
3193
3197
  "value_allowed_null": true
@@ -3198,9 +3202,21 @@
3198
3202
  "example": "off",
3199
3203
  "member": "string",
3200
3204
  "name": "IgnoreSetCookie",
3205
+ "output_required": true,
3201
3206
  "required": true,
3202
3207
  "type": "string",
3203
3208
  "value_allowed_null": true
3209
+ },
3210
+ {
3211
+ "disabled": false,
3212
+ "document": "当缓存过期后,是否开启源站 mtime 校验,配置值为equal、since、none 和 null。默认配置值为equal,会校验源站文件的mtime与长度。2024-09-12 18:00 之前创建的域名默认值 null,行为保持不变。\nequal:源站响应mtime必须和缓存mtime一致,若mtime值不一致,清除缓存。\nsince:若源站响应mtime大于缓存mtime,清除缓存。\nnone: 缓存过期回源重新获取文件mtime和长度后,不会校验源站响应mtime,若源站响应携带Content-Length头部,只有文件大小改变时才会更新缓存;若源站响应不携带Content-Length头部,会更新缓存。\n注意:此字段可能返回 null,表示取不到有效值。",
3213
+ "example": "equal",
3214
+ "member": "string",
3215
+ "name": "OriginMtimeCheckType",
3216
+ "output_required": false,
3217
+ "required": false,
3218
+ "type": "string",
3219
+ "value_allowed_null": true
3204
3220
  }
3205
3221
  ],
3206
3222
  "usage": "both"
@@ -3211,9 +3227,10 @@
3211
3227
  {
3212
3228
  "disabled": false,
3213
3229
  "document": "路径缓存遵循源站配置开关,取值有:\non:开启\noff:关闭",
3214
- "example": "",
3230
+ "example": "on",
3215
3231
  "member": "string",
3216
3232
  "name": "Switch",
3233
+ "output_required": true,
3217
3234
  "required": true,
3218
3235
  "type": "string",
3219
3236
  "value_allowed_null": false
@@ -3224,9 +3241,21 @@
3224
3241
  "example": "无",
3225
3242
  "member": "HeuristicCache",
3226
3243
  "name": "HeuristicCache",
3244
+ "output_required": true,
3227
3245
  "required": false,
3228
3246
  "type": "object",
3229
3247
  "value_allowed_null": true
3248
+ },
3249
+ {
3250
+ "disabled": false,
3251
+ "document": "当缓存过期后,是否开启源站 mtime 校验,配置值为equal、since、none 和 null。默认配置值为equal,会校验源站文件的mtime与长度。2024-09-12 18:00 之前创建的域名默认值 null,行为保持不变。\nequal:源站响应mtime必须和缓存mtime一致,若mtime值不一致,清除缓存。\nsince:若源站响应mtime大于缓存mtime,清除缓存。\nnone: 缓存过期回源重新获取文件mtime和长度后,不会校验源站响应mtime,若源站响应携带Content-Length头部,只有文件大小改变时才会更新缓存;若源站响应不携带Content-Length头部,会更新缓存。\n注意:此字段可能返回 null,表示取不到有效值。",
3252
+ "example": "equal",
3253
+ "member": "string",
3254
+ "name": "OriginMtimeCheckType",
3255
+ "output_required": false,
3256
+ "required": false,
3257
+ "type": "string",
3258
+ "value_allowed_null": true
3230
3259
  }
3231
3260
  ],
3232
3261
  "usage": "both"
@@ -4709,6 +4709,7 @@
4709
4709
  "example": "127.0.0.1",
4710
4710
  "member": "string",
4711
4711
  "name": "Host",
4712
+ "output_required": true,
4712
4713
  "required": false,
4713
4714
  "type": "string",
4714
4715
  "value_allowed_null": true
@@ -4719,6 +4720,7 @@
4719
4720
  "example": "9030",
4720
4721
  "member": "int64",
4721
4722
  "name": "Port",
4723
+ "output_required": true,
4722
4724
  "required": false,
4723
4725
  "type": "int",
4724
4726
  "value_allowed_null": true
@@ -4729,16 +4731,18 @@
4729
4731
  "example": "root",
4730
4732
  "member": "string",
4731
4733
  "name": "User",
4734
+ "output_required": true,
4732
4735
  "required": false,
4733
4736
  "type": "string",
4734
4737
  "value_allowed_null": true
4735
4738
  },
4736
4739
  {
4737
4740
  "disabled": false,
4738
- "document": "doris集群的密码\n注意:此字段可能返回 null,表示取不到有效值。",
4741
+ "document": "base64编码的doris集群对应用户的密码\n注意:此字段可能返回 null,表示取不到有效值。",
4739
4742
  "example": "xxx",
4740
4743
  "member": "string",
4741
4744
  "name": "Password",
4745
+ "output_required": true,
4742
4746
  "required": false,
4743
4747
  "type": "string",
4744
4748
  "value_allowed_null": true
@@ -3813,6 +3813,58 @@ def doInquiryPriceRenewHosts(args, parsed_globals):
3813
3813
  FormatOutput.output("action", json_obj, g_param[OptionsDefine.Output], g_param[OptionsDefine.Filter])
3814
3814
 
3815
3815
 
3816
+ def doDescribeImageFromFamily(args, parsed_globals):
3817
+ g_param = parse_global_arg(parsed_globals)
3818
+
3819
+ if g_param[OptionsDefine.UseCVMRole.replace('-', '_')]:
3820
+ cred = credential.CVMRoleCredential()
3821
+ elif g_param[OptionsDefine.RoleArn.replace('-', '_')] and g_param[OptionsDefine.RoleSessionName.replace('-', '_')]:
3822
+ cred = credential.STSAssumeRoleCredential(
3823
+ g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.RoleArn.replace('-', '_')],
3824
+ g_param[OptionsDefine.RoleSessionName.replace('-', '_')], endpoint=g_param["sts_cred_endpoint"]
3825
+ )
3826
+ elif os.getenv(OptionsDefine.ENV_TKE_REGION) and os.getenv(OptionsDefine.ENV_TKE_PROVIDER_ID) and os.getenv(OptionsDefine.ENV_TKE_WEB_IDENTITY_TOKEN_FILE) and os.getenv(OptionsDefine.ENV_TKE_ROLE_ARN):
3827
+ cred = credential.DefaultTkeOIDCRoleArnProvider().get_credentials()
3828
+ else:
3829
+ cred = credential.Credential(
3830
+ g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.Token]
3831
+ )
3832
+ http_profile = HttpProfile(
3833
+ reqTimeout=60 if g_param[OptionsDefine.Timeout] is None else int(g_param[OptionsDefine.Timeout]),
3834
+ reqMethod="POST",
3835
+ endpoint=g_param[OptionsDefine.Endpoint],
3836
+ proxy=g_param[OptionsDefine.HttpsProxy.replace('-', '_')]
3837
+ )
3838
+ profile = ClientProfile(httpProfile=http_profile, signMethod="HmacSHA256")
3839
+ if g_param[OptionsDefine.Language]:
3840
+ profile.language = g_param[OptionsDefine.Language]
3841
+ mod = CLIENT_MAP[g_param[OptionsDefine.Version]]
3842
+ client = mod.CvmClient(cred, g_param[OptionsDefine.Region], profile)
3843
+ client._sdkVersion += ("_CLI_" + __version__)
3844
+ models = MODELS_MAP[g_param[OptionsDefine.Version]]
3845
+ model = models.DescribeImageFromFamilyRequest()
3846
+ model.from_json_string(json.dumps(args))
3847
+ start_time = time.time()
3848
+ while True:
3849
+ rsp = client.DescribeImageFromFamily(model)
3850
+ result = rsp.to_json_string()
3851
+ try:
3852
+ json_obj = json.loads(result)
3853
+ except TypeError as e:
3854
+ json_obj = json.loads(result.decode('utf-8')) # python3.3
3855
+ if not g_param[OptionsDefine.Waiter] or search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj) == g_param['OptionsDefine.WaiterInfo']['to']:
3856
+ break
3857
+ cur_time = time.time()
3858
+ if cur_time - start_time >= g_param['OptionsDefine.WaiterInfo']['timeout']:
3859
+ raise ClientError('Request timeout, wait `%s` to `%s` timeout, last request is %s' %
3860
+ (g_param['OptionsDefine.WaiterInfo']['expr'], g_param['OptionsDefine.WaiterInfo']['to'],
3861
+ search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj)))
3862
+ else:
3863
+ print('Inquiry result is %s.' % search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj))
3864
+ time.sleep(g_param['OptionsDefine.WaiterInfo']['interval'])
3865
+ FormatOutput.output("action", json_obj, g_param[OptionsDefine.Output], g_param[OptionsDefine.Filter])
3866
+
3867
+
3816
3868
  def doModifyHpcClusterAttribute(args, parsed_globals):
3817
3869
  g_param = parse_global_arg(parsed_globals)
3818
3870
 
@@ -5301,6 +5353,7 @@ ACTION_MAP = {
5301
5353
  "DescribeInternetChargeTypeConfigs": doDescribeInternetChargeTypeConfigs,
5302
5354
  "RebootInstances": doRebootInstances,
5303
5355
  "InquiryPriceRenewHosts": doInquiryPriceRenewHosts,
5356
+ "DescribeImageFromFamily": doDescribeImageFromFamily,
5304
5357
  "ModifyHpcClusterAttribute": doModifyHpcClusterAttribute,
5305
5358
  "ModifyKeyPairAttribute": doModifyKeyPairAttribute,
5306
5359
  "ModifyHostsAttribute": doModifyHostsAttribute,