python调用openstack的api,create_instance的程序解析

本文介绍如何使用Python脚本和OpenStack的Nova组件创建云服务器实例,并为其分配浮动IP。文章详细展示了从选择镜像到实例创建的过程,包括配置实例属性、监控实例状态及分配公网IP等关键步骤。
摘要由CSDN通过智能技术生成

#!/usr/bin/python

import os

 

import time

 

import novaclient.v1_1.client as nvclient

 

#from credentials import get_nova_creds

#creds = get_nova_creds()

#nova = nvclient.Client(**creds)

 

nova = nvclient.Client('demo','demo','istl','http://192.168.5.71:5000/v2.0')

 

#nova.keypairs.create(name="osvmkey")

 

print "first step : choosing an image"

image_list1 = nova.images.list()

for x,y in enumerate(image_list1):

   print x,y

i = input("please input the correspond number :")

str1 = str(image_list1[i])

image = nova.images.find(name=str1[8:-1])

.............

 

 

#meta =  raw_input("please input server's meta :")

instance = nova.servers.create(name = ins_name, image=image, flavor=flavor, key_name=key_name,disk_config="AUTO",config_drive="True",files="/home/xli/chinese_time.sh",userdata="1")

#instance = nova.servers.create(name = ins_name, image=image, flavor=flavor, key_name=key_name,disk_config="AUTO",config_drive="True",meta="meta",userdata="1")

status = instance.status

while status == 'BUILD':

    time.sleep(5)

    # Retrieve the instance again so the status field updates

    instance = nova.servers.get(instance.id)

    status = instance.status

print "status: %s" % status

 

 

 

print "create a floating ip!"

floatingippool_list4 = nova.floating_ip_pools.list()

 

for x,y in enumerate(floatingippool_list4):

   print x,y

 

p = input("please input the corresponding number :")

str3 = str(floatingippool_list4[p])

floating_ip = nova.floating_ips.create(pool = str3[22:-1])

instance.add_floating_ip(floating_ip)

floatingip_list3 = nova.floating_ips.list()

for x,y in enumerate(floatingip_list3):

   print x,y

 

 

Import语句的作用是导入模块,模块是不带.py扩展的另外一个python文件的文件名

 

在这里我们导入了novaclient.v1_1.client的整个模块,但是需要把 nvclient.作为后面函数的前缀,这样就表示client.py的全部内容在这里可见,

 

在这里还有导入模块的一部分

from novaclient.v1_1 import security_groups

 

import novaclient.v1_1.client as nvclient   这个仅仅就是对导入的模块起了一个别名。

nova = nvclient.Client('demo','demo','istl','http://192.168.5.71:5000/v2.0') 这里就是实例化类Client,然后后面的就是调用这个类下面的方法,

当我们打开client.py可以看到:

  它导进了V1_1下的全部.py文件,相当于把v1_1下的全部方法集成在一起放在了client.py里面,我们通过  实例.方法  就可以调用

 

 

 

 

client.py Client类  有两种认证方式

 

 

 

 def __init__()python里面特殊的对象初始化方法,__init__()python中一个特殊的函数名,用于根据类的定义创建实例对象。而这个self参数指向了这个正在被创建的对象本身。当你在类声明里面定义__init__()方法时,第一个参数必须为self,相当于this

 

self在定义时需要定义,但是在调用时会自动传入。

self的名字并不是规定死的,但是最好还是按照约定是用self

self总是指调用时的类的实例。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值