- if machine_id in self.atsessions:
- term = self.atsessions[machine_id]
- else:
- print >>sys.stderr, "spawning new session for terminal to ",machine_id
- term = self.atsessions[machine_id] = self.atmulti.create(
- ["ssh", "-e","none", "-l", machine.name, config.console.hostname]
- )
- if k:
- self.atmulti.proc_write(term,k)
- time.sleep(0.002)
- dump=self.atmulti.dump(term,c,int(force))
- cherrypy.response.headers['Content-Type']='text/xml'
- if isinstance(dump,str):
- return dump
- else:
- print "Removing session for", machine_id
- del self.atsessions[machine_id]
- return '<?xml version="1.0"?><idem></idem>'
+ with self.atsessions_lock:
+ if machine_id in self.atsessions:
+ term = self.atsessions[machine_id]
+ else:
+ print >>sys.stderr, "spawning new session for terminal to ",machine_id
+ term = self.atsessions[machine_id] = self.atmulti.create(
+ ["ssh", "-e","none", "-l", machine.name, config.console.hostname]
+ )
+ if k:
+ self.atmulti.proc_write(term,k)
+ time.sleep(0.002)
+ dump=self.atmulti.dump(term,c,int(force))
+ cherrypy.response.headers['Content-Type']='text/xml'
+ if isinstance(dump,str):
+ return dump
+ else:
+ print "Removing session for", machine_id
+ del self.atsessions[machine_id]
+ return '<?xml version="1.0"?><idem></idem>'