⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 09_vtpm-xapi.py

📁 xen虚拟机源代码安装包
💻 PY
字号:
#!/usr/bin/python# Copyright (C) International Business Machines Corp., 2006# Author: Stefan Berger <stefanb@us.ibm.com># Test to test the vtpm class through the Xen-API## Tested methods:#  VTPM: get_uuid, get_backend, get_by_uuid, get_record#        create, destroy, get_VM#  VM: get_VTPMSfrom XmTestLib import xapifrom XmTestLib.XenAPIDomain import XmTestAPIDomainfrom XmTestLib import *from vtpm_utils import *import commandsimport osVTPM_RECORD_KEYS = [ 'backend', 'VM', 'uuid', 'other_config' ]try:    # XmTestAPIDomain tries to establish a connection to XenD    domain = XmTestAPIDomain()except Exception, e:    SKIP("Skipping test. Error: %s" % str(e))vm_uuid = domain.get_uuid()vtpmcfg = {}vtpmcfg['backend'] = DOM0_UUIDvtpmcfg['VM'] = vm_uuidsession = xapi.connect()vtpm_uuid = session.xenapi.VTPM.create(vtpmcfg)vtpm_be = session.xenapi.VTPM.get_backend(vtpm_uuid)if vtpm_be != vtpmcfg['backend']:    FAIL("vTPM's backend is in '%s', expected: '%s'" %         (vtpm_be, vtpmcfg['backend']))vtpm_rec = session.xenapi.VTPM.get_record(vtpm_uuid)miss_keys = []for k in VTPM_RECORD_KEYS:    if k not in vtpm_rec.keys():        miss_keys.append(k)if len(miss_keys) > 0:    FAIL("vTPM record is missing key(s): %s" % miss_keys)if vtpm_rec['uuid']  != vtpm_uuid:    FAIL("vTPM record shows vtpm uuid '%s', expected: '%s'" %         (vtpm_rec['uuid'], vtpm_uuid))if vtpm_rec['VM']  != vm_uuid:    FAIL("vTPM record shows VM uuid '%s', expected: '%s'" %         (vtpm_rec['VM'], vm_uuid))if vtpm_rec['backend'] != vtpmcfg['backend']:    FAIL("vTPM record shows VM bakcned '%s', expected: '%s'" %         (vtpm_rev['backend'], vtpmcfg['backend']))badkeys = []keys = vtpm_rec.keys()for k in keys:    if k not in VTPM_RECORD_KEYS:        badkeys.append(k)if len(badkeys) > 0:    FAIL("Unexpected attributes in result: %s" % badkeys)if vm_uuid != session.xenapi.VTPM.get_VM(vtpm_uuid):    FAIL("VM uuid from VTPM.get_VM different (%s) than expected (%s)." %         (vm_ref, vm_uuid))uuid = session.xenapi.VTPM.get_uuid(vtpm_uuid)if uuid != vtpm_uuid:    FAIL("vTPM from VTPM.get_uuid different (%s) than expected (%s)." %         (uuid, vtpm_uuid))vtpm_ref = session.xenapi.VTPM.get_by_uuid(vtpm_uuid)if vtpm_ref != vtpm_uuid:    FAIL("vTPM from VTPM.get_by_uuid different (%s) than expected (%s)." %         (vtpm_ref, vtpm_uuid))vm_vtpms = session.xenapi.VM.get_VTPMs(vm_uuid)if len(vm_vtpms) != 1:    FAIL("Number of vTPMs from get_VTPMs is (%d) not what was expected (%d)" %         (len(vm_vtpms), 1))if vtpm_uuid not in vm_vtpms:    FAIL("Other vTPM uuid (%s) returned from VM.get_VTPMs than expected (%s)" %         (vm_vtpms[0], vtpm_uuid))try:    console = domain.start()except DomainError, e:    FAIL("Unable to create domain.")try:    console.sendInput("input")except ConsoleError, e:    saveLog(console.getHistory())    FAIL(str(e))try:    run = console.runCmd("cat /sys/devices/xen/vtpm-0/pcrs")except ConsoleError, e:    saveLog(console.getHistory())    FAIL("1. No result from dumping the PCRs")if re.search("No such file",run["output"]):    FAIL("TPM frontend support not compiled into (domU?) kernel")if not re.search("PCR-00:",run["output"]):    saveLog(console.getHistory())    FAIL("1. Virtual TPM is not working correctly on /dev/vtpm on backend side: \n%s" % run["output"])try:    session.xenapi.VTPM.destroy(vtpm_uuid)    #Should never get here    FAIL("Could destroy vTPM while VM is running")except:    passrc = session.xenapi.VM.suspend(vm_uuid)if rc:    FAIL("Could not suspend VM")try:    session.xenapi.VTPM.destroy(vtpm_uuid)    #May not throw an exception in 'suspend' stateexcept:    passrc = session.xenapi.VM.resume(vm_uuid, False)if rc:    FAIL("Could not resume VM")try:    console = domain.getConsole()except ConsoleError, e:    FAIL(str(e))try:    run = console.runCmd("cat /sys/devices/xen/vtpm-0/pcrs")except ConsoleError, e:    saveLog(console.getHistory())    FAIL("2. No result from dumping the PCRs. vTPM has been removed?")if not re.search("PCR-00:",run["output"]):    saveLog(console.getHistory())    FAIL("2. Virtual TPM is not working correctly on /dev/vtpm on backend side: \n%s" % run["output"])domain.stop()try:    session.xenapi.VTPM.destroy(vtpm_uuid)except:    FAIL("Could NOT destroy vTPM while domain is halted.")domain.destroy()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -