+ 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)
+ if self.hostname != target.hostname:
+ # make user's like easier, no need to mention hostname again
+ if target.is_local():
+ target.hostname=self.hostname
+ else:
+ logger.log('ERROR:rename cannot rename (%s->%s) - must be on same box'%(self.hostname, target.hostname))
+ return False
+ logger.log("%s into %s"%(self.printable(),target.printable_simple()),level=2)
+
+ ssh=self.ssh
+ oldname=self.name
+ newname=target.name
+ xid=self.xid()
+ currently_running=self.running_state()=='start'
+ 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/<>"))
+ 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)
+ if currently_running and not self.dry_run:
+ result = result and target.start()
+ print target.printable()
+ return result
+
+class VserverTools: