def handle(self): log = logging.getLogger() print "********************************************" print "Connected from: %s:%d" %self.client_address x = xoom.xoom() # instantiate an instance of xoom class contentLen = x.readHeader(self.request) #print "contentLen: %s" % contentLen data = "" try: while len(data) <> contentLen: data += self.request.recv(contentLen) xmlData = "" try: xmlData = parseString(data) req = jobXML() # instantiate an instance of jobXML class # begin parsing the job request xml # 1. get the job type. req_type = xmlData.getElementsByTagName('JobGroup')[0].getAttribute('GroupName') #req_type = xml.job_info['name'] print ("[%s] reqest type: %s" % (strftime("%m/%d/%Y-%H:%M:%S", localtime()),req_type)) if req_type == 'BurnIn' or req_type == 'LineCard': # job_info = req.getJobGroupInfo(xmlData) job_info['client_address'] = self.client_address if job_info: # insert into global queue req.xoomQueue.put(job_info) req.processXoomRequest(self.request) else: # attempt to submit jobs that is not empty print "Error: attempt to add to an non-empty queue" print "request dropped" else: log.info("Unknown request type!") except: log.error('Failed to parse XML response: "%s"' \ %string.join(traceback.format_exception(*sys.exc_info()), '')) raise print "Disconnected from: %s:%d" %self.client_address except socket.error: print (string.join(traceback.format_exception(*sys.exc_info()), '')) self.request.close()
args = _parseArgs(sys.argv[1:]) log = logging.getLogger() hdlr = logging.StreamHandler() if args['verbose']: log.setLevel(logging.DEBUG) else: log.setLevel(logging.INFO) formatter = logging.Formatter('<%(asctime)s> %(levelname)s:%(module)s[%(lineno)s]: %(message)s', '%H:%M:%S' ) hdlr.setFormatter(formatter) log.addHandler(hdlr) # open a xoom session to the shelfcontroller and hold it forever sc_name = args['sc_name'] sc_conn = xoom.xoom() # instantiate a xoom instance. conn = sc_conn.open_session(sc_name) # open a session. xoom_session = sc_conn if args.has_key('port'): xoom_server_port = args['port'] USER_PORT = True else: xoom_server_port = default_xoom_server_port # default to port 50002 if none given. print "XOOM SERVER_PORT : %s" % xoom_server_port server = scriptExec(log, xoom_server_port) server.main() except KeyboardInterrupt: # Test interrupted - want to catch it and cleanup. This isnt working. pass
def handle(self): log = logging.getLogger() self.web_msg = Msg() print "Connected from: %s:%d" %self.client_address x = xoom.xoom() # instantiate an instance of xoom class contentLen = x.readHeader(self.request) data = "" try: while len(data) <> contentLen: data += self.request.recv(contentLen) xmlData = "" try: xmlData = parseString(data) xml = jobXML() # instantiate an instance of jobXML class # begin parsing the job request xml # 1. get the job type. req_type = xmlData.getElementsByTagName('JobGroup')[0].getAttribute('GroupName') #req_type = xml.job_info['name'] print ("reqest type: %s" % req_type) if req_type == 'MfgTest': # manufaturing job reqeust. web_info = self.web_msg.info("Manufacturing tests submitted to jobserver") self.web_msg.send(self, web_info) if xml.parseJobsRequest(xmlData): xml.processMfgTestRequest() else: # attempt to submit jobs that is not empty print "Error: attempt to add to an non-empty queue" print "request dropped" elif req_type == 'Queue': # queue management request. jobGroupInfo = xml.getJobGroupInfoQueue(xmlData) if jobGroupInfo['type'] == 'Admin': action_type = xmlData.getElementsByTagName('Action')[0].getAttribute('ActionType') print ("ActionType: %s" % action_type) testbed = jobGroupInfo['testbed'] if action_type == 'Report': xml.reportMfgQueueStatus(jobGroupInfo, self) elif action_type == 'Delete': # get the list data_type = xmlData.getElementsByTagName('Action')[0].getAttribute('ReqType') data = getDataList(xmlData, data_type) print data print data_type xml.adminMfgQueue(jobGroupInfo, data) elif action_type == 'Kill': print "Got kill_server request...Exitiing" msg = self.web_msg.fatal('Server killed') self.web_msg.send(self, msg) import signal pid = os.getpid() os.kill(pid, signal.SIGTERM) else: # shouldn't reach here. print ("Unrecognized request type! Exiting...") sys.exit() pass elif req_type == 'SystemTest': # XXX: to be implmented print "SystemTest requests NOT supported currently..." pass else: log.info("Unknown request type!") except: log.error('Failed to parse XML response: "%s"' \ %string.join(traceback.format_exception(*sys.exc_info()), '')) raise print "Disconnected from: %s:%d" %self.client_address except socket.error: print (string.join(traceback.format_exception(*sys.exc_info()), '')) self.request.close()
socket.SOCK_STREAM)[0] af, socktype, proto, canonname, sa = res try: s = socket.socket(af, socktype, proto) except socket.error, msg: s = None try: s.connect(sa) except socket.error, msg: s.close() s = None if s is None: print ('could not open socket') sys.exit(1) x = xoom.xoom() # create an instance of the class xoom msg = x.wrapXoomMsg(msg) s.sendall(msg) data = s.recv(1024) s.close() # XXX: should we put a sleep here??? #time.sleep(1) return data ################################################################## # these are generic functions to generate and send xml requests ################################################################## def genReqXml(slot, subslot, req_dict): """ function that generate the request xml depending on req_type