def create(server, disk=None): # Create the server db model if it doesn't exist if isinstance(server, str): if os.path.isfile(str): server = MU.serverConfToDict(server) else: msg = 'Unable to create server with definition: %s' % (server) MU.logMsg('SecondaryJobServiceFactory', msg, 'error') raise SecondaryJobServiceError(msg) if isinstance(server, dict): try: server, created = SecondaryAnalysisServer.objects.get_or_create(**server) if created: MU.logMsg('SecondaryJobServiceFactory', 'Created new SecondaryAnalysisServer %s' % server, 'info') except Exception as err: msg = 'Unable to create server with definition: %s. ErrorMsg: %s' % (server, err) MU.logMsg('SecondaryJobServiceFactory', msg, 'error') raise SecondaryJobServiceError(msg) if re.findall('^martin', server.serverName.lower()): # This is specific to PacBio only, do not set this to true for non-PacBio installs!! from pbmilhouse.MartinJobHandler import MartinJobServiceFactory return MartinJobServiceFactory.create(server, disk) if disk is None: if server.serverHost and server.serverPort: sjsApi = SecondaryJobServiceAPI(server) ping, msg = sjsApi.testConnection() if ping: logmsg = 'Using Server API Instance, Web Service Ping: %s' % msg MU.logMsg('SecondaryJobServiceFactry', logmsg, 'info') disk = False else: logmsg = 'Using Server Disk Instance, Web Service Ping: %s' % msg, MU.logMsg('SecondaryJobServiceFactory', 'info') disk = True else: disk = True # All other Milhouse instance should go through this path if disk: return SecondaryJobServiceDisk(server) else: return SecondaryJobServiceAPI(server)