ia64/xen-unstable

view tools/python/scripts/test_hvm_create.py @ 19527:0e24e9674ded

tools: Always use sane upstream (`native') python paths

Previously, by default we would install our python modules into
/usr/lib/python/xen, for example /usr/lib/python/xen/__init__.py.
Upstream python's standard install location (a) includes the Python
version number and (b) puts things in site-packages by default.

Our best conjecture for the reason for this was an attempt to make the
installs portable between different python versions. However, that
doesn't work because compiled python modules (.pyc), and C python
extensions corresponding to one version of python, are not compatible
across different versions of python.

This is why upstream include the version number.

site-packages is the standard location for locally-installed packages
and is automatically included on the python search path.

In this change, we abandon our own unusual python path setup:

* Invoke setup.py in an entirely standard manner. We pass
PREFIX and DESTDIR using the appropriate options provided by
setup.py for those purposes (adding them to setup.py calls
which were previously lacking them).

* Since the installation locations are now on the standard
python path, we no longer need to add anything to the path
in any of our python utilities. Therefore remove all that
code from every python script. (Many of these scripts
unconditionally added /usr/lib/python and /usr/lib64/python which
is wrong even in the old world.)

* There is no longer any special `Xen python path'. xen-python-path
is no longer needed. It is no longer called by anything in our
tree. However since out-of-tree callers may still invoke it, we
retain it. It now prints a fixed string referring to a directory
which does not to exist; callers (who use it to augment their
python path) will thus add a nonexistent directory to their python
path which is harmless.

* Remove various workarounds including use of setup.py --home
(which is intended for something completely different).

* Remove tests for the XEN_PYTHON_NATIVE_INSTALL build-time
environment variable. The new behaviour is the behaviour which we
should have had if this variable had been set. That is, it is now
as if this variable was always set but also bugs in the resulting
install have been fixed.

This should be a proper fix for the bug addressed by c/s 19515.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
author Keir Fraser <keir.fraser@citrix.com>
date Wed Apr 08 19:13:04 2009 +0100 (2009-04-08)
parents 2adbc1d22fe7
children
line source
1 #!/usr/bin/python
3 vm_cfg = {
4 'name_label': 'API_HVM',
5 'user_version': 1,
6 'is_a_template': False,
7 'auto_power_on': False, # TODO
9 'memory_static_min': 64,
10 'memory_static_max': 128,
11 #'memory_dynamic_min': 64,
12 #'memory_dynamic_max': 128,
15 'VCPUs_policy': 'credit',
16 'VCPUs_params': {},
17 'VCPUs_number': 2,
19 'actions_after_shutdown': 'destroy',
20 'actions_after_reboot': 'restart',
21 'actions_after_crash': 'destroy',
23 'PV_bootloader': '',
24 'PV_bootloader_args': '',
26 'PV_kernel': '',
27 'PV_ramdisk': '',
28 'PV_args': '',
30 'HVM_boot': 'cda',
31 'platform_std_VGA': False,
32 'platform_serial': '',
33 'platform_localtime': False,
34 'platform_clock_offset': False,
35 'platform_enable_audio': False,
36 'PCI_bus': ''
37 }
39 local_vdi_cfg = {
40 'name_label': 'gentoo.hvm',
41 'name_description': '',
42 'virtual_size': 0,
43 'type': 'system',
44 'parent': '',
45 'SR_name': 'Local',
46 'sharable': False,
47 'read_only': False,
48 'other_config': {'location': 'file:/root/gentoo.amd64.hvm.img'},
49 }
51 local_vbd_cfg = {
52 'VDI': '',
53 'VM': '',
54 'device': 'hda',
55 'mode': 'RW',
56 'type': 'disk',
57 'driver': 'ioemu',
58 }
60 vif_cfg = {
61 'name': 'API_VIF',
62 'type': 'ioemu',
63 'device': '',
64 'network': '',
65 'MAC': '',
66 'MTU': 1500,
67 }
69 console_cfg = {
70 'protocol': 'rfb',
71 'other_config': {'vncunused': 1, 'vncpasswd': 'testing'},
72 }
75 import sys
76 import time
78 from xapi import connect, execute
80 def test_vm_create():
81 server, session = connect()
82 vm_uuid = None
83 local_vdi_uuid = None
84 local_vbd_uuid = None
85 vif_uuid = None
87 # List all VMs
88 vm_list = execute(server, 'VM.get_all', (session,))
89 vm_names = []
90 for vm_uuid in vm_list:
91 vm_record = execute(server, 'VM.get_record', (session, vm_uuid))
92 vm_names.append(vm_record['name_label'])
94 # Get default SR
95 local_sr_list = execute(server, 'SR.get_by_name_label',
96 (session, local_vdi_cfg['SR_name']))
97 local_sr_uuid = local_sr_list[0]
99 # Get default network
100 net_list = execute(server, 'network.get_all', (session,))
101 net_uuid = net_list[0]
103 try:
104 # Create a new VM
105 print 'Create VM'
106 vm_uuid = execute(server, 'VM.create', (session, vm_cfg))
108 print 'Create VDI'
109 # Create a new VDI (Local)
110 local_vdi_cfg['SR'] = local_sr_uuid
111 local_vdi_uuid = execute(server, 'VDI.create',
112 (session, local_vdi_cfg))
114 print 'Create VBD'
115 # Create a new VBD (Local)
116 local_vbd_cfg['VM'] = vm_uuid
117 local_vbd_cfg['VDI'] = local_vdi_uuid
118 local_vbd_uuid = execute(server, 'VBD.create',
119 (session, local_vbd_cfg))
121 print 'Craete VIF'
122 # Create a new VIF
123 vif_cfg['network'] = net_uuid
124 vif_cfg['VM'] = vm_uuid
125 vif_uuid = execute(server, 'VIF.create', (session, vif_cfg))
127 # Create a console
128 console_cfg['VM'] = vm_uuid
129 console_uuid = execute(server, 'console.create',
130 (session, console_cfg))
131 print console_uuid
133 # Start the VM
134 execute(server, 'VM.start', (session, vm_uuid, False))
136 time.sleep(30)
138 test_suspend = False
139 if test_suspend:
140 print 'Suspending VM..'
141 execute(server, 'VM.suspend', (session, vm_uuid))
142 print 'Suspended VM.'
143 time.sleep(5)
144 print 'Resuming VM ...'
145 execute(server, 'VM.resume', (session, vm_uuid, False))
146 print 'Resumed VM.'
148 # Wait for user to say we're good to shut it down
149 while True:
150 destroy = raw_input('destroy VM? ')
151 if destroy[0] in ('y', 'Y'):
152 break
154 finally:
155 # Clean up
156 if vif_uuid:
157 execute(server, 'VIF.destroy', (session, vif_uuid))
159 if local_vbd_uuid:
160 execute(server, 'VBD.destroy', (session, local_vbd_uuid))
161 if local_vdi_uuid:
162 execute(server, 'VDI.destroy', (session, local_vdi_uuid))
164 if vm_uuid:
165 try:
166 execute(server, 'VM.hard_shutdown', (session, vm_uuid))
167 time.sleep(2)
168 except:
169 pass
170 try:
171 execute(server, 'VM.destroy', (session, vm_uuid))
172 except:
173 pass
176 if __name__ == "__main__":
177 test_vm_create()