def isMozpoolReady(device): """ Checks if the mozpool server is available and the device is in 'ready' state Returns MOZPOOL_STATE_READY if Mozpool is indeed listing device as ready Returns MOZPOOL_STATE_UNKNOWN if Mozpool claims the device is in a non-ready state Returns MOZPOOL_STATE_ERROR if Mozpool reports some other error. Returns MOZPOOL_STATE_MISSING if there is no Mozpool server found in DNS. """ import socket default_timeout = socket.getdefaulttimeout() socket.setdefaulttimeout(5) # Don't let networking delay us too long try: socket.gethostbyname(MOZPOOL_CNAME) except: log.info("No mozpool server in this VLAN") return MOZPOOL_STATE_MISSING finally: # Set socket timeout back socket.setdefaulttimeout(default_timeout) mpc = MozpoolHandler("http://%s" % MOZPOOL_CNAME, log) try: result = mpc.query_device_state(device) except MozpoolException as e: log.error("Unable to get mozpool state, mozpool returned error: %s" % sys.exc_info()[1]) return MOZPOOL_STATE_ERROR if result['state'] == "ready": log.debug("Mozpool state is 'ready'") return MOZPOOL_STATE_READY else: log.error("Mozpool state is '%s'" % result['state']) return MOZPOOL_STATE_UNKNOWN
def query_mozpool_handler(self, device=None, mozpool_api_url=None): if self.mozpool_handler != None: return self.mozpool_handler else: self.mozpool_api_url = self.determine_mozpool_host( device) if device else mozpool_api_url assert self.mozpool_api_url != None, \ "query_mozpool_handler() requires either a device or mozpool_api_url!" site_packages_path = self.query_python_site_packages_path() mph_path = os.path.join(site_packages_path, 'mozpoolclient') sys.path.append(mph_path) sys.path.append(site_packages_path) try: from mozpoolclient import MozpoolHandler, MozpoolException, MozpoolConflictException self.MozpoolException = MozpoolException self.MozpoolConflictException = MozpoolConflictException self.mozpool_handler = MozpoolHandler(self.mozpool_api_url, log_obj=self) except ImportError, e: self.fatal( "Can't instantiate MozpoolHandler until mozpoolclient python " "package is installed! (VirtualenvMixin?): \n%s" % str(e)) return self.mozpool_handler