[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] [XENAPI] Add an example to start HVM guests via the Xen API.



# HG changeset patch
# User Alastair Tse <atse@xxxxxxxxxxxxx>
# Date 1169826141 0
# Node ID b8b75fdbd21f83b871bec32a7bb4a10e478394d0
# Parent  bb2b1b6662fa5076663bcb9791fe00934492279e
[XENAPI] Add an example to start HVM guests via the Xen API.

Signed-off-by: Alastair Tse <atse@xxxxxxxxxxxxx>
---
 tools/python/scripts/test_hvm_create.py |  173 ++++++++++++++++++++++++++++++++
 1 files changed, 173 insertions(+)

diff -r bb2b1b6662fa -r b8b75fdbd21f tools/python/scripts/test_hvm_create.py
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/python/scripts/test_hvm_create.py   Fri Jan 26 15:42:21 2007 +0000
@@ -0,0 +1,173 @@
+#!/usr/bin/python
+
+vm_cfg = {
+    'name_label': 'API_HVM',
+    'user_version': 1,
+    'is_a_template': False,
+    'auto_power_on': False, # TODO
+
+    'memory_static_min': 64,    
+    'memory_static_max': 128,
+    #'memory_dynamic_min': 64,
+    #'memory_dynamic_max': 128,
+    
+    
+    'VCPUs_policy': 'credit',
+    'VCPUs_params': '',
+    'VCPUs_number': 2,
+    'VCPUs_features_required': '',
+    'VCPUs_features_can_use': '',
+    'VCPUs_features_force_on': '',
+    'VCPUs_features_force_off': '',
+
+    'actions_after_shutdown': 'destroy',
+    'actions_after_reboot': 'restart',
+    'actions_after_suspend': 'destroy',
+    'actions_after_crash': 'destroy',
+    
+    'PV_bootloader': '',
+    'PV_bootloader_args': '',
+    
+    'PV_kernel': '',
+    'PV_ramdisk': '',
+    'PV_args': '',
+
+    'HVM_boot': 'cda',
+    'platform_std_VGA': False,
+    'platform_serial': '',
+    'platform_localtime': False,
+    'platform_clock_offset': False,
+    'platform_enable_audio': False,
+    'PCI_bus': ''
+}
+
+local_vdi_cfg = {
+    'name_label': 'gentoo.hvm',
+    'name_description': '',
+    'uri': 'file:/root/gentoo.amd64.hvm.img',
+    'virtual_size': 0,
+    'sector_size': 0,
+    'type': 'system',
+    'parent': '',
+    'SR_name': 'Local',
+    'sharable': False,
+    'read_only': False,
+}    
+
+local_vbd_cfg = {
+    'VDI': '',
+    'VM': '',
+    'device': 'hda',
+    'mode': 'RW',
+    'type': 'disk',
+    'driver': 'ioemu',
+}
+
+vif_cfg = {
+    'name': 'API_VIF',
+    'type': 'ioemu',
+    'device': '',
+    'network': '',
+    'MAC': '',
+    'MTU': 1500,
+}    
+
+import sys
+import time
+sys.path.append('/usr/lib/python')
+
+from xapi import connect, execute
+
+def test_vm_create():
+    server, session = connect()
+    vm_uuid = None
+    local_vdi_uuid = None
+    local_vbd_uuid = None
+    vif_uuid = None
+    
+    # List all VMs
+    vm_list = execute(server, 'VM.get_all', (session,))
+    vm_names = []
+    for vm_uuid in vm_list:
+        vm_record = execute(server, 'VM.get_record', (session, vm_uuid))
+        vm_names.append(vm_record['name_label'])
+
+    # Get default SR
+    local_sr_list = execute(server, 'SR.get_by_name_label',
+                            (session, local_vdi_cfg['SR_name']))
+    local_sr_uuid = local_sr_list[0]
+
+    # Get default network
+    net_list = execute(server, 'network.get_all', (session,))
+    net_uuid = net_list[0]
+
+    try:
+        # Create a new VM
+        print 'Create VM'
+        vm_uuid = execute(server, 'VM.create', (session, vm_cfg))
+
+        print 'Create VDI'
+        # Create a new VDI (Local)
+        local_vdi_cfg['SR'] = local_sr_uuid
+        local_vdi_uuid = execute(server, 'VDI.create',
+                                 (session, local_vdi_cfg))
+
+        print 'Create VBD'
+        # Create a new VBD (Local)
+        local_vbd_cfg['VM'] = vm_uuid
+        local_vbd_cfg['VDI'] = local_vdi_uuid
+        local_vbd_uuid = execute(server, 'VBD.create',
+                                 (session, local_vbd_cfg))
+
+        print 'Craete VIF'
+        # Create a new VIF
+        vif_cfg['network'] = net_uuid
+        vif_cfg['VM'] = vm_uuid
+        vif_uuid = execute(server, 'VIF.create', (session, vif_cfg))
+
+        # Start the VM
+        execute(server, 'VM.start', (session, vm_uuid, False))
+
+        time.sleep(30)
+
+        test_suspend = False
+        if test_suspend:
+            print 'Suspending VM..'
+            execute(server, 'VM.suspend', (session, vm_uuid))
+            print 'Suspended VM.'
+            time.sleep(5)
+            print 'Resuming VM ...'
+            execute(server, 'VM.resume', (session, vm_uuid, False))
+            print 'Resumed VM.'
+
+        # Wait for user to say we're good to shut it down
+        while True:
+            destroy = raw_input('destroy VM? ')
+            if destroy[0] in ('y', 'Y'):
+                break
+
+    finally:
+        # Clean up
+        if vif_uuid:
+            execute(server, 'VIF.destroy', (session, vif_uuid))
+            
+        if local_vbd_uuid:
+            execute(server, 'VBD.destroy', (session, local_vbd_uuid))
+        if local_vdi_uuid:
+            execute(server, 'VDI.destroy', (session, local_vdi_uuid))
+            
+        if vm_uuid:
+            try:
+                execute(server, 'VM.hard_shutdown', (session, vm_uuid))
+                time.sleep(2)
+            except:
+                pass
+            try:    
+                execute(server, 'VM.destroy', (session, vm_uuid))
+            except:
+                pass
+
+
+if __name__ == "__main__":
+    test_vm_create()
+    

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.