def save(self, session=None): from devicedemo import db if session is None: session = db.get_session() super(DeviceDemoBase, self).save(session=session)
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)
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)
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)
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)
def list_devices(self): session = db.get_session() q = utils.model_query(models.Device, session) res = q.all() return res