def delete(self, device_id): """ Deletes a given device :param device_id: id of device to delete Urls: DELETE /devices/{device_id} Returns: None """ if not tenant_is_admin(request.headers): response.status = 401 return dict( faultcode="Client", faultstring="Client not authorized to access this function" ) with db_session() as session: # check for the device device = session.query(Device.id).\ filter(Device.id == device_id).first() if device is None: session.rollback() response.status = 404 return dict( faultcode="Client", faultstring="Device " + device_id + " not found" ) # Is the device is attached to a LB lb = session.query( loadbalancers_devices.c.loadbalancer).\ filter(loadbalancers_devices.c.device == device_id).\ all() if lb: # Rebuild device resp = rebuild_device(device_id) response.status = resp[0] return resp[1] # If we get here there are no load balancers so delete device response.status = 204 try: device = session.query(Device).\ filter(Device.id == device_id).first() device.status = 'DELETED' session.commit() return None except: session.rollback() LOG.exception('Error deleting device from pool') response.status = 500 return dict( faultcode="Server", faultstring="Error deleting device from pool" ) return None
def delete(self, device_id): """ Deletes a given device :param device_id: id of device to delete Urls: DELETE /devices/{device_id} Returns: None """ if not tenant_is_admin(request.headers): response.status = 401 return dict( faultcode="Client", faultstring="Client not authorized to access this function") with db_session() as session: # check for the device device = session.query(Device.id).\ filter(Device.id == device_id).first() if device is None: session.rollback() response.status = 404 return dict(faultcode="Client", faultstring="Device " + device_id + " not found") # Is the device is attached to a LB lb = session.query( loadbalancers_devices.c.loadbalancer).\ filter(loadbalancers_devices.c.device == device_id).\ all() if lb: # Rebuild device resp = rebuild_device(device_id) response.status = resp[0] return resp[1] # If we get here there are no load balancers so delete device response.status = 204 try: device = session.query(Device).\ filter(Device.id == device_id).first() device.status = 'DELETED' session.commit() return None except: session.rollback() LOG.exception('Error deleting device from pool') response.status = 500 return dict(faultcode="Server", faultstring="Error deleting device from pool") return None
def _rebuild_device(self, device_id): rebuild_device(device_id)