vmware vsphere api (pyVmomi)

1. 简介

pyvmomi是一款 VMware vSphere API的python sdk,可以通过它管理ESX, ESXi和Vcenter。它提供了非常完全的信息和操作,如虚拟机信息、存储信息、物理设备信息、虚拟机克隆、虚拟机关机等等。

2. 安装使用

安装方式

pip install pyVmomi

使用示例参考

API文档参考

3.使用示例

import ssl
import atexit

from pyVmomi import vim
from pyVim import connect

def print_vm_info(virtual_machine):
    summary = virtual_machine.summary
    print("keys: ", dir(summary))
    print("Name     : ", summary.config.name)
    print("Template : ", summary.config.template)
    print("Path     : ", summary.config.vmPathName)
    print("Guest    : ", summary.config.guestFullName)
    print("Instance UUID     : ", summary.config.instanceUuid)
    print("Bios UUID         : ", summary.config.uuid)
    annotation = summary.config.annotation
    if annotation:
        print("Annotation : ", annotation)
    print("State : ", summary.runtime.powerState)
    if summary.guest is not None:
        ip_address = summary.guest.ipAddress
        tools_version = summary.guest.toolsStatus
        if tools_version is not None:
            print("VMware-tools : ", tools_version)
        else:
            print("VMware-tools : None")
        if ip_address:
            print("IP       : ", ip_address)
        else:
            print("IP       : None")
    if summary.runtime.question:
        print("Question : ", summary.runtime.question.text)
    print(" ")

# 配置ssl
sslcontext = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
sslcontext.verify_mode = ssl.CERT_NONE
# 连接到vcenter
service_instance = connect.SmartConnect(host="192.168.199.150", port=443, user="root", pwd="123123", sslContext=sslcontext)
atexit.register(connect.Disconnect, service_instance)
content = service_instance.RetrieveContent()
# 获取执行信息
container = content.rootFolder
viewType = [vim.VirtualMachine]
recursive = True
containerView = content.viewManager.CreateContainerView(container, viewType, recursive)
children = containerView.view
if not children:
    print("no virtual_machine")
for child in children:
    print_vm_info(child)

注: 通过vcenter的api接口文档可以获取更加详细和完整的信息
以下内容为通过python的dir()获取VirtualMachine对象取得的

  • VirtualMachine的属性有
    [‘AcquireMksTicket’, ‘AcquireTicket’, ‘Answer’, ‘AnswerVM’, ‘ApplyEvcMode’, ‘ApplyEvcModeVM_Task’, ‘Array’, ‘AttachDisk’, ‘AttachDisk_Task’, ‘CheckCustomizationSpec’, ‘Clone’, ‘CloneVM_Task’, ‘ConsolidateDisks’, ‘ConsolidateVMDisks_Task’, ‘CreateScreenshot’, ‘CreateScreenshot_Task’, ‘CreateSecondary’, ‘CreateSecondaryEx’, ‘CreateSecondaryVMEx_Task’, ‘CreateSecondaryVM_Task’, ‘CreateSnapshot’, ‘CreateSnapshotEx’, ‘CreateSnapshotEx_Task’, ‘CreateSnapshot_Task’, ‘CryptoUnlock’, ‘CryptoUnlock_Task’, ‘Customize’, ‘CustomizeVM_Task’, ‘DefragmentAllDisks’, ‘Destroy’, ‘Destroy_Task’, ‘DetachDisk’, ‘DetachDisk_Task’, ‘DisableSecondary’, ‘DisableSecondaryVM_Task’, ‘EnableSecondary’, ‘EnableSecondaryVM_Task’, ‘EstimateStorageForConsolidateSnapshots_Task’, ‘EstimateStorageRequirementForConsolidate’, ‘ExportVm’, ‘ExtractOvfEnvironment’, ‘InstantClone’, ‘InstantClone_Task’, ‘MakePrimary’, ‘MakePrimaryVM_Task’, ‘MarkAsTemplate’, ‘MarkAsVirtualMachine’, ‘Migrate’, ‘MigrateVM_Task’, ‘MountToolsInstaller’, ‘PowerOff’, ‘PowerOffVM_Task’, ‘PowerOn’, ‘PowerOnVM_Task’, ‘PromoteDisks’, ‘PromoteDisks_Task’, ‘PutUsbScanCodes’, ‘QueryChangedDiskAreas’, ‘QueryFaultToleranceCompatibility’, ‘QueryFaultToleranceCompatibilityEx’, ‘QueryUnownedFiles’, ‘RebootGuest’, ‘ReconfigVM_Task’, ‘Reconfigure’, ‘RefreshStorageInfo’, ‘Reload’, ‘ReloadFromPath’, ‘Relocate’, ‘RelocateVM_Task’, ‘RemoveAllSnapshots’, ‘RemoveAllSnapshots_Task’, ‘Rename’, ‘Rename_Task’, ‘Reset’, ‘ResetGuestInformation’, ‘ResetVM_Task’, ‘RevertToCurrentSnapshot’, ‘RevertToCurrentSnapshot_Task’, ‘SendNMI’, ‘SetCustomValue’, ‘SetDisplayTopology’, ‘SetScreenResolution’, ‘ShutdownGuest’, ‘StandbyGuest’, ‘StartRecording’, ‘StartRecording_Task’, ‘StartReplaying’, ‘StartReplaying_Task’, ‘StopRecording’, ‘StopRecording_Task’, ‘StopReplaying’, ‘StopReplaying_Task’, ‘Suspend’, ‘SuspendVM_Task’, ‘Terminate’, ‘TerminateFaultTolerantVM’, ‘TerminateFaultTolerantVM_Task’, ‘TerminateVM’, ‘TurnOffFaultTolerance’, ‘TurnOffFaultToleranceForVM_Task’, ‘UnmountToolsInstaller’, ‘Unregister’, ‘UnregisterVM’, ‘UpgradeTools’, ‘UpgradeTools_Task’, ‘UpgradeVM_Task’, ‘UpgradeVirtualHardware’, ‘_GetMethodInfo’, ‘_GetMethodList’, ‘_GetMoId’, ‘_GetPropertyInfo’, ‘_GetPropertyList’, ‘_GetServerGuid’, ‘_GetStub’, ‘_InvokeAccessor’, ‘_InvokeMethod’, ‘class’, ‘delattr’, ‘dict’, ‘dir’, ‘doc’, ‘eq’, ‘format’, ‘ge’, ‘getattribute’, ‘gt’, ‘hash’, ‘init’, ‘init_subclass’, ‘le’, ‘lt’, ‘module’, ‘ne’, ‘new’, ‘reduce’, ‘reduce_ex’, ‘repr’, ‘setattr’, ‘sizeof’, ‘str’, ‘subclasshook’, ‘weakref’, ‘_methodInfo’, ‘_moId’, ‘_propInfo’, ‘_propList’, ‘_serverGuid’, ‘_stub’, ‘_version’, ‘_wsdlName’, ‘alarmActionsEnabled’, ‘availableField’, ‘capability’, ‘config’, ‘configIssue’, ‘configStatus’, ‘customValue’, ‘datastore’, ‘declaredAlarmState’, ‘disabledMethod’, ‘effectiveRole’, ‘environmentBrowser’, ‘guest’, ‘guestHeartbeatStatus’, ‘layout’, ‘layoutEx’, ‘name’, ‘network’, ‘overallStatus’, ‘parent’, ‘parentVApp’, ‘permission’, ‘recentTask’, ‘reloadVirtualMachineFromPath_Task’, ‘resourceConfig’, ‘resourcePool’, ‘rootSnapshot’, ‘runtime’, ‘setCustomValue’, ‘snapshot’, ‘storage’, ‘summary’, ‘tag’, ‘triggeredAlarmState’, ‘value’]

  • summary的属性有

‘config’, ‘customValue’, ‘dynamicProperty’, ‘dynamicType’, ‘guest’, ‘overallStatus’, ‘quickStats’, ‘runtime’,‘storage’, ‘vm’

  • 当viewType为HostSystem时,summary的属性有

‘config’, ‘currentEVCModeKey’, ‘customValue’, ‘dynamicProperty’, ‘dynamicType’, ‘gateway’, ‘hardware’, ‘host’, ‘managementServerIp’, ‘maxEVCModeKey’, ‘overallStatus’, ‘quickStats’, ‘rebootRequired’, ‘runtime’, ‘tpmAttestation’

示例结果

以下结果非来自上述代码
在这里插入图片描述

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值