Python Module_oslo.vmware_连接 vCenter
目录
前言
oslo.vmware 是一个由 Python 实现的 vCenter 连接驱动 , 提供了连接并操作 vCenter 的 Method . 如果希望应用 Openstack 来接管 vCenter 的资源(调用 vSphere SDK) 的话,那么 olso.vmware 将会是一个不错的选择 .
注意: 本篇的代码需要一个测试用的 vCenter 环境
Install osls.vmware
cd /opt/stack
git clone https://github.com/openstack/oslo.vmware --branch stable/liberty
cd oslo.vmware
sudo pip install -r requirements.txt -e .
测试连接 vCenter
vim vsdk.py
from oslo_vmware import api
from oslo_vmware import vim_util
# Get a handle to a vSphere API session
session = api.VMwareAPISession(
'vCenter_IP',
'vCenter_username',
'vCenter_password',
1,
0.1)
# Get MO of type "HostSystem"
result1 = session.invoke_api(
vim_util,
'get_objects',
session.vim, 'HostSystem', 100)
print result1
print "="*50
# Get information by properties of MO object
rep2 = session.invoke_api(vim_util,'get_object_properties_dict',session.vim,
result1.objects[0].obj,'vm')
print "*"*50
print rep2
How to use the vSphere Web Service SDK
下面给出一些基本的使用方法(不需要 Openstack 环境) :
# 建立与 vCenter 的 Session 连接。
In [83]: session = api.VMwareAPISession(
'200.X.102.7',
'root',
'vmware',
1,
0.1)
# session.invoke_api() method of oslo_vmware.api.VMwareAPISession instance
# :param module: module corresponding to the VIM API call
# :param method: method in the module which corresponds to the VIM API call
# :param args: arguments to the method
# :param kwargs: keyword arguments to the method
# :returns: response from the API call
# :raises: VimException, VimFaultException, VimAttributeException,
# VimSessionOverLoadException, VimConnectionException
# 调用 API 获取一个 MO, 使用这个 MO 来进一步获取别的信息
# Return instance of suds.sudsobject.RetrieveResult
In [83]: hostSystem = session.invoke_api(vim_util, # Module
'get_objects', # Method
session.vim,
'HostSystem', # Managed Object(SDK)
100)
# hostSystem.objects[0].obj ==
# (obj){
# value = "host-9"
# _type = "HostSystem"
# }
# 有 _type 属性,可以在 SDK 中找到 "HostSystem" 的 Description,
# 并且根据 Description 提供的 Properties 进一步获取别的信息。 EG. vm
In [83]: vmResponse = session.invoke_api(vim_util, 'get_object_properties_dict', session.vim,
hostSystem.objects[0].obj,
'vm')
# vmResponse['vm'].ManagedObjectReference[0] ==
# (ManagedObjectReference){
# value = "vm-15"
# _type = "VirtualMachine"
# },
# 有 _type 属性,可以在 SDK 中找到 "VirtualMachine" 的 Description,
# 并且根据 Description 提供的 Properties 进一步获取别的信息。 EG. summary
In [83]: summaryResponse = session.invoke_api(vim_util, 'get_object_properties_dict', session.vim,
vmResponse['vm'].ManagedObjectReference[0],
'summary')
# 当 Output 非常多时,可以使用 IPython 的特殊用法来实现过滤(Python 和 Shell 结合)。
In [118]: test = summaryResponse[0]
In [117]: !echo '$test' | grep '_type'
_type = "VirtualMachine"
_type = "VirtualMachine"
_type = "HostSystem"
# summaryResponse[0].obj ==
# (obj){
# value = "vm-15"
# _type = "VirtualMachine"
# }
# 有 _type 属性,可以在 SDK 中找到 "VirtualMachine" 的 Description,
# 并且根据 Description 提供的 Properties 进一步获取别的信息。 EG. config
In [126]: configResponse = session.invoke_api(vim_util, 'get_object_properties_dict', session.vim,
summaryResponse[0].obj,
'config')
# 可以继续获取别的信息
In [205]: text = configResponse
In [206]: !echo '$text' | grep _type
_type = "Datastore"
_type = "Datastore"
_type = "Network"
_type = "Network"
_type = "Network"
_type = "Network"
使用小结:
1. session.invoke_api() 传递 oslo.vmware 提供的 method 到 vCenter
2. method: get_objects 获取 MO 对象
3. method: get_object_properties_dict 获取 MO 对象的属性信息的字典 EG. 获取 HostSystem 的 MO 对象
4. MO 对象中含有 _type 属性的对象, 其 _type 的值能在 SDK 中找到对应的 Properties
5. 将含有 _type 属性的对象和对应的 SDK 中的 Properties 值传递给 session.invoke_api() 方法就可以获取相应的值
EXAMPLE:
session.invoke_api(vim_util, 'get_object_properties_dict', session.vim,
hostSystem.objects[0].obj, # hostSystem.objects[0].obj 对象中含有 _type 属性, 其值为 HostSystem
'vm') # 在 SDK 中找到 HostSystem MO type ,提供了Properties: 'vm'
Python Module_oslo.vmware_连接 vCenter的更多相关文章
- python 使用pymssql连接sql server数据库
python 使用pymssql连接sql server数据库 #coding=utf-8 #!/usr/bin/env python#------------------------------ ...
- Python中HTTPS连接
permike 原文 Python中HTTPS连接 今天写代码时碰到一个问题,花了几个小时的时间google, 首先需要安装openssl,更新到最新版本后,在浏览器里看是否可访问,如果是可以的,所以 ...
- 无法连接vCenter Server清单https://IP:10443
VMware vCenter Server服务器安装系统的时候使用一个IP,安装完VMware vCenter后来更换了另外一个IP,当使用vSphere Web Client登陆VMware vCe ...
- python使用stomp连接activemq
一.安装ActiveMQ服务 1. 当使用windows时,安装参考:https://blog.csdn.net/WuLex/article/details/78323811 启动:运行activem ...
- boto3--通过Python的SDK连接aws
通过Python的SDK连接aws 参考: https://aws.amazon.com/cn/developers/getting-started/python/ aws上生成访问密钥 ID 和私有 ...
- 【Python】Windows平台下Python、Pydev连接Mysql数据库
Mysql数据库是跨平台的,不是说Python一定就要连接Mongodb. Python连接Mysql数据库是非常easy的. 首先,你要配置好Python的开发环境,详见<[Python]Wi ...
- python使用sqlalchemy连接pymysql数据库
python使用sqlalchemy连接mysql数据库 字数833 阅读461 评论0 喜欢1 sqlalchemy是python当中比较出名的orm程序. 什么是orm? orm英文全称objec ...
- python:字符串的连接
python中有很多字符串连接方式,今天在写代码,顺便总结一下: 最原始的字符串连接方式:str1 + str2 python 新字符串连接语法:str1, str2 奇怪的字符串方式:str1 st ...
- python 和 mysql连接
python 和 mysql连接 虫师教程:http://www.cnblogs.com/fnng/p/3565912.html 其他教程pymysql:http://www.cnblogs.com/ ...
随机推荐
- JS判断页面是否为浏览器当前页
function currentPage() { var hiddenProperty = 'hidden' in document ? 'hidden' : 'webkitHidden' in do ...
- SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作的解决办法
SQL2005 还原数据库失败,提示如下: SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作的解决办法 出现错误时操作步骤为:右击数据库--->任务- ...
- [转]实际项目中如何使用Git做分支管理 (A successful Git branching model)
来自 https://nvie.com/posts/a-successful-git-branching-model/ In this post I present the development m ...
- Nagios监控系统部署(源码)(四)
Nagios监控系统部署(源码) 1. 概述2. 部署Nagios2.1 创建Nagios用户组2.2 下载Nagios和Nagios-plugin源码2.3 编译安装3. 部署Nagios-pl ...
- Codeforces 989 P循环节01构造 ABCD连通块构造 思维对云遮月参考系坐标轴转换
A 直接判存不存在连续的三个包含A,B,C就行 /*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a ...
- 牛顿迭代法——C语言
include <stdio.h> include <math.h> int main() { flaot solution(float a,flaot b,float c,f ...
- WebApi 接口参数:传参详解
前言:还记得刚使用WebApi那会儿,被它的传参机制折腾了好久,查阅了半天资料.如今,使用WebApi也有段时间了,今天就记录下API接口传参的一些方式方法,算是一个笔记,也希望能帮初学者少走弯路.本 ...
- linux上开启和分析mysql慢查询日志
本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加). QQ群: 281442983 (点击链接加入群:http://jq.qq.com/?_wv=1027&k=29Lo ...
- Linux 命令点滴
.linux查看占用内存最多的程序 ;|head .查看占用cpu最多的程序 ;|head chown -R mysql:mysql /data/mysql_data chown -R mysql:m ...
- rsync+inotify实时数据同步单目录实战
rsync+inotify实时数据同步单目录实战 rsync+inotify实时数据同步单目录实战 inotify是一个强大的.细粒度的.异步的文件系统事件监控机制,linux内核从2.6.13起 ...