def post(self, veid): if not _config.getboolean("varnish", "enabled"): return sql = models.VM.select(models.VM.q.veid == int(veid))[0] if sql.user != self.current_user or not sql.user: self.redirect(self.reverse_url("containers")+"?error=1") return host = self.get_argument("host", "") port = int(self.get_argument("port", 0)) if not host or not port: self.redirect(self.reverse_url("vminfo", veid)+"#webedit") return if not re.match(r"^[a-zA-Z0-9\.\-_]+$", host): self.redirect(self.reverse_url("vminfo", veid)+"?error=3") return if models.VarnishCond.select(models.VarnishCond.q.hostname==host).count(): self.redirect(self.reverse_url("vminfo", veid)+"?error=1") return backend = models.VarnishBackend.select(models.AND(models.VarnishBackend.q.port == port, models.VarnishBackend.q.vm==sql)) backendUpdate=False if backend.count(): backend = backend[0] else: backend = models.VarnishBackend(name=sql.vz.hostname+str(port), vm=sql, port=port) backendUpdate=True models.VarnishCond(hostname=host, subdomain=bool(self.get_argument("subdomain", False)), varnishBackend=backend) if backendUpdate: varnish.updateBackend(models.VarnishBackend.select()) varnish.updateRecv(models.VarnishCond.select()) if varnish.version()[0] > 1: varnish.restart() self.redirect(self.reverse_url("vminfo", veid)+"#webedit")
def post(self, veid): sql = models.VM.select(models.VM.q.veid == int(veid))[0] if sql.user != self.current_user and sql.user: self.redirect(self.reverse_url("containers")+"?error=1") return vm = sql.vz if vm.running: self.redirect(self.reverse_url("containers")+"?error=5") return proc = vm.destroy() for i in sql.varnishBackend: for i2 in i.cond: i2.destroySelf() i.destroySelf() for i in sql.portForward: i.destroySelf() if sql.munin: sql.munin.destroySelf() import munin, vmfw munin.update(models.Munin.select(), models.User.select()) vmfw.update(models.PortForward.select()) vmfw.restart() varnish.updateBackend(models.VarnishBackend.select()) varnish.updateRecv(models.VarnishCond.select()) varnish.restart() sql.destroySelf() time.sleep(1) # wait for dusts to settle self.redirect(self.get_argument("return", self.reverse_url("containers")+"?msg=3"))
def get(self, veid): if not _config.getboolean("varnish", "enabled"): return try: d=models.VarnishCond.select(models.VarnishCond.q.id == int(self.get_argument("delete")))[0] except IndexError: self.redirect(self.reverse_url("vminfo", veid)+"#webedit") if d.backend.vm.user != self.current_user or not d.backend.vm.user: self.redirect(self.reverse_url("containers")+"?error=1") return # check for orphaned backend backend = d.backend d.destroySelf() varnish.updateRecv(models.VarnishCond.select()) if backend.cond.count() == 0: backend.destroySelf() varnish.updateBackend(models.VarnishBackend.select()) self.redirect(self.reverse_url("vminfo", veid)+"#webedit")