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/ ...
随机推荐
- CentOS 7.4 下安装部署Nagios监控系统详细攻略(三)
Nagios是一个流行的电脑系统和网络监控程序,它检测主机和服务,当异常发生和解除时能提醒用户.它是基于GPLv2开发的开源软件,可免费获得及使用. nagios工作原理 nagios的功能是监控服务 ...
- Awkward Response AtCoder - 2656 ( 二分+交互题)
Problem Statement This is an interactive task. Snuke has a favorite positive integer, N. You can ask ...
- [工具] BurpSuite--Scanner功能
BurpSuite--Scanner功能 0x00 配置 Scanner有四个选项 Result -- 展示扫描结果 Scan queue -- 显示扫描的队列 Live scanning -- 我们 ...
- 洛谷P1412 经营与开发题解
题目链接QWQ这里就不阐述了: 题解部分: 从题面上来看,这是个dp(递推)的题目. 但是dp要满足无后效性,但这个题为了取最值,得考虑从当前开始一直持续到结束的p的影响. 这让我们怎么满足无后效性? ...
- thinkphp之cookie操作
cookie设置 命名空间 代码
- CPC/CPM/CPA/CPS定义
CPC 每点击次数计费 CPM 每千人次展现计费 CPA 每行动成果计费(比如推广成功一个用户) CPS 淘宝客类型,按照商品佣金,推广成功计费
- 从mysql8.0.15升级到8.0.16
从mysql8.0.15升级到8.0.16 环境简介 操作系统:Centos 6.10 64位 目前版本:8.0.15 MySQL Community Server 二进制 目的:升级为8.0.16 ...
- 【Leetcode】2的幂(整数的二进制形式,与运算)
class Solution { public: bool isPowerOfTwo(int n) { ) return false; )) == ; } }; 注: 1) 2的幂函数,其y值大于0: ...
- (59)Linux操作系统深入应用
目录: 第一部分:嵌入式的含义 第二部分:DOS命令 第三部分:linux的发展历史(与unix的关系) 第四部分: 基于ubuntu下的linux命令详解大全 第一部分:嵌入式的含义 ...
- C# DataTable 增加行与列
亲测有用的方法 DataTable AllInfos = new DataTable();//生成一个表格 DataColumn typeColumn = new DataColumn();//建一个 ...