def delete_child_device(self, child_device): self.log.debug('sending-deactivate-onu', olt_device_id=self.device_id, onu_device=child_device, onu_serial_number=child_device.serial_number) try: self.adapter_agent.delete_child_device(self.device_id, child_device.id, child_device) except Exception as e: self.log.error('adapter_agent error', error=e) try: self.delete_logical_port(child_device.id) except Exception as e: self.log.error('logical_port delete error', error=e) try: self.delete_port(child_device.serial_number) except Exception as e: self.log.error('port delete error', error=e) serial_number = self.destringify_serial_number( child_device.serial_number) onu = openolt_pb2.Onu(intf_id=child_device.proxy_address.channel_id, onu_id=child_device.proxy_address.onu_id, serial_number=serial_number) self.stub.DeleteOnu(onu)
def delete_child_device(self, child_device): serial_number = OpenoltUtils.destringify_serial_number( child_device.serial_number) pon_intf_id = child_device.proxy_address.channel_id onu_id = child_device.proxy_address.onu_id self.log.debug('delete-device', onu_device=child_device, onu_serial_number=serial_number, device_id=child_device.id) try: self.data_model.onu_delete(self.flow_mgr, child_device) onu = openolt_pb2.Onu(intf_id=pon_intf_id, onu_id=onu_id, serial_number=serial_number) self.stub.DeleteOnu(onu) except Exception as e: self.log.exception("error-deleting-the-onu-on-olt-device", error=e) # TODO FIXME - For each uni. # TODO FIXME - Flows are not deleted uni_id = 0 # FIXME try: self.flow_mgr.delete_tech_profile_instance( pon_intf_id, child_device.proxy_address.onu_id, uni_id, child_device.serial_number) except Exception as e: self.log.exception("error-removing-tp-instance") try: pon_intf_id_onu_id = (pon_intf_id, onu_id, uni_id) # Free any PON resources that were reserved for the ONU self.resource_mgr.free_pon_resources_for_onu(pon_intf_id_onu_id) except Exception as e: self.log.exception("error-removing-pon-resources-for-onu")
def delete_child_device(self, child_device): self.log.debug('sending-deactivate-onu', olt_device_id=self.device_id, onu_device=child_device, onu_serial_number=child_device.serial_number) try: self.adapter_agent.delete_child_device(self.device_id, child_device.id, child_device) except Exception as e: self.log.error('adapter_agent error', error=e) try: self.delete_logical_port(child_device) except Exception as e: self.log.error('logical_port delete error', error=e) try: self.delete_port(child_device.serial_number) except Exception as e: self.log.error('port delete error', error=e) serial_number = self.destringify_serial_number( child_device.serial_number) pon_intf_id_onu_id = (child_device.proxy_address.channel_id, child_device.proxy_address.onu_id) alloc_id = self.resource_mgr.get_alloc_id(pon_intf_id_onu_id) # Free any PON resources that were reserved for the ONU self.resource_mgr.free_pon_resources_for_onu(pon_intf_id_onu_id) onu = openolt_pb2.Onu(intf_id=child_device.proxy_address.channel_id, onu_id=child_device.proxy_address.onu_id, serial_number=serial_number, alloc_id=alloc_id) self.stub.DeleteOnu(onu)
def delete_child_device(self, child_device): self.log.debug('sending-deactivate-onu', olt_device_id=self.device_id, onu_device=child_device, onu_serial_number=child_device.serial_number) try: self.adapter_agent.delete_child_device(self.device_id, child_device.id, child_device) except Exception as e: self.log.error('adapter_agent error', error=e) try: self.delete_logical_port(child_device.id) except Exception as e: self.log.error('logical_port delete error', error=e) try: self.delete_port(child_device.serial_number) except Exception as e: self.log.error('port delete error', error=e) vendor_id = child_device.vendor_id.encode('hex') vendor_specific = child_device.serial_number.replace( child_device.vendor_id, '').encode('hex') serial_number = openolt_pb2.SerialNumber( vendor_id=vendor_id, vendor_specific=vendor_specific) onu = openolt_pb2.Onu(intf_id=child_device.proxy_address.channel_id, onu_id=child_device.proxy_address.onu_id, serial_number=serial_number) self.stub.DeleteOnu(onu)
def activate_onu(self, intf_id, onu_id, serial_number): self.log.info("activate onu", intf_id=intf_id, onu_id=onu_id, serial_number=serial_number) self.onus[Onu(intf_id=intf_id, onu_id=onu_id)] = serial_number onu = openolt_pb2.Onu(intf_id=intf_id, onu_id=onu_id, serial_number=serial_number) self.stub.ActivateOnu(onu)
def activate_onu(self, intf_id, onu_id, serial_number, serial_number_str): pir = self.bw_mgr.pir(serial_number_str) self.log.debug("activating-onu", intf_id=intf_id, onu_id=onu_id, serial_number_str=serial_number_str, serial_number=serial_number, pir=pir) onu = openolt_pb2.Onu(intf_id=intf_id, onu_id=onu_id, serial_number=serial_number, pir=pir) self.stub.ActivateOnu(onu) self.log.info('onu-activated', serial_number=serial_number_str)
def delete_child_device(self, child_device): self.log.debug('sending-deactivate-onu', olt_device_id=self.device_id, onu_device=child_device, onu_serial_number=child_device.serial_number) vendor_id = child_device.vendor_id.encode('hex') vendor_specific = child_device.serial_number.replace( child_device.vendor_id, '').encode('hex') serial_number = openolt_pb2.SerialNumber( vendor_id=vendor_id, vendor_specific=vendor_specific) onu = openolt_pb2.Onu(intf_id=child_device.proxy_address.channel_id, onu_id=child_device.proxy_address.onu_id, serial_number=serial_number) self.stub.DeleteOnu(onu)
def activate_onu(self, intf_id, onu_id, serial_number, serial_number_str): self.log.debug("activating-onu", intf_id=intf_id, onu_id=onu_id, serial_number_str=serial_number_str, serial_number=serial_number) onu = openolt_pb2.Onu(intf_id=intf_id, onu_id=onu_id, serial_number=serial_number) try: self.stub.ActivateOnu(onu) except grpc.RpcError as grpc_e: if grpc_e.code() == grpc.StatusCode.ALREADY_EXISTS: self.log.info('onu activation in progress', serial_number=serial_number_str, e=grpc_e) else: self.log.error('onu activation failed', serial_number=serial_number_str, grpc_error=grpc_e) else: self.log.info('onu-activated', serial_number=serial_number_str)
def delete_child_device(self, child_device): self.log.debug('sending-deactivate-onu', olt_device_id=self.device_id, onu_device=child_device, onu_serial_number=child_device.serial_number) try: self.adapter_agent.delete_child_device(self.device_id, child_device.id, child_device) except Exception as e: self.log.error('adapter_agent error', error=e) try: self.delete_logical_port(child_device.id) except Exception as e: self.log.error('logical_port delete error', error=e) try: self.delete_port(child_device.serial_number) except Exception as e: self.log.error('port delete error', error=e) serial_number = self.destringify_serial_number( child_device.serial_number) pon_intf_id_onu_id = (child_device.proxy_address.channel_id, child_device.proxy_address.onu_id) alloc_id = yield self.resource_manager.get_alloc_id(pon_intf_id_onu_id) # Use sched_id same as alloc_id for the Onu. onu = openolt_pb2.Onu(intf_id=child_device.proxy_address.channel_id, onu_id=child_device.proxy_address.onu_id, serial_number=serial_number, agg_port_id=alloc_id, sched_id=alloc_id) self.stub.DeleteOnu(onu) # Remove reference to (pon_intf_id, onu_id) from the dictionary # when ONU is being removed. del self.resource_manager.pon_intf_id_onu_id_to_resource_map[ pon_intf_id_onu_id] # Free any PON resources that were reserved for the ONU self.resource_manager.free_pon_resources_for_onu( child_device.proxy_address.channel_id, child_device.proxy_address.onu_id)
def delete_child_device(self, child_device): self.log.debug('sending-deactivate-onu', olt_device_id=self.device_id, onu_device=child_device, onu_serial_number=child_device.serial_number) try: self.adapter_agent.delete_child_device(self.device_id, child_device.id, child_device) except Exception as e: self.log.error('adapter_agent error', error=e) try: self.delete_logical_port(child_device) except Exception as e: self.log.error('logical_port delete error', error=e) try: self.delete_port(child_device.serial_number) except Exception as e: self.log.error('port delete error', error=e) serial_number = self.destringify_serial_number( child_device.serial_number) # TODO FIXME - For each uni. # TODO FIXME - Flows are not deleted uni_id = 0 # FIXME self.flow_mgr.delete_tech_profile_instance( child_device.proxy_address.channel_id, child_device.proxy_address.onu_id, uni_id) pon_intf_id_onu_id = (child_device.proxy_address.channel_id, child_device.proxy_address.onu_id, uni_id) # Free any PON resources that were reserved for the ONU self.resource_mgr.free_pon_resources_for_onu(pon_intf_id_onu_id) onu = openolt_pb2.Onu(intf_id=child_device.proxy_address.channel_id, onu_id=child_device.proxy_address.onu_id, serial_number=serial_number) self.stub.DeleteOnu(onu)
def onu_discovery_indication(self, onu_disc_indication): intf_id = onu_disc_indication.intf_id serial_number = onu_disc_indication.serial_number serial_number_str = self.stringify_serial_number(serial_number) self.log.debug("onu discovery indication", intf_id=intf_id, serial_number=serial_number_str) # Post ONU Discover alarm 20180809_0805 try: OnuDiscoveryAlarm(self.alarm_mgr.alarms, pon_id=intf_id, serial_number=serial_number_str).raise_alarm() except Exception as disc_alarm_error: self.log.exception("onu-discovery-alarm-error", errmsg=disc_alarm_error.message) # continue for now. pir = self.bw_mgr.pir(serial_number_str) self.log.debug("peak information rate", serial_number=serial_number, pir=pir) onu_device = self.adapter_agent.get_child_device( self.device_id, serial_number=serial_number_str) if onu_device is None: onu_id = self.new_onu_id(intf_id) try: self.add_onu_device( intf_id, platform.intf_id_to_port_no(intf_id, Port.PON_OLT), onu_id, serial_number) self.log.info("activate-onu", intf_id=intf_id, onu_id=onu_id, serial_number=serial_number_str) onu = openolt_pb2.Onu(intf_id=intf_id, onu_id=onu_id, serial_number=serial_number, pir=pir) self.stub.ActivateOnu(onu) except Exception as e: self.log.exception('onu-activation-failed', e=e) else: if onu_device.connect_status != ConnectStatus.REACHABLE: onu_device.connect_status = ConnectStatus.REACHABLE self.adapter_agent.update_device(onu_device) onu_id = onu_device.proxy_address.onu_id if onu_device.oper_status == OperStatus.DISCOVERED \ or onu_device.oper_status == OperStatus.ACTIVATING: self.log.debug("ignore onu discovery indication, \ the onu has been discovered and should be \ activating shorlty", intf_id=intf_id, onu_id=onu_id, state=onu_device.oper_status) elif onu_device.oper_status == OperStatus.ACTIVE: self.log.warn("onu discovery indication whereas onu is \ supposed to be active", intf_id=intf_id, onu_id=onu_id, state=onu_device.oper_status) elif onu_device.oper_status == OperStatus.UNKNOWN: self.log.info("onu in unknown state, recovering from olt \ reboot, activate onu", intf_id=intf_id, onu_id=onu_id, serial_number=serial_number_str) onu_device.oper_status = OperStatus.DISCOVERED self.adapter_agent.update_device(onu_device) onu = openolt_pb2.Onu(intf_id=intf_id, onu_id=onu_id, serial_number=serial_number, pir=pir) self.stub.ActivateOnu(onu) else: self.log.warn('unexpected state', onu_id=onu_id, onu_device_oper_state=onu_device.oper_status)
def onu_discovery_indication(self, onu_disc_indication): intf_id = onu_disc_indication.intf_id serial_number = onu_disc_indication.serial_number serial_number_str = self.stringify_serial_number(serial_number) self.log.debug("onu discovery indication", intf_id=intf_id, serial_number=serial_number_str) onu_device = self.adapter_agent.get_child_device( self.device_id, serial_number=serial_number_str) if onu_device is None: onu_id = self.new_onu_id(intf_id) try: self.add_onu_device( intf_id, platform.intf_id_to_port_no(intf_id, Port.PON_OLT), onu_id, serial_number) self.log.info("activate-onu", intf_id=intf_id, onu_id=onu_id, serial_number=serial_number_str) onu = openolt_pb2.Onu(intf_id=intf_id, onu_id=onu_id, serial_number=serial_number) self.stub.ActivateOnu(onu) except Exception as e: self.log.exception('onu-activation-failed', e=e) else: if onu_device.connect_status != ConnectStatus.REACHABLE: onu_device.connect_status = ConnectStatus.REACHABLE self.adapter_agent.update_device(onu_device) onu_id = onu_device.proxy_address.onu_id if onu_device.oper_status == OperStatus.DISCOVERED or onu_device.oper_status == OperStatus.ACTIVATING: self.log.debug( "ignore onu discovery indication, the onu has been discovered and should be \ activating shorlty", intf_id=intf_id, onu_id=onu_id, state=onu_device.oper_status) elif onu_device.oper_status == OperStatus.ACTIVE: self.log.warn( "onu discovery indication whereas onu is supposed to be active", intf_id=intf_id, onu_id=onu_id, state=onu_device.oper_status) elif onu_device.oper_status == OperStatus.UNKNOWN: self.log.info( "onu-in-unknow-state-recovering-form-olt-reboot-activate-onu", intf_id=intf_id, onu_id=onu_id, serial_number=serial_number_str) onu_device.oper_status = OperStatus.DISCOVERED self.adapter_agent.update_device(onu_device) onu = openolt_pb2.Onu(intf_id=intf_id, onu_id=onu_id, serial_number=serial_number) self.stub.ActivateOnu(onu) else: self.log.warn('unexpected state', onu_id=onu_id, onu_device_oper_state=onu_device.oper_status)