def pstring(self, x): io = StringIO.StringIO() sxp.show(x, out=io) io.seek(0) val = io.getvalue() io.close() return val
def send_reply(self, sxpr): io = StringIO.StringIO() sxp.show(sxpr, out=io) print >> io io.seek(0) if self.transport: return self.transport.write(io.getvalue()) else: return 0
def vnet_cmd(cmd): out = None try: try: out = file("/proc/vnet/policy", "wb") sxp.show(cmd, out) except IOError, ex: raise XendError(str(ex)) finally: if out: out.close()
def render_GET(self, req): if self.use_sxp(req): req.setHeader("Content-Type", sxp.mime_type) sxp.show(self.vnetinfo.sxpr(), out=req) else: req.write('<html><head></head><body>') self.print_path(req) req.write('<p>Vnet %s</p>' % self.vnetinfo.id) req.write("<code><pre>") PrettyPrint.prettyprint(self.vnetinfo.sxpr(), out=req) req.write("</pre></code>") self.form(req) req.write('</body></html>') return ''
def prettyprint(sxpr, out=sys.stdout, width=80): """Prettyprint an SXP form. sxpr s-expression out destination width maximum output width """ if isinstance(sxpr, types.ListType): pp = SXPPrettyPrinter(width=width) pp.pprint(sxpr) pp.prettyprint(out=out) else: sxp.show(sxpr, out=out) print >> out
def ls_vnet(self, req, use_sxp=0): url = req.prePathURL() if not url.endswith('/'): url += '/' if use_sxp: vnets = self.xvnet.vnet_ls() sxp.show(vnets, out=req) else: vnets = self.xvnet.vnets() vnets.sort(lambda x, y: cmp(x.id, y.id)) req.write('<ul>') for v in vnets: req.write('<li><a href="%s%s"> Vnet %s</a>' % (url, v.id, v.id)) req.write('</li>') req.write('</ul>')
def resultErr(self, err): """Error callback to complete a request. @param err: the error """ if not isinstance(err, (ArgError, sxp.ParseError, XendError)): raise #log.exception("op=%s: %s", op, str(err)) if self.useSxp(): self.setHeader("Content-Type", sxp.mime_type) sxp.show(['xend.err', str(err)], out=self) else: self.setHeader("Content-Type", "text/plain") self.write('Error ') self.write(': ') self.write(str(err)) return None
def render_GET(self, req): if self.use_sxp(req): req.setHeader("Content-Type", sxp.mime_type) sxp.show(['node'] + self.info(), out=req) else: url = req.prePathURL() if not url.endswith('/'): url += '/' req.write('<html><head></head><body>') self.print_path(req) req.write('<ul>') for d in self.info(): req.write('<li> %10s: %s' % (d[0], str(d[1]))) req.write('<li><a href="%sdmesg">Xen dmesg output</a>' % url) req.write('<li><a href="%slog">Xend log</a>' % url) req.write('</ul>') req.write('</body></html>')
def ls_domain(self, req, detail, use_sxp): url = req.prePathURL() if not url.endswith('/'): url += '/' if use_sxp: if detail: sxp.show(map(XendDomainInfo.sxpr, self.xd.list()), out=req) else: sxp.show(self.xd.list_names(), out=req) else: domains = self.xd.list_sorted() req.write('<ul>') for d in domains: req.write( '<li><a href="%s%s">Domain %s</a>: id = %s, memory = %d, ' 'ssidref = %d.' % (url, d.getName(), d.getName(), d.getDomid(), d.getMemoryTarget(), d.getSsidref())) req.write('</li>') req.write('</ul>')
def ls_domain(self, req, detail, use_sxp): url = req.prePathURL() if not url.endswith('/'): url += '/' if use_sxp: if detail: sxp.show(map(XendDomainInfo.sxpr, self.xd.list()), out=req) else: state = DOM_STATE_RUNNING if 'state' in req.args and len(req.args['state']) > 0: state = req.args['state'][0] log.trace("Listing domains in state " + str(state)) sxp.show(self.xd.list_names(state), out=req) else: domains = self.xd.list_sorted() req.write('<ul>') for d in domains: req.write( '<li><a href="%s%s">Domain %s</a>: id = %s, memory = %d' % (url, d.getName(), d.getName(), d.getDomid(), d.getMemoryTarget())) req.write('</li>') req.write('</ul>')
def resultVal(self, val): """Callback to complete the request. @param val: the value """ if val is None: return val elif isinstance(val, ThreadRequest): return val elif self.useSxp(): self.setHeader("Content-Type", sxp.mime_type) sxp.show(val, out=self) else: self.write('<html><head></head><body>') self.printPath() if isinstance(val, types.ListType): self.write('<code><pre>') PrettyPrint.prettyprint(val, out=self) self.write('</pre></code>') else: self.write(str(val)) self.write('</body></html>') return None
def render_GET(self, req): op = req.args.get("op") if op and op[0] in ["vcpuinfo"]: return self.perform(req) # # XXX SMH: below may be useful once again if we ever try to get # the raw 'web' interface to xend working once more. But for now # is useless and out of date (i.e. no ops called 'v???' anymore). # # if op and op[0] in ['vifs', 'vif', 'vbds', 'vbd', 'mem_target_set']: # return self.perform(req) if self.use_sxp(req): req.setHeader("Content-Type", sxp.mime_type) sxp.show(self.dom.sxpr(), out=req) else: req.write("<html><head></head><body>") self.print_path(req) # self.ls() req.write("<p>%s</p>" % self.dom) self.form(req) req.write("</body></html>") return ""
def render_GET(self, req): op = req.args.get('op') if op and op[0] in ['vcpuinfo']: return self.perform(req) # # XXX SMH: below may be useful once again if we ever try to get # the raw 'web' interface to xend working once more. But for now # is useless and out of date (i.e. no ops called 'v???' anymore). # # if op and op[0] in ['vifs', 'vif', 'vbds', 'vbd', 'mem_target_set']: # return self.perform(req) if self.use_sxp(req): req.setHeader("Content-Type", sxp.mime_type) sxp.show(self.dom.sxpr(), out=req) else: req.write('<html><head></head><body>') self.print_path(req) #self.ls() req.write('<p>%s</p>' % self.dom) self.form(req) req.write('</body></html>') return ''