<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def announceManagementEvent(self, action, varBind, **context):
 """Announce mass operation on parent table's row. SNMP SMI provides a way to extend already existing SMI table with another table. Whenever a mass operation on parent table's column is performed (e.g. row creation or destruction), this operation has to be propagated over all the extending tables. This method gets invoked on parent :py:class:`MibTableRow` whenever row modification is performed on the parent table. Parameters action: :py:class:`str` any of :py:class:`MibInstrumController`'s states being applied on the parent table's row. varBind: :py:class:`~pysnmp.smi.rfc1902.ObjectType` object representing new :py:class:`RowStatus` Managed Object Instance value being set on parent table row Other Parameters \*\*context: Query parameters: * `cbFun` (callable) - user-supplied callable that is invoked once all the consumers of this notifications finished with their stuff or an error occurs Notes ----- The callback functions (e.g. `cbFun`) expects two parameters: `varBind` and `**context`. In case of an error, the `error` key in the `context` dict will contain an exception object. """

        name, val = varBind

        cbFun = context['cbFun']

        if not self._augmentingRows:
            cbFun(varBind, **context)
            return

        # Convert OID suffix into index values
        instId = name[len(self.name) + 1:]
        baseIndices = []
        indices = []
        for impliedFlag, modName, symName in self._indexNames:
            mibObj, = mibBuilder.importSymbols(modName, symName)
            syntax, instId = self.oidToValue(mibObj.syntax, instId,
                                             impliedFlag, indices)

            if self.name == mibObj.name[:-1]:
                baseIndices.append((mibObj.name, syntax))

            indices.append(syntax)

        if instId:
            exc = error.SmiError('Excessive instance identifier sub-OIDs left at %s: %s' % (self, instId))
            cbFun(varBind, **dict(context, error=exc))
            return

        if not baseIndices:
            cbFun(varBind, **context)
            return

        count = [len(self._augmentingRows)]

        def _cbFun(varBind, **context):
            count[0] -= 1

            if not count[0]:
                cbFun(varBind, **context)

        for modName, mibSym in self._augmentingRows:
            mibObj, = mibBuilder.importSymbols(modName, mibSym)
            mibObj.receiveManagementEvent(action, (baseIndices, val), **dict(context, cbFun=_cbFun))

            debug.logger & debug.FLAG_INS and debug.logger('announceManagementEvent %s to %s' % (action, mibObj))