turn off f24 build
[infrastructure.git] / scripts / vserver_tools.py
index d1a8c83..be6e1c0 100755 (executable)
@@ -1,7 +1,5 @@
 #!/usr/bin/python
 #
-# $Id$
-# $URL$
 
 import sys
 import os.path
@@ -186,16 +184,16 @@ class Ssh (Shell):
 class Vserver:
 
     def __init__ (self, name, dry_run=False,verbose=False):
-        try:
-            (self.name,self.hostname)=name.split("@")
-        except:
-            (self.name,self.hostname)=(name,'localhost')
         self.dry_run=dry_run
         self.verbose=verbose
         self._running_state=None
         self._xid=None
         self._autostart=None
-        self.set_hostname(self.hostname)
+        try:
+            (self.name,hostname)=name.split("@")
+        except:
+            (self.name,hostname)=(name,'localhost')
+        self.set_hostname(hostname)
 
     def set_hostname (self, hostname):
         self.hostname=hostname
@@ -318,6 +316,11 @@ class Vserver:
             self.ok('no mask file %s'%mask_path)
         return result
         
+    def delete (self):
+        # ommitting --silent just silently returns - stdin must be closed or something
+        command=["vserver","--silent",self.name,"delete"]
+        return e2b (self.ssh.run (command))
+
     # renaming
     def rename (self, newname):
         target=Vserver(newname)
@@ -338,27 +341,36 @@ class Vserver:
         result=True
         if currently_running:
             result = result and self.stop()
-        result = result \
-            and e2b(ssh.run("mv /vservers/%(oldname)s /vservers/%(newname)s"%locals(),
-                            message="tweaking /vservers/<>")) \
-            and e2b(ssh.run("mv /etc/vservers/%(oldname)s /etc/vservers/%(newname)s"%locals(),
-                            message="tweaking /etc/vservers/<>")) \
-            and e2b(ssh.run("rm /etc/vservers/%(newname)s/run"%locals(),
-                            message="cleaning /etc/vservers/<>/run")) \
-            and e2b(ssh.run("ln -s /var/run/vservers/%(newname)s /etc/vservers/%(newname)s/run"%locals(),
-                            message="adjusting /etc/vservers/<>/run")) \
-            and e2b(ssh.run("rm /etc/vservers/%(newname)s/vdir"%locals(),
-                            message="cleaning /etc/vservers/<>/vdir")) \
-            and e2b(ssh.run("ln -s /etc/vservers/.defaults/vdirbase/%(newname)s /etc/vservers/%(newname)s/vdir"%locals(),
-                            message="adjusting /etc/vservers/<>/vdir")) \
-            and e2b(ssh.run("rm /etc/vservers/%(newname)s/cache"%locals(),
-                            message="cleaning /etc/vservers/<>/cache")) \
-            and e2b(ssh.run("ln -s /etc/vservers/.defaults/cachebase/%(newname)s /etc/vservers/%(newname)s/cache"%locals(),
-                            message="adjusting /etc/vservers/<>/cache")) \
-            and e2b(ssh.run("rm /var/run/vservers.rev/%(xid)s"%locals(),
-                            message="cleaning /var/run/vservers.rev/<>")) \
-            and e2b(ssh.run("ln -s /etc/vserver/%(newname)s /var/run/vservers.rev/%(xid)s"%locals(),
-                            message="adjusting /var/run/vservers.rev/<>")) 
+        result = result and e2b(ssh.run("mv /vservers/%(oldname)s /vservers/%(newname)s"%locals(),
+                                        message="tweaking /vservers/<>"))
+        result = result and e2b(ssh.run("mv /etc/vservers/%(oldname)s /etc/vservers/%(newname)s"%locals(),
+                                        message="tweaking /etc/vservers/<>")) 
+        result = result and e2b(ssh.run("mv /vservers/.pkg/%(oldname)s /vservers/.pkg/%(newname)s"%locals(),
+                                        message="renaming /vservers/.pkg/<>")) 
+        result = result and e2b(ssh.run("rm /etc/vservers/%(newname)s/run"%locals(),
+                                        message="cleaning /etc/vservers/<>/run")) 
+        result = result and e2b(ssh.run("ln -s /var/run/vservers/%(newname)s /etc/vservers/%(newname)s/run"%locals(),
+                                        message="adjusting /etc/vservers/<>/run")) 
+        result = result and e2b(ssh.run("rm /etc/vservers/%(newname)s/vdir"%locals(),
+                                        message="cleaning /etc/vservers/<>/vdir")) 
+        result = result and e2b(ssh.run("ln -s /etc/vservers/.defaults/vdirbase/%(newname)s /etc/vservers/%(newname)s/vdir"%locals(),
+                                        message="adjusting /etc/vservers/<>/vdir")) 
+        result = result and e2b(ssh.run("rm /etc/vservers/%(newname)s/cache"%locals(),
+                                        message="cleaning /etc/vservers/<>/cache")) 
+        result = result and e2b(ssh.run("ln -s /etc/vservers/.defaults/cachebase/%(newname)s /etc/vservers/%(newname)s/cache"%locals(),
+                                        message="adjusting /etc/vservers/<>/cache")) 
+        result = result and e2b(ssh.run("rm /var/run/vservers.rev/%(xid)s"%locals(),
+                                        message="cleaning /var/run/vservers.rev/<>")) 
+        result = result and e2b(ssh.run("ln -s /etc/vservers/%(newname)s /var/run/vservers.rev/%(xid)s"%locals(),
+                                        message="adjusting /var/run/vservers.rev/<>")) 
+        result = result and e2b(ssh.run("sed -i -e s,%(oldname)s,%(newname)s,g /etc/vservers/%(newname)s/name"%locals(),
+                                        message="adjusting /etc/vservers/<>/name"))
+        result = result and e2b(ssh.run("sed -i -e s,%(oldname)s,%(newname)s,g /etc/vservers/%(newname)s/uts/nodename"%locals(),
+                                        message="adjusting /etc/vservers/<>/uts/nodename"))
+        # ignore rsult
+        e2b(ssh.run("sed -i -e s,\\[%(oldname)s\\],\\[%(newname)s\\], /vservers/%(newname)s/root/.profile"%locals(),
+                                        message="adjusting /vservers/<>/root/.profile"))
+
 #        # refreshing target instance
         target=Vserver(newname,dry_run=self.dry_run,verbose=self.verbose)
         target.set_hostname(self.hostname)
@@ -373,7 +385,8 @@ class VserverTools:
         'show' : "vsname(s)\n\tdisplay status & details",
         'start': "vsname(s)\n\tstart vservers",
         'stop' : "vsname(s)\n\tstop vservers",
-        'check' : "vsname(s)\n\tchecks the network config for a vserver",
+        'check' : "vsname(s)\n\tsanity check - ip from hostname, netmask, ...",
+        'delete' : "vsname(s)\n\tdelete vservers",
         'rename' : "oldname newname\n\trename a vserver - both named must be local",
         'migrate' : "oldname hostname@newname\n\tmigrate a vserver over to a new box\n\tnot implemented yet",
         }
@@ -442,28 +455,34 @@ class VserverTools:
 
         (self.options,self.args) = self.parser.parse_args()
 
-        if mode=='show':
+        if mode == 'show':
             for arg in self.check_usual_args():
                 self.vserver(arg).show(self.options.long_format)
-        elif mode=='stop':
+        elif mode == 'stop':
             for arg in self.check_usual_args():
                 vs = self.vserver(arg)
                 vs.stop()
                 vs.show(True)
-        elif mode=='start':
+        elif mode == 'start':
             for arg in self.check_usual_args():
                 vs = self.vserver(arg)
                 vs.start()
                 vs.show(True)
-        elif mode=='check':
+        elif mode == 'check':
             result=True
             for arg in self.check_usual_args():
                 if not b2e(self.vserver(arg).check()): result=False
             return result
-        elif mode=='rename':
+        elif mode == 'delete':
+            result=True
+            for arg in self.check_usual_args():
+                if not b2e(self.vserver(arg).delete()): result=False
+                self.vserver(arg).show(True)
+            return result
+        elif mode == 'rename':
             [x,y]=self.args
             return b2e(self.vserver(x).rename(y))
-        elif mode=='migrate':
+        elif mode == 'migrate':
             print 'migrate not yet implemented'
             return 1
         else: