start kvm with vde2
authorDobrica Pavlinusic <dpavlin@rot13.org>
Thu, 30 Jul 2009 12:28:49 +0000 (12:28 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Thu, 30 Jul 2009 12:28:49 +0000 (12:28 +0000)
lib/PXElator/kvm.pm [new file with mode: 0755]

diff --git a/lib/PXElator/kvm.pm b/lib/PXElator/kvm.pm
new file mode 100755 (executable)
index 0000000..b38249d
--- /dev/null
@@ -0,0 +1,54 @@
+package kvm;
+
+use warnings;
+use strict;
+use autodie;
+
+use File::Slurp;
+
+use server;
+
+my $interfaces = read_file '/etc/network/interfaces';
+
+if ( $interfaces !~ m{tap0.*$server::ip}s ) {
+
+       system "sudo apt-get install vde2";
+
+       $interfaces .= qq{
+
+iface tap0 inet static
+  address $server::ip
+  netmask $server::netmask
+  vde2-switch -
+
+       };
+
+       write_file '/etc/network/interfaces', $interfaces;
+
+}
+
+if ( grep /tap0/, read_file '/proc/net/dev' ) {
+       warn "tap0 started";
+} else {
+       system "sudo ifup tap0";
+}
+
+our $memory_size = 512;
+our $mac = '52:54:00:00:00:01';
+
+sub start {
+
+       my $kvm = qq|
+               vdeq kvm -m $memory_size -net nic,vlan=1,macaddr=$mac
+               -net vde,vlan=1,sock=/var/run/vde2/tap0.ctl
+               -boot n
+       |;
+       $kvm =~ s{\s+}{ }gs;
+       warn $kvm;
+       system $kvm;
+
+}
+
+warn 'loaded';
+
+1;