예제 #1
0
    def put(self, name, kvp):
        """
        Create a new entry or update an existing one.
        """
        LOG.info('PUT /keys/ with key name=%s and data=%s', name, kvp)

        # TODO: There is a race, add custom add_or_update which updates by non
        # id field
        existing_kvp = self.__get_by_name(name=name)

        kvp.name = name

        try:
            kvp_db = KeyValuePairAPI.to_model(kvp)

            if existing_kvp:
                kvp_db.id = existing_kvp.id

            kvp_db = KeyValuePair.add_or_update(kvp_db)
        except (ValidationError, ValueError) as e:
            LOG.exception('Validation failed for key value data=%s', kvp)
            abort(http_client.BAD_REQUEST, str(e))
            return

        LOG.audit('KeyValuePair updated. KeyValuePair=%s', kvp_db)
        kvp_api = KeyValuePairAPI.from_model(kvp_db)
        LOG.debug('PUT /keys/ client_result=%s', kvp_api)

        return kvp_api
예제 #2
0
    def post(self, kvp):
        """
            Create a new key value pair.

            Handles requests:
                POST /keys/
        """
        LOG.info('POST /keys/ with key value data=%s', kvp)

        try:
            kvp_db = KeyValuePairAPI.to_model(kvp)
            LOG.debug('/keys/ POST verified KeyValuePairAPI and '
                      'formulated KeyValuePairDB=%s', kvp_db)
        except (ValidationError, ValueError) as e:
            LOG.exception('Validation failed for key value data=%s.', kvp)
            abort(http_client.BAD_REQUEST, str(e))
            return

        kvp_db = KeyValuePair.add_or_update(kvp_db)
        LOG.audit('KeyValuePair created. KeyValuePair=%s', kvp_db)

        kvp_api = KeyValuePairAPI.from_model(kvp_db)
        LOG.debug('POST /keys/ client_result=%s', kvp_api)

        return kvp_api
예제 #3
0
    def put(self, id, kvp):
        LOG.info('PUT /keys/ with key id=%s and data=%s', id, kvp)
        kvp_db = self.__get_by_id(id)
        LOG.debug('PUT /keys/ lookup with id=%s found object: %s', id, kvp_db)

        try:
            if kvp.id and kvp.id != id:
                LOG.warning('Discarding mismatched id=%s found in payload '
                            'and using uri_id=%s.',
                            kvp.id, id)
            old_kvp_db = kvp_db
            kvp_db = KeyValuePairAPI.to_model(kvp)
            kvp_db.id = id
            kvp_db = KeyValuePair.add_or_update(kvp_db)
        except (ValidationError, ValueError) as e:
            LOG.exception('Validation failed for key value data=%s', kvp)
            abort(http_client.BAD_REQUEST, str(e))
            return

        LOG.audit('KeyValuePair updated. KeyValuePair=%s and original KeyValuePair=%s',
                  kvp_db, old_kvp_db)
        kvp_api = KeyValuePairAPI.from_model(kvp_db)
        LOG.debug('PUT /keys/ client_result=%s', kvp_api)

        return kvp_api
예제 #4
0
    def put(self, name, kvp):
        """
        Create a new entry or update an existing one.
        """
        # TODO: There is a race, add custom add_or_update which updates by non
        # id field
        existing_kvp = self.__get_by_name(name=name)

        kvp.name = name

        try:
            kvp_db = KeyValuePairAPI.to_model(kvp)

            if existing_kvp:
                kvp_db.id = existing_kvp.id

            kvp_db = KeyValuePair.add_or_update(kvp_db)
        except (ValidationError, ValueError) as e:
            LOG.exception('Validation failed for key value data=%s', kvp)
            abort(http_client.BAD_REQUEST, str(e))
            return

        extra = {'kvp_db': kvp_db}
        LOG.audit('KeyValuePair updated. KeyValuePair.id=%s' % (kvp_db.id), extra=extra)
        kvp_api = KeyValuePairAPI.from_model(kvp_db)

        return kvp_api
예제 #5
0
    def put(self, id, kvp):
        LOG.info('PUT /keys/ with key id=%s and data=%s', id, kvp)
        kvp_db = self.__get_by_id(id)
        LOG.debug('PUT /keys/ lookup with id=%s found object: %s', id, kvp_db)

        try:
            if kvp.id and kvp.id != id:
                LOG.warning(
                    'Discarding mismatched id=%s found in payload '
                    'and using uri_id=%s.', kvp.id, id)
            old_kvp_db = kvp_db
            kvp_db = KeyValuePairAPI.to_model(kvp)
            kvp_db.id = id
            kvp_db = KeyValuePair.add_or_update(kvp_db)
        except (ValidationError, ValueError) as e:
            LOG.exception('Validation failed for key value data=%s', kvp)
            abort(http_client.BAD_REQUEST, str(e))
            return

        LOG.audit(
            'KeyValuePair updated. KeyValuePair=%s and original KeyValuePair=%s',
            kvp_db, old_kvp_db)
        kvp_api = KeyValuePairAPI.from_model(kvp_db)
        LOG.debug('PUT /keys/ client_result=%s', kvp_api)

        return kvp_api
예제 #6
0
    def post(self, kvp):
        """
            Create a new key value pair.

            Handles requests:
                POST /keys/
        """
        LOG.info('POST /keys/ with key value data=%s', kvp)

        try:
            kvp_db = KeyValuePairAPI.to_model(kvp)
            LOG.debug(
                '/keys/ POST verified KeyValuePairAPI and '
                'formulated KeyValuePairDB=%s', kvp_db)
        except (ValidationError, ValueError) as e:
            LOG.exception('Validation failed for key value data=%s.', kvp)
            abort(http_client.BAD_REQUEST, str(e))
            return

        kvp_db = KeyValuePair.add_or_update(kvp_db)
        LOG.audit('KeyValuePair created. KeyValuePair=%s', kvp_db)

        kvp_api = KeyValuePairAPI.from_model(kvp_db)
        LOG.debug('POST /keys/ client_result=%s', kvp_api)

        return kvp_api
예제 #7
0
    def get_one(self, name):
        """
            List key by name.

            Handle:
                GET /keys/key1
        """
        LOG.info('GET /keys/ with name=%s', name)

        kvp_db = self.__get_by_name(name=name)

        if not kvp_db:
            LOG.exception('Database lookup for name="%s" '
                          'resulted in exception.', name)
            abort(http_client.NOT_FOUND)
            return

        try:
            kvp_api = KeyValuePairAPI.from_model(kvp_db)
        except (ValidationError, ValueError) as e:
            abort(http_client.INTERNAL_SERVER_ERROR, str(e))
            return

        LOG.debug('GET /keys/ with name=%s, client_result=%s', name, kvp_api)
        return kvp_api
예제 #8
0
    def get_all(self, **kw):
        """
            List all keys.

            Handles requests:
                GET /keys/
        """
        LOG.info('GET all /keys/ with filters=%s', kw)

        kvp_dbs = KeyValuePair.get_all(**kw)
        kvps = [KeyValuePairAPI.from_model(kvp_db) for kvp_db in kvp_dbs]
        LOG.debug('GET all /keys/ client_result=%s', kvps)

        return kvps
예제 #9
0
    def get_all(self, **kw):
        """
            List all keys.

            Handles requests:
                GET /keys/
        """
        LOG.info('GET all /keys/ with filters=%s', kw)

        kvp_dbs = KeyValuePair.get_all(**kw)
        kvps = [KeyValuePairAPI.from_model(kvp_db) for kvp_db in kvp_dbs]
        LOG.debug('GET all /keys/ client_result=%s', kvps)

        return kvps
예제 #10
0
    def get_one(self, id):
        """
            List key by id.

            Handle:
                GET /keys/1
        """
        LOG.info('GET /keys/ with id=%s', id)
        kvp_db = self.__get_by_id(id)

        try:
            kvp_api = KeyValuePairAPI.from_model(kvp_db)
        except (ValidationError, ValueError) as e:
            abort(http_client.INTERNAL_SERVER_ERROR, str(e))
            return

        LOG.debug('GET /keys/ with id=%s, client_result=%s', id, kvp_api)
        return kvp_api
예제 #11
0
    def get_all(self, **kw):
        """
            List all keys.

            Handles requests:
                GET /keys/
        """
        # Prefix filtering
        prefix_filter = kw.get('prefix', None)

        if prefix_filter:
            kw['name__startswith'] = prefix_filter
            del kw['prefix']

        kvp_dbs = KeyValuePair.get_all(**kw)
        kvps = [KeyValuePairAPI.from_model(kvp_db) for kvp_db in kvp_dbs]

        return kvps
예제 #12
0
    def get_one(self, id):
        """
            List key by id.

            Handle:
                GET /keys/1
        """
        LOG.info('GET /keys/ with id=%s', id)
        kvp_db = self.__get_by_id(id)

        try:
            kvp_api = KeyValuePairAPI.from_model(kvp_db)
        except (ValidationError, ValueError) as e:
            abort(http_client.INTERNAL_SERVER_ERROR, str(e))
            return

        LOG.debug('GET /keys/ with id=%s, client_result=%s', id, kvp_api)
        return kvp_api
예제 #13
0
파일: datastore.py 프로젝트: gtmanfred/st2
    def get_all(self, **kw):
        """
            List all keys.

            Handles requests:
                GET /keys/
        """
        LOG.info('GET all /keys/ with filters=%s', kw)

        # Prefix filtering
        prefix_filter = kw.get('prefix', None)

        if prefix_filter:
            kw['name__startswith'] = prefix_filter
            del kw['prefix']

        kvp_dbs = KeyValuePair.get_all(**kw)
        kvps = [KeyValuePairAPI.from_model(kvp_db) for kvp_db in kvp_dbs]
        LOG.debug('GET all /keys/ client_result=%s', kvps)

        return kvps
예제 #14
0
파일: datastore.py 프로젝트: rgaertner/st2
    def get_one(self, name):
        """
            List key by name.

            Handle:
                GET /keys/key1
        """
        kvp_db = self.__get_by_name(name=name)

        if not kvp_db:
            LOG.exception('Database lookup for name="%s" resulted in exception.', name)
            abort(http_client.NOT_FOUND)
            return

        try:
            kvp_api = KeyValuePairAPI.from_model(kvp_db)
        except (ValidationError, ValueError) as e:
            abort(http_client.INTERNAL_SERVER_ERROR, str(e))
            return

        return kvp_api