Author: eelco
Date: Tue May 10 13:52:10 2011
New Revision: 27214
URL: https://svn.nixos.org/websvn/nix/?rev=27214&sc=1

Log:
* Add an operation ‘--destroy’ to destroy all previously created cloud
  machines.

Modified:
   cloud/trunk/src/nixos-deploy-network.pl

Modified: cloud/trunk/src/nixos-deploy-network.pl
==============================================================================
--- cloud/trunk/src/nixos-deploy-network.pl     Tue May 10 13:37:32 2011        
(r27213)
+++ cloud/trunk/src/nixos-deploy-network.pl     Tue May 10 13:52:10 2011        
(r27214)
@@ -109,12 +109,26 @@
 }
 
 
+# ‘--destroy’ destroys all VMs listed in the deployment state record,
+# i.e., the entire network previously deployed by
+# nixos-deploy-network.
+sub opDestroy {
+    readState();
+    
+    foreach my $name (keys %{$state->{machines}}) {
+        my $machine = $state->{machines}->{$name};
+        killMachine($name, $machine);
+    }
+}
+
+
 sub main {
     my $op = \&opDeploy;
     
     exit 1 unless GetOptions(
         "state=s" => \$stateFile,
         "info" => sub { $op = \&opInfo; },
+        "destroy" => sub { $op = \&opDestroy; },
         "kill-obsolete!" => \$killObsolete,
         );
     
@@ -199,6 +213,7 @@
     }
 
     delete $state->{machines}->{$name};
+    writeState;
 }
 
 
@@ -265,13 +280,13 @@
     foreach my $name (keys %{$state->{machines}}) {
         next if defined $spec->{machines}->{$name};
         my $machine = $state->{machines}->{$name};
-        $machine->{obsolete} = 1;
         if ($killObsolete) {
             killMachine($name, $machine);
         } else {
             print STDERR "warning: VM ‘$name’ is obsolete; use 
‘--kill-obsolete’ to get rid of it\n";
+            $machine->{obsolete} = 1;
+            writeState;
         }
-        writeState;
     }
     
     # Figure out how we're gonna SSH to each machine.  Prefer IPv6
_______________________________________________
nix-commits mailing list
[email protected]
http://mail.cs.uu.nl/mailman/listinfo/nix-commits

Reply via email to