tccli 3.0.1326.1__py2.py3-none-any.whl → 3.0.1327.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 (35) hide show
  1. tccli/__init__.py +1 -1
  2. tccli/services/ams/v20201229/api.json +9 -9
  3. tccli/services/cdb/v20170320/api.json +9 -9
  4. tccli/services/cdc/v20201214/api.json +5 -5
  5. tccli/services/cfs/v20190719/api.json +4 -4
  6. tccli/services/clb/clb_client.py +53 -0
  7. tccli/services/clb/v20180317/api.json +100 -0
  8. tccli/services/clb/v20180317/examples.json +8 -0
  9. tccli/services/emr/v20190103/api.json +19 -0
  10. tccli/services/ess/v20201111/api.json +1 -1
  11. tccli/services/gs/gs_client.py +167 -8
  12. tccli/services/gs/v20191118/api.json +269 -9
  13. tccli/services/gs/v20191118/examples.json +26 -2
  14. tccli/services/lowcode/v20210108/api.json +60 -0
  15. tccli/services/monitor/monitor_client.py +117 -11
  16. tccli/services/monitor/v20180724/api.json +151 -0
  17. tccli/services/monitor/v20180724/examples.json +16 -0
  18. tccli/services/mrs/v20200910/api.json +1 -1
  19. tccli/services/oceanus/v20190422/api.json +15 -5
  20. tccli/services/oceanus/v20190422/examples.json +8 -2
  21. tccli/services/privatedns/privatedns_client.py +53 -0
  22. tccli/services/privatedns/v20201028/api.json +179 -0
  23. tccli/services/privatedns/v20201028/examples.json +8 -0
  24. tccli/services/tcss/v20201101/api.json +190 -32
  25. tccli/services/tcss/v20201101/examples.json +6 -6
  26. tccli/services/tms/v20201229/api.json +2 -2
  27. tccli/services/tms/v20201229/examples.json +1 -1
  28. tccli/services/vm/v20210922/api.json +13 -13
  29. tccli/services/vm/v20210922/examples.json +2 -2
  30. tccli/services/vpc/v20170312/api.json +2 -2
  31. {tccli-3.0.1326.1.dist-info → tccli-3.0.1327.1.dist-info}/METADATA +2 -2
  32. {tccli-3.0.1326.1.dist-info → tccli-3.0.1327.1.dist-info}/RECORD +35 -35
  33. {tccli-3.0.1326.1.dist-info → tccli-3.0.1327.1.dist-info}/WHEEL +0 -0
  34. {tccli-3.0.1326.1.dist-info → tccli-3.0.1327.1.dist-info}/entry_points.txt +0 -0
  35. {tccli-3.0.1326.1.dist-info → tccli-3.0.1327.1.dist-info}/license_files/LICENSE +0 -0
@@ -537,6 +537,58 @@ def doCreateAndroidInstanceImage(args, parsed_globals):
537
537
  FormatOutput.output("action", json_obj, g_param[OptionsDefine.Output], g_param[OptionsDefine.Filter])
538
538
 
539
539
 
540
+ def doModifyAndroidInstancesProperties(args, parsed_globals):
541
+ g_param = parse_global_arg(parsed_globals)
542
+
543
+ if g_param[OptionsDefine.UseCVMRole.replace('-', '_')]:
544
+ cred = credential.CVMRoleCredential()
545
+ elif g_param[OptionsDefine.RoleArn.replace('-', '_')] and g_param[OptionsDefine.RoleSessionName.replace('-', '_')]:
546
+ cred = credential.STSAssumeRoleCredential(
547
+ g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.RoleArn.replace('-', '_')],
548
+ g_param[OptionsDefine.RoleSessionName.replace('-', '_')], endpoint=g_param["sts_cred_endpoint"]
549
+ )
550
+ 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):
551
+ cred = credential.DefaultTkeOIDCRoleArnProvider().get_credentials()
552
+ else:
553
+ cred = credential.Credential(
554
+ g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.Token]
555
+ )
556
+ http_profile = HttpProfile(
557
+ reqTimeout=60 if g_param[OptionsDefine.Timeout] is None else int(g_param[OptionsDefine.Timeout]),
558
+ reqMethod="POST",
559
+ endpoint=g_param[OptionsDefine.Endpoint],
560
+ proxy=g_param[OptionsDefine.HttpsProxy.replace('-', '_')]
561
+ )
562
+ profile = ClientProfile(httpProfile=http_profile, signMethod="HmacSHA256")
563
+ if g_param[OptionsDefine.Language]:
564
+ profile.language = g_param[OptionsDefine.Language]
565
+ mod = CLIENT_MAP[g_param[OptionsDefine.Version]]
566
+ client = mod.GsClient(cred, g_param[OptionsDefine.Region], profile)
567
+ client._sdkVersion += ("_CLI_" + __version__)
568
+ models = MODELS_MAP[g_param[OptionsDefine.Version]]
569
+ model = models.ModifyAndroidInstancesPropertiesRequest()
570
+ model.from_json_string(json.dumps(args))
571
+ start_time = time.time()
572
+ while True:
573
+ rsp = client.ModifyAndroidInstancesProperties(model)
574
+ result = rsp.to_json_string()
575
+ try:
576
+ json_obj = json.loads(result)
577
+ except TypeError as e:
578
+ json_obj = json.loads(result.decode('utf-8')) # python3.3
579
+ if not g_param[OptionsDefine.Waiter] or search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj) == g_param['OptionsDefine.WaiterInfo']['to']:
580
+ break
581
+ cur_time = time.time()
582
+ if cur_time - start_time >= g_param['OptionsDefine.WaiterInfo']['timeout']:
583
+ raise ClientError('Request timeout, wait `%s` to `%s` timeout, last request is %s' %
584
+ (g_param['OptionsDefine.WaiterInfo']['expr'], g_param['OptionsDefine.WaiterInfo']['to'],
585
+ search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj)))
586
+ else:
587
+ print('Inquiry result is %s.' % search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj))
588
+ time.sleep(g_param['OptionsDefine.WaiterInfo']['interval'])
589
+ FormatOutput.output("action", json_obj, g_param[OptionsDefine.Output], g_param[OptionsDefine.Filter])
590
+
591
+
540
592
  def doModifyAndroidInstancesInformation(args, parsed_globals):
541
593
  g_param = parse_global_arg(parsed_globals)
542
594
 
@@ -693,7 +745,7 @@ def doDescribeAndroidInstanceTasksStatus(args, parsed_globals):
693
745
  FormatOutput.output("action", json_obj, g_param[OptionsDefine.Output], g_param[OptionsDefine.Filter])
694
746
 
695
747
 
696
- def doDistributeFileToAndroidInstances(args, parsed_globals):
748
+ def doStopAndroidInstancesApp(args, parsed_globals):
697
749
  g_param = parse_global_arg(parsed_globals)
698
750
 
699
751
  if g_param[OptionsDefine.UseCVMRole.replace('-', '_')]:
@@ -722,11 +774,11 @@ def doDistributeFileToAndroidInstances(args, parsed_globals):
722
774
  client = mod.GsClient(cred, g_param[OptionsDefine.Region], profile)
723
775
  client._sdkVersion += ("_CLI_" + __version__)
724
776
  models = MODELS_MAP[g_param[OptionsDefine.Version]]
725
- model = models.DistributeFileToAndroidInstancesRequest()
777
+ model = models.StopAndroidInstancesAppRequest()
726
778
  model.from_json_string(json.dumps(args))
727
779
  start_time = time.time()
728
780
  while True:
729
- rsp = client.DistributeFileToAndroidInstances(model)
781
+ rsp = client.StopAndroidInstancesApp(model)
730
782
  result = rsp.to_json_string()
731
783
  try:
732
784
  json_obj = json.loads(result)
@@ -1941,6 +1993,58 @@ def doStopPublishStream(args, parsed_globals):
1941
1993
  FormatOutput.output("action", json_obj, g_param[OptionsDefine.Output], g_param[OptionsDefine.Filter])
1942
1994
 
1943
1995
 
1996
+ def doDistributeFileToAndroidInstances(args, parsed_globals):
1997
+ g_param = parse_global_arg(parsed_globals)
1998
+
1999
+ if g_param[OptionsDefine.UseCVMRole.replace('-', '_')]:
2000
+ cred = credential.CVMRoleCredential()
2001
+ elif g_param[OptionsDefine.RoleArn.replace('-', '_')] and g_param[OptionsDefine.RoleSessionName.replace('-', '_')]:
2002
+ cred = credential.STSAssumeRoleCredential(
2003
+ g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.RoleArn.replace('-', '_')],
2004
+ g_param[OptionsDefine.RoleSessionName.replace('-', '_')], endpoint=g_param["sts_cred_endpoint"]
2005
+ )
2006
+ 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):
2007
+ cred = credential.DefaultTkeOIDCRoleArnProvider().get_credentials()
2008
+ else:
2009
+ cred = credential.Credential(
2010
+ g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.Token]
2011
+ )
2012
+ http_profile = HttpProfile(
2013
+ reqTimeout=60 if g_param[OptionsDefine.Timeout] is None else int(g_param[OptionsDefine.Timeout]),
2014
+ reqMethod="POST",
2015
+ endpoint=g_param[OptionsDefine.Endpoint],
2016
+ proxy=g_param[OptionsDefine.HttpsProxy.replace('-', '_')]
2017
+ )
2018
+ profile = ClientProfile(httpProfile=http_profile, signMethod="HmacSHA256")
2019
+ if g_param[OptionsDefine.Language]:
2020
+ profile.language = g_param[OptionsDefine.Language]
2021
+ mod = CLIENT_MAP[g_param[OptionsDefine.Version]]
2022
+ client = mod.GsClient(cred, g_param[OptionsDefine.Region], profile)
2023
+ client._sdkVersion += ("_CLI_" + __version__)
2024
+ models = MODELS_MAP[g_param[OptionsDefine.Version]]
2025
+ model = models.DistributeFileToAndroidInstancesRequest()
2026
+ model.from_json_string(json.dumps(args))
2027
+ start_time = time.time()
2028
+ while True:
2029
+ rsp = client.DistributeFileToAndroidInstances(model)
2030
+ result = rsp.to_json_string()
2031
+ try:
2032
+ json_obj = json.loads(result)
2033
+ except TypeError as e:
2034
+ json_obj = json.loads(result.decode('utf-8')) # python3.3
2035
+ if not g_param[OptionsDefine.Waiter] or search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj) == g_param['OptionsDefine.WaiterInfo']['to']:
2036
+ break
2037
+ cur_time = time.time()
2038
+ if cur_time - start_time >= g_param['OptionsDefine.WaiterInfo']['timeout']:
2039
+ raise ClientError('Request timeout, wait `%s` to `%s` timeout, last request is %s' %
2040
+ (g_param['OptionsDefine.WaiterInfo']['expr'], g_param['OptionsDefine.WaiterInfo']['to'],
2041
+ search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj)))
2042
+ else:
2043
+ print('Inquiry result is %s.' % search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj))
2044
+ time.sleep(g_param['OptionsDefine.WaiterInfo']['interval'])
2045
+ FormatOutput.output("action", json_obj, g_param[OptionsDefine.Output], g_param[OptionsDefine.Filter])
2046
+
2047
+
1944
2048
  def doStartAndroidInstances(args, parsed_globals):
1945
2049
  g_param = parse_global_arg(parsed_globals)
1946
2050
 
@@ -1993,7 +2097,7 @@ def doStartAndroidInstances(args, parsed_globals):
1993
2097
  FormatOutput.output("action", json_obj, g_param[OptionsDefine.Output], g_param[OptionsDefine.Filter])
1994
2098
 
1995
2099
 
1996
- def doStopAndroidInstancesApp(args, parsed_globals):
2100
+ def doInstallAndroidInstancesAppWithURL(args, parsed_globals):
1997
2101
  g_param = parse_global_arg(parsed_globals)
1998
2102
 
1999
2103
  if g_param[OptionsDefine.UseCVMRole.replace('-', '_')]:
@@ -2022,11 +2126,11 @@ def doStopAndroidInstancesApp(args, parsed_globals):
2022
2126
  client = mod.GsClient(cred, g_param[OptionsDefine.Region], profile)
2023
2127
  client._sdkVersion += ("_CLI_" + __version__)
2024
2128
  models = MODELS_MAP[g_param[OptionsDefine.Version]]
2025
- model = models.StopAndroidInstancesAppRequest()
2129
+ model = models.InstallAndroidInstancesAppWithURLRequest()
2026
2130
  model.from_json_string(json.dumps(args))
2027
2131
  start_time = time.time()
2028
2132
  while True:
2029
- rsp = client.StopAndroidInstancesApp(model)
2133
+ rsp = client.InstallAndroidInstancesAppWithURL(model)
2030
2134
  result = rsp.to_json_string()
2031
2135
  try:
2032
2136
  json_obj = json.loads(result)
@@ -2669,6 +2773,58 @@ def doModifyAndroidInstancesUserId(args, parsed_globals):
2669
2773
  FormatOutput.output("action", json_obj, g_param[OptionsDefine.Output], g_param[OptionsDefine.Filter])
2670
2774
 
2671
2775
 
2776
+ def doCreateAndroidInstanceADB(args, parsed_globals):
2777
+ g_param = parse_global_arg(parsed_globals)
2778
+
2779
+ if g_param[OptionsDefine.UseCVMRole.replace('-', '_')]:
2780
+ cred = credential.CVMRoleCredential()
2781
+ elif g_param[OptionsDefine.RoleArn.replace('-', '_')] and g_param[OptionsDefine.RoleSessionName.replace('-', '_')]:
2782
+ cred = credential.STSAssumeRoleCredential(
2783
+ g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.RoleArn.replace('-', '_')],
2784
+ g_param[OptionsDefine.RoleSessionName.replace('-', '_')], endpoint=g_param["sts_cred_endpoint"]
2785
+ )
2786
+ 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):
2787
+ cred = credential.DefaultTkeOIDCRoleArnProvider().get_credentials()
2788
+ else:
2789
+ cred = credential.Credential(
2790
+ g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.Token]
2791
+ )
2792
+ http_profile = HttpProfile(
2793
+ reqTimeout=60 if g_param[OptionsDefine.Timeout] is None else int(g_param[OptionsDefine.Timeout]),
2794
+ reqMethod="POST",
2795
+ endpoint=g_param[OptionsDefine.Endpoint],
2796
+ proxy=g_param[OptionsDefine.HttpsProxy.replace('-', '_')]
2797
+ )
2798
+ profile = ClientProfile(httpProfile=http_profile, signMethod="HmacSHA256")
2799
+ if g_param[OptionsDefine.Language]:
2800
+ profile.language = g_param[OptionsDefine.Language]
2801
+ mod = CLIENT_MAP[g_param[OptionsDefine.Version]]
2802
+ client = mod.GsClient(cred, g_param[OptionsDefine.Region], profile)
2803
+ client._sdkVersion += ("_CLI_" + __version__)
2804
+ models = MODELS_MAP[g_param[OptionsDefine.Version]]
2805
+ model = models.CreateAndroidInstanceADBRequest()
2806
+ model.from_json_string(json.dumps(args))
2807
+ start_time = time.time()
2808
+ while True:
2809
+ rsp = client.CreateAndroidInstanceADB(model)
2810
+ result = rsp.to_json_string()
2811
+ try:
2812
+ json_obj = json.loads(result)
2813
+ except TypeError as e:
2814
+ json_obj = json.loads(result.decode('utf-8')) # python3.3
2815
+ if not g_param[OptionsDefine.Waiter] or search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj) == g_param['OptionsDefine.WaiterInfo']['to']:
2816
+ break
2817
+ cur_time = time.time()
2818
+ if cur_time - start_time >= g_param['OptionsDefine.WaiterInfo']['timeout']:
2819
+ raise ClientError('Request timeout, wait `%s` to `%s` timeout, last request is %s' %
2820
+ (g_param['OptionsDefine.WaiterInfo']['expr'], g_param['OptionsDefine.WaiterInfo']['to'],
2821
+ search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj)))
2822
+ else:
2823
+ print('Inquiry result is %s.' % search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj))
2824
+ time.sleep(g_param['OptionsDefine.WaiterInfo']['interval'])
2825
+ FormatOutput.output("action", json_obj, g_param[OptionsDefine.Output], g_param[OptionsDefine.Filter])
2826
+
2827
+
2672
2828
  def doFetchAndroidInstancesLogs(args, parsed_globals):
2673
2829
  g_param = parse_global_arg(parsed_globals)
2674
2830
 
@@ -3054,10 +3210,11 @@ ACTION_MAP = {
3054
3210
  "CreateAndroidInstancesScreenshot": doCreateAndroidInstancesScreenshot,
3055
3211
  "UninstallAndroidInstancesApp": doUninstallAndroidInstancesApp,
3056
3212
  "CreateAndroidInstanceImage": doCreateAndroidInstanceImage,
3213
+ "ModifyAndroidInstancesProperties": doModifyAndroidInstancesProperties,
3057
3214
  "ModifyAndroidInstancesInformation": doModifyAndroidInstancesInformation,
3058
3215
  "DeleteAndroidInstanceImages": doDeleteAndroidInstanceImages,
3059
3216
  "DescribeAndroidInstanceTasksStatus": doDescribeAndroidInstanceTasksStatus,
3060
- "DistributeFileToAndroidInstances": doDistributeFileToAndroidInstances,
3217
+ "StopAndroidInstancesApp": doStopAndroidInstancesApp,
3061
3218
  "TrylockWorker": doTrylockWorker,
3062
3219
  "DescribeAndroidInstanceImages": doDescribeAndroidInstanceImages,
3063
3220
  "StartAndroidInstancesApp": doStartAndroidInstancesApp,
@@ -3081,8 +3238,9 @@ ACTION_MAP = {
3081
3238
  "ModifyAndroidInstanceResolution": doModifyAndroidInstanceResolution,
3082
3239
  "ConnectAndroidInstance": doConnectAndroidInstance,
3083
3240
  "StopPublishStream": doStopPublishStream,
3241
+ "DistributeFileToAndroidInstances": doDistributeFileToAndroidInstances,
3084
3242
  "StartAndroidInstances": doStartAndroidInstances,
3085
- "StopAndroidInstancesApp": doStopAndroidInstancesApp,
3243
+ "InstallAndroidInstancesAppWithURL": doInstallAndroidInstancesAppWithURL,
3086
3244
  "RebootAndroidInstanceHosts": doRebootAndroidInstanceHosts,
3087
3245
  "SwitchGameArchive": doSwitchGameArchive,
3088
3246
  "DeleteAndroidAppVersion": doDeleteAndroidAppVersion,
@@ -3095,6 +3253,7 @@ ACTION_MAP = {
3095
3253
  "CreateAndroidAppVersion": doCreateAndroidAppVersion,
3096
3254
  "DestroyAndroidInstances": doDestroyAndroidInstances,
3097
3255
  "ModifyAndroidInstancesUserId": doModifyAndroidInstancesUserId,
3256
+ "CreateAndroidInstanceADB": doCreateAndroidInstanceADB,
3098
3257
  "FetchAndroidInstancesLogs": doFetchAndroidInstancesLogs,
3099
3258
  "ExecuteCommandOnAndroidInstances": doExecuteCommandOnAndroidInstances,
3100
3259
  "StartPublishStreamToCSS": doStartPublishStreamToCSS,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "actions": {
3
3
  "BackUpAndroidInstanceToStorage": {
4
- "document": "备份云手机到指定存储",
4
+ "document": "备份云手机数据到指定存储,支持 COS 和兼容 AWS S3 协议的对象存储服务。如果是备份到 COS 时,会使用公网流量,授权 COS bucket 请在控制台中操作。",
5
5
  "input": "BackUpAndroidInstanceToStorageRequest",
6
6
  "name": "备份安卓实例到指定存储",
7
7
  "output": "BackUpAndroidInstanceToStorageResponse",
@@ -15,7 +15,7 @@
15
15
  "status": "online"
16
16
  },
17
17
  "CopyAndroidInstance": {
18
- "document": "复制安卓实例:\n1. 排除和包含文件只能指定/data下的文件,不指定时复制整个/data目录\n2. 源实例和目的实例必须在同一区域\n3. 复制时,源实例和目的实例都会停机,复制完后实例会自动启动\n4. 复制时会产生大量内网流量,请限制并发",
18
+ "document": "复制安卓实例:\n1. 排除和包含文件只能指定 /data 下的文件,不指定时复制整个 /data 目录\n2. 源实例和目的实例必须在同一区域\n3. 复制时,源实例和目的实例都会停机,复制完后实例会自动启动\n4. 复制时会产生大量内网流量,请限制并发",
19
19
  "input": "CopyAndroidInstanceRequest",
20
20
  "name": "复制安卓实例",
21
21
  "output": "CopyAndroidInstanceResponse",
@@ -35,6 +35,13 @@
35
35
  "output": "CreateAndroidAppVersionResponse",
36
36
  "status": "online"
37
37
  },
38
+ "CreateAndroidInstanceADB": {
39
+ "document": "创建云手机实例 ADB 连接信息,请将返回结果的 PrivateKey 字段保存为 pem 文件,并将 pem 文件权限设置为 600,再参考返回结果的 ConnectCommand 使用 adb 连接实例。",
40
+ "input": "CreateAndroidInstanceADBRequest",
41
+ "name": "创建安卓实例 ADB 连接",
42
+ "output": "CreateAndroidInstanceADBResponse",
43
+ "status": "online"
44
+ },
38
45
  "CreateAndroidInstanceImage": {
39
46
  "document": "创建安卓实例镜像",
40
47
  "input": "CreateAndroidInstanceImageRequest",
@@ -50,14 +57,14 @@
50
57
  "status": "online"
51
58
  },
52
59
  "CreateAndroidInstanceSSH": {
53
- "document": "创建安卓实例 SSH 连接",
60
+ "document": "创建安卓实例 SSH 连接信息,请将返回结果的 PrivateKey 字段保存为 pem 文件,并将 pem 文件权限设置为 600,再参考返回结果的 ConnectCommand 使用 ssh 连接实例。",
54
61
  "input": "CreateAndroidInstanceSSHRequest",
55
62
  "name": "创建安卓实例SSH连接",
56
63
  "output": "CreateAndroidInstanceSSHResponse",
57
64
  "status": "online"
58
65
  },
59
66
  "CreateAndroidInstanceWebShell": {
60
- "document": "创建安卓实例 WebShell 连接",
67
+ "document": "创建安卓实例 WebShell 连接信息,返回的 ConnectUrl 可通过浏览器直接打开访问,链接有效期 1 小时,链接打开后可持续使用。",
61
68
  "input": "CreateAndroidInstanceWebShellRequest",
62
69
  "name": "创建安卓实例 WebShell 连接",
63
70
  "output": "CreateAndroidInstanceWebShellResponse",
@@ -176,7 +183,7 @@
176
183
  "status": "online"
177
184
  },
178
185
  "DistributeFileToAndroidInstances": {
179
- "document": "分发文件到安卓实例",
186
+ "document": "将一个文件批量分发到多个实例,一次接口调用触发一次文件分发,一次文件分发只会从公网下载一次,然后文件会走内网分发到实例列表中的实例。",
180
187
  "input": "DistributeFileToAndroidInstancesRequest",
181
188
  "name": "分发文件到安卓实例",
182
189
  "output": "DistributeFileToAndroidInstancesResponse",
@@ -190,7 +197,7 @@
190
197
  "status": "online"
191
198
  },
192
199
  "FetchAndroidInstancesLogs": {
193
- "document": "批量获取安卓实例日志",
200
+ "document": "批量将实例的 logcat 日志文件上传到您已授权的 COS bucket 中,授权 COS bucket 请在控制台中操作。",
194
201
  "input": "FetchAndroidInstancesLogsRequest",
195
202
  "name": "批量获取安卓实例日志",
196
203
  "output": "FetchAndroidInstancesLogsResponse",
@@ -203,6 +210,13 @@
203
210
  "output": "InstallAndroidInstancesAppResponse",
204
211
  "status": "online"
205
212
  },
213
+ "InstallAndroidInstancesAppWithURL": {
214
+ "document": "安装安卓实例应用",
215
+ "input": "InstallAndroidInstancesAppWithURLRequest",
216
+ "name": "通过 URL 安装安卓实例应用",
217
+ "output": "InstallAndroidInstancesAppWithURLResponse",
218
+ "status": "online"
219
+ },
206
220
  "ModifyAndroidApp": {
207
221
  "document": "修改安卓应用信息",
208
222
  "input": "ModifyAndroidAppRequest",
@@ -245,6 +259,13 @@
245
259
  "output": "ModifyAndroidInstancesLabelsResponse",
246
260
  "status": "online"
247
261
  },
262
+ "ModifyAndroidInstancesProperties": {
263
+ "document": "批量修改安卓实例属性",
264
+ "input": "ModifyAndroidInstancesPropertiesRequest",
265
+ "name": "批量修改安卓实例属性",
266
+ "output": "ModifyAndroidInstancesPropertiesResponse",
267
+ "status": "online"
268
+ },
248
269
  "ModifyAndroidInstancesResolution": {
249
270
  "document": "修改安卓实例分辨率。需要注意的是该接口需要重启才能生效。",
250
271
  "input": "ModifyAndroidInstancesResolutionRequest",
@@ -288,7 +309,7 @@
288
309
  "status": "online"
289
310
  },
290
311
  "RestoreAndroidInstanceFromStorage": {
291
- "document": "指定存储还原云手机",
312
+ "document": "使用指定存储数据还原云手机,支持 COS 和兼容 AWS S3 协议的对象存储服务。如果还原数据来自 COS 时,会使用公网流量,授权 COS bucket 请在控制台中操作。",
292
313
  "input": "RestoreAndroidInstanceFromStorageRequest",
293
314
  "name": "指定存储还原安卓实例",
294
315
  "output": "RestoreAndroidInstanceFromStorageResponse",
@@ -393,14 +414,14 @@
393
414
  "status": "online"
394
415
  },
395
416
  "UploadFileToAndroidInstances": {
396
- "document": "上传文件到安卓实例",
417
+ "document": "将文件下载到指定实例列表的实例上,每个实例都会从公网下载文件。如果您需要将同一个文件分发到多个实例,建议使用 DistributeFileToAndroidInstances 接口减少公网下载的流量。如果您需要将不同的文件下载到不同的实例,可考虑使用 UploadFilesToAndroidInstances 接口批量将不同文件下载到不同的实例。",
397
418
  "input": "UploadFileToAndroidInstancesRequest",
398
419
  "name": "上传文件到安卓实例",
399
420
  "output": "UploadFileToAndroidInstancesResponse",
400
421
  "status": "online"
401
422
  },
402
423
  "UploadFilesToAndroidInstances": {
403
- "document": "批量上传文件到安卓实例",
424
+ "document": "批量将不同的文件下载到不同的实例,每个实例下载文件都是从公网下载,建议只用在文件下载使用一次的场景。如果您需要将同一个文件分发到不同实例,建议使用 DistributeFileToAndroidInstances 接口。",
404
425
  "input": "UploadFilesToAndroidInstancesRequest",
405
426
  "name": "批量上传文件到安卓实例",
406
427
  "output": "UploadFilesToAndroidInstancesResponse",
@@ -566,6 +587,16 @@
566
587
  "output_required": true,
567
588
  "type": "string",
568
589
  "value_allowed_null": false
590
+ },
591
+ {
592
+ "disabled": false,
593
+ "document": "应用资源清理模式(实例安装应用所用资源),取值:CLEANUP_ON_UNINSTALL(默认值),卸载 App 时清理;CLEANUP_AFTER_INSTALL,安装 App 后立即清理。普通应用只有 CLEANUP_AFTER_INSTALL 模式。",
594
+ "example": "\"CLEANUP_ON_UNINSTALL\"",
595
+ "member": "string",
596
+ "name": "CleanupMode",
597
+ "output_required": true,
598
+ "type": "string",
599
+ "value_allowed_null": false
569
600
  }
570
601
  ],
571
602
  "usage": "out"
@@ -824,6 +855,34 @@
824
855
  ],
825
856
  "usage": "both"
826
857
  },
858
+ "AndroidInstanceDevice": {
859
+ "document": "安卓实例设备信息",
860
+ "members": [
861
+ {
862
+ "disabled": false,
863
+ "document": "品牌",
864
+ "example": "YourBrand",
865
+ "member": "string",
866
+ "name": "Brand",
867
+ "output_required": true,
868
+ "required": true,
869
+ "type": "string",
870
+ "value_allowed_null": false
871
+ },
872
+ {
873
+ "disabled": false,
874
+ "document": "型号",
875
+ "example": "YourModel",
876
+ "member": "string",
877
+ "name": "Model",
878
+ "output_required": true,
879
+ "required": true,
880
+ "type": "string",
881
+ "value_allowed_null": false
882
+ }
883
+ ],
884
+ "usage": "both"
885
+ },
827
886
  "AndroidInstanceImage": {
828
887
  "document": "安卓实例镜像信息",
829
888
  "members": [
@@ -922,6 +981,30 @@
922
981
  ],
923
982
  "usage": "both"
924
983
  },
984
+ "AndroidInstanceProperty": {
985
+ "document": "安卓实例属性",
986
+ "members": [
987
+ {
988
+ "disabled": false,
989
+ "document": "属性键",
990
+ "example": "device.name",
991
+ "member": "string",
992
+ "name": "Key",
993
+ "required": true,
994
+ "type": "string"
995
+ },
996
+ {
997
+ "disabled": false,
998
+ "document": "属性值",
999
+ "example": "TestName",
1000
+ "member": "string",
1001
+ "name": "Value",
1002
+ "required": false,
1003
+ "type": "string"
1004
+ }
1005
+ ],
1006
+ "usage": "in"
1007
+ },
925
1008
  "AndroidInstanceTask": {
926
1009
  "document": "安卓实例任务信息",
927
1010
  "members": [
@@ -1397,6 +1480,15 @@
1397
1480
  "name": "UninstallCommand",
1398
1481
  "required": false,
1399
1482
  "type": "string"
1483
+ },
1484
+ {
1485
+ "disabled": false,
1486
+ "document": "应用资源清理模式(实例安装应用所用资源),取值:CLEANUP_ON_UNINSTALL(默认值),卸载 App 时清理;CLEANUP_AFTER_INSTALL,安装 App 后立即清理。普通应用只有 CLEANUP_AFTER_INSTALL 模式。",
1487
+ "example": "CLEANUP_ON_UNINSTALL",
1488
+ "member": "string",
1489
+ "name": "CleanupMode",
1490
+ "required": false,
1491
+ "type": "string"
1400
1492
  }
1401
1493
  ],
1402
1494
  "type": "object"
@@ -1423,6 +1515,83 @@
1423
1515
  ],
1424
1516
  "type": "object"
1425
1517
  },
1518
+ "CreateAndroidInstanceADBRequest": {
1519
+ "document": "CreateAndroidInstanceADB请求参数结构体",
1520
+ "members": [
1521
+ {
1522
+ "disabled": false,
1523
+ "document": "安卓实例 ID",
1524
+ "example": "cai-ab123456",
1525
+ "member": "string",
1526
+ "name": "AndroidInstanceId",
1527
+ "required": true,
1528
+ "type": "string"
1529
+ }
1530
+ ],
1531
+ "type": "object"
1532
+ },
1533
+ "CreateAndroidInstanceADBResponse": {
1534
+ "document": "CreateAndroidInstanceADB返回参数结构体",
1535
+ "members": [
1536
+ {
1537
+ "disabled": false,
1538
+ "document": "连接私钥,需要保存为文件形式,例如 private_key.pem",
1539
+ "example": "-----BEGIN OPENSSH PRIVATE KEY-----",
1540
+ "member": "string",
1541
+ "name": "PrivateKey",
1542
+ "output_required": false,
1543
+ "type": "string",
1544
+ "value_allowed_null": false
1545
+ },
1546
+ {
1547
+ "disabled": false,
1548
+ "document": "用户名称",
1549
+ "example": "root",
1550
+ "member": "string",
1551
+ "name": "UserName",
1552
+ "output_required": false,
1553
+ "type": "string",
1554
+ "value_allowed_null": false
1555
+ },
1556
+ {
1557
+ "disabled": false,
1558
+ "document": "连接地址",
1559
+ "example": "10.0.0.1",
1560
+ "member": "string",
1561
+ "name": "HostName",
1562
+ "output_required": false,
1563
+ "type": "string",
1564
+ "value_allowed_null": false
1565
+ },
1566
+ {
1567
+ "disabled": false,
1568
+ "document": "连接端口",
1569
+ "example": "12222",
1570
+ "member": "int64",
1571
+ "name": "Port",
1572
+ "output_required": false,
1573
+ "type": "int",
1574
+ "value_allowed_null": false
1575
+ },
1576
+ {
1577
+ "disabled": false,
1578
+ "document": "连接参考命令",
1579
+ "example": "ssh -i private_key.pem -p 12222 root@10.0.0.1",
1580
+ "member": "string",
1581
+ "name": "ConnectCommand",
1582
+ "output_required": false,
1583
+ "type": "string",
1584
+ "value_allowed_null": false
1585
+ },
1586
+ {
1587
+ "document": "唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。",
1588
+ "member": "string",
1589
+ "name": "RequestId",
1590
+ "type": "string"
1591
+ }
1592
+ ],
1593
+ "type": "object"
1594
+ },
1426
1595
  "CreateAndroidInstanceImageRequest": {
1427
1596
  "document": "CreateAndroidInstanceImage请求参数结构体",
1428
1597
  "members": [
@@ -2996,6 +3165,52 @@
2996
3165
  ],
2997
3166
  "type": "object"
2998
3167
  },
3168
+ "InstallAndroidInstancesAppWithURLRequest": {
3169
+ "document": "InstallAndroidInstancesAppWithURL请求参数结构体",
3170
+ "members": [
3171
+ {
3172
+ "disabled": false,
3173
+ "document": "实例ID",
3174
+ "example": "无",
3175
+ "member": "string",
3176
+ "name": "AndroidInstanceIds",
3177
+ "required": true,
3178
+ "type": "list"
3179
+ },
3180
+ {
3181
+ "disabled": false,
3182
+ "document": "安卓应用下载 URL",
3183
+ "example": "无",
3184
+ "member": "string",
3185
+ "name": "AndroidAppURL",
3186
+ "required": true,
3187
+ "type": "string"
3188
+ }
3189
+ ],
3190
+ "type": "object"
3191
+ },
3192
+ "InstallAndroidInstancesAppWithURLResponse": {
3193
+ "document": "InstallAndroidInstancesAppWithURL返回参数结构体",
3194
+ "members": [
3195
+ {
3196
+ "disabled": false,
3197
+ "document": "任务集合\n注意:此字段可能返回 null,表示取不到有效值。",
3198
+ "example": "无",
3199
+ "member": "AndroidInstanceTask",
3200
+ "name": "TaskSet",
3201
+ "output_required": true,
3202
+ "type": "list",
3203
+ "value_allowed_null": true
3204
+ },
3205
+ {
3206
+ "document": "唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。",
3207
+ "member": "string",
3208
+ "name": "RequestId",
3209
+ "type": "string"
3210
+ }
3211
+ ],
3212
+ "type": "object"
3213
+ },
2999
3214
  "LabelRequirement": {
3000
3215
  "document": "标签要求",
3001
3216
  "members": [
@@ -3323,6 +3538,51 @@
3323
3538
  ],
3324
3539
  "type": "object"
3325
3540
  },
3541
+ "ModifyAndroidInstancesPropertiesRequest": {
3542
+ "document": "ModifyAndroidInstancesProperties请求参数结构体",
3543
+ "members": [
3544
+ {
3545
+ "disabled": false,
3546
+ "document": "安卓实例 ID 列表",
3547
+ "example": "[\"cai-abcd1234\"]",
3548
+ "member": "string",
3549
+ "name": "AndroidInstanceIds",
3550
+ "required": true,
3551
+ "type": "list"
3552
+ },
3553
+ {
3554
+ "disabled": false,
3555
+ "document": "安卓实例设备",
3556
+ "example": "无",
3557
+ "member": "AndroidInstanceDevice",
3558
+ "name": "AndroidInstanceDevice",
3559
+ "required": false,
3560
+ "type": "object"
3561
+ },
3562
+ {
3563
+ "disabled": false,
3564
+ "document": "安卓实例其它属性列表",
3565
+ "example": "无",
3566
+ "member": "AndroidInstanceProperty",
3567
+ "name": "AndroidInstanceProperties",
3568
+ "required": false,
3569
+ "type": "list"
3570
+ }
3571
+ ],
3572
+ "type": "object"
3573
+ },
3574
+ "ModifyAndroidInstancesPropertiesResponse": {
3575
+ "document": "ModifyAndroidInstancesProperties返回参数结构体",
3576
+ "members": [
3577
+ {
3578
+ "document": "唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。",
3579
+ "member": "string",
3580
+ "name": "RequestId",
3581
+ "type": "string"
3582
+ }
3583
+ ],
3584
+ "type": "object"
3585
+ },
3326
3586
  "ModifyAndroidInstancesResolutionRequest": {
3327
3587
  "document": "ModifyAndroidInstancesResolution请求参数结构体",
3328
3588
  "members": [