def main(argv=None): """Register a Database configuration file with the Cheshire3 Server.""" global argparser, session, server if argv is None: args = argparser.parse_args() else: args = argparser.parse_args(argv) session = Session() server = SimpleServer(session, args.serverconfig) # Make path to configfile absolute args.configfile = os.path.abspath(os.path.expanduser(args.configfile)) # Tell the server to register the config file server.register_databaseConfigFile(session, args.configfile) return 0
def main(argv=None): """Register a Database configuration file with the Cheshire3 Server.""" global argparser, session, server if argv is None: args = argparser.parse_args() else: args = argparser.parse_args(argv) session = Session() server = SimpleServer(session, args.serverconfig) # Make path to configfile absolute args.configfile = os.path.abspath(os.path.expanduser(args.configfile)) # Tell the server to register the config file server.register_databaseConfigFile(session, args.configfile) return 0
def main(argv=None): """Initialize a Cheshire 3 database based on parameters in argv.""" global argparser, session, server, db if argv is None: args = argparser.parse_args() else: args = argparser.parse_args(argv) session = Session() server = SimpleServer(session, args.serverconfig) if args.database is None: if args.directory.endswith(os.path.sep): args.directory = args.directory[:-1] # Find local database name to use as basis of database id dbid = "db_{0}".format(os.path.basename(args.directory)) server.log_debug(session, ("database identifier not specified, defaulting to: " "{0}".format(dbid))) else: dbid = args.database try: db = server.get_object(session, dbid) except ObjectDoesNotExistException: # Doesn't exists, so OK to init it pass else: # TODO: check for --force ? msg = """database with id '{0}' has already been init'd. \ Please specify a different id using the --database option.""".format(dbid) server.log_critical(session, msg) raise ValueError(msg) # Create a .cheshire3 directory and populate it c3_dir = os.path.join(os.path.abspath(args.directory), '.cheshire3') for dir_path in [ c3_dir, os.path.join(c3_dir, 'stores'), os.path.join(c3_dir, 'indexes'), os.path.join(c3_dir, 'logs') ]: try: os.makedirs(dir_path) except OSError: # Directory already exists server.log_warning(session, "directory already exists {0}".format(dir_path)) # Generate config file(s) xmlFilesToWrite = {} # Generate Protocol Map(s) (ZeeRex) zrx = create_defaultZeerex(dbid, args) zrxPath = os.path.join(c3_dir, 'zeerex_sru.xml') args.zeerexPath = zrxPath xmlFilesToWrite[zrxPath] = zrx # Generate generic database config dbConfig = create_defaultConfig(dbid, args) dbConfigPath = os.path.join(c3_dir, 'config.xml') xmlFilesToWrite[dbConfigPath] = dbConfig # Generate config for generic selectors selectorConfig = create_defaultConfigSelectors() path = os.path.join(c3_dir, 'configSelectors.xml') dbConfig = include_configByPath(dbConfig, path) xmlFilesToWrite[path] = selectorConfig # Generate config for generic indexes indexConfig = create_defaultConfigIndexes() path = os.path.join(c3_dir, 'configIndexes.xml') dbConfig = include_configByPath(dbConfig, path) xmlFilesToWrite[path] = indexConfig # Generate config for default Workflows workflowConfig = create_defaultConfigWorkflows() path = os.path.join(c3_dir, 'configWorkflows.xml') dbConfig = include_configByPath(dbConfig, path) xmlFilesToWrite[path] = workflowConfig # Write configs to files for path, node in xmlFilesToWrite.iteritems(): with open(path, 'w') as conffh: conffh.write( etree.tostring(node, pretty_print=True, encoding="utf-8")) # Tell the server to register the config file server.register_databaseConfigFile(session, dbConfigPath) return 0
def main(argv=None): """Initialize a Cheshire 3 database based on parameters in argv.""" global argparser, session, server, db if argv is None: args = argparser.parse_args() else: args = argparser.parse_args(argv) session = Session() server = SimpleServer(session, args.serverconfig) if args.database is None: if args.directory.endswith(os.path.sep): args.directory = args.directory[:-1] # Find local database name to use as basis of database id dbid = "db_{0}".format(os.path.basename(args.directory)) server.log_debug(session, ("database identifier not specified, defaulting to: " "{0}".format(dbid))) else: dbid = args.database try: db = server.get_object(session, dbid) except ObjectDoesNotExistException: # Doesn't exists, so OK to init it pass else: # TODO: check for --force ? msg = """database with id '{0}' has already been init'd. \ Please specify a different id using the --database option.""".format(dbid) server.log_critical(session, msg) raise ValueError(msg) # Create a .cheshire3 directory and populate it c3_dir = os.path.join(os.path.abspath(args.directory), '.cheshire3') for dir_path in [c3_dir, os.path.join(c3_dir, 'stores'), os.path.join(c3_dir, 'indexes'), os.path.join(c3_dir, 'logs')]: try: os.makedirs(dir_path) except OSError: # Directory already exists server.log_warning( session, "directory already exists {0}".format(dir_path) ) # Generate config file(s) xmlFilesToWrite = {} # Generate Protocol Map(s) (ZeeRex) zrx = create_defaultZeerex(dbid, args) zrxPath = os.path.join(c3_dir, 'zeerex_sru.xml') args.zeerexPath = zrxPath xmlFilesToWrite[zrxPath] = zrx # Generate generic database config dbConfig = create_defaultConfig(dbid, args) dbConfigPath = os.path.join(c3_dir, 'config.xml') xmlFilesToWrite[dbConfigPath] = dbConfig # Generate config for generic selectors selectorConfig = create_defaultConfigSelectors() path = os.path.join(c3_dir, 'configSelectors.xml') dbConfig = include_configByPath(dbConfig, path) xmlFilesToWrite[path] = selectorConfig # Generate config for generic indexes indexConfig = create_defaultConfigIndexes() path = os.path.join(c3_dir, 'configIndexes.xml') dbConfig = include_configByPath(dbConfig, path) xmlFilesToWrite[path] = indexConfig # Generate config for default Workflows workflowConfig = create_defaultConfigWorkflows() path = os.path.join(c3_dir, 'configWorkflows.xml') dbConfig = include_configByPath(dbConfig, path) xmlFilesToWrite[path] = workflowConfig # Write configs to files for path, node in xmlFilesToWrite.iteritems(): with open(path, 'w') as conffh: conffh.write(etree.tostring(node, pretty_print=True, encoding="utf-8" ) ) # Tell the server to register the config file server.register_databaseConfigFile(session, dbConfigPath) return 0