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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏安富莱嵌入式技术分享

【安富莱专题教程第3期】开发板搭建Web服务器,利用花生壳让电脑和手机可以外网远程监控

说明: 1.  开发板Web服务器的设计可以看我们之前发布的史诗级网络教程:链接。 2.  需要复杂些的Web设计模板,可以使用我们V6开发板发布的综合Demo...

762
来自专栏韩东吉的Unity杂货铺

零基础入门 18: UGUI Slider

现在教程的思路是按照UGUI的组件进行逐一的讲解,先是在Unity里的操作设置,以及代码段的操作控制。上一篇Toggle讲解之后,这篇就是UGUI里的Slide...

591
来自专栏角落的白板报

角落的开发工具集之Vs(Visual Studio)2017插件推荐

Visual Studio 2017 扩展 Visual Studio 2017 15.4.4 : 目前是最新的版本号,所有的工具&插件都支持这个版本号。所以...

2979
来自专栏FreeBuf

高效开源的网络扫描框架NINJA-PingU

写在前面: 这个扫描框架有着一个很萌的名字(企鹅忍者),同时它还有其他优秀的特性,开源,支持插件,高效。 正文: NINJA-PingU作为一个扫描框架,可不仅...

2105
来自专栏Timhbw博客

wordpress文章ID不连续

2016-05-3023:03:51 发表评论 1,092℃热度 先说明,这个明显是强迫症才会搞这种累死人不的好处的活,当然,我也是这种人。当初 Typech...

28813
来自专栏企鹅号快讯

XSStrike:基于Python的XSS测试工具

简介 XSStrike 是一款用于探测并利用XSS漏洞的脚本 XSStrike目前所提供的产品特性: 对参数进行模糊测试之后构建合适的payload 使用pay...

2175
来自专栏玉树芝兰

如何用Python智能批量压缩图片?

本文一步步为你介绍,如何用Python自动判断多张图片中哪些超出阈值需要压缩,且保持宽高比。如果你想了解Python图像处理的基础知识,欢迎动手来尝试。

772
来自专栏人工智能的秘密

教你如何用Python写一个小游戏

最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏、后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大...

1.5K7
来自专栏有趣的Python

最新Django2.0.1在线教育零基础到上线教程(十一)首页,全局功能细节和404以及500页面配置

演示地址: http://mxonline.mtianyan.cn 教程仓库地址1: https://github.com/mtianyan/DjangoGe...

28710
来自专栏JackeyGao的博客

JPG2ASCII开发上线记录

刚开始做运维的时候喜欢在登录服务器的时候自动打印一些ASCII图像, 于是大量搜寻这种图片以做到自己的欢迎页独一无二。 想想有点不误正业, 现在虽说找到合适的A...

743

扫码关注云+社区