[pkg-kolab] r1395 - pkg-kolab_testsuite

Mathieu Parent sathieu at alioth.debian.org
Sun Nov 15 13:56:55 UTC 2009


Author: sathieu
Date: 2009-11-15 13:56:55 +0000 (Sun, 15 Nov 2009)
New Revision: 1395

Modified:
   pkg-kolab_testsuite/testsuite
Log:
testsuite:
- added action chroot
- prompt for unknown action
- try to release virtualbox domain (not yet complete)


Modified: pkg-kolab_testsuite/testsuite
===================================================================
--- pkg-kolab_testsuite/testsuite	2009-11-14 18:45:16 UTC (rev 1394)
+++ pkg-kolab_testsuite/testsuite	2009-11-15 13:56:55 UTC (rev 1395)
@@ -145,6 +145,34 @@
 }
 
 #-------------------------------------------------------
+sub domain_pre_chroot
+{
+    my $domid = shift;
+    my $domname = shift;
+    
+    my $storagepooldir = $config{'storagepooldir'};
+
+    print "* Preparing chroot";
+    system("sudo mkdir -p '$storagepooldir/domains/$domname/disk'");
+    system("sudo mount -o loop '$storagepooldir/domains/$domname/disk.img' '$storagepooldir/domains/$domname/disk'");
+    print ".\n";
+}
+
+#-------------------------------------------------------
+sub domain_post_chroot
+{
+    my $domid = shift;
+    my $domname = shift;
+    
+    my $storagepooldir = $config{'storagepooldir'};
+    
+    print "* Releasing chroot";
+    system("sudo umount '$storagepooldir/domains/$domname/disk'");
+    system("sudo rmdir '$storagepooldir/domains/$domname/disk'");
+    print ".\n";
+}
+
+#-------------------------------------------------------
 sub domain_make_bootable
 {
     my $domid = shift;
@@ -195,19 +223,34 @@
     
     my $storagepooldir = $config{'storagepooldir'};
     
-    print "* Installing:\n";
-    system("sudo mkdir '$storagepooldir/domains/$domname/disk'");
-    system("sudo mount -o loop '$storagepooldir/domains/$domname/disk.img' '$storagepooldir/domains/$domname/disk'");
+    domain_pre_chroot($domid, $domname);
     
     if($config{'virt_type'} eq 'vbox') {
         domain_make_bootable($domid, $domname);
     }
-    #copy ssh key
-    system("sudo mkdir '$storagepooldir/domains/$domname/disk/root/.ssh'");
+
+    print "* Copying ssh key";
+    system("sudo mkdir -p '$storagepooldir/domains/$domname/disk/root/.ssh'");
     system("sudo cp '$storagepooldir/key.pub' '$storagepooldir/domains/$domname/disk/root/.ssh/authorized_keys'");
+    print ".\n";
+
+    domain_post_chroot($domid, $domname);
+}
+
+#-------------------------------------------------------
+sub domain_chroot
+{
+    my $domid = shift;
+    my $domname = shift;
     
-    system("sudo umount '$storagepooldir/domains/$domname/disk'");
-    system("sudo rmdir '$storagepooldir/domains/$domname/disk'");
+    my $storagepooldir = $config{'storagepooldir'};
+    
+    domain_pre_chroot($domid, $domname);
+    
+    print "* Chrooting:\n";
+    system("sudo chroot '$storagepooldir/domains/$domname/disk/'");
+
+    domain_post_chroot($domid, $domname);
 }
 
 #-------------------------------------------------------
@@ -224,9 +267,15 @@
 
     print "* Preparing:\n";
     if($config{'virt_type'} eq 'vbox') {
+        #release
+        system("VBoxManage unregistervm '$domname' --delete");
+        system("VBoxManage closemedium disk '$storagepooldir/domains/$domname/disk.vmdk'");
+        system("sudo rm '$storagepooldir/domains/$domname/disk.vmdk'");
         #volume
         my $loopdev = `sudo losetup --find --show '$storagepooldir/domains/$domname/disk.img'`;
         $loopdev =~ s/\s+$//;
+        system("sudo chgrp disk '$storagepooldir/domains/$domname'");
+        system("sudo chmod g+w '$storagepooldir/domains/$domname'");
         system("VBoxManage internalcommands createrawvmdk ".
             "-filename '$storagepooldir/domains/$domname/disk.vmdk' ".
             "-rawdisk '$loopdev' ");
@@ -335,14 +384,11 @@
                 print ".\n";
             }
             domain_bootstrap($domid, $domname);
-        }
-        if ($action eq 'preboot_install') {
+        } elsif ($action eq 'preboot_install') {
             domain_preboot_install($domid, $domname);
-        }
-        if ($action eq 'boot') {
+        } elsif ($action eq 'boot') {
             domain_boot($domid, $domname);
-        }
-        if ($action eq 'install') {
+        } elsif ($action eq 'install') {
             #/etc/hosts file
             system("ssh -i '".$config{'storagepooldir'}."/key' root\@$domip 'cat <<EOF >> /etc/hosts
 $hosts
@@ -355,12 +401,15 @@
             system("ssh -i '".$config{'storagepooldir'}."/key' root\@$domip 'apt-get update'");
             print "Nothing to do yet\n";
             # follow https://wiki.kolab.org/index.php/Debian_-_Administrators_-_Kolab_Installation
-        }
-        if ($action eq 'test') {
+        } elsif ($action eq 'test') {
             print "Nothing to do yet\n";
             #apt-get install phpunit
             #php /usr/share/php/tests/Kolab_Filter/Horde/Kolab/Filter/AllTests.php 
             #php /usr/share/php/tests/Kolab_FreeBusy/Horde/Kolab/FreeBusy/AllTests.php 
+        } elsif ($action eq 'chroot') {
+            domain_chroot($domid, $domname);
+        } else {
+            print "Unknow action: $action\n";
         }
     }
 }




More information about the pkg-kolab-devel mailing list