Exemplo n.º 1
0
 def update_mapping(self, uuid, **kwargs):
     session = db.get_session()
     try:
         with session.begin():
             q = session.query(models.HashMapMapping)
             q = q.filter(models.HashMapMapping.mapping_id == uuid)
             mapping_db = q.with_lockmode('update').one()
             if kwargs:
                 # NOTE(sheeprine): We want to check that value is not set
                 # to a None value.
                 if mapping_db.field_id and not kwargs.get('value', 'GOOD'):
                     raise api.ClientHashMapError('You must specify a value'
                                                  ' for a field mapping.')
                 # Resolve FK
                 if 'group_id' in kwargs:
                     group_id = kwargs.pop('group_id')
                     if group_id:
                         group_db = self.get_group(group_id)
                         mapping_db.group_id = group_db.id
                 # Service and Field shouldn't be updated
                 excluded_cols = ['mapping_id', 'service_id', 'field_id']
                 for col in excluded_cols:
                     if col in kwargs:
                         kwargs.pop(col)
                 for attribute, value in six.iteritems(kwargs):
                     if hasattr(mapping_db, attribute):
                         setattr(mapping_db, attribute, value)
                     else:
                         raise api.ClientHashMapError(
                             'No such attribute: {}'.format(attribute))
             else:
                 raise api.ClientHashMapError('No attribute to update.')
             return mapping_db
     except sqlalchemy.orm.exc.NoResultFound:
         raise api.NoSuchMapping(uuid)
Exemplo n.º 2
0
 def delete_mapping(self, uuid):
     session = db.get_session()
     q = utils.model_query(models.HashMapMapping, session)
     q = q.filter(models.HashMapMapping.mapping_id == uuid)
     r = q.delete()
     if not r:
         raise api.NoSuchMapping(uuid)
Exemplo n.º 3
0
 def update_mapping(self, uuid, **kwargs):
     session = db.get_session()
     try:
         with session.begin():
             q = session.query(models.HashMapMapping)
             q = q.filter(models.HashMapMapping.mapping_id == uuid)
             mapping_db = q.with_lockmode('update').one()
             if kwargs:
                 # Resolve FK
                 if 'group_id' in kwargs:
                     group_id = kwargs.pop('group_id')
                     if group_id:
                         group_db = self.get_group(group_id)
                         mapping_db.group_id = group_db.id
                 # Service and Field shouldn't be updated
                 excluded_cols = ['mapping_id', 'service_id', 'field_id']
                 for col in excluded_cols:
                     if col in kwargs:
                         kwargs.pop(col)
                 for attribute, value in six.iteritems(kwargs):
                     if hasattr(mapping_db, attribute):
                         setattr(mapping_db, attribute, value)
                     else:
                         raise ValueError(
                             'No such attribute: {}'.format(attribute))
             else:
                 raise ValueError('No attribute to update.')
             return mapping_db
     except sqlalchemy.orm.exc.NoResultFound:
         raise api.NoSuchMapping(uuid)
Exemplo n.º 4
0
 def get_mapping(self, uuid):
     session = db.get_session()
     try:
         q = session.query(models.HashMapMapping)
         q = q.filter(models.HashMapMapping.mapping_id == uuid)
         res = q.one()
         return res
     except sqlalchemy.orm.exc.NoResultFound:
         raise api.NoSuchMapping(uuid)