From e559d2afa1670d6547ec4c99ef58f50f99f3e5f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Constantino=20V=C3=A1zquez=20Blanco?= Date: Fri, 21 Nov 2008 17:20:00 +0000 Subject: [PATCH] Changed VM.schema to reflect network management changes. Added network contextualization script for VMs. git-svn-id: http://svn.opennebula.org/one/trunk@255 3034c82b-c49b-4eb3-8279-a7acafdc01c0 --- share/examples/vm.schema | 10 ++++--- share/scripts/vmcontext.sh | 57 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 4 deletions(-) create mode 100755 share/scripts/vmcontext.sh diff --git a/share/examples/vm.schema b/share/examples/vm.schema index 35a310691c..b651975b3a 100644 --- a/share/examples/vm.schema +++ b/share/examples/vm.schema @@ -56,10 +56,12 @@ DISK = [ #--------------------------------------- NIC = [ - bridge = "name_of_bridge_to_bind_if", #Optional, XEN, KVM - target = "device_name_to_map_if", #Optional, KVM - mac = "HW_address", #Optional, XEN, KVM - script = "path_to_script_to_bring_up_if"] #Optional, KVM + network = "name_of_the_virtual_network", #Optional, XEN, KVM + ip = "ip_address", #Optional, XEN, KVM + bridge = "name_of_bridge_to_bind_if", #Optional, XEN, KVM + target = "device_name_to_map_if", #Optional, KVM + mac = "HW_address", #Optional, XEN, KVM + script = "path_to_script_to_bring_up_if"] #Optional, KVM #--------------------------------------- # I/O Interfaces diff --git a/share/scripts/vmcontext.sh b/share/scripts/vmcontext.sh new file mode 100755 index 0000000000..d1cd14ca07 --- /dev/null +++ b/share/scripts/vmcontext.sh @@ -0,0 +1,57 @@ +#! /bin/sh + +PATH=/sbin:/bin:/usr/bin + +mac2ip () +{ +let ip_a=0x`echo $1 | cut -d: -f 3` +let ip_b=0x`echo $1 | cut -d: -f 4` +let ip_c=0x`echo $1 | cut -d: -f 5` +let ip_d=0x`echo $1 | cut -d: -f 6` + +IP="$ip_a.$ip_b.$ip_c.$ip_d" +} + +do_start () +{ + +INTERFACES=`/sbin/ifconfig -a | grep ^eth | sed 's/\s*Link encap:Ethernet\s*HWaddr /-/g'` +rm -f /etc/network/interfaces > /dev/null 2>&1 +cat > /etc/network/interfaces << EOF +auto lo +iface lo inet loopback +EOF + +for i in $INTERFACES; do + DEV=`echo $i | cut -d'-' -f 1` + MAC=`echo $i | cut -d'-' -f 2` + mac2ip $MAC + NET=`echo $IP | cut -d'.' -f1,2,3` + +cat >> /etc/network/interfaces << EOF +auto $DEV +iface $DEV inet static + address $IP + gateway $NET.1 + netmask 255.255.255.0 +EOF +done + +} + +case "$1" in + start|"") + do_start + ;; + restart|reload|force-reload) + echo "Error: argument '$1' not supported" >&2 + exit 3 + ;; + stop) + # No-op + ;; + *) + echo "Usage: vmcontext.sh [start|stop]" >&2 + exit 3 + ;; +esac