示例#1
0
    def add_qos(
        self,
        _,
        qos_info: QosInfo,
        cleanup_rule,
        parent=None,
        skip_filter=False,
    ) -> int:
        if self._qos_impl_broken:
            raise RuntimeError(BROKEN_KERN_ERROR_MSG)

        if parent:
            # TODO add ovs meter logic to handle APN AMBR
            pass

        meter_id = self._id_manager.allocate_idx()
        rate_in_kbps = int(qos_info.mbr / 1000)
        MeterClass.add_meter(
            self._datapath,
            meter_id,
            rate=rate_in_kbps,
            burst_size=0,
        )
        LOG.debug("Adding meter_id %d", meter_id)
        return meter_id
示例#2
0
 def remove_qos(self, meter_id: int, d, recovery_mode=False, _=False):
     LOG.debug("Removing meter %d d %d recovery_mode %s", meter_id, d,
               recovery_mode)
     if meter_id < self._start_idx or meter_id > (self._max_idx - 1):
         LOG.error("invalid meter_id %d, removal failed", meter_id)
         return
     MeterClass.del_meter(self._datapath, meter_id)
     self._id_manager.release_idx(meter_id)
示例#3
0
    def add_qos(self, _, qos_info: QosInfo) -> int:
        if self._qos_impl_broken:
            raise RuntimeError(BROKEN_KERN_ERROR_MSG)

        meter_id = self._id_manager.allocate_idx()
        rate_in_kbps = int(qos_info.mbr / 1000)
        MeterClass.add_meter(self._datapath, meter_id, rate=rate_in_kbps,
                             burst_size=0)
        LOG.debug("Adding meter_id %d", meter_id)
        return meter_id
示例#4
0
 def read_all_state(self, ):
     LOG.debug("read_all_state")
     MeterClass.dump_all_meters(self._datapath)
     return {}, []
示例#5
0
 def check_broken_kernel_impl(self, ):
     LOG.info("check_broken_kernel_impl")
     MeterClass.dump_meter_features(self._datapath)
示例#6
0
 def destroy(self, ):
     LOG.info("Destroying all meters")
     MeterClass.del_all_meters(self._datapath)
示例#7
0
 def read_all_state(self, ):
     LOG.debug("read_all_state")
     # TODO update ID manager
     MeterClass.dump_all_meters(self._datapath)
     return self._fut