From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from bcmv-tmail01.ecl.ntt.co.jp (bcmv-tmail01.ecl.ntt.co.jp [124.146.185.148]) by dpdk.org (Postfix) with ESMTP id DF8001B11C for ; Wed, 12 Dec 2018 03:05:31 +0100 (CET) Received: from bcmv-ns01.ecl.ntt.co.jp (bcmv-ns01.ecl.ntt.co.jp [129.60.83.123]) by bcmv-tmail01.ecl.ntt.co.jp (8.14.4/8.14.4) with ESMTP id wBC25TAK014141; Wed, 12 Dec 2018 11:05:29 +0900 Received: from bcmv-ns01.ecl.ntt.co.jp (localhost [127.0.0.1]) by bcmv-ns01.ecl.ntt.co.jp (Postfix) with ESMTP id 8429616A; Wed, 12 Dec 2018 11:05:29 +0900 (JST) Received: from localhost.localdomain (lobster.nslab.ecl.ntt.co.jp [129.60.13.95]) by bcmv-ns01.ecl.ntt.co.jp (Postfix) with ESMTP id 6A48912C; Wed, 12 Dec 2018 11:05:29 +0900 (JST) From: ogawa.yasufumi@lab.ntt.co.jp To: ferruh.yigit@intel.com, spp@dpdk.org, ogawa.yasufumi@lab.ntt.co.jp Date: Wed, 12 Dec 2018 11:03:12 +0900 Message-Id: <1544580195-9242-3-git-send-email-ogawa.yasufumi@lab.ntt.co.jp> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1544580195-9242-1-git-send-email-ogawa.yasufumi@lab.ntt.co.jp> References: <1544580195-9242-1-git-send-email-ogawa.yasufumi@lab.ntt.co.jp> X-TM-AS-MML: disable Subject: [spp] [PATCH 2/5] controller: change to exclude used port from del X-BeenThere: spp@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Soft Patch Panel List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Dec 2018 02:05:32 -0000 From: Yasufumi Ogawa In completion of `del`, exclude ports already used. Signed-off-by: Yasufumi Ogawa --- src/controller/commands/nfv.py | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/controller/commands/nfv.py b/src/controller/commands/nfv.py index 9af4449..7a8d073 100644 --- a/src/controller/commands/nfv.py +++ b/src/controller/commands/nfv.py @@ -248,19 +248,33 @@ class SppNfv(object): return res def _compl_del(self, sub_tokens): + # Del command consists of two tokens max, for instance, + # `nfv 1; del ring:1`. if len(sub_tokens) < 3: res = [] if self.use_cache is False: self.ports = self.get_registered_ports() + self.patches = self.get_registered_patches() - for kw in self.ports: - if kw.startswith(sub_tokens[1]): - if ':' in sub_tokens[1]: # exp, 'ring:' or 'ring:0' - res.append(kw.split(':')[1]) - else: - res.append(kw) + # Used ports should not be included in the candidate of del. + used_ports = [] + for pt in self.ports: + for ppt in self.patches: + if ((pt in ppt['src']) or (pt in ppt['dst'])): + used_ports.append(pt) + used_ports = list(set(used_ports)) + # Remove ports already used from candidate. + for kw in self.ports: + if not (kw in used_ports): + if kw.startswith(sub_tokens[1]): + if ':' in sub_tokens[1]: # exp, 'ring:' or 'ring:0' + res.append(kw.split(':')[1]) + else: + res.append(kw) + + # Physical port cannot be removed. for p in res: if p.startswith('phy:'): res.remove(p) -- 2.7.4