From b95e6d7cddd7e07bbc3ce355862249227a323865 Mon Sep 17 00:00:00 2001 From: Marco Capitani Date: Tue, 27 Mar 2018 17:39:30 +0200 Subject: model: fix case where no quality is provided Also add overloading in LinkQuality constructor --- rumba/model.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'rumba/model.py') diff --git a/rumba/model.py b/rumba/model.py index b6cb15e..6d0af58 100644 --- a/rumba/model.py +++ b/rumba/model.py @@ -161,7 +161,7 @@ class ShimEthDIF(DIF): def __init__(self, name, members=None, link_quality=None): DIF.__init__(self, name, members) - self._link_quality = link_quality + self._link_quality = link_quality if link_quality is not None else LinkQuality() def get_ipcp_class(self): return ShimEthIPCP @@ -325,13 +325,22 @@ class LinkQuality(object): """ Link quality configuration :param delay: Delay object holding delay configuration - :param loss: Loss object holding delay configuration + or number corresponding to delay in ms + :type delay: :py:class:`.Delay` or :py:class:`int` + :param loss: Loss object holding delay configuration or + number corresponding to loss percentage + :type loss: :py:class:`.Loss` or :py:class:`float` :param rate: The rate of the link in mbit + :type rate: :py:class:`int` """ if rate and not rate > 0: raise ValueError("Rate needs to be higher than 0") + if isinstance(delay, int): + delay = Delay(delay) + if isinstance(loss, int) or isinstance(loss, float): + loss = Loss(loss) self._delay = delay self._loss = loss self._rate = rate @@ -383,6 +392,8 @@ class LinkQuality(object): def deactivate(self, shim): for ipcp in shim.ipcps: + if ipcp not in LinkQuality._active: + continue if not ipcp.ifname: logger.error("Could not remove LinkQuality from IPCP because " "the interface name is None") -- cgit v1.2.3