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 条评论
登录 后参与评论

相关文章

来自专栏SDNLAB

容器 Flannel vxlan 基本原理和验证

作者简介:yangjunsss,曾就职于IBM、青云QingCloud,现就职于华为,研究方向:容器微服务、IaaS、P2P分布式。邮箱 cj.yangjun@...

1412
来自专栏腾讯技术工程官方号的专栏

高并发性能调试经验分享(上)

4月份的时候看到一道面试题,据说是腾讯校招面试官提的:在多线程和高并发环境下,如果有一个平均运行一百万次才出现一次的bug,你如何调试这个bug?遗憾的是知乎很...

9363
来自专栏SDNLAB

话说VLAN Tag 的“来龙去脉”

前言 自从上篇文章《三层交换机的工作原理》发布后,有很多的网络爱好者私底下与我取得了联系,针对当前的TCP/IP网络做了很多的探讨,从这些爱好者身上我也学习到了...

43011
来自专栏烂笔头

Django 1.10中文文档-第一个应用Part5-测试

目录[-] 本教程上接教程Part4。 前面已经建立一个网页投票应用,现在将为它创建一些自动化测试。 自动化测试简介 什么是自动化测试 测试是检查你的代码是...

3626
来自专栏IT派

Python库大全,建议收藏留用!

学Python,想必大家都是从爬虫开始的吧。毕竟网上类似的资源很丰富,开源项目也非常多。

1312
来自专栏FreeBuf

玩爆EDUP智能插座Part1

智能插座实现了远程开启/关闭连入的设备,的确是一款懒人神器!其实现原理就是通过WiFi模块实现对继电器的开启或者关闭。EDUP智能插座通过用户提供的凭证连接家庭...

18910
来自专栏北京马哥教育

Python库大全,建议收藏留用!

2523
来自专栏Laoqi's Linux运维专列

zabbix 告警收敛(Python)研究价值高!

7703
来自专栏熊二哥

快速入门系列--MVC--03控制器和IOC应用

    Asp.net MVC也接触好久了,但由于自己一直主要负责后台,尤其是数据库方面的工作对于该框架并没有一个很好的了解,尤其是蒋金楠大师的ASP.NET ...

1846
来自专栏腾讯云数据库(TencentDB)

腾讯云新一代自研数据库CynosDB技术详解——架构设计

CynosDB是腾讯云新一代分布式数据库,100%兼容MySQL和PostgreSQL,支持存储弹性扩展,一主多从共享数据,性能更是超越社区原生MySQL和Po...

11.7K6

扫码关注云+社区