X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2FIPv6Setup.py;h=72aeb305a2462dd1f26d8d8ed70fce7364b31c97;hp=60e10a34e4c8d1e20467a75314196025bf01b951;hb=cc0c2870a18fb74a56410eca2d1870bddc945397;hpb=cf561a6e3d4c4fbd78ab6c9d0a9aa817bb3300fc diff --git a/resources/libraries/python/IPv6Setup.py b/resources/libraries/python/IPv6Setup.py index 60e10a34e4..72aeb305a2 100644 --- a/resources/libraries/python/IPv6Setup.py +++ b/resources/libraries/python/IPv6Setup.py @@ -1,4 +1,4 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. +# Copyright (c) 2018 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -13,38 +13,43 @@ """Library to set up IPv6 in topology.""" -from robot.api import logger from ipaddress import IPv6Network +from robot.api import logger from resources.libraries.python.ssh import SSH from resources.libraries.python.topology import NodeType, Topology -from resources.libraries.python.constants import Constants +from resources.libraries.python.Constants import Constants from resources.libraries.python.VatExecutor import VatTerminal, VatExecutor class IPv6Networks(object): """IPv6 network iterator. - :param networks: List of the available IPv6 networks. - :type networks: list + TODO: Conform to https://docs.python.org/2/library/stdtypes.html#typeiter """ + def __init__(self, networks): - self._networks = list() + """Initialize internal list of valid networks. + + :param networks: List of the available IPv6 networks. + :type networks: list + :raise RuntimeError: If no networks were added. + """ + self._networks = [] for network in networks: net = IPv6Network(unicode(network)) self._networks.append(net) - num = len(self._networks) - if num == 0: - raise Exception('No IPv6 networks') + if not self._networks: + raise RuntimeError('No IPv6 networks') def next_network(self): """Get the next element of the iterator. - :return: IPv6 network. + :returns: IPv6 network. :rtype: IPv6Network object - :raises: StopIteration if there is no more elements. + :raises StopIteration: If there is no more elements. """ - if len(self._networks): + if self._networks: return self._networks.pop() else: raise StopIteration() @@ -221,10 +226,11 @@ class IPv6Setup(object): :type interface: str """ sw_if_index = Topology.get_interface_sw_index(node, interface) - VatExecutor.cmd_from_template(node, - 'sw_interface_ip6nd_ra_config.vat', - sw_if_id=sw_if_index, - param='surpress') + if sw_if_index: + VatExecutor.cmd_from_template(node, + 'sw_interface_ip6nd_ra_config.vat', + sw_if_id=sw_if_index, + param='surpress') @staticmethod def vpp_ra_send_after_interval(node, interface, interval=2): @@ -239,10 +245,11 @@ class IPv6Setup(object): :type interval: int """ sw_if_index = Topology.get_interface_sw_index(node, interface) - VatExecutor.cmd_from_template(node, - 'sw_interface_ip6nd_ra_config.vat', - sw_if_id=sw_if_index, - param='interval {0}'.format(interval)) + if sw_if_index: + VatExecutor.cmd_from_template(node, + 'sw_interface_ip6nd_ra_config.vat', + sw_if_id=sw_if_index, + param='interval {0}'.format(interval)) def vpp_all_ra_suppress_link_layer(self, nodes): """Suppress ICMPv6 router advertisement message for link scope address