+ # 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/<>")) \
+ 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/<>"))
+# # 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: