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开发中遇到的问题小结的更多相关文章

  1. Java Web 开发中路径相关问题小结

    Java Web开发中路径问题小结 (1) Web开发中路径的几个基本概念 假设在浏览器中访问了如下的页面,如图1所示: 图1 Eclipse中目录结构如图2所示: 图2 那么针对这个站点的几个基本概 ...

  2. CRM 2011 开发中遇到的问题小结

    1.将Retrive 方法改成 RetrieveMultiple时 如果指定的ColumnSet 没有指定主键(entiryname+id),要显示增加实体的主键.否则在调用 Retrieve方法时返 ...

  3. Java Web开发中路径问题小结

     Java Web开发中,路径问题是个挺麻烦的问题,本文小结了几个常见的路径问题,希望能对各位读者有所帮助. (1) Web开发中路径的几个基本概念 假设在浏览器中访问了如下的页面,如图1所示: 图1 ...

  4. Java Web开发中路径问题小结(getRequestUrl getContextUrl getServletUrl)

    看以博客感觉不错,分享一下http://www.cnblogs.com/tianguook/archive/2012/08/31/2665755.html (1) Web开发中路径的几个基本概念 假设 ...

  5. TDD在Unity3D游戏项目开发中的实践

    0x00 前言 关于TDD测试驱动开发的文章已经有很多了,但是在游戏开发尤其是使用Unity3D开发游戏时,却听不到特别多关于TDD的声音.那么本文就来简单聊一聊TDD如何在U3D项目中使用以及如何使 ...

  6. Java开发中的23种设计模式详解

    [放弃了原文访问者模式的Demo,自己写了一个新使用场景的Demo,加上了自己的理解] [源码地址:https://github.com/leon66666/DesignPattern] 一.设计模式 ...

  7. Java开发中的23种设计模式详解(转)

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  8. WEB开发中的字符集和编码

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  9. Viewbox在UWP开发中的应用

    Windows 8.1 与Windows Phone 8.1的UAP应用,终于在Windows 10上统一到了UWP之下.原来3个不同的project也变为一个.没有了2套xaml页面,我们需要用同一 ...

随机推荐

  1. javascript event visualize

    很多时候拿到一个spa,特别是基于jquery的比较复杂的spa时,如果你好奇他是如何工作的,往往没有头绪. 由于spa基本上都是基于事件触发的,一个可行的办法是通过查看事件处理代码能够对spa有一个 ...

  2. UNIX高级环境编程(2)FIle I/O - 原子操作、共享文件描述符和I/O控制函数

    引言: 本篇通过对open函数的讨论,引入原子操作,多进程通信(共享文件描述符)和内核相关的数据结构. 还会讨论集中常见的文件IO控制函数,包括: dup和dup2 sync,fsync和fdatas ...

  3. 遇见C++ Lambda

    转自:https://www.cnblogs.com/allenlooplee/archive/2012/07/03/2574119.html 遇见C++ Lambda Written by Alle ...

  4. Java 输入输出流总结

    1. 运用BufferedInputStream 读取文件流和BufferedOutputStream写文件流: protected static void writeFile2(String inp ...

  5. php功能模块学习笔记

    字符串处理: explode爆炸 implode聚爆explode()     把字符串打散为数组.语法:explode(separator,string,limit) 本函数返回由字符串组成的数组, ...

  6. [BJOI2019] 排兵布阵

    题目 这个\(dp\)出在普及都算水题吧 直接背包,\(O(nms)\)跑不满,非常稳 #include<cstdio> #include<vector> #include&l ...

  7. 【AT987】高橋君

    题目 成爷爷一眼秒,\(tql!!!\) 多组询问,求 \[\sum_{i=0}^kC_{n}^i \] 发现\(k<=n\)啊,于是我们可以把一组询问抽象成一个区间\([k,n]\) 左指针的 ...

  8. sqlmap参数

    sqlmap -u “http://url/news?id=1" –current-user #获取当前用户名称sqlmap -u “http://www.xxoo.com/news?id= ...

  9. Docker实战(六)之使用Dockerfile创建镜像

    Dockervile是一个文本格式的配置文件,用户可以使用Dockerfile来快速创建自定义镜像. 1.基本结构 Dockerfile由一行行命令语句组成,并且支持以#开头的注释行. 一般而言,Do ...

  10. C# 实现动态加载DLL插件 及HRESULT:0x80131047处理

    本代码实现DLL的动态加载, 类似PS里的滤镜插件! 1. 建立一个接口项目类库,此处名称为:Test.IPlugin using System; namespace Test.IPlugin { p ...