tccli 3.0.1200.1__py2.py3-none-any.whl → 3.0.1202.1__py2.py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) 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/ssl/v20191205/api.json +20 -1
  31. tccli/services/ssl/v20191205/examples.json +1 -1
  32. tccli/services/teo/teo_client.py +724 -141
  33. tccli/services/teo/v20220901/api.json +993 -106
  34. tccli/services/teo/v20220901/examples.json +112 -0
  35. tccli/services/tke/v20180525/api.json +7 -4
  36. tccli/services/vpc/v20170312/api.json +1273 -17
  37. tccli/services/vpc/v20170312/examples.json +176 -0
  38. tccli/services/vpc/vpc_client.py +1315 -149
  39. {tccli-3.0.1200.1.dist-info → tccli-3.0.1202.1.dist-info}/METADATA +2 -2
  40. {tccli-3.0.1200.1.dist-info → tccli-3.0.1202.1.dist-info}/RECORD +43 -39
  41. {tccli-3.0.1200.1.dist-info → tccli-3.0.1202.1.dist-info}/WHEEL +0 -0
  42. {tccli-3.0.1200.1.dist-info → tccli-3.0.1202.1.dist-info}/entry_points.txt +0 -0
  43. {tccli-3.0.1200.1.dist-info → tccli-3.0.1202.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,