def replace_job(self, user_id, job_id, doc): # check that no document exists with # same job_id and different user_id try: self.job_manager.get(user_id, job_id) except freezer_api_exc.DocumentNotFound: pass valid_doc = utils.JobDoc.update(doc, user_id, job_id) (created, version) = self.job_manager.insert(valid_doc, job_id) if created: logging.info(_i18n._LI("Job %s created") % job_id) else: logging.info(_i18n._LI("Job %(id)s replaced with version %(version)s") % {"id": job_id, "version": version}) return version
def add_session(self, user_id, doc): session_doc = utils.SessionDoc.create(doc, user_id) session_id = session_doc['session_id'] self.session_manager.insert(session_doc, session_id) logging.info( _i18n._LI('Session registered, session id: %s') % session_id) return session_id
def replace_session(self, user_id, session_id, doc): # check that no document exists with # same session_id and different user_id try: self.session_manager.get(user_id, session_id) except freezer_api_exc.DocumentNotFound: pass valid_doc = SessionDoc.update(doc, user_id, session_id) (created, version) = self.session_manager.insert(valid_doc, session_id) if created: logging.info(_i18n._LI('Session %s created') % session_id) else: logging.info(_i18n._LI('Session %(id)s replaced with version %(version)s' % {'id': session_id, 'version': version})) return version
def get_db(): opts = get_options() db_engine = opts.pop("db") if db_engine == "elasticsearch": logging.debug(_i18n._LI("ElasticSearch config options: %s") % str(opts)) db = elastic.ElasticSearchEngine(**opts) else: raise Exception(_i18n._("Database Engine %s not supported") % db_engine) return db
def __init__(self, hosts, index='freezer'): self.index = index self.es = elasticsearch.Elasticsearch(hosts) logging.info(_LI('Using Elasticsearch host %s') % hosts) self.backup_manager = BackupTypeManager(self.es, 'backups') self.client_manager = ClientTypeManager(self.es, 'clients') self.job_manager = JobTypeManager(self.es, 'jobs') self.action_manager = ActionTypeManager(self.es, 'actions') self.session_manager = SessionTypeManager(self.es, 'sessions')
def get_db(): opts = get_options() db_engine = opts.pop('db') if db_engine == 'elasticsearch': logging.debug(_i18n._LI('Elastichsearch config options: %s') % str(opts)) db = elastic.ElasticSearchEngine(**opts) else: raise Exception(_i18n._('Database Engine %s not supported') % db_engine) return db
def update_action(self, user_id, action_id, patch_doc): valid_patch = utils.ActionDoc.create_patch(patch_doc) # check that document exists assert self.action_manager.get(user_id, action_id) version = self.action_manager.update(action_id, valid_patch) logging.info(_i18n._LI("Action %(id)s updated to version %(version)s") % {"id": action_id, "version": version}) return version
def get_db(): db_engine = CONF.storage.db if db_engine == 'elasticsearch': endpoint = CONF.storage.endpoint logging.info(_LI('Storage backend: Elasticsearch at %s') % endpoint) db = elastic.ElasticSearchEngine(endpoint) else: raise Exception(_('Database Engine %s not supported') % db_engine) return db
def __init__(self, index="freezer", **kwargs): self.index = index self.es = elasticsearch.Elasticsearch(**kwargs) logging.info(_i18n._LI("Storage backend: Elasticsearch " "at %s") % kwargs["hosts"]) self.backup_manager = BackupTypeManager(self.es, "backups") self.client_manager = ClientTypeManager(self.es, "clients") self.job_manager = JobTypeManager(self.es, "jobs") self.action_manager = ActionTypeManager(self.es, "actions") self.session_manager = SessionTypeManager(self.es, "sessions")
def update_job(self, user_id, job_id, patch_doc): valid_patch = utils.JobDoc.create_patch(patch_doc) # check that document exists assert self.job_manager.get(user_id, job_id) version = self.job_manager.update(job_id, valid_patch) logging.info(_i18n._LI("Job %(id)s updated to version %(version)s") % {"id": job_id, "version": version}) return version
def __init__(self, index='freezer', **kwargs): self.index = index self.es = elasticsearch.Elasticsearch(**kwargs) logging.info(_i18n._LI('Storage backend: Elasticsearch ' 'at %s') % kwargs['hosts']) self.backup_manager = BackupTypeManager(self.es, 'backups') self.client_manager = ClientTypeManager(self.es, 'clients') self.job_manager = JobTypeManager(self.es, 'jobs') self.action_manager = ActionTypeManager(self.es, 'actions') self.session_manager = SessionTypeManager(self.es, 'sessions')
def update_job(self, user_id, job_id, patch_doc): valid_patch = JobDoc.create_patch(patch_doc) # check that document exists assert (self.job_manager.get(user_id, job_id)) version = self.job_manager.update(job_id, valid_patch) logging.info(_i18n._LI('Job %(id)s updated to version %(version)s') % {'id': job_id, 'version': version}) return version
def update_session(self, user_id, session_id, patch_doc): valid_patch = SessionDoc.create_patch(patch_doc) # check that document exists assert (self.session_manager.get(user_id, session_id)) version = self.session_manager.update(session_id, valid_patch) logging.info(_i18n._LI('Session %(id)s updated to version %(version)s' % {'id': session_id, 'version': version})) return version
def get_db(): opts = get_options() db_engine = opts.pop('db') if db_engine == 'elasticsearch': logging.debug( _i18n._LI('ElasticSearch config options: %s') % str(opts)) db = elastic.ElasticSearchEngine(**opts) else: raise Exception( _i18n._('Database Engine %s not supported') % db_engine) return db
def add_client(self, user_id, doc): client_id = doc.get("client_id", None) if client_id is None: raise freezer_api_exc.BadDataFormat(message=_i18n._("Missing client ID")) existing = self.client_manager.search(user_id, client_id) if existing: raise freezer_api_exc.DocumentExists(message=_i18n._("Client already registered with ID %s") % client_id) client_doc = {"client": doc, "user_id": user_id, "uuid": uuid.uuid4().hex} self.client_manager.insert(client_doc) logging.info(_i18n._LI("Client registered, client_id: %s") % client_id) return client_id
def __init__(self, index='freezer', **kwargs): self.index = index self.es = elasticsearch.Elasticsearch(**kwargs) logging.info( _i18n._LI('Storage backend: Elasticsearch ' 'at %s') % kwargs['hosts']) self.backup_manager = BackupTypeManager(self.es, 'backups') self.client_manager = ClientTypeManager(self.es, 'clients') self.job_manager = JobTypeManager(self.es, 'jobs') self.action_manager = ActionTypeManager(self.es, 'actions') self.session_manager = SessionTypeManager(self.es, 'sessions')
def add_client(self, user_id, doc): client_doc = utils.ClientDoc.create(doc, user_id) client_id = client_doc['client']['client_id'] existing = self.client_manager.search(user_id, client_id) if existing: raise freezer_api_exc.DocumentExists( message=_i18n._('Client already registered with ID %s') % client_id) self.client_manager.insert(client_doc) logging.info(_i18n._LI('Client registered, client_id: %s') % client_id) return client_id
def replace_job(self, user_id, job_id, doc): # check that no document exists with # same job_id and different user_id try: self.job_manager.get(user_id, job_id) except freezer_api_exc.DocumentNotFound: pass valid_doc = utils.JobDoc.update(doc, user_id, job_id) (created, version) = self.job_manager.insert(valid_doc, job_id) if created: logging.info(_i18n._LI('Job %s created') % job_id) else: logging.info( _i18n._LI('Job %(id)s replaced with version %(version)s') % { 'id': job_id, 'version': version }) return version
def update_job(self, user_id, job_id, patch_doc): valid_patch = utils.JobDoc.create_patch(patch_doc) # check that document exists assert (self.job_manager.get(user_id, job_id)) version = self.job_manager.update(job_id, valid_patch) logging.info( _i18n._LI('Job %(id)s updated to version %(version)s') % { 'id': job_id, 'version': version }) return version
def update_session(self, user_id, session_id, patch_doc): valid_patch = utils.SessionDoc.create_patch(patch_doc) # check that document exists assert (self.session_manager.get(user_id, session_id)) version = self.session_manager.update(session_id, valid_patch) logging.info( _i18n._LI('Session %(id)s updated to version %(version)s') % { 'id': session_id, 'version': version }) return version
def add_client(self, user_id, doc): client_id = doc.get('client_id', None) if client_id is None: raise freezer_api_exc.BadDataFormat(message=_('Missing client ID')) existing = self.client_manager.search(user_id, client_id) if existing: # len(existing) > 0 raise freezer_api_exc.DocumentExists( message=_('Client already registered with ID %s') % client_id) client_doc = {'client': doc, 'user_id': user_id, 'uuid': uuid.uuid4().hex} self.client_manager.insert(client_doc) logging.info(_LI('Client registered, client_id: %s') % client_id) return client_id
def add_action(self, user_id, doc): actiondoc = utils.ActionDoc.create(doc, user_id) action_id = actiondoc['action_id'] self.action_manager.insert(actiondoc, action_id) logging.info(_i18n._LI('Action registered, action id: %s') % action_id) return action_id
def add_session(self, user_id, doc): session_doc = SessionDoc.create(doc, user_id) session_id = session_doc['session_id'] self.session_manager.insert(session_doc, session_id) logging.info(_i18n._LI('Session registered, session id: %s') % session_id) return session_id
def add_action(self, user_id, doc): actiondoc = ActionDoc.create(doc, user_id) action_id = actiondoc['action_id'] self.action_manager.insert(actiondoc, action_id) logging.info(_i18n._LI('Action registered, action id: %s') % action_id) return action_id
def add_job(self, user_id, doc): jobdoc = utils.JobDoc.create(doc, user_id) job_id = jobdoc['job_id'] self.job_manager.insert(jobdoc, job_id) logging.info(_i18n._LI('Job registered, job id: %s') % job_id) return job_id
def add_job(self, user_id, doc): jobdoc = JobDoc.create(doc, user_id) job_id = jobdoc['job_id'] self.job_manager.insert(jobdoc, job_id) logging.info(_i18n._LI('Job registered, job id: %s') % job_id) return job_id
def add_session(self, user_id, doc): session_doc = utils.SessionDoc.create(doc, user_id) session_id = session_doc["session_id"] self.session_manager.insert(session_doc, session_id) logging.info(_i18n._LI("Session registered, session id: %s") % session_id) return session_id
app = middleware.json_translator(app) if 'keystone_authtoken' in config.CONF: app = auth_token.AuthProtocol(app, {}) else: logging.warning(_i18n._LW("keystone authentication disabled")) app = middleware.HealthApp(app=app, path='/v1/health') return app config_file = '/etc/freezer-api.conf' config_files_list = [config_file] if os.path.isfile(config_file) else [] config.parse_args(args=[], default_config_files=config_files_list) log.setup() logging.info(_i18n._LI("Freezer API starting")) logging.info(_i18n._LI("Freezer config file(s) used: %s") % ', '.join(cfg.CONF.config_file)) try: db = driver.get_db() application = get_application(db) except Exception as err: message = _i18n._('Unable to start server: %s ') % err print(message) logging.fatal(message) sys.exit(1) def main(): # quick simple server for testing purposes or simple scenarios ip, port = '127.0.0.1', 9090
def add_action(self, user_id, doc): actiondoc = utils.ActionDoc.create(doc, user_id) action_id = actiondoc["action_id"] self.action_manager.insert(actiondoc, action_id) logging.info(_i18n._LI("Action registered, action id: %s") % action_id) return action_id
def add_job(self, user_id, doc): jobdoc = utils.JobDoc.create(doc, user_id) job_id = jobdoc["job_id"] self.job_manager.insert(jobdoc, job_id) logging.info(_i18n._LI("Job registered, job id: %s") % job_id) return job_id