示例代码
按照 API版本选择建议, 弹性云服务器所提供的接口分为ECS接口与OpenStack原生接口,推荐使用ECS接口。对于删除弹性云服务器实例的功能,相对OpenStack原生接口,ECS接口支持批量删除,还多了两个选项,分别代表是否同时删除弹性云服务器实例绑定的弹性公网IP和数据盘。本示例程序使用与 ECS 接口对应的 API 函数完成删除操作,但每次调用只删除 1 个弹性云服务器实例。
主要代码在 example-rm-ecs/python/sdkExample.py 中,截取其中主要部分如下:
Copied!
def delete_server(server_id, publicip_type="true", volume_type="true"):
data = {
"servers": [
{
"id": server_id
}
],
"delete_publicip": publicip_type,
"delete_volume": volume_type
}
ff = conn.ecs.delete_server(**data)
print(ff)
wait_time(TIMES, INTERVAL, ff.job_id)
def wait_time(times, interval, job_id):
for index in range(times):
time.sleep(interval)
job = conn.ecs.get_job(job_id)
if job.status == "SUCCESS":
print("作业 %s 成功!" % job_id)
print(job)
return 0
elif job.status == "FAIL":
print("作业 %s 失败!" % job_id)
print(job)
return -1
print("等待作业 %s 结果超时!" % job_id)
return -1
运行示例
在命令行下,进入 pom.xml 文件所在目录,运行以下命令将执行 App 类的 main 方法。
Copied!
mvn package
mvn dependency:copy-dependencies -Dmdep.useRepositoryLayout=false
java -cp "target/sdkExample-1.0-SNAPSHOT.jar;target/dependency/*" cn.eaglesoftware.hwcloud.App
运行结果
程序执行过程中,首先会查询环境变量配置的区域下的 ECS, 以列表的形式向用户展现(最多10条,用户可输入 ECS 名称的一部分缩小查询范围),用户输入序号可选择其中的 1 个 ECS, 程序调用删除实例的API,等待删除作业完成后,将删除结果输出到控制台。注意删除操作耗时较长(约几十秒),中间没有输出结果。
-----------------------样例----------------------------------------
Copied!
请输入 ECS 名称包含的字符串缩小查询范围,直接回车表示查询所有 ECS:
序号 ID 名称
0 a07548d3-c5d1-44e9-8efc-b1c60fe69396 rm-ecs-demo-0001
1 1f822b60-8fe2-460d-9a0c-fa9af8f4e43c rm-ecs-demo-0002
请输入要删除 ECS 的序号(0..1), 无效输入将取消删除操作:1
正在删除 ECS(rm-ecs-demo-0002), ID(1f822b60-8fe2-460d-9a0c-fa9af8f4e43c)...
openstack.ecs.v1.server.DeleteServer(servers=[{'id': '1f822b60-8fe2-460d-9a0c-fa9af8f4e43c'}], delete_publicip=true, delete_volume=true, job_id=8aaf9ede7395c6de017458314fce7a9b)
作业 8aaf9ede7395c6de017458314fce7a9b 成功!
openstack.ecs.v1.job.Job(id=8aaf9ede7395c6de017458314fce7a9b, job_id=8aaf9ede7395c6de017458314fce7a9b, job_type=deleteVMs, begin_time=2020-09-04T08:17:40.813Z, end_time=2020-09-04T08:18:24.402Z, status=SUCCESS, error_code=None, fail_reason=None, entities={'sub_jobs_total': 1, 'sub_jobs': [{'job_id': '8aaf9ede7395c6de01745831514a7a9e', 'job_type': 'deleteVM', 'begin_time': '2020-09-04T08:17:41.193Z', 'end_time': '2020-09-04T08:18:06.340Z', 'status': 'SUCCESS', 'error_code': None, 'fail_reason': None, 'entities': {'server_id': '1f822b60-8fe2-460d-9a0c-fa9af8f4e43c'}}]})
版本说明
本示例基于华为云SDK V2.0版本开发,高版本示例正在开发中。
场景介绍
用户通过调用API可删除1个或多个弹性云服务器实例,并可指定是否同时删除弹性云服务器实例绑定的弹性公网IP和数据盘,帮助用户快速管理弹性云服务器实例,提升业务效率。批量删除弹性云服务器实例时,一次最多可以删除1000个。
前提条件
示例代码
按照 API版本选择建议, 弹性云服务器所提供的接口分为ECS接口与OpenStack原生接口,推荐使用ECS接口。对于删除弹性云服务器实例的功能,相对OpenStack原生接口,ECS接口支持批量删除,还多了两个选项,分别代表是否同时删除弹性云服务器实例绑定的弹性公网IP和数据盘。本示例程序使用与 ECS 接口对应的 API 函数完成删除操作,但每次调用只删除 1 个弹性云服务器实例。
主要代码在 example-rm-ecs/python/sdkExample.py 中,截取其中主要部分如下:
# delete server def delete_server(server_id, publicip_type="true", volume_type="true"): data = { "servers": [ { "id": server_id } ], "delete_publicip": publicip_type, "delete_volume": volume_type } ff = conn.ecs.delete_server(**data) print(ff) wait_time(TIMES, INTERVAL, ff.job_id) # wait until job status become SUCCESS or FAIL def wait_time(times, interval, job_id): for index in range(times): time.sleep(interval) job = conn.ecs.get_job(job_id) if job.status == "SUCCESS": print("作业 %s 成功!" % job_id) print(job) return 0 elif job.status == "FAIL": print("作业 %s 失败!" % job_id) print(job) return -1 print("等待作业 %s 结果超时!" % job_id) return -1
运行示例
在命令行下,进入 pom.xml 文件所在目录,运行以下命令将执行 App 类的 main 方法。
# 打包 mvn package # 将依赖包复制到 target/dependency/ 目录下 mvn dependency:copy-dependencies -Dmdep.useRepositoryLayout=false # 执行 App 类的 main 方法,注意在 Linux 下,应将 ';' 更改为 ':' # java -cp "target/sdkExample-1.0-SNAPSHOT.jar;target/dependency/*" cn.eaglesoftware.hwcloud.App # Windows 命令行下 # java -cp "target/sdkExample-1.0-SNAPSHOT.jar:target/dependency/*" cn.eaglesoftware.hwcloud.App # Linux 命令行下 java -cp "target/sdkExample-1.0-SNAPSHOT.jar;target/dependency/*" cn.eaglesoftware.hwcloud.App
运行结果
程序执行过程中,首先会查询环境变量配置的区域下的 ECS, 以列表的形式向用户展现(最多10条,用户可输入 ECS 名称的一部分缩小查询范围),用户输入序号可选择其中的 1 个 ECS, 程序调用删除实例的API,等待删除作业完成后,将删除结果输出到控制台。注意删除操作耗时较长(约几十秒),中间没有输出结果。
-----------------------样例----------------------------------------