These attachments are examples for pci assignment via xen-api.
ppci_get_record.py: demonstrates physical pci information acquisition.
dpci_create.py: adds a pci device to a domain.
dpci_destroy.py: removes a pci device from a domain.
Regards,
-----------------------
Yosuke Iwamatsu
        NEC Corporation
#!/usr/bin/python
"""Test program for Xen-API direct PCI device attachment"""
SERVER_URL='http://localhost:9363'
USER='me'
PASSWORD='mypassword'
VM_NAME='mydomain'
PCI_NAME='0000:0c:00.1'
import sys
sys.path.append("/usr/lib/python")
from xen.xm.XenAPI import Session
def main(argv = sys.argv):
    server = Session(SERVER_URL)
    server.login_with_password(USER, PASSWORD)
    # get VM
    vm_refs = server.xenapi.host.get_resident_VMs(
            server.xenapi.session.get_this_host(server.getSession()))
    for vm_ref in vm_refs:
        vm_record = server.xenapi.VM.get_record(vm_ref)
        if vm_record['name_label'] == VM_NAME:
            break
    # get PPCI
    ppci_refs = server.xenapi.host.get_PPCIs(
            server.xenapi.session.get_this_host(server.getSession()))
    for ppci_ref in ppci_refs:
        ppci_record = server.xenapi.PPCI.get_record(ppci_ref)
        if ppci_record['name'] == PCI_NAME:
            break
    # create DPCI
    dpci_record = {
        'VM': vm_ref,
        'PPCI': ppci_ref,
        'hotplug_slot': 0,
        }
    dpci_ref = server.xenapi.DPCI.create(dpci_record)
    server.logout()
if __name__ == "__main__":
    main()
#!/usr/bin/python
"""Test program for Xen-API direct PCI device detachment"""
SERVER_URL='http://localhost:9363'
USER='me'
PASSWORD='mypassword'
VM_NAME='mydomain'
PCI_NAME='0000:0c:00.1'
import sys
sys.path.append("/usr/lib/python")
from xen.xm.XenAPI import Session
def main(argv = sys.argv):
    server = Session(SERVER_URL)
    server.login_with_password(USER, PASSWORD)
    # get VM
    vm_refs = server.xenapi.host.get_resident_VMs(
            server.xenapi.session.get_this_host(server.getSession()))
    for vm_ref in vm_refs:
        vm_record = server.xenapi.VM.get_record(vm_ref)
        if vm_record['name_label'] == VM_NAME:
            break
    # get DPCI
    dpci_refs = server.xenapi.DPCI.get_all()
    for dpci_ref in dpci_refs:
        dpci_record = server.xenapi.DPCI.get_record(dpci_ref)
        ppci_record = server.xenapi.PPCI.get_record(dpci_record['PPCI'])
        if ppci_record['name'] == PCI_NAME:
            break
    # destroy
    server.xenapi.DPCI.destroy(dpci_ref)
    server.logout()
if __name__ == "__main__":
    main()
#!/usr/bin/python
"""Test program for Xen-API PPCI class"""
SERVER_URL='http://localhost:9363'
USER='me'
PASSWORD='mypassword'
import sys
sys.path.append("/usr/lib/python")
from xen.xm.XenAPI import Session
def main(argv = sys.argv):
    server = Session(SERVER_URL)
    server.login_with_password(USER, PASSWORD)
    print "=== PPCI INFORMATION ==="
    ppci_refs = server.xenapi.host.get_PPCIs(
            server.xenapi.session.get_this_host(server.getSession()))
    print "ppci_refs = %s" % ppci_refs
    for ppci_ref in ppci_refs:
        ppci_record = server.xenapi.PPCI.get_record(ppci_ref)
        print "ppci_record = %s" % ppci_record
    print
    server.logout()
if __name__ == "__main__":
    main()
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
 
 |