Skip to content

Commit 58de2f0

Browse files
author
zhuxuanxuan23
authored
Merge pull request #2 from KscSDK/master
merge master
2 parents 7159953 + 94cd022 commit 58de2f0

File tree

3 files changed

+191
-56
lines changed

3 files changed

+191
-56
lines changed

examples/kec.py

Lines changed: 66 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212

1313
# https://docs.ksyun.com/read/latest/52/_book/oaRunInstances.html
1414
client.run_instances(
15-
MaxCount=50, MinCount=20, ImageId="3f3bddcf-4982-4ab4-a63d-795e8d74e9d5",
16-
SubnetId="f1bd236b-7fd3-44d3-aef9-2d673a65466e", InstancePassword="Ksyun2017",
17-
SecurityGroupId="2f43a9e4-1a3c-448e-b661-efa6d04b82fc", DataDiskGb=50, ChargeType="Monthly",
18-
InstanceType="C1.1A", PurchaseTime=1, InstanceName="test", InstanceNameSuffix="1")
15+
MaxCount=50, MinCount=20, ImageId="3f3bddcf-4982-4ab4-a63d-795e8d74e9d5",
16+
SubnetId="f1bd236b-7fd3-44d3-aef9-2d673a65466e", InstancePassword="Ksyun2017",
17+
SecurityGroupId="2f43a9e4-1a3c-448e-b661-efa6d04b82fc", DataDiskGb=50, ChargeType="Monthly",
18+
InstanceType="C1.1A", PurchaseTime=1, InstanceName="test", InstanceNameSuffix="1")
1919

2020
# https://docs.ksyun.com/read/latest/52/_book/oaTerminateInstances.html
2121
instances = ["2f43a9e4-1a3c-448e-b661-efa6d04b82fc", "2f43a9e4-1a3c-448e-b661-efa6d04b82fc"]
@@ -24,17 +24,17 @@
2424

2525
client.terminate_instances(**instances)
2626

27-
#用户查询竞价实例历史价格列表
27+
# 用户查询竞价实例历史价格列表
2828
# pprint("-------------------------------用户查询竞价实例历史价格列表---------------------------------")
2929
# _spot_price = client.describe_spot_price_history(InstanceType="E1.1A", AvailabilityZone="cn-shanghai-3a")
3030
# pprint(_spot_price)
3131

32-
#查看主机价格
32+
# 查看主机价格
3333
# pprint("-------------------------------查看主机价格---------------------------------")
3434
# _instance_price = client.describe_price(InstanceType="N3.1A", ImageId="IMG-5a7cb0e5-d297-4259-9944-38b3c053a7dc", ChargeType="Daily", SriovNetSupport=True)
3535
# pprint(_instance_price)
3636

37-
#创建实例启动模板
37+
# 创建实例启动模板
3838
# pprint("-------------------------------创建实例启动模板---------------------------------")
3939
# _instance_model = client.create_model(ImageId="IMG-5a7cb0e5-d297-4259-9944-38b3c053a7dc",
4040
# SubnetId="afa859fc-65ea-410d-99f2-d686cf9da1d9",
@@ -43,53 +43,53 @@
4343
# InstanceType="N3.1A")
4444
# pprint(_instance_model)
4545

46-
#删除实例启动模板
46+
# 删除实例启动模板
4747
# pprint("-------------------------------删除实例启动模板---------------------------------")
4848
# models = ["0565ffc5-55e3-44e9-b242-5ed3de725ee0"]
4949
# models = dict(("ModelId.{}".format(index), model) for index, model in enumerate(models, 1))
5050
# _del_model = client.terminate_models(**models)
5151
# pprint(_del_model)
5252

53-
#查看实例启动模板
53+
# 查看实例启动模板
5454
# pprint("-------------------------------查看实例启动模板---------------------------------")
5555
# _des_models = client.describe_models()
5656
# pprint(_des_models)
5757

58-
#云主机迁入容灾组
58+
# 云主机迁入容灾组
5959
# pprint("-------------------------------云主机迁入容灾组-------------------------------")
6060
# instances = ["5e78a001-e472-44f5-9aa4-c822a8121319"]
6161
# instances = dict(("InstanceId.{}".format(index), instance) for index, instance in enumerate(instances, 1))
6262
# add_vm_into_data_guard = client.add_vm_into_data_guard(DataGuardId="ec148c88-5958-49dc-97a2-76fc21c4552a", **instances)
6363
# pprint(add_vm_into_data_guard)
6464

65-
#修改容灾分组名称
65+
# 修改容灾分组名称
6666
# pprint("-------------------------------修改容灾分组名称--------------------------------")
6767
# mod_data_guard_group_name = client.modify_data_guard_groups(DataGuardId="ec148c88-5958-49dc-97a2-76fc21c4552a", DataGuardName="wyn_test")
6868
# pprint(mod_data_guard_group_name)
6969

70-
#查询用户某区域的容灾分组容量
70+
# 查询用户某区域的容灾分组容量
7171
# pprint("-------------------------------查询用户某区域的容灾分组容量--------------------------------")
7272
# des_data_guard_capacity = client.describe_data_guard_capacity()
7373
# pprint(des_data_guard_capacity)
7474

75-
#创建容灾分组
75+
# 创建容灾分组
7676
# pprint("-------------------------------创建容灾分组---------------------------------")
7777
# cre_data_guard_group = client.create_data_guard_group(DataGuardName="my_dataguard_test")
7878
# pprint(cre_data_guard_group)
7979

80-
#删除容灾分组
80+
# 删除容灾分组
8181
# pprint("-------------------------------删除容灾分组---------------------------------")
8282
# data_guards = ["ec148c88-5958-49dc-97a2-76fc21c4552a"]
8383
# data_guards = dict(("DataGuardId.{}".format(index), data_guard) for index, data_guard in enumerate(data_guards, 1))
8484
# del_data_guard_groups = client.delete_data_guard_groups(**data_guards)
8585
# pprint(del_data_guard_groups)
8686

87-
#查询容灾组信息
87+
# 查询容灾组信息
8888
# pprint("-------------------------------查询容灾组信息---------------------------------")
8989
# des_data_guard_group = client.describe_data_guard_group()
9090
# pprint(des_data_guard_group)
9191

92-
#云主机从容灾组中移除
92+
# 云主机从容灾组中移除
9393
# pprint("-------------------------------云主机从容灾组中移除---------------------------------")
9494
# instances = ["5e78a001-e472-44f5-9aa4-c822a8121319"]
9595
# instances = dict(("InstanceId.{}".format(index), instance) for index, instance in enumerate(instances, 1))
@@ -99,7 +99,7 @@
9999
# #镜像导入
100100
# client.import_image(ImageName="", Architecture="", Platform="", ImageUrl="", ImageFormat="")
101101

102-
#镜像复制
102+
# 镜像复制
103103
# pprint("-------------------------------镜像复制---------------------------------")
104104
# param = {
105105
# "ImageId.1": "432eb1f8-72f3-4320-a0f7-572b33b32431",
@@ -108,46 +108,46 @@
108108
# copy_image = client.copy_image(**param)
109109
# pprint(copy_image)
110110

111-
#查看镜像分享信息
111+
# 查看镜像分享信息
112112
# pprint("-------------------------------查看镜像分享信息---------------------------------")
113113
# describe_image_share_permission = client.describe_image_share_permission(ImageId="e5b7d077-021c-4fb2-9d0e-fa4700f99b58")
114114
# pprint(describe_image_share_permission)
115115

116-
#修改镜像分享信息
116+
# 修改镜像分享信息
117117
# pprint("-------------------------------修改镜像分享信息---------------------------------")
118118
# accounts = ["73403544"]
119119
# accounts = dict(("AccountId.{}".format(index), account) for index, account in enumerate(accounts, 1))
120120
# modify_image_share_permission = client.modify_image_share_permission(ImageId="e5b7d077-021c-4fb2-9d0e-fa4700f99b58", Permission="share", **accounts)
121121
# pprint(modify_image_share_permission)
122122

123-
#镜像预热
123+
# 镜像预热
124124
# pprint("-------------------------------镜像预热---------------------------------")
125125
# enable_image_caching = client.enable_image_caching(ImageId="432eb1f8-72f3-4320-a0f7-572b33b32431")
126126
# pprint(enable_image_caching)
127127

128-
#取消镜像预热
128+
# 取消镜像预热
129129
# pprint("-------------------------------取消镜像预热---------------------------------")
130130
# disable_image_caching = client.disable_image_caching(ImageId="432eb1f8-72f3-4320-a0f7-572b33b32431")
131131
# pprint(disable_image_caching)
132132

133-
#创建本地盘快照
133+
# 创建本地盘快照
134134
# pprint("-------------------------------创建本地盘快照---------------------------------")
135135
# create_local_volume_snapshot = client.create_local_volume_snapshot(LocalVolumeId="58ce95e4-0e8f-44e1-8134-dca14697c103-a", LocalVolumeSnapshotName="wyn_test")
136136
# pprint(create_local_volume_snapshot)
137137

138-
#回滚快照
138+
# 回滚快照
139139
# pprint("-------------------------------回滚快照---------------------------------")
140140
# rollback_local_volume = client.rollback_local_volume(LocalVolumeSnapshotId="6c08b3ff-34c2-4948-b81d-4c8cc9b7a084")
141141
# pprint(rollback_local_volume)
142142

143-
#删除快照
143+
# 删除快照
144144
# pprint("-------------------------------删除快照---------------------------------")
145145
# local_volume_snapshots = ["6c08b3ff-34c2-4948-b81d-4c8cc9b7a084"]
146146
# local_volume_snapshots = dict(("LocalVolumeSnapshotId.{}".format(index), local_volume_snapshot) for index, local_volume_snapshot in enumerate(local_volume_snapshots, 1))
147147
# delete_local_volume_snapshot = client.delete_local_volume_snapshot(**local_volume_snapshots)
148148
# pprint(delete_local_volume_snapshot)
149149

150-
#主机绑定密钥
150+
# 主机绑定密钥
151151
# pprint("-------------------------------主机绑定密钥---------------------------------")
152152
# param = {
153153
# "InstanceId.1": "5e78a001-e472-44f5-9aa4-c822a8121319",
@@ -156,11 +156,50 @@
156156
# attach_key = client.attach_key(**param)
157157
# pprint(attach_key)
158158

159-
#主机解绑密钥
159+
# 主机解绑密钥
160160
# pprint("-------------------------------主机解绑密钥---------------------------------")
161161
# param = {
162162
# "InstanceId.1": "5e78a001-e472-44f5-9aa4-c822a8121319",
163163
# "KeyId.1": "c079a41f-beb4-4b73-a68c-69f25b9c8819"
164164
# }
165165
# detach_key = client.detach_key(**param)
166-
# pprint(detach_key)
166+
# pprint(detach_key)
167+
168+
# 获取弹性伸缩配置
169+
# pprint("-------------------------------获取弹性伸缩配置---------------------------------")
170+
# list = client.describe_scaling_configuration()
171+
# print(list)
172+
173+
# 创建弹性伸缩配置
174+
# pprint("-------------------------------创建弹性伸缩配置---------------------------------")
175+
# # API参数参见: https://docs.ksyun.com/documents/28246
176+
# res = client.create_scaling_configuration(**{
177+
# "ScalingConfigurationName": "test-scaling-configuration",
178+
# "ImageId": "IMG-5465174a-6d71-4770-b8e1-917a0dd92466",
179+
# "InstanceType": "N3.4B",
180+
# "ChargeType": "HourlyInstantSettlement",
181+
# "ProjectId": 0,
182+
# "KeyId.1": "71c17c37-c9cb-4faf-a86e-d76d35f3c4d9",
183+
# "DataDisk.1.Type": "SSD3.0",
184+
# "DataDisk.1.Size": 50,
185+
# "DataDisk.1.deleteWithInstance": True,
186+
# "SystemDisk.DiskType": "SSD3.0",
187+
# "SystemDisk.DiskSize": 40,
188+
# })
189+
# print(res)
190+
191+
# 编辑弹性伸缩配置
192+
# pprint("-------------------------------编辑弹性伸缩配置---------------------------------")
193+
# # API参数参见: https://docs.ksyun.com/documents/28247
194+
# res = client.modify_scaling_configuration(**{
195+
# "ScalingConfigurationId": res["ScalingConfigurationId"],
196+
# "ScalingConfigurationName": "test-scaling-configuration123",
197+
# })
198+
# print(res)
199+
200+
# 删除弹性伸缩配置
201+
# pprint("-------------------------------删除弹性伸缩配置---------------------------------")
202+
# res = client.delete_scaling_configuration(**{
203+
# "ScalingConfigurationId.1": res["ScalingConfigurationId"]
204+
# })
205+
# print(res)

examples/kec_modify_instance_type.py

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
2+
import time
3+
from kscore.session import get_session
4+
5+
##################需修改部分Begin####################
6+
region = 'cn-beijing-6' # region code
7+
ks_access_key_id = "ak"
8+
ks_secret_access_key = "sk"
9+
instanceId = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' # 主机的Id
10+
##################需修改部分End######################
11+
12+
session = get_session()
13+
session.set_credentials(ks_access_key_id, ks_secret_access_key)
14+
kec_cli = session.create_client("kec", region, use_ssl=True)
15+
16+
# 更配成功的状态
17+
success_need_reboot = [
18+
'migrating_success',
19+
]
20+
success_need_start = [
21+
'migrating_success_off_line',
22+
'resize_success_local',
23+
'cross_finish',
24+
]
25+
26+
# 更配失败的状态
27+
error_status = [
28+
'pre_migrating_error',
29+
'migrating_error',
30+
'drg_migrating_error',
31+
'migrating_error_off_line',
32+
'resize_error_local',
33+
'power_on_error',
34+
'cross_error'
35+
]
36+
37+
############### 调用变更配置的接口 ###############
38+
# 升配
39+
modify_resp = kec_cli.modify_instance_type(**{
40+
'InstanceId': instanceId,
41+
'InstanceType': 'N3.2B',
42+
})
43+
44+
# # 降配(实例应为关机状态)
45+
# modify_resp = kec_cli.modify_instance_type(**{
46+
# 'InstanceId': instanceId,
47+
# 'InstanceType': 'N3.1B',
48+
# })
49+
50+
# # 变更实例类型(实例应为关机状态)
51+
# # 支持变更实例类型的机型列表:https://docs.ksyun.com/documents/6666
52+
# modify_resp = kec_cli.modify_instance_type(**{
53+
# 'InstanceId': instanceId,
54+
# 'InstanceType': 'S6.1B',
55+
# 'CrossInstanceMigrate': True
56+
# })
57+
58+
############### 更配是异步操作,接口成功后,可以轮询查询实例,待实例状态为变更成功后,执行启动或重启,配置会生效 ###############
59+
if modify_resp['Return']:
60+
# 接口成功,开始轮询实例状态
61+
while True:
62+
describe_resp = kec_cli.describe_instances(**{
63+
'InstanceId.1': instanceId,
64+
})
65+
current_state = describe_resp['InstancesSet'][0]['InstanceState']['Name']
66+
67+
if current_state in success_need_reboot:
68+
## 更配成功,需要重启,新配置才会生效(如果需要自动重启,可以将下面这段代码的注释去掉)
69+
# kec_cli.reboot_instances(**{
70+
# 'InstanceId.1': instanceId,
71+
# })
72+
print('success:', current_state)
73+
break
74+
elif current_state in success_need_start:
75+
# 更配成功,启动实例后新配置即生效(如果需要自动启动,可以将下面这段代码的注释去掉)
76+
# kec_cli.start_instances(**{
77+
# 'InstanceId.1': instanceId,
78+
# })
79+
print('success:', current_state)
80+
break
81+
elif current_state in error_status:
82+
# 更配失败
83+
print('error:', current_state)
84+
break
85+
86+
print('waiting...')
87+
time.sleep(5)
88+
89+

0 commit comments

Comments
 (0)