Beispiel #1
0
    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
Beispiel #3
0
    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
Beispiel #4
0
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
Beispiel #5
0
 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')
Beispiel #6
0
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
Beispiel #7
0
    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
Beispiel #8
0
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
Beispiel #9
0
 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")
Beispiel #10
0
    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
Beispiel #11
0
 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')
Beispiel #12
0
    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
Beispiel #13
0
    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
Beispiel #15
0
 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
Beispiel #21
0
 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
Beispiel #23
0
 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
Beispiel #24
0
 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
Beispiel #26
0
 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
Beispiel #27
0
 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
Beispiel #28
0
    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
Beispiel #29
0
 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
Beispiel #30
0
 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