《openstack-nova》use-novaclient 创建虚拟机(createvms.py)

import sys

import time

import keystoneclient.v2_0.client as keystoneclient

import novaclient.v1_1.client as novaclient

import neutronclient.v2_0.client as neutronclient

from credentials import *

‘‘‘

Creates a network and a COUNT of instances

using the user / project configured in stackrc file

‘‘‘

INSTANCE_NAME = ‘fiva‘

NETWORK_NAME=‘route-66‘

SUBNET_CIDR=‘10.2.33.0/24‘

INSTANCE_COUNT = 3

kcreds = get_keystone_creds()

print "Connecting to keystone"

keystone = keystoneclient.Client(**kcreds)

tokenlen=len(keystone.auth_token)

print keystone.auth_token[0:20] + "..." + keystone.auth_token[tokenlen-20:tokenlen]

ncreds = get_nova_creds()

nova = novaclient.Client(**ncreds)

flavors = nova.flavors.list(is_public=True)

print flavors

images = nova.images.list(detailed=False)

print images

# get networks from quantum

print "Find or create network..."

network_url = keystone.service_catalog.url_for(service_type=‘network‘)

neutron = neutronclient.Client(endpoint_url=network_url, token=keystone.auth_token)

networks = neutron.list_networks()[‘networks‘]

print "Networks: "

print [(nw[‘name‘],nw[‘id‘])for nw in networks]

net = None

net_id = None

networks =  neutron.list_networks(name=NETWORK_NAME)[‘networks‘]

if len(networks)>0 and networks[0][‘name‘] == NETWORK_NAME :

net_id = networks[0][‘id‘]

print "Network found ", NETWORK_NAME, net_id

else:

net = neutron.create_network({‘network‘:

{‘name‘: NETWORK_NAME,‘admin_state_up‘: True} })

print "Created network ", net

net_id = net[‘network‘][‘id‘]

sub = neutron.create_subnet({‘subnet‘: {

‘name‘: ‘subnet‘,

‘network_id‘: net_id,

‘ip_version‘: 4,

‘cidr‘: SUBNET_CIDR

}

})

print "Created subnet ", sub

print "List instances: "

# check what we get so far for instances

instances = nova.servers.list()

for instance in instances:

print ‘name: ‘, instance.name

print ‘host id: ‘, instance.hostId

print "Creating instances: "

instance = nova.servers.create(INSTANCE_NAME, images[0], flavors[0]

# The actual number will be based on the quota.

# see http://www.gossamer-threads.com/lists/openstack/dev/17629

,min_count=1, max_count=INSTANCE_COUNT

# if nics not specified, will connect to all project networks

,nics=[{‘net-id‘: net_id}]

)

# Poll at 5 second intervals, until the status is no longer ‘BUILD‘

status = instance.status

sys.stdout.write(‘Building...‘)

while status == ‘BUILD‘:

time.sleep(1)

sys.stdout.write(".")

sys.stdout.flush()

# Retrieve the instance again so the status field updates

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

status = instance.status

print "status: %s" % status

时间: 2024-10-06 00:53:25

《openstack-nova》use-novaclient 创建虚拟机(createvms.py)的相关文章

Openstack Nova(六)----Instance 创建(CLI RESTful请求)

在上一章中, 通过跟踪nova boot命令, 已经完成了Instance创建参数的解析及身份认证的过程.这一章中继续完成CLI部分的代码跟踪,看看RESTful的请求是如何发出去的. 如果阅读过上一章的内容,就可知道nova boot所对应的最终的执行函数是do_boot.这段代码不长,内容也很简单,具体看注释. do_boot def do_boot(cs, args): """Boot a new server.""" #从args中把参数

##8.创建虚拟机--openstack

##8.创建虚拟机.txt.sh #仅作为参考 source ./admin-openstack.sh #创建虚拟网络 openstack network create --share --external --provider-physical-network provider --provider-network-type flat vnet_10.2 #创建子网 openstack subnet create --network vnet_10.2 --allocation-pool st

使用nova boot命令创建openstack实例

使用命令:nova boot --flavor 1 --key_name mykey--image 9e5c2bee-0373-414c-b4af-b91b0246ad3b --security_group default cirrOS 其中: flavor是虚拟机的配置,比如说内存大小,硬盘大小等,默认下1为最小,4为最大. key_name是创建虚拟机使用的密钥,使用以下三条命令创建密钥: ssh-keygen cd.ssh nova keypair-add --pub_key id_rsa

在Openstack控制节点上使用nova命令创建虚拟机(详细图文过程)

首先,我们需要了解到使用nova命令行创建一个虚拟机,需要如下的信息:glanceID.flavorID.net-id.security-groupsID.availability-zone(指定的母机}.keypairname1.查看glance使用命令:glance image-list 列出节点上所有的image,选择需要的镜像, 我们这里选择:93449941-fba1-436e-a4f2-74a5c1250ad1 2.查看flavor使用命令:nova flavor-list 来列出节

OpenStack创建虚拟机流程

云主机创建流程图: dashboard发创建云主机的请求是先到novaclient,再由novaclient以http的形式发送到nova-api端,我们这里直接从nova端讲起,通过wsgi映射匹配,API映射匹配可以看我的另一篇博客:OpenStack Restful API框架介绍 创建云主机会首先调用到nova/api/openstack/compute/servers.py文件中的create()函数: @wsgi.response(202) @extensions.expected_

openstack之创建虚拟机

1.创建网络和子网 [[email protected] ~]# source admin-openrc.sh  [[email protected] ~]# neutron net-create flat --shared --provider:physical_network physnet1 --provider:network_type flat Created a new network: +---------------------------+-------------------

Nova创建虚拟机的底层代码分析

作为个人学习笔记分享.有不论什么问题欢迎交流! 在openstack中创建虚拟机的底层实现是nova使用了libvirt,代码在nova/virt/libvirt/driver.py. #image_meta:镜像的相关内容,#injected_files:要注入到VM的文件 #network_info:网络相关信息.block_device_info:磁盘相关信息 def spawn(self, context, instance, image_meta, injected_files, ad

如何解决OpenStack创建虚拟机或删除虚拟机时一直处于deleting或者creating状态的问题。

在OpenStack使用时,有时候会遇到创建虚拟机或者删除虚拟机无法成功创建或者删除的时候,一直提示正在进行中. 这种问题是由于OpenStack的消息积压,OpenStack的Nova Computer无法消费消息说导致. 处理这两种情况的方法可以是,先重置虚拟机状态,把虚拟机设置为active状态,删除虚拟机,再重启nova computer的服务即可. 步骤如下: 1.SSH登陆OpenStack管理平台. 2.加载source源: source keystonerc 3. 把所有Open

openstack创建虚拟机

使用devstack安装部署openstack之后,通常我们应该使用vmware的快照功能拍摄快照,以便以后我们可以恢复到之前的情况.创建虚拟机是openstack典型的工作流程,下面将给出创建虚拟机的详细步骤: 1.由于openstack的各种服务都需要经过授权才能够使用,而在授权过程中会使用到OS_PROJECT_NAME,OS_USERNAME和ADMIN_PASSWORD三个openstack环境变量,devstack为我们提供了设置这三个变量的openrc脚本,因此只需devstack

nova创建虚拟机源码分析系列之八 compute创建虚机

/conductor/api.py _build_instance()  /conductor/rpcapi.py  _build_instance() 1 构造一些数据类型2 修改一些api版本信息3 投入消息队列  /conductor/manager.py  _build_instance()1 过滤信息2 调度模块工作(选出最合适的主机,并返回)3 调用/nova/compute/rpcapi.py::build_and_run_instance() 此时已经拿到最合适主机 /compu