博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
novaclient开发中遇到的问题小结
阅读量:5041 次
发布时间:2019-06-12

本文共 2172 字,大约阅读时间需要 7 分钟。

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

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

 解决方法:

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

 

转载于:https://www.cnblogs.com/ysugyl/p/8987743.html

你可能感兴趣的文章
token简单的使用流程。
查看>>
django创建项目流程
查看>>
UIActionSheet 修改字体颜色
查看>>
Vue 框架-01- 入门篇 图文教程
查看>>
Spring注解之@Lazy注解,源码分析和总结
查看>>
多变量微积分笔记24——空间线积分
查看>>
Magento CE使用Redis的配置过程
查看>>
poi操作oracle数据库导出excel文件
查看>>
(转)Intent的基本使用方法总结
查看>>
Mac 下的Chrome 按什么快捷键调出页面调试工具
查看>>
Windows Phone开发(24):启动器与选择器之发送短信
查看>>
JS截取字符串常用方法
查看>>
Google非官方的Text To Speech和Speech Recognition的API
查看>>
stdext - A C++ STL Extensions Libary
查看>>
Django 内建 中间件组件
查看>>
bootstrap-Table服务端分页,获取到的数据怎么再页面的表格里显示
查看>>
进程间通信系列 之 socket套接字及其实例
查看>>
天气预报插件
查看>>
Unity 游戏框架搭建 (十三) 无需继承的单例的模板
查看>>
模块与包
查看>>