Пример #1
0
    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()   
Пример #2
0
        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
Пример #3
0
    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()   
Пример #4
0
                                 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