Eucalyptus-1.5.2-Setup: gen_libvirt_xml

File gen_libvirt_xml, 4.6 kB (added by ibaldin, 9 years ago)

gen_libvirt_xml

Line 
1#!/usr/bin/perl
2
3#Copyright (c) 2009  Eucalyptus Systems, Inc.   
4#
5#This program is free software: you can redistribute it and/or modify
6#it under the terms of the GNU General Public License as published by
7#the Free Software Foundation, only version 3 of the License. 
8#
9#This file is distributed in the hope that it will be useful, but WITHOUT
10#ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11#FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12#for more details. 
13#
14#You should have received a copy of the GNU General Public License along
15#with this program.  If not, see <http://www.gnu.org/licenses/>.
16#
17#Please contact Eucalyptus Systems, Inc., 130 Castilian
18#Dr., Goleta, CA 93101 USA or visit <http://www.eucalyptus.com/licenses/>
19#if you need additional information or have any questions.
20#
21#This file may incorporate work covered under the following copyright and
22#permission notice:
23#
24#  Software License Agreement (BSD License)
25#
26#  Copyright (c) 2008, Regents of the University of California
27
28#
29#  Redistribution and use of this software in source and binary forms, with
30#  or without modification, are permitted provided that the following
31#  conditions are met:
32#
33#    Redistributions of source code must retain the above copyright notice,
34#    this list of conditions and the following disclaimer.
35#
36#    Redistributions in binary form must reproduce the above copyright
37#    notice, this list of conditions and the following disclaimer in the
38#    documentation and/or other materials provided with the distribution.
39#
40#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
41#  IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
42#  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
43#  PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
44#  OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
45#  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
46#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
47#  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
48#  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
49#  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
50#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. USERS OF
51#  THIS SOFTWARE ACKNOWLEDGE THE POSSIBLE PRESENCE OF OTHER OPEN SOURCE
52#  LICENSED MATERIAL, COPYRIGHTED MATERIAL OR PATENTED MATERIAL IN THIS
53#  SOFTWARE, AND IF ANY SUCH MATERIAL IS DISCOVERED THE PARTY DISCOVERING
54#  IT MAY INFORM DR. RICH WOLSKI AT THE UNIVERSITY OF CALIFORNIA, SANTA
55#  BARBARA WHO WILL THEN ASCERTAIN THE MOST APPROPRIATE REMEDY, WHICH IN
56#  THE REGENTS’ DISCRETION MAY INCLUDE, WITHOUT LIMITATION, REPLACEMENT
57#  OF THE CODE SO IDENTIFIED, LICENSING OF THE CODE SO IDENTIFIED, OR
58#  WITHDRAWAL OF THE CODE CAPABILITY TO THE EXTENT NEEDED TO COMPLY WITH
59#  ANY SUCH LICENSES OR RIGHTS.
60
61# this generates an XML template for libvirt domain specification,
62# which is tailored to an instance by the node controller
63
64use diagnostics;
65use warnings;
66use sigtrap;
67use strict;
68use English; # for descriptive predefined var names
69use Data::Dumper; # for debugging: print Dumper($var)
70use Getopt::Long;
71use FindBin;
72$OUTPUT_AUTOFLUSH = 1; # no output buffering
73
74our $use_ramdisk = 0;
75our $use_ephemeral = 0;
76
77# deal with command-line parameters
78GetOptions('ramdisk'        => sub { $use_ramdisk = 1; },
79           'ephemeral'      => sub { $use_ephemeral = 1; }
80                   ) or exit (1);
81
82print <<EOF;
83<domain type='xen' id='18'>
84    <name>NAME</name>
85    <os>
86    <type>linux</type>
87        <kernel>BASEPATH/kernel</kernel>
88EOF
89
90if ( $use_ramdisk ) {
91    print "        <initrd>BASEPATH/ramdisk</initrd>\n";
92}
93
94print <<EOF;
95        <root>/dev/sda1</root>
96        <cmdline> ro</cmdline>
97    </os>
98    <memory>MEMORY</memory>
99    <vcpu>VCPUS</vcpu>
100    <devices>
101        <disk type='file'>
102            <source file='BASEPATH/root'/>
103            <target dev='sda1'/>
104        </disk>
105EOF
106
107if ( $use_ephemeral ) {
108    print <<EOF;
109        <disk type='file'>
110            <source file='BASEPATH/ephemeral'/>
111            <target dev='sda2'/>
112        </disk>
113EOF
114}
115
116print <<EOF;
117        <disk type='file'>
118            <source file='SWAPPATH/swap'/>
119            <target dev='sda3'/>
120        </disk>
121        <interface type='bridge'>
122            <source bridge='BRIDGEDEV'/>
123            <mac address='PRIVMACADDR'/>
124            <script path='/etc/xen/scripts/vif-bridge'/>
125        </interface>
126        <interface type='bridge'>
127            <source bridge='sliverbr'/>
128            <script path='/etc/xen/scripts/vif-bridge'/>
129        </interface>
130    </devices>
131</domain>
132EOF