예제 #1
0
    def save(self, session=None):
        from devicedemo import db

        if session is None:
            session = db.get_session()

        super(DeviceDemoBase, self).save(session=session)
예제 #2
0
 def delete_device(self, device_id):
     session = db.get_session()
     q = utils.model_query(models.Device, session)
     q = q.filter(models.Device.device_id == device_id)
     r = q.delete()
     if not r:
         raise api.NoSuchDevice(device_id)
예제 #3
0
 def update_device(self,
                   device_id,
                   name=None,
                   dtype=None,
                   vendor=None,
                   version=None):
     session = db.get_session()
     try:
         with session.begin():
             q = session.query(models.Device)
             q = q.filter(models.Device.device_id == device_id)
             device_db = q.with_lockmode('update').one()
             if name:
                 device_db.name = name
             if dtype:
                 device_db.dtype = dtype
             if vendor:
                 device_db.vendor = vendor
             if version:
                 device_db.version = version
         return device_db
     except sqlalchemy.orm.exc.NoResultFound:
         raise api.NoSuchDevice(device_id)
     except exception.DBDuplicateEntry:
         device_db = self.get_device(name=name)
         raise api.DeviceAlreadyExists(name, device_db.device_id)
예제 #4
0
 def get_device(self, device_id=None, name=None):
     session = db.get_session()
     try:
         q = utils.model_query(models.Device, session)
         if device_id:
             q = q.filter(models.Device.device_id == device_id)
         if name:
             q = q.filter(models.Device.name == name)
         return q.one()
     except sqlalchemy.orm.exc.NoResultFound:
         raise api.NoSuchDevice(device_id)
예제 #5
0
 def create_device(self, name, dtype=None, vendor=None, version=None):
     session = db.get_session()
     try:
         with session.begin():
             device_db = models.Device(device_id=uuidutils.generate_uuid(),
                                       name=name,
                                       dtype=dtype,
                                       vendor=vendor,
                                       version=version)
             session.add(device_db)
         return device_db
     except exception.DBDuplicateEntry:
         device_db = self.get_device(name=name)
         raise api.DeviceAlreadyExists(name, device_db.device_id)
예제 #6
0
 def list_devices(self):
     session = db.get_session()
     q = utils.model_query(models.Device, session)
     res = q.all()
     return res