Exemple #1
0
    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
Exemple #2
0
    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
Exemple #3
0
 def _rebuild_device(self, device_id):
     rebuild_device(device_id)
Exemple #4
0
 def _rebuild_device(self, device_id):
     rebuild_device(device_id)