Esempio n. 1
0
    def put(self, key, **kwargs):
        """
        Create a new secret or update an existing secret if the flag
        update_if_exists is set to true
        """
        secret_params = self._get_secret_params(key)
        encrypted_value = self._encrypt_secret_value(secret_params['value'])
        sm = get_storage_manager()
        timestamp = utils.get_formatted_timestamp()

        try:
            new_secret = models.Secret(
                id=key,
                value=encrypted_value,
                created_at=timestamp,
                updated_at=timestamp,
                visibility=secret_params['visibility'],
                is_hidden_value=secret_params['is_hidden_value'])
            return sm.put(new_secret)
        except ConflictError:
            secret = sm.get(models.Secret, key)
            if secret and secret_params['update_if_exists']:
                get_resource_manager().validate_modification_permitted(secret)
                secret.value = encrypted_value
                secret.updated_at = timestamp
                return sm.update(secret)
            raise
 def _make_secret(self, id, value):
     # these tests are using secrets, but they could just as well
     # use any other model, we just need to create _something_ in the db
     now = datetime.now()
     return models.Secret(id=id,
                          value=value,
                          created_at=now,
                          updated_at=now,
                          visibility=VisibilityState.TENANT)
Esempio n. 3
0
    def put(self, key):
        """
        Create a new secret
        """

        key, value = self._validate_secret_inputs(key)

        return get_storage_manager().put(
            models.Secret(id=key,
                          value=value,
                          created_at=utils.get_formatted_timestamp(),
                          updated_at=utils.get_formatted_timestamp()))
Esempio n. 4
0
    def test_all_results_query(self):
        now = utils.get_formatted_timestamp()
        for i in range(1, 1002):
            secret = models.Secret(id='secret_{}'.format(i),
                                   value='value',
                                   created_at=now,
                                   updated_at=now,
                                   visibility=VisibilityState.TENANT)
            self.sm.put(secret)

        secret_list = self.sm.list(models.Secret,
                                   include=['id', 'created_at'],
                                   get_all_results=True)
        self.assertEquals(1000, len(secret_list))
Esempio n. 5
0
    def test_all_results_query(self):
        now = utils.get_formatted_timestamp()
        for i in range(1, 1002):
            secret = models.Secret(id='secret_{}'.format(i),
                                   value='value',
                                   created_at=now,
                                   updated_at=now,
                                   visibility=VisibilityState.TENANT)
            self.sm.put(secret)

        error_message = '^Response size .*? bigger than max allowed .*?' \
                        'please use pagination.$'
        self.assertRaisesRegexp(IllegalActionError,
                                error_message,
                                self.sm.list,
                                models.Secret,
                                include=['id', 'created_at'])

        secret_list = self.sm.list(models.Secret,
                                   include=['id', 'created_at'],
                                   get_all_results=True)
        self.assertEquals(1001, len(secret_list))
Esempio n. 6
0
    def put(self, key, **kwargs):
        """
        Create a new secret
        """
        request_dict = rest_utils.get_json_and_verify_params({
            'value': {
                'type': unicode,
            },
            'update_if_exists': {
                'optional': True,
            }
        })
        value = request_dict['value']
        update_if_exists = rest_utils.verify_and_convert_bool(
            'update_if_exists',
            request_dict.get('update_if_exists', False),
        )
        rest_utils.validate_inputs({'key': key})

        sm = get_storage_manager()
        timestamp = utils.get_formatted_timestamp()
        try:
            new_secret = models.Secret(
                id=key,
                value=value,
                created_at=timestamp,
                updated_at=timestamp,
            )
            return sm.put(new_secret)
        except ConflictError:
            secret = sm.get(models.Secret, key)
            if secret and update_if_exists:
                get_resource_manager().validate_modification_permitted(secret)
                secret.value = value
                secret.updated_at = timestamp
                return sm.update(secret)
            raise