novaclient开发中遇到的问题小结

Posted April15

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了novaclient开发中遇到的问题小结相关的知识,希望对你有一定的参考价值。

1. 使用官网实例代码,并不能新建client;

from novaclient import client
nova = client.Client(VERSION, USERNAME, PASSWORD, PROJECT_ID, AUTH_URL)

 解决方法:

import novaclient.v2 as nvclient
from keystoneclient.auth.identity import v3
from keystoneclient import session
import os
def get_keystone_creds():
        d = {}
        d[username] = USERNAME
        d[password] = PASSWORD
        d[auth_url] = http://controller:35357/v3
        d[project_name] = admin
        d[project_domain_id] = "default"
        d[user_domain_id] = "default"
        return d
def getNova():
        kd_creds = get_keystone_creds()
        auth = v3.Password(**kd_creds)
        sess = session.Session(auth=auth)
        nova = nvclient.client.Client(2,session=sess)
        return nova

通过keystone建立会话认证,新建client客户端;

2. 需要得到所有servers的详细信息;

解决方法:

(1)查看官方文档找到相应的python api;

(2)找到其响应结果,同时了解了其属性的意义;

在获取“OS-EXT-SRV-ATTR:host”的时候遇到了问题----报错:TypeError: ‘Server‘ object has no attribute ‘__getitem__‘;最后google到解决方法---通过getattr(ser,‘accessIPv4‘) ,终于得到了想要的结果!!!其他扩展属性:“OS-EXT-SRV-ATTR:hypervisor_hostname”也可以通过这种方法得到。

from utils import *
nova = getNova()

servers = nova.servers.list(detailed=True)

for ser in servers:
        print ser.id
        print ser.name
        print nova.images.get(ser.image[id]).name
        print nova.flavors.get(ser.flavor[id]).name
        print ser.key_name
        print ser.status
        print ser.created
        print getattr(ser,accessIPv4)
        print name = getattr(ser,OS-EXT-SRV-ATTR:host)#       print ser.availability_zone
#       print ser["OS-EXT-SRV-ATTR:hypervisor_hostname"] 
        print ser.addresses[public][0][addr]
        print ser.addresses                  

3. 想要找满足需求的api,然后想知道是怎么调用的?

解决方法:

(1)查看官方文档,介绍api的整体架构、分类,然后根据分类再详细去看,比如:我想通过得到所有的flavor,在文档中找“flavors”分类,在里面找到class novaclient.v2.flavors.FlavorManager(api) 里的list函数;

(2)查看github库里的源码;

(3)google;

4. 感想

(1)官方文档应该是第一选择,通过官方文档可以很好地入门;我从一点不了解openstack、novaclient,通过查看novaclient的文档,能根据自己的需求找到相应的函数,并能调用,满足自己的需求,可以说明官方文档的重要性;

(2)English很重要:官方文档是英文的;英文搜索出的资料更全,解决方法更多;上面的解决方案都是通过英文搜索出来的!

(3)google很厉害;

(4)小窍门:如果不知道要搜索的内容的英文应该怎么写?我们可以通过谷歌翻译、有道翻译把中文翻译成英文,然后再改改,就能搜索出解决方案了哟!!!是不是很聪明?我都佩服我自己!!!

 

以上是关于novaclient开发中遇到的问题小结的主要内容,如果未能解决你的问题,请参考以下文章

java新手在实际开发中所遇到的问题及解决方法小结,(持续更新遇到的问题)

Web版记账本开发记录开发过程遇到的问题小结1 对数据库的区间查询

sh Openstack:使用python-novaclient命令将浮动IP与实例解除关联/重新关联,以纠正连接问题。

sh Openstack:使用python-novaclient命令将浮动IP与实例解除关联/重新关联,以纠正连接问题。

Web版记账本开发记录开发过程遇到的问题小结2

软件开发实习小结