实例
更新时间:2024-08-09
BBC实例是百度云上的弹性裸金属服务器操作实例,也是计费、权限控制等高级功能的管理实体。
创建实例
使用以下代码可以创建一个或多个BBC实例。
def create_instance(self):
#如果用户未指定client_token参数,用uuid4生成一个随机字符串给client_token
generate_client_token = str(uuid.uuid4())
client_token = generate_client_token()
#输入你选择的flavor(套餐)ID,通过SDK获取可用flavor id的方法详见套餐章节
flavor_id = 'your-choose-flavor-id'
#输入你要创建instance使用的镜像ID,通过SDK获取可用镜像ID的方法详见镜像章节
image_id = 'your-choose-image-id'
#输入你要创建instance使用的raid ID,通过SDK获取可用flavor id的方法详见套餐章节
raid_id = 'your-choose-raid-id'
#输入待创建物理磁盘的大小,单位为GB,缺省为20
root_disk_size_in_gb = 20
#批量创建(购买)的虚拟机实例个数,必须为大于0的整数,可选参数,缺省为1
purchase_count = 1
#可用区,格式为:国家-区域-可用区,如'中国-北京-可用区A'就是'cn-bj-a'
zone_name = 'cn-bj-a'
#指定subnet信息,为空时将使用默认子网。
subnet_id = '604cebcd-740d-49d1-a1ac-72a91f5e34aa'
#指定security_group信息,可选参数,智能卡才需要
security_group_id = 'g-1utufn3mtg1y'
#选择付费方式:
#付费方式为后付费
post_paid_billing = bcc_model.Billing('Postpaid', 1)
#付费方式为包年包月计费的预付费
pre_paid_billing = bcc_model.Billing('Prepaid', 1)
#实例名称
instance_name = 'your-choose-instance-name' + client_token
#指定使用的部署集id,可选参数
deploy_set_id = 'your-choose-deploy-set-id'
#设置实例管理员密码(8-16位字符,英文,数字和符号必须同时存在,符号仅限!@#$%^*())
admin_pass = 'your-admin-pass'
#设置自动续费时间单位,可选"month"或者"year"
auto_renew_time_unit = "month"
#设置自动续费时间,按月是1-9 按年是 1-3
auto_renew_time = 1
#创建时绑定的标签
bind_tags = [{"tagKey" : "test_key", "tagValue" : "test_val"}]
self.client.create_instance(client_token = client_token,
flavor_id = flavor_id,
image_id = image_id,
raid_id = raid_id,
root_disk_size_in_gb = root_disk_size_in_gb,
purchase_count = purchase_count,
zone_name = zone_name,
subnet_id = subnet_id,
security_group_id = security_group_id,
billing = post_paid_billing,
name = instance_name,
deploy_set_id = deploy_set_id,
admin_pass = admin_pass,
auto_renew_time_unit = auto_renew_time_unit,
auto_renew_time = auto_renew_time,
tags=bind_tags)
查询实例列表
使用以下代码查询所有BBC实例的列表及详情信息
def list_instances(self):
#批量获取列表的查询起始位置,是一个由系统产生的字符串
self.client.list_instances(marker='your-marker')
#设置返回数据大小
self.client.list_instances(max_keys=100)
#通过internal Ip过滤BBC列表
self.client.list_instances(internal_ip='your-choose-internal-ip')
#执行查询BBC实例列表操作
self.client.list_instances()
查询实例详情
使用以下代码可以查询指定BBC实例的详细信息:
def get_instance(self):
#设置你要操作的instance_id
instance_id = 'your-choose-instance-id'
#设置是否查询创建失败信息, True表示查询,默认为False
contains_failed = True
self.client.get_instance(instance_id = instance_id, contains_failed = contains_failed)
启动实例
使用以下代码可以启动指定BBC实例,实例状态必须为 Stopped,调用此接口才可以成功返回,否则提示409错误:
def start_instance(self):
#设置你要操作的instance_id
instance_id = 'your-choose-instance-id'
self.client.start_instance(instance_id = instance_id)
停止实例
使用以下代码可以停止指定BBC实例,只有状态为 Running 的实例才可以进行此操作,否则提示 409 错误:
def stop_instance(self):
#设置你要操作的instance_id
instance_id = 'your-choose-instance-id'
#是否强制停止实例,为True代表强制停止。缺省为False
force_stop = False
self.client.stop_instance(instance_id = instance_id, force_stop = force_stop))
重启实例
使用以下代码可以重启指定BBC实例,只有状态为 Running 的实例才可以进行此操作,否则提示 409 错误:
def reboot_instance(self):
#设置你要操作的instance_id
instance_id = 'your-choose-instance-id'
#是否强制重启实例,为True代表强制重启。缺省为False
force_stop = False
self.client.reboot_instance(instance_id = instance_id, force_stop = force_stop))
修改实例名称
使用以下代码可以修改指定BBC实例的名称:
def modify_instance_name(self):
#设置你要操作的instance_id
instance_id = 'your-choose-instance-id'
name = 'name_modify'
self.client.modify_instance_attributes(instance_id = instance_id, name = name)
修改实例描述
使用以下代码可以修改指定BBC实例的描述:
def modify_instance_desc(self):
#设置你要操作的instance_id
instance_id = 'your-choose-instance-id'
desc = 'your_desc'
self.client.modify_instance_attributes(instance_id = instance_id, desc = desc)),
重装实例
使用以下代码可以使用镜像重建指定BBC实例:
def rebuild_instance(self):
#设置你要操作的instance_id
instance_id = 'your-choose-instance-id'
#设置使用的镜像id
image_id = 'your-choose-image-id'
#设置管理员密码
admin_pass = 'your-new-admin-pass'
#是否保留数据,默认为true。当值为true时,raidId和sysRootSize字段不生效
is_preserve_data = False
#raid配置Id,可通过调用SDK的get_flavor_raid接口获得。此参数在isPreserveData为false时为必填,在isPreserveData为true时不生效
raid_id = 'your_raid_id'
#系统盘根分区大小,默认为20G,取值范围为20-100。此参数在isPreserveData为true时不生效
sys_root_size = 20
self.client.rebuild_instance(instance_id = instance_id,
image_id = image_id,
admin_pass = admin_pass,
is_preserve_data = is_preserve_data,
raid_id = raid_id,
sys_root_size = sys_root_size)
释放实例
对于后付费Postpaid以及预付费Prepaid过期的BBC实例,可以使用以下代码将其释放:
def release_instance(self):
#设置你要操作的instance_id
instance_id = 'your-choose-instance-id'
self.client.release_instance(instance_id = instance_id)
修改实例密码
使用以下代码可以修改指定BBC实例的管理员密码:
def modify_instance_password(self):
#设置你要操作的instance_id
instance_id = 'your-choose-instance-id'
#设置新的密码
admin_pass = 'your-new-admin-pass'
self.client.modify_instance_password(instance_id = instance_id, admin_pass = admin_pass)
查询实例VPC/Subnet信息
使用以下代码可以通过BBC实例id查询VPC/Subnet信息:
def get_vpc_subnet(self):
#设置你要操作的instance_id
instance_ids = ['your-choose-instance-id']
self.client.get_vpc_subnet(bbc_ids = instance_ids)
开通自动续费(包含关联产品)
使用以下代码可以开通自动续费
- 仅限预付费产品生效
def create_auto_renew_rules(self):
#设置你要操作的instance_id
instance_id = 'your-choose-instance-id'
#设置自动续费时间单位
renew_time_unit = "month"
#设置自动续费时间
renew_time = 1
self.client.create_auto_renew_rules(instance_id, renew_time_unit, renew_time)
取消自动续费(包含关联产品)
使用以下代码可以取消自动续费
- 仅限预付费产品生效
def delete_auto_renew_rules(self):
#设置你要操作的instance_id
instance_id = 'your-choose-instance-id'
self.client.delete_auto_renew_rules(instance_id)