mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
console_client.py, __init__.py, setup.py, Makefile: new file Many files: New console-terminal client in xenctl.console_client Python package. New option to xc_dom_create (-c on cmdline or auto_console in defaults file) to automatically become a console client. utils.py: Rename: tools/xc/py/XenoUtil.py -> tools/xenctl/lib/utils.py
146 lines
4.2 KiB
Plaintext
146 lines
4.2 KiB
Plaintext
|
|
##### Edit this python file to reflect the configuration of your system
|
|
|
|
##### This example script requires variable 'ip' to be set, and optionally
|
|
##### netmask and gatewaty for the kernel command line
|
|
|
|
def config_usage ():
|
|
print >>sys.stderr, """
|
|
The config file %s requires the following vars to be defined:
|
|
ip -- List of IP addr(s) for Xen to route to domain
|
|
e.g. '-Dip=1.2.3.4,5.6.7.8'
|
|
The following variables may be optionally defined:
|
|
mem -- Adjust initial memory allocation (default 64MB)
|
|
netmask -- Override gateway for kernel ip= command line
|
|
gateway -- Override network for kernel ip= command line
|
|
""" % config_file
|
|
|
|
try:
|
|
ip
|
|
except:
|
|
print "Set variable 'ip' using '-Dip=1.2.3.4,5.6.7.8'"
|
|
assert()
|
|
|
|
# STEP 1. Specify kernel image file and otional ramdisk. Can be gzip'ed.
|
|
image = "/boot/xenolinux.gz"
|
|
ramdisk = "/boot/initrd.gz"
|
|
builder_fn='linux' # this is a linux domain
|
|
|
|
# STEP 2. The initial memory allocation (in megabytes) for the new domain.
|
|
try:
|
|
mem_size = int(mem)
|
|
except NameError:
|
|
mem_size = 64
|
|
|
|
|
|
# STEP 3. A handy name for your new domain.
|
|
# appends either first hostname or last quad of first IP address dependant on value passed
|
|
|
|
quads = string.split(ip, '.')
|
|
if len(quads) == 4: # fragile heuristic for valid IP verification
|
|
domain_name = "Xen VM .%s" % quads[3] # use last quad of IP
|
|
else:
|
|
domain_name = "Xen VM: %s" % ip # use hostname passed in
|
|
|
|
|
|
# STEP 4. Specify IP address(es), for the new domain. You need to
|
|
# configure IP addrs within the domain just as you do normally. This
|
|
# is just to let Xen know about them so it can route packets
|
|
# appropriately.
|
|
|
|
#vfr_ipaddr = ["111.222.333.444","222.333.444.555"]
|
|
#vfr_ipaddr = [xenctl.utils.add_offset_to_ip(xenctl.utils.get_current_ipaddr(),vmid)]
|
|
vfr_ipaddr = map(socket.gethostbyname,string.split(ip,','))
|
|
|
|
|
|
|
|
# STEP 5a. Identify any physcial partitions or virtual disks you want the
|
|
# domain to have access to, and what you want them accessible as
|
|
# e.g. vbd_list = [ ('phy:sda1','sda1', 'w'),
|
|
# ('phy:sda%d' % (3+vmid), 'hda2', 'r'),
|
|
# ('vd:as73gd784dh','hda1','w'),
|
|
# ('phy:cdrom','hdd','r')
|
|
|
|
vbd_list = [ ('phy:cdrom','hdd','r' ) ]
|
|
|
|
|
|
|
|
# STEP 5b. Set the VBD expertise level. Most people should leave this
|
|
# on 0, at least to begin with - this script can detect most dangerous
|
|
# disk sharing between domains and with this set to zero it will only
|
|
# allow read only sharing.
|
|
|
|
vbd_expert = 0
|
|
|
|
|
|
# STEP 6. Build the command line for the new domain. Edit as req'd.
|
|
# You only need the ip= line if you're NFS booting or the root file system
|
|
# doesn't set it later e.g. in ifcfg-eth0 or via DHCP
|
|
# You can use 'extrabit' to set the runlevel and custom environment
|
|
# variables used by custom rc scripts (e.g. VMID=, usr= )
|
|
|
|
|
|
# see if we have a local IP at all
|
|
localip=''
|
|
for i in vfr_ipaddr:
|
|
if xenctl.utils.check_subnet(i,'169.254.0.0','255.255.0.0'):
|
|
localip=i
|
|
break
|
|
|
|
|
|
# if either netmask and gateway has been set from the command line,
|
|
# associate it with the first IP address that has been specified.
|
|
|
|
myip = ''
|
|
|
|
try:
|
|
netmask = socket.gethostbyname( netmask )
|
|
gateway = socket.gethostbyname( gateway )
|
|
myip = vfr_ipaddr[0]
|
|
|
|
except NameError:
|
|
netmask = xenctl.utils.get_current_ipmask()
|
|
gateway = xenctl.utils.get_current_ipgw()
|
|
|
|
# if we haven't got an address, see if we have one that matches the LAN
|
|
|
|
if not myip:
|
|
if netmask and gateway:
|
|
for i in vfr_ipaddr:
|
|
if xenctl.utils.check_subnet(i,gateway,netmask):
|
|
myip=i
|
|
break
|
|
|
|
# if we still haven't got an address, see if there's a link local one
|
|
|
|
if not myip and localip:
|
|
myip = localip
|
|
netmask = '255.255.0.0'
|
|
gateway = '169.254.1.0'
|
|
|
|
|
|
# As a final fallback, through everything down the interface
|
|
|
|
if not myip:
|
|
myip = vfr_ipaddr[0]
|
|
netmask = '0.0.0.0'
|
|
gateway = ''
|
|
|
|
# Calculate the components with which we will build the command line
|
|
|
|
nfsserv = '169.254.1.0'
|
|
|
|
cmdline_ip="ip="+myip+":"+nfsserv+":"+gateway+":"+netmask+"::eth0:off"
|
|
cmdline_root = "root=/dev/ram0 rw init=/linuxrc"
|
|
|
|
if localip:
|
|
cmdline_extra = "4 LOCALIP=%s" % localip
|
|
else:
|
|
cmdline_extra = "4"
|
|
|
|
# STEP 7. Set according to whether you want the script to watch the domain
|
|
# and auto-restart it should it die or exit.
|
|
|
|
auto_restart = False
|
|
#auto_restart = True
|