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
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)
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
def read_all_state(self, ): LOG.debug("read_all_state") MeterClass.dump_all_meters(self._datapath) return {}, []
def check_broken_kernel_impl(self, ): LOG.info("check_broken_kernel_impl") MeterClass.dump_meter_features(self._datapath)
def destroy(self, ): LOG.info("Destroying all meters") MeterClass.del_all_meters(self._datapath)
def read_all_state(self, ): LOG.debug("read_all_state") # TODO update ID manager MeterClass.dump_all_meters(self._datapath) return self._fut