VOL-1330: Restore MIB reconciliation and base class usage
Originally since reconcile/resync did not work a local
class overrode those methods to disable them from running.
Once dependant pyvoltha changes are merged that fix reconcile
we can stop using the "skip reconcile" BrcmMibSynchronizer
class and go back to the base MibSynchronizer class that
performs these functions.
It was also discovered that some onu do not support mib audits
(arbitrary mib db uploads after provisioning). In order to support this
the audit delay parameter needed to be exposed to classes that configure
it, so it can be disabled if needed:
Error from onu if audit is performed:
> omcid:error:918.008:omci_msg_handler_MIBUpload:2685:Too many instances to upload (instIndex=226)
========================================================================
Errors occur during handle message:
Message type: MIB Upload
Error message:
Managed entity class: 2 (0x2)
Managed entity instance: 0 (0x0)
Managed entity attribute mask: 0x0000
Sequence number: 0 (0x0)
========================================================================
Change-Id: I5aad96669f088c6ee930325c1097a7040204f804
diff --git a/python/adapters/brcm_openomci_onu/brcm_openomci_onu.py b/python/adapters/brcm_openomci_onu/brcm_openomci_onu.py
index 335693f..abc2655 100644
--- a/python/adapters/brcm_openomci_onu/brcm_openomci_onu.py
+++ b/python/adapters/brcm_openomci_onu/brcm_openomci_onu.py
@@ -40,7 +40,6 @@
from brcm_openomci_onu_handler import BrcmOpenomciOnuHandler
from omci.brcm_capabilities_task import BrcmCapabilitiesTask
-from omci.brcm_mib_sync import BrcmMibSynchronizer
from copy import deepcopy
log = structlog.get_logger()
@@ -77,7 +76,7 @@
# Customize OpenOMCI for Broadcom ONUs
self.broadcom_omci = deepcopy(OpenOmciAgentDefaults)
- self.broadcom_omci['mib-synchronizer']['state-machine'] = BrcmMibSynchronizer
+ self.broadcom_omci['mib-synchronizer']['audit-delay'] = 0 # disable audits as brcm onu wont upload once provisioned
self.broadcom_omci['mib-synchronizer']['database'] = MibDbVolatileDict
self.broadcom_omci['alarm-synchronizer']['database'] = MibDbVolatileDict
self.broadcom_omci['omci-capabilities']['tasks']['get-capabilities'] = BrcmCapabilitiesTask
diff --git a/python/adapters/brcm_openomci_onu/omci/brcm_mib_sync.py b/python/adapters/brcm_openomci_onu/omci/brcm_mib_sync.py
deleted file mode 100644
index e330be9..0000000
--- a/python/adapters/brcm_openomci_onu/omci/brcm_mib_sync.py
+++ /dev/null
@@ -1,77 +0,0 @@
-#
-# Copyright 2018 the original author or authors.
-#
-# 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
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import structlog
-from twisted.internet import reactor
-from pyvoltha.adapters.extensions.omci.state_machines.mib_sync import MibSynchronizer
-
-log = structlog.get_logger()
-
-class BrcmMibSynchronizer(MibSynchronizer):
- """
- OpenOMCI MIB Synchronizer state machine for Broadcom ONUs
- """
-
- def __init__(self, agent, device_id, mib_sync_tasks, db,
- advertise_events=False):
- """
- Class initialization
-
- :param agent: (OpenOmciAgent) Agent
- :param device_id: (str) ONU Device ID
- :param db: (MibDbVolatileDict) MIB Database
- :param mib_sync_tasks: (dict) Tasks to run
- :param advertise_events: (bool) Advertise events on OpenOMCI Event Bus
- """
- self.log = structlog.get_logger(device_id=device_id)
- self.log.debug('function-entry')
-
- super(BrcmMibSynchronizer, self).__init__(agent, device_id, mib_sync_tasks, db,
- advertise_events=advertise_events)
-
- def on_enter_starting(self):
- """
- Given resync and mib update is questionable (see below) flag the ONU as a new device which forces a mib
- reset and a mib upload
- """
- self.log.warn('db-sync-not-supported-forcing-reset')
- self._last_mib_db_sync_value = None
- super(BrcmMibSynchronizer, self).on_enter_starting()
-
- def on_enter_auditing(self):
- """
- Perform a MIB Audit. Currently this is broken on BRCM based onu and its never in sync and continuously
- retries. On disable/enable it never enables becaues its never in sync. Effectively disable the function so
- disable/enable works and we can figure out whats going on
-
- Oddly enough this is only an issue with MibVolatileDict
- """
- # TODO: Actually fix resync
- self.log.warn('audit-resync-not-supported')
-
- self._deferred = reactor.callLater(0, self.success)
-
- def on_enter_examining_mds(self):
- """
- Examine MIB difference counter between onu and voltha. Currently same problem as on_enter_auditing.
- examine mds is always mismatched and causing disable/enable to fail
-
- Oddly enough this is only an issue with MibVolatileDict
- """
- # TODO: Actually fix resync
- self.log.warn('examine-mds-resync-not-supported')
-
- self._deferred = reactor.callLater(0, self.success)
-