def enumerate_northbound_ports(self, device): """ Enumerate all northbound ports of this device. :param device: A voltha.Device object, with possible device-type specific extensions. :return: (Deferred or None). """ try: from codec.ietf_interfaces import IetfInterfacesState from nni_port import MockNniPort ietf_interfaces = IetfInterfacesState(self.netconf_client) if self.is_virtual_olt: results = MockNniPort.get_nni_port_state_results() else: self.startup = ietf_interfaces.get_state() results = yield self.startup ports = ietf_interfaces.get_nni_port_entries(results) yield returnValue(ports) except Exception as e: log.exception('enumerate_northbound_ports', e=e) raise
def process_northbound_ports(self, device, results): """ Process the results from the 'enumerate_northbound_ports' method. :param device: A voltha.Device object, with possible device-type specific extensions. :param results: Results from the 'enumerate_northbound_ports' method that you implemented. The type and contents are up to you to :return: (Deferred or None). """ from nni_port import NniPort, MockNniPort for port in results: port_no = port['port_no'] self.log.info('processing-nni', port_no=port_no, name=port['port_no']) assert port_no assert port_no not in self.northbound_ports self.northbound_ports[port_no] = NniPort(self, **port) if not self.is_virtual_olt \ else MockNniPort(self, **port) # TODO: For now, limit number of NNI ports to make debugging easier if len(self.northbound_ports) >= self.max_nni_ports: break self.num_northbound_ports = len(self.northbound_ports)
def enumerate_northbound_ports(self, device): """ Enumerate all northbound ports of this device. :param device: A voltha.Device object, with possible device-type specific extensions. :return: (Deferred or None). """ from net.rcmd import RCmd try: # Also get the MAC Address for the OLT command = "ip -o link | grep eth0 | sed -n -e 's/^.*ether //p' | awk '{ print $1 }'" rcmd = RCmd(self.ip_address, self.netconf_username, self.netconf_password, command) self.default_mac_addr = yield rcmd.execute() self.log.info("mac-addr", mac_addr=self.default_mac_addr) except Exception as e: log.exception('mac-address', e=e) raise try: from codec.ietf_interfaces import IetfInterfacesState from nni_port import MockNniPort ietf_interfaces = IetfInterfacesState(self.netconf_client) if self.is_virtual_olt: results = MockNniPort.get_nni_port_state_results() else: self.startup = ietf_interfaces.get_state() results = yield self.startup ports = ietf_interfaces.get_nni_port_entries(results) yield returnValue(ports) except Exception as e: log.exception('enumerate_northbound_ports', e=e) raise