ia64/xen-unstable

view tools/examples/xmexample2 @ 7238:971e7c7411b3

Raise an exception if an error appears on the pipes to our children, and make
sure that the child's pipes are closed even under that exception. Move the
handling of POLLHUP to the end of the loop, so that we guarantee to read any
remaining data from the child if POLLHUP and POLLIN appear at the same time.

Signed-off-by: Ewan Mellor <ewan@xensource.com>
author emellor@ewan
date Thu Oct 06 10:13:11 2005 +0100 (2005-10-06)
parents 244f1aa98d30
children 18eb059ae471
line source
1 # -*- mode: python; -*-
2 #============================================================================
3 # Example Python setup script for 'xm create'.
4 # This script sets the parameters used when a domain is created using 'xm create'.
5 #
6 # This is a relatively advanced script that uses a parameter, vmid, to control
7 # the settings. So this script can be used to start a set of domains by
8 # setting the vmid parameter on the 'xm create' command line. For example:
9 #
10 # xm create vmid=1
11 # xm create vmid=2
12 # xm create vmid=3
13 #
14 # The vmid is purely a script variable, and has no effect on the the domain
15 # id assigned to the new domain.
16 #============================================================================
18 # Define script variables here.
19 # xm_vars is defined automatically, use xm_vars.var() to define a variable.
21 # This function checks that 'vmid' has been given a valid value.
22 # It is called automatically by 'xm create'.
23 def vmid_check(var, val):
24 val = int(val)
25 if val <= 0:
26 raise ValueError
27 return val
29 # Define the 'vmid' variable so that 'xm create' knows about it.
30 xm_vars.var('vmid',
31 use="Virtual machine id. Integer greater than 0.",
32 check=vmid_check)
34 # Check the defined variables have valid values..
35 xm_vars.check()
37 #----------------------------------------------------------------------------
38 # Kernel image file.
39 kernel = "/boot/vmlinuz-2.6.10-xenU"
41 # Optional ramdisk.
42 #ramdisk = "/boot/initrd.gz"
44 # The domain build function. Default is 'linux'.
45 #builder='linux'
47 # Initial memory allocation (in megabytes) for the new domain.
48 memory = 64
50 # A name for the new domain. All domains have to have different names,
51 # so we use the vmid to create a name.
52 name = "VM%d" % vmid
54 # Which CPU to start domain on?
55 #cpu = -1 # leave to Xen to pick
56 cpu = vmid # set based on vmid (mod number of CPUs)
58 # Number of Virtual CPUS to use, default is 1
59 #vcpus = 1
60 vcpus = 4 # make your domain a 4-way
62 #----------------------------------------------------------------------------
63 # Define network interfaces.
65 # Number of network interfaces. Default is 1.
66 #nics=1
68 # Optionally define mac and/or bridge for the network interfaces.
69 # Random MACs are assigned if not given.
70 #vif = [ 'mac=aa:00:00:00:00:11, bridge=xen-br0' ]
72 #----------------------------------------------------------------------------
73 # Define the disk devices you want the domain to have access to, and
74 # what you want them accessible as.
75 # Each disk entry is of the form phy:UNAME,DEV,MODE
76 # where UNAME is the device, DEV is the device name the domain will see,
77 # and MODE is r for read-only, w for read-write.
79 # This makes the disk device depend on the vmid - assuming
80 # that devices sda7, sda8 etc. exist. The device is exported
81 # to all domains as sda1.
82 # All domains get sda6 read-only (to use for /usr, see below).
83 disk = [ 'phy:sda%d,sda1,w' % (7+vmid),
84 'phy:sda6,sda6,r' ]
86 #----------------------------------------------------------------------------
87 # Define to which TPM instance the user domain should communicate.
88 # The vtpm entry is of the form 'instance=INSTANCE,backend=DOM'
89 # where INSTANCE indicates the instance number of the TPM the VM
90 # should be talking to and DOM provides the domain where the backend
91 # is located.
92 # Note that no two virtual machines should try to connect to the same
93 # TPM instance. The handling of all TPM instances does require
94 # some management effort in so far that VM configration files (and thus
95 # a VM) should be associated with a TPM instance throughout the lifetime
96 # of the VM / VM configuration file. The instance number must be
97 # greater or equal to 1.
98 #vtpm = ['instance=%d,backend=0' % (vmid) ]
100 #----------------------------------------------------------------------------
101 # Set the kernel command line for the new domain.
102 # You only need to define the IP parameters and hostname if the domain's
103 # IP config doesn't, e.g. in ifcfg-eth0 or via DHCP.
104 # You can use 'extra' to set the runlevel and custom environment
105 # variables used by custom rc scripts (e.g. VMID=, usr= ).
107 # Set if you want dhcp to allocate the IP address.
108 #dhcp="dhcp"
109 # Set netmask.
110 #netmask=
111 # Set default gateway.
112 #gateway=
113 # Set the hostname.
114 #hostname= "vm%d" % vmid
116 # Set root device.
117 root = "/dev/sda1 ro"
119 # Root device for nfs.
120 #root = "/dev/nfs"
121 # The nfs server.
122 #nfs_server = '169.254.1.0'
123 # Root directory on the nfs server.
124 #nfs_root = '/full/path/to/root/directory'
126 # Sets runlevel 4 and the device for /usr.
127 extra = "4 VMID=%d usr=/dev/sda6" % vmid
129 #----------------------------------------------------------------------------
130 # Configure the behaviour when a domain exits. There are three 'reasons'
131 # for a domain to stop: poweroff, reboot, and crash. For each of these you
132 # may specify:
133 #
134 # "destroy", meaning that the domain is cleaned up as normal;
135 # "restart", meaning that a new domain is started in place of the old
136 # one;
137 # "preserve", meaning that no clean-up is done until the domain is
138 # manually destroyed (using xm destroy, for example); or
139 # "rename-restart", meaning that the old domain is not cleaned up, but is
140 # renamed and a new domain started in its place.
141 #
142 # The default is
143 #
144 # on_poweroff = 'destroy'
145 # on_reboot = 'restart'
146 # on_crash = 'restart'
147 #
148 # For backwards compatibility we also support the deprecated option restart
149 #
150 # restart = 'onreboot' means on_poweroff = 'destroy'
151 # on_reboot = 'restart'
152 # on_crash = 'destroy'
153 #
154 # restart = 'always' means on_poweroff = 'restart'
155 # on_reboot = 'restart'
156 # on_crash = 'restart'
157 #
158 # restart = 'never' means on_poweroff = 'destroy'
159 # on_reboot = 'destroy'
160 # on_crash = 'destroy'
162 #on_poweroff = 'destroy'
163 #on_reboot = 'restart'
164 #on_crash = 'restart'
166 #============================================================================