Example #1
0
class DomainBase (object):

    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky", "domain")
        self.myAgent = None
        self.myNetworkOperationRetryMax=100
        self.myNetworkOperationRetryIntervalMili=100

    def __str__ (self):
        return "name=%s" % self.myName

    def init (self, agent, name):
        self.myInitGuard.crashIfInitDone()
        self.myName=name
        self._log.setInstance(self.myName)
        self.myAgent=agent

        res = self.specificInit()
        if res != ReturnCodes.kOk:
            for logFunc in self._log('init-specific-failed').errorFunc(): logFunc('specificInit() failed. res=%s', res)
            a.infra.process.processFatal("domain %s: specificInif() failed.", self.myName)

        for logFunc in self._log("init").debug2Func(): logFunc("Initialized")
        self.myInitGuard.initDone()

    def destroy(self):
        raise NotImplementedError()
    
    def shutdown (self):
        for logFunc in self._log("shutdown").noticeFunc(): logFunc("shutting down")
        self.specificShutdown()

    def setNetworkOperationRetryLimits(self, maxRetries, retryIntervalMili):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log("set-network-operation-retry-limits").debug3Func():
            logFunc("setNetworkOperationRetryLimits(): called: retryIntervalMili=%s, maxRetries=%s",
                    retryIntervalMili, maxRetries)
        self.myNetworkOperationRetryMax = maxRetries
        self.myNetworkOperationRetryIntervalMili = retryIntervalMili
    
    def getName (self):
        self.myInitGuard.isInitOrCrash()
        return self.myName
class BlinkyTimeoutsMaapi(TimeoutsMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-timeouts")
        self.domain = None

        

        
        self.getLogicalDiskStatusRequested = False
        self.getLogicalDiskStatus = None
        self.getLogicalDiskStatusSet = False
        
        self.getPhysicalStatusRequested = False
        self.getPhysicalStatus = None
        self.getPhysicalStatusSet = False
        
        self.activateLogicalDiskRequested = False
        self.activateLogicalDisk = None
        self.activateLogicalDiskSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestGetLogicalDiskStatus(True)
        
        self.requestGetPhysicalStatus(True)
        
        self.requestActivateLogicalDisk(True)
        
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestGetLogicalDiskStatus(True)
        
        self.requestGetPhysicalStatus(True)
        
        self.requestActivateLogicalDisk(True)
        
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestGetLogicalDiskStatus(False)
        
        self.requestGetPhysicalStatus(False)
        
        self.requestActivateLogicalDisk(False)
        
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestGetLogicalDiskStatus(False)
        
        self.requestGetPhysicalStatus(False)
        
        self.requestActivateLogicalDisk(False)
        
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setGetLogicalDiskStatus(None)
        self.getLogicalDiskStatusSet = False
        
        self.setGetPhysicalStatus(None)
        self.getPhysicalStatusSet = False
        
        self.setActivateLogicalDisk(None)
        self.activateLogicalDiskSet = False
        
        

    def write (self
              , controller
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(controller, trxContext)

    def read (self
              , controller
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(controller, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , controller
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(controller, 
                                  True,
                                  trxContext)



    def requestGetLogicalDiskStatus (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-getlogicaldiskstatus').debug3Func(): logFunc('called. requested=%s', requested)
        self.getLogicalDiskStatusRequested = requested
        self.getLogicalDiskStatusSet = False

    def isGetLogicalDiskStatusRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-getlogicaldiskstatus-requested').debug3Func(): logFunc('called. requested=%s', self.getLogicalDiskStatusRequested)
        return self.getLogicalDiskStatusRequested

    def getGetLogicalDiskStatus (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-getlogicaldiskstatus').debug3Func(): logFunc('called. self.getLogicalDiskStatusSet=%s, self.getLogicalDiskStatus=%s', self.getLogicalDiskStatusSet, self.getLogicalDiskStatus)
        if self.getLogicalDiskStatusSet:
            return self.getLogicalDiskStatus
        return None

    def hasGetLogicalDiskStatus (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-getlogicaldiskstatus').debug3Func(): logFunc('called. self.getLogicalDiskStatusSet=%s, self.getLogicalDiskStatus=%s', self.getLogicalDiskStatusSet, self.getLogicalDiskStatus)
        if self.getLogicalDiskStatusSet:
            return True
        return False

    def setGetLogicalDiskStatus (self, getLogicalDiskStatus):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-getlogicaldiskstatus').debug3Func(): logFunc('called. getLogicalDiskStatus=%s, old=%s', getLogicalDiskStatus, self.getLogicalDiskStatus)
        self.getLogicalDiskStatusSet = True
        self.getLogicalDiskStatus = getLogicalDiskStatus

    def requestGetPhysicalStatus (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-getphysicalstatus').debug3Func(): logFunc('called. requested=%s', requested)
        self.getPhysicalStatusRequested = requested
        self.getPhysicalStatusSet = False

    def isGetPhysicalStatusRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-getphysicalstatus-requested').debug3Func(): logFunc('called. requested=%s', self.getPhysicalStatusRequested)
        return self.getPhysicalStatusRequested

    def getGetPhysicalStatus (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-getphysicalstatus').debug3Func(): logFunc('called. self.getPhysicalStatusSet=%s, self.getPhysicalStatus=%s', self.getPhysicalStatusSet, self.getPhysicalStatus)
        if self.getPhysicalStatusSet:
            return self.getPhysicalStatus
        return None

    def hasGetPhysicalStatus (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-getphysicalstatus').debug3Func(): logFunc('called. self.getPhysicalStatusSet=%s, self.getPhysicalStatus=%s', self.getPhysicalStatusSet, self.getPhysicalStatus)
        if self.getPhysicalStatusSet:
            return True
        return False

    def setGetPhysicalStatus (self, getPhysicalStatus):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-getphysicalstatus').debug3Func(): logFunc('called. getPhysicalStatus=%s, old=%s', getPhysicalStatus, self.getPhysicalStatus)
        self.getPhysicalStatusSet = True
        self.getPhysicalStatus = getPhysicalStatus

    def requestActivateLogicalDisk (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-activatelogicaldisk').debug3Func(): logFunc('called. requested=%s', requested)
        self.activateLogicalDiskRequested = requested
        self.activateLogicalDiskSet = False

    def isActivateLogicalDiskRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-activatelogicaldisk-requested').debug3Func(): logFunc('called. requested=%s', self.activateLogicalDiskRequested)
        return self.activateLogicalDiskRequested

    def getActivateLogicalDisk (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-activatelogicaldisk').debug3Func(): logFunc('called. self.activateLogicalDiskSet=%s, self.activateLogicalDisk=%s', self.activateLogicalDiskSet, self.activateLogicalDisk)
        if self.activateLogicalDiskSet:
            return self.activateLogicalDisk
        return None

    def hasActivateLogicalDisk (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-activatelogicaldisk').debug3Func(): logFunc('called. self.activateLogicalDiskSet=%s, self.activateLogicalDisk=%s', self.activateLogicalDiskSet, self.activateLogicalDisk)
        if self.activateLogicalDiskSet:
            return True
        return False

    def setActivateLogicalDisk (self, activateLogicalDisk):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-activatelogicaldisk').debug3Func(): logFunc('called. activateLogicalDisk=%s, old=%s', activateLogicalDisk, self.activateLogicalDisk)
        self.activateLogicalDiskSet = True
        self.activateLogicalDisk = activateLogicalDisk


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.getLogicalDiskStatus = 0
        self.getLogicalDiskStatusSet = False
        
        self.getPhysicalStatus = 0
        self.getPhysicalStatusSet = False
        
        self.activateLogicalDisk = 0
        self.activateLogicalDiskSet = False
        

    def _getSelfKeyPath (self, controller
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("timeouts", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller", "qt-strg-ctrl"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("system-defaults", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller", "qt-strg-ctrl"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(controller);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("controller", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller", "qt-strg-ctrl"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("storage", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage", "qt-strg"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        controller, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(controller, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(controller, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       controller, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(controller, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               controller, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasGetLogicalDiskStatus():
            valGetLogicalDiskStatus = Value()
            if self.getLogicalDiskStatus is not None:
                valGetLogicalDiskStatus.setInt64(self.getLogicalDiskStatus)
            else:
                valGetLogicalDiskStatus.setEmpty()
            tagValueList.push(("get-logical-disk-status", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller"), valGetLogicalDiskStatus)
        
        if self.hasGetPhysicalStatus():
            valGetPhysicalStatus = Value()
            if self.getPhysicalStatus is not None:
                valGetPhysicalStatus.setInt64(self.getPhysicalStatus)
            else:
                valGetPhysicalStatus.setEmpty()
            tagValueList.push(("get-physical-status", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller"), valGetPhysicalStatus)
        
        if self.hasActivateLogicalDisk():
            valActivateLogicalDisk = Value()
            if self.activateLogicalDisk is not None:
                valActivateLogicalDisk.setInt64(self.activateLogicalDisk)
            else:
                valActivateLogicalDisk.setEmpty()
            tagValueList.push(("activate-logical-disk", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller"), valActivateLogicalDisk)
        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isGetLogicalDiskStatusRequested():
            valGetLogicalDiskStatus = Value()
            valGetLogicalDiskStatus.setEmpty()
            tagValueList.push(("get-logical-disk-status", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller"), valGetLogicalDiskStatus)
        
        if self.isGetPhysicalStatusRequested():
            valGetPhysicalStatus = Value()
            valGetPhysicalStatus.setEmpty()
            tagValueList.push(("get-physical-status", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller"), valGetPhysicalStatus)
        
        if self.isActivateLogicalDiskRequested():
            valActivateLogicalDisk = Value()
            valActivateLogicalDisk.setEmpty()
            tagValueList.push(("activate-logical-disk", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller"), valActivateLogicalDisk)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isGetLogicalDiskStatusRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "get-logical-disk-status") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-getlogicaldiskstatus').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "getLogicalDiskStatus", "get-logical-disk-status", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-get-logical-disk-status-bad-value').infoFunc(): logFunc('getLogicalDiskStatus not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setGetLogicalDiskStatus(tempVar)
            for logFunc in self._log('read-tag-values-get-logical-disk-status').debug3Func(): logFunc('read getLogicalDiskStatus. getLogicalDiskStatus=%s, tempValue=%s', self.getLogicalDiskStatus, tempValue.getType())
        
        if self.isGetPhysicalStatusRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "get-physical-status") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-getphysicalstatus').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "getPhysicalStatus", "get-physical-status", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-get-physical-status-bad-value').infoFunc(): logFunc('getPhysicalStatus not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setGetPhysicalStatus(tempVar)
            for logFunc in self._log('read-tag-values-get-physical-status').debug3Func(): logFunc('read getPhysicalStatus. getPhysicalStatus=%s, tempValue=%s', self.getPhysicalStatus, tempValue.getType())
        
        if self.isActivateLogicalDiskRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "activate-logical-disk") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-activatelogicaldisk').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "activateLogicalDisk", "activate-logical-disk", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-activate-logical-disk-bad-value').infoFunc(): logFunc('activateLogicalDisk not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setActivateLogicalDisk(tempVar)
            for logFunc in self._log('read-tag-values-activate-logical-disk').debug3Func(): logFunc('read activateLogicalDisk. activateLogicalDisk=%s, tempValue=%s', self.activateLogicalDisk, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
Example #3
0
class BlinkyAddressMaapi(AddressMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-address")
        self.domain = None

        

        
        self.ipRequested = False
        self.ip = None
        self.ipSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestIp(True)
        
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestIp(True)
        
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestIp(False)
        
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestIp(False)
        
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setIp(None)
        self.ipSet = False
        
        

    def write (self
              , interface
              , address
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(interface, address, trxContext)

    def read (self
              , interface
              , address
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(interface, address, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , interface
                       , address
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(interface, address, 
                                  True,
                                  trxContext)



    def requestIp (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-ip').debug3Func(): logFunc('called. requested=%s', requested)
        self.ipRequested = requested
        self.ipSet = False

    def isIpRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-ip-requested').debug3Func(): logFunc('called. requested=%s', self.ipRequested)
        return self.ipRequested

    def getIp (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-ip').debug3Func(): logFunc('called. self.ipSet=%s, self.ip=%s', self.ipSet, self.ip)
        if self.ipSet:
            return self.ip
        return None

    def hasIp (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-ip').debug3Func(): logFunc('called. self.ipSet=%s, self.ip=%s', self.ipSet, self.ip)
        if self.ipSet:
            return True
        return False

    def setIp (self, ip):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-ip').debug3Func(): logFunc('called. ip=%s, old=%s', ip, self.ip)
        self.ipSet = True
        self.ip = ip


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.ip = 0
        self.ipSet = False
        

    def _getSelfKeyPath (self, interface
                         , address
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        ancestorVal = Value()
        ancestorVal.setString(address);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("address", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces", "qt-if"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("ipv6", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces", "qt-if"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(interface);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("interface", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces", "qt-if"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("interfaces", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces", "qt-if"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        interface, 
                        address, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(interface, 
                                         address, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(interface, 
                                       address, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       interface, 
                       address, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(interface, 
                                       address, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               interface, 
                               address, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasIp():
            valIp = Value()
            if self.ip is not None:
                valIp.setString(self.ip)
            else:
                valIp.setEmpty()
            tagValueList.push(("ip", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"), valIp)
        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isIpRequested():
            valIp = Value()
            valIp.setEmpty()
            tagValueList.push(("ip", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"), valIp)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isIpRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "ip") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-ip').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "ip", "ip", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-ip-bad-value').infoFunc(): logFunc('ip not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setIp(tempVar)
            for logFunc in self._log('read-tag-values-ip').debug3Func(): logFunc('read ip. ip=%s, tempValue=%s', self.ip, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
class BlinkySystemDefaultsMaapi(SystemDefaultsMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-systemDefaults")
        self.domain = None

        

        
        self.commandWarningTimeoutRequested = False
        self.commandWarningTimeout = None
        self.commandWarningTimeoutSet = False
        
        self.commandTimeoutRequested = False
        self.commandTimeout = None
        self.commandTimeoutSet = False
        
        self.enabledRequested = False
        self.enabled = None
        self.enabledSet = False
        
        self.simulationFileRequested = False
        self.simulationFile = None
        self.simulationFileSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestCommandWarningTimeout(True)
        
        self.requestCommandTimeout(True)
        
        self.requestEnabled(True)
        
        self.requestSimulationFile(True)
        
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestCommandWarningTimeout(True)
        
        self.requestCommandTimeout(True)
        
        self.requestEnabled(True)
        
        self.requestSimulationFile(True)
        
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestCommandWarningTimeout(False)
        
        self.requestCommandTimeout(False)
        
        self.requestEnabled(False)
        
        self.requestSimulationFile(False)
        
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestCommandWarningTimeout(False)
        
        self.requestCommandTimeout(False)
        
        self.requestEnabled(False)
        
        self.requestSimulationFile(False)
        
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setCommandWarningTimeout(None)
        self.commandWarningTimeoutSet = False
        
        self.setCommandTimeout(None)
        self.commandTimeoutSet = False
        
        self.setEnabled(None)
        self.enabledSet = False
        
        self.setSimulationFile(None)
        self.simulationFileSet = False
        
        

    def write (self
              , source
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(source, trxContext)

    def read (self
              , source
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(source, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , source
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(source, 
                                  True,
                                  trxContext)



    def requestCommandWarningTimeout (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-commandwarningtimeout').debug3Func(): logFunc('called. requested=%s', requested)
        self.commandWarningTimeoutRequested = requested
        self.commandWarningTimeoutSet = False

    def isCommandWarningTimeoutRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-commandwarningtimeout-requested').debug3Func(): logFunc('called. requested=%s', self.commandWarningTimeoutRequested)
        return self.commandWarningTimeoutRequested

    def getCommandWarningTimeout (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-commandwarningtimeout').debug3Func(): logFunc('called. self.commandWarningTimeoutSet=%s, self.commandWarningTimeout=%s', self.commandWarningTimeoutSet, self.commandWarningTimeout)
        if self.commandWarningTimeoutSet:
            return self.commandWarningTimeout
        return None

    def hasCommandWarningTimeout (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-commandwarningtimeout').debug3Func(): logFunc('called. self.commandWarningTimeoutSet=%s, self.commandWarningTimeout=%s', self.commandWarningTimeoutSet, self.commandWarningTimeout)
        if self.commandWarningTimeoutSet:
            return True
        return False

    def setCommandWarningTimeout (self, commandWarningTimeout):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-commandwarningtimeout').debug3Func(): logFunc('called. commandWarningTimeout=%s, old=%s', commandWarningTimeout, self.commandWarningTimeout)
        self.commandWarningTimeoutSet = True
        self.commandWarningTimeout = commandWarningTimeout

    def requestCommandTimeout (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-commandtimeout').debug3Func(): logFunc('called. requested=%s', requested)
        self.commandTimeoutRequested = requested
        self.commandTimeoutSet = False

    def isCommandTimeoutRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-commandtimeout-requested').debug3Func(): logFunc('called. requested=%s', self.commandTimeoutRequested)
        return self.commandTimeoutRequested

    def getCommandTimeout (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-commandtimeout').debug3Func(): logFunc('called. self.commandTimeoutSet=%s, self.commandTimeout=%s', self.commandTimeoutSet, self.commandTimeout)
        if self.commandTimeoutSet:
            return self.commandTimeout
        return None

    def hasCommandTimeout (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-commandtimeout').debug3Func(): logFunc('called. self.commandTimeoutSet=%s, self.commandTimeout=%s', self.commandTimeoutSet, self.commandTimeout)
        if self.commandTimeoutSet:
            return True
        return False

    def setCommandTimeout (self, commandTimeout):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-commandtimeout').debug3Func(): logFunc('called. commandTimeout=%s, old=%s', commandTimeout, self.commandTimeout)
        self.commandTimeoutSet = True
        self.commandTimeout = commandTimeout

    def requestEnabled (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-enabled').debug3Func(): logFunc('called. requested=%s', requested)
        self.enabledRequested = requested
        self.enabledSet = False

    def isEnabledRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-enabled-requested').debug3Func(): logFunc('called. requested=%s', self.enabledRequested)
        return self.enabledRequested

    def getEnabled (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-enabled').debug3Func(): logFunc('called. self.enabledSet=%s, self.enabled=%s', self.enabledSet, self.enabled)
        if self.enabledSet:
            return self.enabled
        return None

    def hasEnabled (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-enabled').debug3Func(): logFunc('called. self.enabledSet=%s, self.enabled=%s', self.enabledSet, self.enabled)
        if self.enabledSet:
            return True
        return False

    def setEnabled (self, enabled):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-enabled').debug3Func(): logFunc('called. enabled=%s, old=%s', enabled, self.enabled)
        self.enabledSet = True
        self.enabled = enabled

    def requestSimulationFile (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-simulationfile').debug3Func(): logFunc('called. requested=%s', requested)
        self.simulationFileRequested = requested
        self.simulationFileSet = False

    def isSimulationFileRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-simulationfile-requested').debug3Func(): logFunc('called. requested=%s', self.simulationFileRequested)
        return self.simulationFileRequested

    def getSimulationFile (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-simulationfile').debug3Func(): logFunc('called. self.simulationFileSet=%s, self.simulationFile=%s', self.simulationFileSet, self.simulationFile)
        if self.simulationFileSet:
            return self.simulationFile
        return None

    def hasSimulationFile (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-simulationfile').debug3Func(): logFunc('called. self.simulationFileSet=%s, self.simulationFile=%s', self.simulationFileSet, self.simulationFile)
        if self.simulationFileSet:
            return True
        return False

    def setSimulationFile (self, simulationFile):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-simulationfile').debug3Func(): logFunc('called. simulationFile=%s, old=%s', simulationFile, self.simulationFile)
        self.simulationFileSet = True
        self.simulationFile = simulationFile


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.commandWarningTimeout = 0
        self.commandWarningTimeoutSet = False
        
        self.commandTimeout = 0
        self.commandTimeoutSet = False
        
        self.enabled = 0
        self.enabledSet = False
        
        self.simulationFile = 0
        self.simulationFileSet = False
        

    def _getSelfKeyPath (self, source
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("system-defaults", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-manager", "qt-pltf-mngr"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(source);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("source", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-manager", "qt-pltf-mngr"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("manager", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-manager", "qt-pltf-mngr"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("platform", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform", "qt-pltf"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        source, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(source, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(source, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       source, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(source, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               source, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasCommandWarningTimeout():
            valCommandWarningTimeout = Value()
            if self.commandWarningTimeout is not None:
                valCommandWarningTimeout.setInt64(self.commandWarningTimeout)
            else:
                valCommandWarningTimeout.setEmpty()
            tagValueList.push(("command-warning-timeout", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-manager"), valCommandWarningTimeout)
        
        if self.hasCommandTimeout():
            valCommandTimeout = Value()
            if self.commandTimeout is not None:
                valCommandTimeout.setInt64(self.commandTimeout)
            else:
                valCommandTimeout.setEmpty()
            tagValueList.push(("command-timeout", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-manager"), valCommandTimeout)
        
        if self.hasEnabled():
            valEnabled = Value()
            if self.enabled is not None:
                valEnabled.setBool(self.enabled)
            else:
                valEnabled.setEmpty()
            tagValueList.push(("enabled", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-manager"), valEnabled)
        
        if self.hasSimulationFile():
            valSimulationFile = Value()
            if self.simulationFile is not None:
                valSimulationFile.setString(self.simulationFile)
            else:
                valSimulationFile.setEmpty()
            tagValueList.push(("simulation-file", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-manager"), valSimulationFile)
        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isCommandWarningTimeoutRequested():
            valCommandWarningTimeout = Value()
            valCommandWarningTimeout.setEmpty()
            tagValueList.push(("command-warning-timeout", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-manager"), valCommandWarningTimeout)
        
        if self.isCommandTimeoutRequested():
            valCommandTimeout = Value()
            valCommandTimeout.setEmpty()
            tagValueList.push(("command-timeout", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-manager"), valCommandTimeout)
        
        if self.isEnabledRequested():
            valEnabled = Value()
            valEnabled.setEmpty()
            tagValueList.push(("enabled", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-manager"), valEnabled)
        
        if self.isSimulationFileRequested():
            valSimulationFile = Value()
            valSimulationFile.setEmpty()
            tagValueList.push(("simulation-file", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-manager"), valSimulationFile)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isCommandWarningTimeoutRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "command-warning-timeout") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-manager"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-commandwarningtimeout').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "commandWarningTimeout", "command-warning-timeout", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-manager", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-command-warning-timeout-bad-value').infoFunc(): logFunc('commandWarningTimeout not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setCommandWarningTimeout(tempVar)
            for logFunc in self._log('read-tag-values-command-warning-timeout').debug3Func(): logFunc('read commandWarningTimeout. commandWarningTimeout=%s, tempValue=%s', self.commandWarningTimeout, tempValue.getType())
        
        if self.isCommandTimeoutRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "command-timeout") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-manager"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-commandtimeout').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "commandTimeout", "command-timeout", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-manager", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-command-timeout-bad-value').infoFunc(): logFunc('commandTimeout not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setCommandTimeout(tempVar)
            for logFunc in self._log('read-tag-values-command-timeout').debug3Func(): logFunc('read commandTimeout. commandTimeout=%s, tempValue=%s', self.commandTimeout, tempValue.getType())
        
        if self.isEnabledRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "enabled") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-manager"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-enabled').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "enabled", "enabled", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-manager", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asBool()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-enabled-bad-value').infoFunc(): logFunc('enabled not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setEnabled(tempVar)
            for logFunc in self._log('read-tag-values-enabled').debug3Func(): logFunc('read enabled. enabled=%s, tempValue=%s', self.enabled, tempValue.getType())
        
        if self.isSimulationFileRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "simulation-file") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-manager"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-simulationfile').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "simulationFile", "simulation-file", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-manager", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-simulation-file-bad-value').infoFunc(): logFunc('simulationFile not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setSimulationFile(tempVar)
            for logFunc in self._log('read-tag-values-simulation-file').debug3Func(): logFunc('read simulationFile. simulationFile=%s, tempValue=%s', self.simulationFile, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
Example #5
0
class BlinkyStatusMaapi(StatusMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-status")
        self.domain = None

        

        
        self.operationalStatusRequested = False
        self.operationalStatus = None
        self.operationalStatusSet = False
        
        self.operationalStatusReasonRequested = False
        self.operationalStatusReason = None
        self.operationalStatusReasonSet = False
        
        self.locationRequested = False
        self.location = None
        self.locationSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestOperationalStatus(True)
        
        self.requestOperationalStatusReason(True)
        
        self.requestLocation(True)
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestOperationalStatus(False)
        
        self.requestOperationalStatusReason(False)
        
        self.requestLocation(False)
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestOperationalStatus(True)
        
        self.requestOperationalStatusReason(True)
        
        self.requestLocation(True)
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestOperationalStatus(False)
        
        self.requestOperationalStatusReason(False)
        
        self.requestLocation(False)
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        

    def write (self
              , fan
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(fan, trxContext)

    def read (self
              , fan
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(fan, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , fan
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(fan, 
                                  True,
                                  trxContext)



    def requestOperationalStatus (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-operationalstatus').debug3Func(): logFunc('called. requested=%s', requested)
        self.operationalStatusRequested = requested
        self.operationalStatusSet = False

    def isOperationalStatusRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-operationalstatus-requested').debug3Func(): logFunc('called. requested=%s', self.operationalStatusRequested)
        return self.operationalStatusRequested

    def getOperationalStatus (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-operationalstatus').debug3Func(): logFunc('called. self.operationalStatusSet=%s, self.operationalStatus=%s', self.operationalStatusSet, self.operationalStatus)
        if self.operationalStatusSet:
            return self.operationalStatus
        return None

    def hasOperationalStatus (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-operationalstatus').debug3Func(): logFunc('called. self.operationalStatusSet=%s, self.operationalStatus=%s', self.operationalStatusSet, self.operationalStatus)
        if self.operationalStatusSet:
            return True
        return False

    def setOperationalStatus (self, operationalStatus):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-operationalstatus').debug3Func(): logFunc('called. operationalStatus=%s, old=%s', operationalStatus, self.operationalStatus)
        self.operationalStatusSet = True
        self.operationalStatus = operationalStatus

    def requestOperationalStatusReason (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-operationalstatusreason').debug3Func(): logFunc('called. requested=%s', requested)
        self.operationalStatusReasonRequested = requested
        self.operationalStatusReasonSet = False

    def isOperationalStatusReasonRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-operationalstatusreason-requested').debug3Func(): logFunc('called. requested=%s', self.operationalStatusReasonRequested)
        return self.operationalStatusReasonRequested

    def getOperationalStatusReason (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-operationalstatusreason').debug3Func(): logFunc('called. self.operationalStatusReasonSet=%s, self.operationalStatusReason=%s', self.operationalStatusReasonSet, self.operationalStatusReason)
        if self.operationalStatusReasonSet:
            return self.operationalStatusReason
        return None

    def hasOperationalStatusReason (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-operationalstatusreason').debug3Func(): logFunc('called. self.operationalStatusReasonSet=%s, self.operationalStatusReason=%s', self.operationalStatusReasonSet, self.operationalStatusReason)
        if self.operationalStatusReasonSet:
            return True
        return False

    def setOperationalStatusReason (self, operationalStatusReason):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-operationalstatusreason').debug3Func(): logFunc('called. operationalStatusReason=%s, old=%s', operationalStatusReason, self.operationalStatusReason)
        self.operationalStatusReasonSet = True
        self.operationalStatusReason = operationalStatusReason

    def requestLocation (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-location').debug3Func(): logFunc('called. requested=%s', requested)
        self.locationRequested = requested
        self.locationSet = False

    def isLocationRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-location-requested').debug3Func(): logFunc('called. requested=%s', self.locationRequested)
        return self.locationRequested

    def getLocation (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-location').debug3Func(): logFunc('called. self.locationSet=%s, self.location=%s', self.locationSet, self.location)
        if self.locationSet:
            return self.location
        return None

    def hasLocation (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-location').debug3Func(): logFunc('called. self.locationSet=%s, self.location=%s', self.locationSet, self.location)
        if self.locationSet:
            return True
        return False

    def setLocation (self, location):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-location').debug3Func(): logFunc('called. location=%s, old=%s', location, self.location)
        self.locationSet = True
        self.location = location


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.operationalStatus = 0
        self.operationalStatusSet = False
        
        self.operationalStatusReason = 0
        self.operationalStatusReasonSet = False
        
        self.location = 0
        self.locationSet = False
        

    def _getSelfKeyPath (self, fan
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("status", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-fans", "qt-pltf-fans"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(fan);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("fan", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-fans", "qt-pltf-fans"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("fans", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-fans", "qt-pltf-fans"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("platform", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform", "qt-pltf"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        fan, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(fan, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(fan, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       fan, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(fan, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               fan, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isOperationalStatusRequested():
            valOperationalStatus = Value()
            valOperationalStatus.setEmpty()
            tagValueList.push(("operational-status", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-fans"), valOperationalStatus)
        
        if self.isOperationalStatusReasonRequested():
            valOperationalStatusReason = Value()
            valOperationalStatusReason.setEmpty()
            tagValueList.push(("operational-status-reason", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-fans"), valOperationalStatusReason)
        
        if self.isLocationRequested():
            valLocation = Value()
            valLocation.setEmpty()
            tagValueList.push(("location", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-fans"), valLocation)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isOperationalStatusRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "operational-status") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-fans"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-operationalstatus').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "operationalStatus", "operational-status", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-fans", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asEnum()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-operational-status-bad-value').infoFunc(): logFunc('operationalStatus not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setOperationalStatus(tempVar)
            for logFunc in self._log('read-tag-values-operational-status').debug3Func(): logFunc('read operationalStatus. operationalStatus=%s, tempValue=%s', self.operationalStatus, tempValue.getType())
        
        if self.isOperationalStatusReasonRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "operational-status-reason") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-fans"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-operationalstatusreason').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "operationalStatusReason", "operational-status-reason", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-fans", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asEnum()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-operational-status-reason-bad-value').infoFunc(): logFunc('operationalStatusReason not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setOperationalStatusReason(tempVar)
            for logFunc in self._log('read-tag-values-operational-status-reason').debug3Func(): logFunc('read operationalStatusReason. operationalStatusReason=%s, tempValue=%s', self.operationalStatusReason, tempValue.getType())
        
        if self.isLocationRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "location") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-fans"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-location').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "location", "location", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-fans", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-location-bad-value').infoFunc(): logFunc('location not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setLocation(tempVar)
            for logFunc in self._log('read-tag-values-location').debug3Func(): logFunc('read location. location=%s, tempValue=%s', self.location, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
class BlinkyNotificationsMaapi(NotificationsMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-notifications")
        self.domain = None

        
        self.destinationListObj = None
        

        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        
        
        if not self.destinationListObj:
            self.destinationListObj = self.newDestinationList()
            self.destinationListObj.requestConfigAndOper()
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        
        
        if not self.destinationListObj:
            self.destinationListObj = self.newDestinationList()
            self.destinationListObj.requestConfig()
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        
        
        if not self.destinationListObj:
            self.destinationListObj = self.newDestinationList()
            self.destinationListObj.requestOper()
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        
        
        if not self.destinationListObj:
            self.destinationListObj = self.newDestinationList()
            self.destinationListObj.clearAllRequested()
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        
        if self.destinationListObj:
            self.destinationListObj.clearAllSet()
        

    def write (self
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(trxContext)

    def read (self
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(
                                  True,
                                  trxContext)

    def newDestinationList (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-destinationlist').debug3Func(): logFunc('called.')
        destinationList = BlinkyDestinationMaapiList(self._log)
        destinationList.init(self.domain)
        return destinationList

    def setDestinationListObj (self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-destinationlist').debug3Func(): logFunc('called. obj=%s', obj)
        self.destinationListObj = obj

    def getDestinationListObj (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-destinationlist').debug3Func(): logFunc('called. self.destinationListObj=%s', self.destinationListObj)
        return self.destinationListObj

    def hasDestinationList (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-destinationlist').debug3Func(): logFunc('called. self.destinationListObj=%s', self.destinationListObj)
        if self.destinationListObj:
            return True
        return False




    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        
        if self.destinationListObj:
            self.destinationListObj._clearAllReadData()
        

        

    def _getSelfKeyPath (self
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("notifications", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp", "qt-snmp"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("snmp", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp", "qt-snmp"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        
        if self.destinationListObj:
            res = self.destinationListObj._collectItemsToDelete(
                                                                          itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('collect-items-to-delete-destination-failed').errorFunc(): logFunc('destinationListObj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError
        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        

        
        if self.destinationListObj:
            valBegin = Value()
            (tag, ns, prefix) = ("destination" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp", "qt-snmp")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.destinationListObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-write-tag-values-destination-failed').errorFunc(): logFunc('destinationListObj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        

        
        if self.destinationListObj:
            valBegin = Value()
            (tag, ns, prefix) = ("destination" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp", "qt-snmp")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.destinationListObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-read-tag-values-destination-failed').errorFunc(): logFunc('destinationListObj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        

        
        if self.destinationListObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "destination") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log('reag-tag-values-unexpected-tag-begin').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                        "destination", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp", Value.kXmlBegin,
                                                                        tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
            
            res = self.destinationListObj._readTagValues(tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('read-tag-values-destination-failed').errorFunc(): logFunc('destinationListObj._readTagValues() failed. tagValueList=%s', tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "destination") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log('reag-tag-values-unexpected-tag-end').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                      "destination", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp", Value.kXmlEnd,
                                                                        tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
Example #7
0
class BlinkyOpLMaapi(OpLMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-opL")
        self.domain = None

        

        
        self.configDummyRequested = False
        self.configDummy = None
        self.configDummySet = False
        
        self.valueOpL1Requested = False
        self.valueOpL1 = None
        self.valueOpL1Set = False
        
        self.valueOpL2Requested = False
        self.valueOpL2 = None
        self.valueOpL2Set = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestConfigDummy(True)
        
        
        self.requestValueOpL1(True)
        
        self.requestValueOpL2(True)
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestConfigDummy(True)
        
        
        self.requestValueOpL1(False)
        
        self.requestValueOpL2(False)
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestConfigDummy(False)
        
        
        self.requestValueOpL1(True)
        
        self.requestValueOpL2(True)
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestConfigDummy(False)
        
        
        self.requestValueOpL1(False)
        
        self.requestValueOpL2(False)
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setConfigDummy(None)
        self.configDummySet = False
        
        

    def write (self
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(trxContext)

    def read (self
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(
                                  True,
                                  trxContext)



    def requestConfigDummy (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-configdummy').debug3Func(): logFunc('called. requested=%s', requested)
        self.configDummyRequested = requested
        self.configDummySet = False

    def isConfigDummyRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-configdummy-requested').debug3Func(): logFunc('called. requested=%s', self.configDummyRequested)
        return self.configDummyRequested

    def getConfigDummy (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-configdummy').debug3Func(): logFunc('called. self.configDummySet=%s, self.configDummy=%s', self.configDummySet, self.configDummy)
        if self.configDummySet:
            return self.configDummy
        return None

    def hasConfigDummy (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-configdummy').debug3Func(): logFunc('called. self.configDummySet=%s, self.configDummy=%s', self.configDummySet, self.configDummy)
        if self.configDummySet:
            return True
        return False

    def setConfigDummy (self, configDummy):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-configdummy').debug3Func(): logFunc('called. configDummy=%s, old=%s', configDummy, self.configDummy)
        self.configDummySet = True
        self.configDummy = configDummy

    def requestValueOpL1 (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-valueopl1').debug3Func(): logFunc('called. requested=%s', requested)
        self.valueOpL1Requested = requested
        self.valueOpL1Set = False

    def isValueOpL1Requested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-valueopl1-requested').debug3Func(): logFunc('called. requested=%s', self.valueOpL1Requested)
        return self.valueOpL1Requested

    def getValueOpL1 (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-valueopl1').debug3Func(): logFunc('called. self.valueOpL1Set=%s, self.valueOpL1=%s', self.valueOpL1Set, self.valueOpL1)
        if self.valueOpL1Set:
            return self.valueOpL1
        return None

    def hasValueOpL1 (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-valueopl1').debug3Func(): logFunc('called. self.valueOpL1Set=%s, self.valueOpL1=%s', self.valueOpL1Set, self.valueOpL1)
        if self.valueOpL1Set:
            return True
        return False

    def setValueOpL1 (self, valueOpL1):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-valueopl1').debug3Func(): logFunc('called. valueOpL1=%s, old=%s', valueOpL1, self.valueOpL1)
        self.valueOpL1Set = True
        self.valueOpL1 = valueOpL1

    def requestValueOpL2 (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-valueopl2').debug3Func(): logFunc('called. requested=%s', requested)
        self.valueOpL2Requested = requested
        self.valueOpL2Set = False

    def isValueOpL2Requested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-valueopl2-requested').debug3Func(): logFunc('called. requested=%s', self.valueOpL2Requested)
        return self.valueOpL2Requested

    def getValueOpL2 (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-valueopl2').debug3Func(): logFunc('called. self.valueOpL2Set=%s, self.valueOpL2=%s', self.valueOpL2Set, self.valueOpL2)
        if self.valueOpL2Set:
            return self.valueOpL2
        return None

    def hasValueOpL2 (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-valueopl2').debug3Func(): logFunc('called. self.valueOpL2Set=%s, self.valueOpL2=%s', self.valueOpL2Set, self.valueOpL2)
        if self.valueOpL2Set:
            return True
        return False

    def setValueOpL2 (self, valueOpL2):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-valueopl2').debug3Func(): logFunc('called. valueOpL2=%s, old=%s', valueOpL2, self.valueOpL2)
        self.valueOpL2Set = True
        self.valueOpL2 = valueOpL2


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.configDummy = 0
        self.configDummySet = False
        
        self.valueOpL1 = 0
        self.valueOpL1Set = False
        
        self.valueOpL2 = 0
        self.valueOpL2Set = False
        

    def _getSelfKeyPath (self
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("op-l", "http://qwilt.com/model/oper", "oper"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("config-a", "http://qwilt.com/model/oper", "oper"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasConfigDummy():
            valConfigDummy = Value()
            if self.configDummy is not None:
                valConfigDummy.setInt64(self.configDummy)
            else:
                valConfigDummy.setEmpty()
            tagValueList.push(("config-dummy", "http://qwilt.com/model/oper"), valConfigDummy)
        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isConfigDummyRequested():
            valConfigDummy = Value()
            valConfigDummy.setEmpty()
            tagValueList.push(("config-dummy", "http://qwilt.com/model/oper"), valConfigDummy)
        
        if self.isValueOpL1Requested():
            valValueOpL1 = Value()
            valValueOpL1.setEmpty()
            tagValueList.push(("value-op-l1", "http://qwilt.com/model/oper"), valValueOpL1)
        
        if self.isValueOpL2Requested():
            valValueOpL2 = Value()
            valValueOpL2.setEmpty()
            tagValueList.push(("value-op-l2", "http://qwilt.com/model/oper"), valValueOpL2)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isConfigDummyRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "config-dummy") or \
                (ns != "http://qwilt.com/model/oper"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-configdummy').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "configDummy", "config-dummy", "http://qwilt.com/model/oper", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-config-dummy-bad-value').infoFunc(): logFunc('configDummy not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setConfigDummy(tempVar)
            for logFunc in self._log('read-tag-values-config-dummy').debug3Func(): logFunc('read configDummy. configDummy=%s, tempValue=%s', self.configDummy, tempValue.getType())
        
        if self.isValueOpL1Requested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "value-op-l1") or \
                (ns != "http://qwilt.com/model/oper"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-valueopl1').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "valueOpL1", "value-op-l1", "http://qwilt.com/model/oper", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-value-op-l1-bad-value').infoFunc(): logFunc('valueOpL1 not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setValueOpL1(tempVar)
            for logFunc in self._log('read-tag-values-value-op-l1').debug3Func(): logFunc('read valueOpL1. valueOpL1=%s, tempValue=%s', self.valueOpL1, tempValue.getType())
        
        if self.isValueOpL2Requested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "value-op-l2") or \
                (ns != "http://qwilt.com/model/oper"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-valueopl2').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "valueOpL2", "value-op-l2", "http://qwilt.com/model/oper", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-value-op-l2-bad-value').infoFunc(): logFunc('valueOpL2 not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setValueOpL2(tempVar)
            for logFunc in self._log('read-tag-values-value-op-l2').debug3Func(): logFunc('read valueOpL2. valueOpL2=%s, tempValue=%s', self.valueOpL2, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
class BlinkySystemDefaultsMaapi(SystemDefaultsMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-systemDefaults")
        self.domain = None

        

        
        self.controllerRequested = False
        self.controller = None
        self.controllerSet = False
        
        self.enabledRequested = False
        self.enabled = None
        self.enabledSet = False
        
        self.descriptionRequested = False
        self.description = None
        self.descriptionSet = False
        
        self.locationTypeRequested = False
        self.locationType = None
        self.locationTypeSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestController(True)
        
        self.requestEnabled(True)
        
        self.requestDescription(True)
        
        self.requestLocationType(True)
        
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestController(True)
        
        self.requestEnabled(True)
        
        self.requestDescription(True)
        
        self.requestLocationType(True)
        
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestController(False)
        
        self.requestEnabled(False)
        
        self.requestDescription(False)
        
        self.requestLocationType(False)
        
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestController(False)
        
        self.requestEnabled(False)
        
        self.requestDescription(False)
        
        self.requestLocationType(False)
        
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setController(None)
        self.controllerSet = False
        
        self.setEnabled(None)
        self.enabledSet = False
        
        self.setDescription(None)
        self.descriptionSet = False
        
        self.setLocationType(None)
        self.locationTypeSet = False
        
        

    def write (self
              , module
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(module, trxContext)

    def read (self
              , module
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(module, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , module
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(module, 
                                  True,
                                  trxContext)



    def requestController (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-controller').debug3Func(): logFunc('called. requested=%s', requested)
        self.controllerRequested = requested
        self.controllerSet = False

    def isControllerRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-controller-requested').debug3Func(): logFunc('called. requested=%s', self.controllerRequested)
        return self.controllerRequested

    def getController (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-controller').debug3Func(): logFunc('called. self.controllerSet=%s, self.controller=%s', self.controllerSet, self.controller)
        if self.controllerSet:
            return self.controller
        return None

    def hasController (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-controller').debug3Func(): logFunc('called. self.controllerSet=%s, self.controller=%s', self.controllerSet, self.controller)
        if self.controllerSet:
            return True
        return False

    def setController (self, controller):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-controller').debug3Func(): logFunc('called. controller=%s, old=%s', controller, self.controller)
        self.controllerSet = True
        self.controller = controller

    def requestEnabled (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-enabled').debug3Func(): logFunc('called. requested=%s', requested)
        self.enabledRequested = requested
        self.enabledSet = False

    def isEnabledRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-enabled-requested').debug3Func(): logFunc('called. requested=%s', self.enabledRequested)
        return self.enabledRequested

    def getEnabled (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-enabled').debug3Func(): logFunc('called. self.enabledSet=%s, self.enabled=%s', self.enabledSet, self.enabled)
        if self.enabledSet:
            return self.enabled
        return None

    def hasEnabled (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-enabled').debug3Func(): logFunc('called. self.enabledSet=%s, self.enabled=%s', self.enabledSet, self.enabled)
        if self.enabledSet:
            return True
        return False

    def setEnabled (self, enabled):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-enabled').debug3Func(): logFunc('called. enabled=%s, old=%s', enabled, self.enabled)
        self.enabledSet = True
        self.enabled = enabled

    def requestDescription (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-description').debug3Func(): logFunc('called. requested=%s', requested)
        self.descriptionRequested = requested
        self.descriptionSet = False

    def isDescriptionRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-description-requested').debug3Func(): logFunc('called. requested=%s', self.descriptionRequested)
        return self.descriptionRequested

    def getDescription (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-description').debug3Func(): logFunc('called. self.descriptionSet=%s, self.description=%s', self.descriptionSet, self.description)
        if self.descriptionSet:
            return self.description
        return None

    def hasDescription (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-description').debug3Func(): logFunc('called. self.descriptionSet=%s, self.description=%s', self.descriptionSet, self.description)
        if self.descriptionSet:
            return True
        return False

    def setDescription (self, description):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-description').debug3Func(): logFunc('called. description=%s, old=%s', description, self.description)
        self.descriptionSet = True
        self.description = description

    def requestLocationType (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-locationtype').debug3Func(): logFunc('called. requested=%s', requested)
        self.locationTypeRequested = requested
        self.locationTypeSet = False

    def isLocationTypeRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-locationtype-requested').debug3Func(): logFunc('called. requested=%s', self.locationTypeRequested)
        return self.locationTypeRequested

    def getLocationType (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-locationtype').debug3Func(): logFunc('called. self.locationTypeSet=%s, self.locationType=%s', self.locationTypeSet, self.locationType)
        if self.locationTypeSet:
            return self.locationType
        return None

    def hasLocationType (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-locationtype').debug3Func(): logFunc('called. self.locationTypeSet=%s, self.locationType=%s', self.locationTypeSet, self.locationType)
        if self.locationTypeSet:
            return True
        return False

    def setLocationType (self, locationType):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-locationtype').debug3Func(): logFunc('called. locationType=%s, old=%s', locationType, self.locationType)
        self.locationTypeSet = True
        self.locationType = locationType


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.controller = 0
        self.controllerSet = False
        
        self.enabled = 0
        self.enabledSet = False
        
        self.description = 0
        self.descriptionSet = False
        
        self.locationType = 0
        self.locationTypeSet = False
        

    def _getSelfKeyPath (self, module
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("system-defaults", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module", "qt-strg-module"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(module);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("module", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module", "qt-strg-module"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("storage", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage", "qt-strg"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        module, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(module, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(module, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       module, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(module, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               module, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasController():
            valController = Value()
            if self.controller is not None:
                valController.setString(self.controller)
            else:
                valController.setEmpty()
            tagValueList.push(("controller", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module"), valController)
        
        if self.hasEnabled():
            valEnabled = Value()
            if self.enabled is not None:
                valEnabled.setBool(self.enabled)
            else:
                valEnabled.setEmpty()
            tagValueList.push(("enabled", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module"), valEnabled)
        
        if self.hasDescription():
            valDescription = Value()
            if self.description is not None:
                valDescription.setString(self.description)
            else:
                valDescription.setEmpty()
            tagValueList.push(("description", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module"), valDescription)
        
        if self.hasLocationType():
            valLocationType = Value()
            if self.locationType is not None:
                valLocationType.setEnum(self.locationType.getValue())
            else:
                valLocationType.setEmpty()
            tagValueList.push(("location-type", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module"), valLocationType)
        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isControllerRequested():
            valController = Value()
            valController.setEmpty()
            tagValueList.push(("controller", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module"), valController)
        
        if self.isEnabledRequested():
            valEnabled = Value()
            valEnabled.setEmpty()
            tagValueList.push(("enabled", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module"), valEnabled)
        
        if self.isDescriptionRequested():
            valDescription = Value()
            valDescription.setEmpty()
            tagValueList.push(("description", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module"), valDescription)
        
        if self.isLocationTypeRequested():
            valLocationType = Value()
            valLocationType.setEmpty()
            tagValueList.push(("location-type", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module"), valLocationType)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isControllerRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "controller") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-controller').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "controller", "controller", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-controller-bad-value').infoFunc(): logFunc('controller not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setController(tempVar)
            for logFunc in self._log('read-tag-values-controller').debug3Func(): logFunc('read controller. controller=%s, tempValue=%s', self.controller, tempValue.getType())
        
        if self.isEnabledRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "enabled") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-enabled').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "enabled", "enabled", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asBool()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-enabled-bad-value').infoFunc(): logFunc('enabled not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setEnabled(tempVar)
            for logFunc in self._log('read-tag-values-enabled').debug3Func(): logFunc('read enabled. enabled=%s, tempValue=%s', self.enabled, tempValue.getType())
        
        if self.isDescriptionRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "description") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-description').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "description", "description", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-description-bad-value').infoFunc(): logFunc('description not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setDescription(tempVar)
            for logFunc in self._log('read-tag-values-description').debug3Func(): logFunc('read description. description=%s, tempValue=%s', self.description, tempValue.getType())
        
        if self.isLocationTypeRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "location-type") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-locationtype').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "locationType", "location-type", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asEnum()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-location-type-bad-value').infoFunc(): logFunc('locationType not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setLocationType(tempVar)
            for logFunc in self._log('read-tag-values-location-type').debug3Func(): logFunc('read locationType. locationType=%s, tempValue=%s', self.locationType, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
Example #9
0
class BlinkyFishMaapi(FishMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-fish_")
        self.domain = None

        
        self.antennaObj = None
        

        
        self.eyeNumberRequested = False
        self.eyeNumber = None
        self.eyeNumberSet = False
        
        self.transparentFieldRequested = False
        self.transparentField = None
        self.transparentFieldSet = False
        
        self.idRequested = False
        self.id = None
        self.idSet = False
        
        self.hasTailRequested = False
        self.hasTail = None
        self.hasTailSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestEyeNumber(True)
        
        self.requestTransparentField(True)
        
        self.requestId(True)
        
        self.requestHasTail(True)
        
        
        
        if not self.antennaObj:
            self.antennaObj = self.newAntenna()
            self.antennaObj.requestConfigAndOper()
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestEyeNumber(True)
        
        self.requestTransparentField(True)
        
        self.requestId(True)
        
        self.requestHasTail(True)
        
        
        
        if not self.antennaObj:
            self.antennaObj = self.newAntenna()
            self.antennaObj.requestConfig()
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestEyeNumber(False)
        
        self.requestTransparentField(False)
        
        self.requestId(False)
        
        self.requestHasTail(False)
        
        
        
        if not self.antennaObj:
            self.antennaObj = self.newAntenna()
            self.antennaObj.requestOper()
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestEyeNumber(False)
        
        self.requestTransparentField(False)
        
        self.requestId(False)
        
        self.requestHasTail(False)
        
        
        
        if not self.antennaObj:
            self.antennaObj = self.newAntenna()
            self.antennaObj.clearAllRequested()
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setEyeNumber(None)
        self.eyeNumberSet = False
        
        self.setTransparentField(None)
        self.transparentFieldSet = False
        
        self.setId(None)
        self.idSet = False
        
        self.setHasTail(None)
        self.hasTailSet = False
        
        
        if self.antennaObj:
            self.antennaObj.clearAllSet()
        

    def write (self
              , table
              , fish_
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(table, fish_, trxContext)

    def read (self
              , table
              , fish_
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(table, fish_, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , table
                       , fish_
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(table, fish_, 
                                  True,
                                  trxContext)

    def newAntenna (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-antenna').debug3Func(): logFunc('called.')
        antenna = BlinkyAntennaMaapi(self._log)
        antenna.init(self.domain)
        return antenna

    def setAntennaObj (self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-antenna').debug3Func(): logFunc('called. obj=%s', obj)
        self.antennaObj = obj

    def getAntennaObj (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-antenna').debug3Func(): logFunc('called. self.antennaObj=%s', self.antennaObj)
        return self.antennaObj

    def hasAntenna (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-antenna').debug3Func(): logFunc('called. self.antennaObj=%s', self.antennaObj)
        if self.antennaObj:
            return True
        return False



    def requestEyeNumber (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-eyenumber').debug3Func(): logFunc('called. requested=%s', requested)
        self.eyeNumberRequested = requested
        self.eyeNumberSet = False

    def isEyeNumberRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-eyenumber-requested').debug3Func(): logFunc('called. requested=%s', self.eyeNumberRequested)
        return self.eyeNumberRequested

    def getEyeNumber (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-eyenumber').debug3Func(): logFunc('called. self.eyeNumberSet=%s, self.eyeNumber=%s', self.eyeNumberSet, self.eyeNumber)
        if self.eyeNumberSet:
            return self.eyeNumber
        return None

    def hasEyeNumber (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-eyenumber').debug3Func(): logFunc('called. self.eyeNumberSet=%s, self.eyeNumber=%s', self.eyeNumberSet, self.eyeNumber)
        if self.eyeNumberSet:
            return True
        return False

    def setEyeNumber (self, eyeNumber):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-eyenumber').debug3Func(): logFunc('called. eyeNumber=%s, old=%s', eyeNumber, self.eyeNumber)
        self.eyeNumberSet = True
        self.eyeNumber = eyeNumber

    def requestTransparentField (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-transparentfield').debug3Func(): logFunc('called. requested=%s', requested)
        self.transparentFieldRequested = requested
        self.transparentFieldSet = False

    def isTransparentFieldRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-transparentfield-requested').debug3Func(): logFunc('called. requested=%s', self.transparentFieldRequested)
        return self.transparentFieldRequested

    def getTransparentField (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-transparentfield').debug3Func(): logFunc('called. self.transparentFieldSet=%s, self.transparentField=%s', self.transparentFieldSet, self.transparentField)
        if self.transparentFieldSet:
            return self.transparentField
        return None

    def hasTransparentField (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-transparentfield').debug3Func(): logFunc('called. self.transparentFieldSet=%s, self.transparentField=%s', self.transparentFieldSet, self.transparentField)
        if self.transparentFieldSet:
            return True
        return False

    def setTransparentField (self, transparentField):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-transparentfield').debug3Func(): logFunc('called. transparentField=%s, old=%s', transparentField, self.transparentField)
        self.transparentFieldSet = True
        self.transparentField = transparentField

    def requestId (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-id').debug3Func(): logFunc('called. requested=%s', requested)
        self.idRequested = requested
        self.idSet = False

    def isIdRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-id-requested').debug3Func(): logFunc('called. requested=%s', self.idRequested)
        return self.idRequested

    def getId (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-id').debug3Func(): logFunc('called. self.idSet=%s, self.id=%s', self.idSet, self.id)
        if self.idSet:
            return self.id
        return None

    def hasId (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-id').debug3Func(): logFunc('called. self.idSet=%s, self.id=%s', self.idSet, self.id)
        if self.idSet:
            return True
        return False

    def setId (self, id):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-id').debug3Func(): logFunc('called. id=%s, old=%s', id, self.id)
        self.idSet = True
        self.id = id

    def requestHasTail (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-hastail').debug3Func(): logFunc('called. requested=%s', requested)
        self.hasTailRequested = requested
        self.hasTailSet = False

    def isHasTailRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-hastail-requested').debug3Func(): logFunc('called. requested=%s', self.hasTailRequested)
        return self.hasTailRequested

    def getHasTail (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-hastail').debug3Func(): logFunc('called. self.hasTailSet=%s, self.hasTail=%s', self.hasTailSet, self.hasTail)
        if self.hasTailSet:
            return self.hasTail
        return None

    def hasHasTail (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-hastail').debug3Func(): logFunc('called. self.hasTailSet=%s, self.hasTail=%s', self.hasTailSet, self.hasTail)
        if self.hasTailSet:
            return True
        return False

    def setHasTail (self, hasTail):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-hastail').debug3Func(): logFunc('called. hasTail=%s, old=%s', hasTail, self.hasTail)
        self.hasTailSet = True
        self.hasTail = hasTail


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        
        if self.antennaObj:
            self.antennaObj._clearAllReadData()
        

        
        self.eyeNumber = 0
        self.eyeNumberSet = False
        
        self.transparentField = 0
        self.transparentFieldSet = False
        
        self.id = 0
        self.idSet = False
        
        self.hasTail = 0
        self.hasTailSet = False
        

    def _getSelfKeyPath (self, table
                         , fish_
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        ancestorVal = Value()
        ancestorVal.setString(fish_);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("fish", "http://qwilt.com/model/room", "room"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(table);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("table", "http://qwilt.com/model/room", "room"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        table, 
                        fish_, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(table, 
                                         fish_, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(table, 
                                       fish_, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       table, 
                       fish_, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(table, 
                                       fish_, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               table, 
                               fish_, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        
        if self.antennaObj:
            res = self.antennaObj._collectItemsToDelete(table, 
                                                                          fish_, 
                                                                          
                                                                          itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('collect-items-to-delete-antenna-failed').errorFunc(): logFunc('antennaObj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError
        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasEyeNumber():
            valEyeNumber = Value()
            if self.eyeNumber is not None:
                valEyeNumber.setInt64(self.eyeNumber)
            else:
                valEyeNumber.setEmpty()
            tagValueList.push(("eye-number", "http://qwilt.com/model/room"), valEyeNumber)
        
        if self.hasTransparentField():
            valTransparentField = Value()
            if self.transparentField is not None:
                valTransparentField.setBool(self.transparentField)
            else:
                valTransparentField.setEmpty()
            tagValueList.push(("transparent-field", "http://qwilt.com/model/room"), valTransparentField)
        
        if self.hasId():
            valId = Value()
            if self.id is not None:
                valId.setString(self.id)
            else:
                valId.setEmpty()
            tagValueList.push(("id", "http://qwilt.com/model/room"), valId)
        
        if self.hasHasTail():
            valHasTail = Value()
            if self.hasTail is not None:
                valHasTail.setBool(self.hasTail)
            else:
                valHasTail.setEmpty()
            tagValueList.push(("has-tail", "http://qwilt.com/model/room"), valHasTail)
        

        
        if self.antennaObj:
            valBegin = Value()
            (tag, ns, prefix) = ("antenna" , "http://qwilt.com/model/room", "room")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.antennaObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-write-tag-values-antenna-failed').errorFunc(): logFunc('antennaObj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isEyeNumberRequested():
            valEyeNumber = Value()
            valEyeNumber.setEmpty()
            tagValueList.push(("eye-number", "http://qwilt.com/model/room"), valEyeNumber)
        
        if self.isTransparentFieldRequested():
            valTransparentField = Value()
            valTransparentField.setEmpty()
            tagValueList.push(("transparent-field", "http://qwilt.com/model/room"), valTransparentField)
        
        if self.isIdRequested():
            valId = Value()
            valId.setEmpty()
            tagValueList.push(("id", "http://qwilt.com/model/room"), valId)
        
        if self.isHasTailRequested():
            valHasTail = Value()
            valHasTail.setEmpty()
            tagValueList.push(("has-tail", "http://qwilt.com/model/room"), valHasTail)
        

        
        if self.antennaObj:
            valBegin = Value()
            (tag, ns, prefix) = ("antenna" , "http://qwilt.com/model/room", "room")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.antennaObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-read-tag-values-antenna-failed').errorFunc(): logFunc('antennaObj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isEyeNumberRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "eye-number") or \
                (ns != "http://qwilt.com/model/room"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-eyenumber').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "eyeNumber", "eye-number", "http://qwilt.com/model/room", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-eye-number-bad-value').infoFunc(): logFunc('eyeNumber not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setEyeNumber(tempVar)
            for logFunc in self._log('read-tag-values-eye-number').debug3Func(): logFunc('read eyeNumber. eyeNumber=%s, tempValue=%s', self.eyeNumber, tempValue.getType())
        
        if self.isTransparentFieldRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "transparent-field") or \
                (ns != "http://qwilt.com/model/room"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-transparentfield').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "transparentField", "transparent-field", "http://qwilt.com/model/room", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asBool()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-transparent-field-bad-value').infoFunc(): logFunc('transparentField not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setTransparentField(tempVar)
            for logFunc in self._log('read-tag-values-transparent-field').debug3Func(): logFunc('read transparentField. transparentField=%s, tempValue=%s', self.transparentField, tempValue.getType())
        
        if self.isIdRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "id") or \
                (ns != "http://qwilt.com/model/room"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-id').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "id", "id", "http://qwilt.com/model/room", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-id-bad-value').infoFunc(): logFunc('id not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setId(tempVar)
            for logFunc in self._log('read-tag-values-id').debug3Func(): logFunc('read id. id=%s, tempValue=%s', self.id, tempValue.getType())
        
        if self.isHasTailRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "has-tail") or \
                (ns != "http://qwilt.com/model/room"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-hastail').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "hasTail", "has-tail", "http://qwilt.com/model/room", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asBool()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-has-tail-bad-value').infoFunc(): logFunc('hasTail not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setHasTail(tempVar)
            for logFunc in self._log('read-tag-values-has-tail').debug3Func(): logFunc('read hasTail. hasTail=%s, tempValue=%s', self.hasTail, tempValue.getType())
        

        
        if self.antennaObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "antenna") or \
                (ns != "http://qwilt.com/model/room") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log('reag-tag-values-unexpected-tag-begin').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                        "antenna", "http://qwilt.com/model/room", Value.kXmlBegin,
                                                                        tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
            
            res = self.antennaObj._readTagValues(tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('read-tag-values-antenna-failed').errorFunc(): logFunc('antennaObj._readTagValues() failed. tagValueList=%s', tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "antenna") or \
                (ns != "http://qwilt.com/model/room") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log('reag-tag-values-unexpected-tag-end').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                      "antenna", "http://qwilt.com/model/room", Value.kXmlEnd,
                                                                        tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
Example #10
0
class BlinkyAlarmMaapi(AlarmMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-alarm")
        self.domain = None

        

        
        self.reportsQueueGettingFullReasonRequested = False
        self.reportsQueueGettingFullReason = None
        self.reportsQueueGettingFullReasonSet = False
        
        self.reportsQueueGettingFullRequested = False
        self.reportsQueueGettingFull = None
        self.reportsQueueGettingFullSet = False
        
        self.reportsQueueFullReasonRequested = False
        self.reportsQueueFullReason = None
        self.reportsQueueFullReasonSet = False
        
        self.reportsQueueFullRequested = False
        self.reportsQueueFull = None
        self.reportsQueueFullSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestReportsQueueGettingFullReason(True)
        
        self.requestReportsQueueGettingFull(True)
        
        self.requestReportsQueueFullReason(True)
        
        self.requestReportsQueueFull(True)
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestReportsQueueGettingFullReason(False)
        
        self.requestReportsQueueGettingFull(False)
        
        self.requestReportsQueueFullReason(False)
        
        self.requestReportsQueueFull(False)
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestReportsQueueGettingFullReason(True)
        
        self.requestReportsQueueGettingFull(True)
        
        self.requestReportsQueueFullReason(True)
        
        self.requestReportsQueueFull(True)
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestReportsQueueGettingFullReason(False)
        
        self.requestReportsQueueGettingFull(False)
        
        self.requestReportsQueueFullReason(False)
        
        self.requestReportsQueueFull(False)
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        

    def write (self
              , export_
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(export_, trxContext)

    def read (self
              , export_
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(export_, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , export_
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(export_, 
                                  True,
                                  trxContext)



    def requestReportsQueueGettingFullReason (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-reportsqueuegettingfullreason').debug3Func(): logFunc('called. requested=%s', requested)
        self.reportsQueueGettingFullReasonRequested = requested
        self.reportsQueueGettingFullReasonSet = False

    def isReportsQueueGettingFullReasonRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-reportsqueuegettingfullreason-requested').debug3Func(): logFunc('called. requested=%s', self.reportsQueueGettingFullReasonRequested)
        return self.reportsQueueGettingFullReasonRequested

    def getReportsQueueGettingFullReason (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-reportsqueuegettingfullreason').debug3Func(): logFunc('called. self.reportsQueueGettingFullReasonSet=%s, self.reportsQueueGettingFullReason=%s', self.reportsQueueGettingFullReasonSet, self.reportsQueueGettingFullReason)
        if self.reportsQueueGettingFullReasonSet:
            return self.reportsQueueGettingFullReason
        return None

    def hasReportsQueueGettingFullReason (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-reportsqueuegettingfullreason').debug3Func(): logFunc('called. self.reportsQueueGettingFullReasonSet=%s, self.reportsQueueGettingFullReason=%s', self.reportsQueueGettingFullReasonSet, self.reportsQueueGettingFullReason)
        if self.reportsQueueGettingFullReasonSet:
            return True
        return False

    def setReportsQueueGettingFullReason (self, reportsQueueGettingFullReason):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-reportsqueuegettingfullreason').debug3Func(): logFunc('called. reportsQueueGettingFullReason=%s, old=%s', reportsQueueGettingFullReason, self.reportsQueueGettingFullReason)
        self.reportsQueueGettingFullReasonSet = True
        self.reportsQueueGettingFullReason = reportsQueueGettingFullReason

    def requestReportsQueueGettingFull (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-reportsqueuegettingfull').debug3Func(): logFunc('called. requested=%s', requested)
        self.reportsQueueGettingFullRequested = requested
        self.reportsQueueGettingFullSet = False

    def isReportsQueueGettingFullRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-reportsqueuegettingfull-requested').debug3Func(): logFunc('called. requested=%s', self.reportsQueueGettingFullRequested)
        return self.reportsQueueGettingFullRequested

    def getReportsQueueGettingFull (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-reportsqueuegettingfull').debug3Func(): logFunc('called. self.reportsQueueGettingFullSet=%s, self.reportsQueueGettingFull=%s', self.reportsQueueGettingFullSet, self.reportsQueueGettingFull)
        if self.reportsQueueGettingFullSet:
            return self.reportsQueueGettingFull
        return None

    def hasReportsQueueGettingFull (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-reportsqueuegettingfull').debug3Func(): logFunc('called. self.reportsQueueGettingFullSet=%s, self.reportsQueueGettingFull=%s', self.reportsQueueGettingFullSet, self.reportsQueueGettingFull)
        if self.reportsQueueGettingFullSet:
            return True
        return False

    def setReportsQueueGettingFull (self, reportsQueueGettingFull):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-reportsqueuegettingfull').debug3Func(): logFunc('called. reportsQueueGettingFull=%s, old=%s', reportsQueueGettingFull, self.reportsQueueGettingFull)
        self.reportsQueueGettingFullSet = True
        self.reportsQueueGettingFull = reportsQueueGettingFull

    def requestReportsQueueFullReason (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-reportsqueuefullreason').debug3Func(): logFunc('called. requested=%s', requested)
        self.reportsQueueFullReasonRequested = requested
        self.reportsQueueFullReasonSet = False

    def isReportsQueueFullReasonRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-reportsqueuefullreason-requested').debug3Func(): logFunc('called. requested=%s', self.reportsQueueFullReasonRequested)
        return self.reportsQueueFullReasonRequested

    def getReportsQueueFullReason (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-reportsqueuefullreason').debug3Func(): logFunc('called. self.reportsQueueFullReasonSet=%s, self.reportsQueueFullReason=%s', self.reportsQueueFullReasonSet, self.reportsQueueFullReason)
        if self.reportsQueueFullReasonSet:
            return self.reportsQueueFullReason
        return None

    def hasReportsQueueFullReason (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-reportsqueuefullreason').debug3Func(): logFunc('called. self.reportsQueueFullReasonSet=%s, self.reportsQueueFullReason=%s', self.reportsQueueFullReasonSet, self.reportsQueueFullReason)
        if self.reportsQueueFullReasonSet:
            return True
        return False

    def setReportsQueueFullReason (self, reportsQueueFullReason):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-reportsqueuefullreason').debug3Func(): logFunc('called. reportsQueueFullReason=%s, old=%s', reportsQueueFullReason, self.reportsQueueFullReason)
        self.reportsQueueFullReasonSet = True
        self.reportsQueueFullReason = reportsQueueFullReason

    def requestReportsQueueFull (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-reportsqueuefull').debug3Func(): logFunc('called. requested=%s', requested)
        self.reportsQueueFullRequested = requested
        self.reportsQueueFullSet = False

    def isReportsQueueFullRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-reportsqueuefull-requested').debug3Func(): logFunc('called. requested=%s', self.reportsQueueFullRequested)
        return self.reportsQueueFullRequested

    def getReportsQueueFull (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-reportsqueuefull').debug3Func(): logFunc('called. self.reportsQueueFullSet=%s, self.reportsQueueFull=%s', self.reportsQueueFullSet, self.reportsQueueFull)
        if self.reportsQueueFullSet:
            return self.reportsQueueFull
        return None

    def hasReportsQueueFull (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-reportsqueuefull').debug3Func(): logFunc('called. self.reportsQueueFullSet=%s, self.reportsQueueFull=%s', self.reportsQueueFullSet, self.reportsQueueFull)
        if self.reportsQueueFullSet:
            return True
        return False

    def setReportsQueueFull (self, reportsQueueFull):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-reportsqueuefull').debug3Func(): logFunc('called. reportsQueueFull=%s, old=%s', reportsQueueFull, self.reportsQueueFull)
        self.reportsQueueFullSet = True
        self.reportsQueueFull = reportsQueueFull


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.reportsQueueGettingFullReason = 0
        self.reportsQueueGettingFullReasonSet = False
        
        self.reportsQueueGettingFull = 0
        self.reportsQueueGettingFullSet = False
        
        self.reportsQueueFullReason = 0
        self.reportsQueueFullReasonSet = False
        
        self.reportsQueueFull = 0
        self.reportsQueueFullSet = False
        

    def _getSelfKeyPath (self, export_
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("alarm", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-reporting", "qtc-report"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(export_);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("export", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-reporting", "qtc-report"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("reporting", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-reporting", "qtc-report"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("content", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content", "qtc"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        export_, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(export_, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(export_, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       export_, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(export_, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               export_, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isReportsQueueGettingFullReasonRequested():
            valReportsQueueGettingFullReason = Value()
            valReportsQueueGettingFullReason.setEmpty()
            tagValueList.push(("reports-queue-getting-full-reason", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-reporting"), valReportsQueueGettingFullReason)
        
        if self.isReportsQueueGettingFullRequested():
            valReportsQueueGettingFull = Value()
            valReportsQueueGettingFull.setEmpty()
            tagValueList.push(("reports-queue-getting-full", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-reporting"), valReportsQueueGettingFull)
        
        if self.isReportsQueueFullReasonRequested():
            valReportsQueueFullReason = Value()
            valReportsQueueFullReason.setEmpty()
            tagValueList.push(("reports-queue-full-reason", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-reporting"), valReportsQueueFullReason)
        
        if self.isReportsQueueFullRequested():
            valReportsQueueFull = Value()
            valReportsQueueFull.setEmpty()
            tagValueList.push(("reports-queue-full", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-reporting"), valReportsQueueFull)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isReportsQueueGettingFullReasonRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "reports-queue-getting-full-reason") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-reporting"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-reportsqueuegettingfullreason').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "reportsQueueGettingFullReason", "reports-queue-getting-full-reason", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-reporting", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asEnum()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-reports-queue-getting-full-reason-bad-value').infoFunc(): logFunc('reportsQueueGettingFullReason not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setReportsQueueGettingFullReason(tempVar)
            for logFunc in self._log('read-tag-values-reports-queue-getting-full-reason').debug3Func(): logFunc('read reportsQueueGettingFullReason. reportsQueueGettingFullReason=%s, tempValue=%s', self.reportsQueueGettingFullReason, tempValue.getType())
        
        if self.isReportsQueueGettingFullRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "reports-queue-getting-full") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-reporting"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-reportsqueuegettingfull').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "reportsQueueGettingFull", "reports-queue-getting-full", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-reporting", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asBool()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-reports-queue-getting-full-bad-value').infoFunc(): logFunc('reportsQueueGettingFull not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setReportsQueueGettingFull(tempVar)
            for logFunc in self._log('read-tag-values-reports-queue-getting-full').debug3Func(): logFunc('read reportsQueueGettingFull. reportsQueueGettingFull=%s, tempValue=%s', self.reportsQueueGettingFull, tempValue.getType())
        
        if self.isReportsQueueFullReasonRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "reports-queue-full-reason") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-reporting"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-reportsqueuefullreason').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "reportsQueueFullReason", "reports-queue-full-reason", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-reporting", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asEnum()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-reports-queue-full-reason-bad-value').infoFunc(): logFunc('reportsQueueFullReason not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setReportsQueueFullReason(tempVar)
            for logFunc in self._log('read-tag-values-reports-queue-full-reason').debug3Func(): logFunc('read reportsQueueFullReason. reportsQueueFullReason=%s, tempValue=%s', self.reportsQueueFullReason, tempValue.getType())
        
        if self.isReportsQueueFullRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "reports-queue-full") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-reporting"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-reportsqueuefull').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "reportsQueueFull", "reports-queue-full", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-reporting", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asBool()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-reports-queue-full-bad-value').infoFunc(): logFunc('reportsQueueFull not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setReportsQueueFull(tempVar)
            for logFunc in self._log('read-tag-values-reports-queue-full').debug3Func(): logFunc('read reportsQueueFull. reportsQueueFull=%s, tempValue=%s', self.reportsQueueFull, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
Example #11
0
class BlinkyNeighborsMaapi(NeighborsMaapiBase):
    def __init__(self, logger):
        self.myInitGuard = InitGuard()
        self._log = logger.createLogger("sys-blinky-oper-example",
                                        "blinky-maapi-neighbors")
        self.domain = None

        self.applicationInitiatedDiscoveryObj = None

    def init(self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func():
            logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func():
            logFunc('called, PARAMS')

        if not self.applicationInitiatedDiscoveryObj:
            self.applicationInitiatedDiscoveryObj = self.newApplicationInitiatedDiscovery(
            )
            self.applicationInitiatedDiscoveryObj.requestConfigAndOper()

    def requestConfig(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func():
            logFunc('called, PARAMS')

        if not self.applicationInitiatedDiscoveryObj:
            self.applicationInitiatedDiscoveryObj = self.newApplicationInitiatedDiscovery(
            )
            self.applicationInitiatedDiscoveryObj.requestConfig()

    def requestOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func():
            logFunc('called, PARAMS')

        if not self.applicationInitiatedDiscoveryObj:
            self.applicationInitiatedDiscoveryObj = self.newApplicationInitiatedDiscovery(
            )
            self.applicationInitiatedDiscoveryObj.requestOper()

    def clearAllRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func():
            logFunc('called, PARAMS')

        if not self.applicationInitiatedDiscoveryObj:
            self.applicationInitiatedDiscoveryObj = self.newApplicationInitiatedDiscovery(
            )
            self.applicationInitiatedDiscoveryObj.clearAllRequested()

    def clearAllSet(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func():
            logFunc('called, PARAMS')

        if self.applicationInitiatedDiscoveryObj:
            self.applicationInitiatedDiscoveryObj.clearAllSet()

    def write(self, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func():
            logFunc('called, PARAMS')
        return self._internalWrite(trxContext)

    def read(self, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(False, trxContext)

    def readAllOrFail(self, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(True, trxContext)

    def newApplicationInitiatedDiscovery(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log(
                'new-applicationinitiateddiscovery').debug3Func():
            logFunc('called.')
        applicationInitiatedDiscovery = BlinkyApplicationInitiatedDiscoveryMaapi(
            self._log)
        applicationInitiatedDiscovery.init(self.domain)
        return applicationInitiatedDiscovery

    def setApplicationInitiatedDiscoveryObj(self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log(
                'set-applicationinitiateddiscovery').debug3Func():
            logFunc('called. obj=%s', obj)
        self.applicationInitiatedDiscoveryObj = obj

    def getApplicationInitiatedDiscoveryObj(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log(
                'get-applicationinitiateddiscovery').debug3Func():
            logFunc('called. self.applicationInitiatedDiscoveryObj=%s',
                    self.applicationInitiatedDiscoveryObj)
        return self.applicationInitiatedDiscoveryObj

    def hasApplicationInitiatedDiscovery(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log(
                'has-applicationinitiateddiscovery').debug3Func():
            logFunc('called. self.applicationInitiatedDiscoveryObj=%s',
                    self.applicationInitiatedDiscoveryObj)
        if self.applicationInitiatedDiscoveryObj:
            return True
        return False

    def _clearAllReadData(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func():
            logFunc('called')

        if self.applicationInitiatedDiscoveryObj:
            self.applicationInitiatedDiscoveryObj._clearAllReadData()

    def _getSelfKeyPath(self, junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func():
            logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("neighbors",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-network-ipv6",
             "qt-net-ip6"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("ipv6",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-network-ipv6",
             "qt-net-ip6"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("network",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-network",
             "qt-net"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)

        for logFunc in self._log('get-self-key-path-done').debug3Func():
            logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite(self, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func():
            logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-fill-write-tag-value-failed').errorFunc():
                logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-collect-items-to-delete-failed').errorFunc():
                logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext,
                                     itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc():
                logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func():
            logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead(self, readAllOrFail, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func():
            logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-fill-read-tag-value-failed').errorFunc():
                logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc():
                logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-read-tag-values-failed').errorFunc():
                logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func():
            logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete(self, itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func():
            logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        if self.applicationInitiatedDiscoveryObj:
            res = self.applicationInitiatedDiscoveryObj._collectItemsToDelete(
                itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'collect-items-to-delete-application-initiated-discovery-failed'
                ).errorFunc():
                    logFunc(
                        'applicationInitiatedDiscoveryObj._collectItemsToDelete() failed. PARAMS'
                    )
                return ReturnCodes.kGeneralError

        for logFunc in self._log('collect-items-to-delete-done').debug3Func():
            logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.applicationInitiatedDiscoveryObj:
            valBegin = Value()
            (tag, ns, prefix) = (
                "application-initiated-discovery",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-network-ipv6",
                "qt-net-ip6")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.applicationInitiatedDiscoveryObj._fillWriteTagValues(
                tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-write-tag-values-application-initiated-discovery-failed'
                ).errorFunc():
                    logFunc(
                        'applicationInitiatedDiscoveryObj._fillWriteTagValues() failed. PARAMS'
                    )
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        return ReturnCodes.kOk

    def _fillReadTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.applicationInitiatedDiscoveryObj:
            valBegin = Value()
            (tag, ns, prefix) = (
                "application-initiated-discovery",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-network-ipv6",
                "qt-net-ip6")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.applicationInitiatedDiscoveryObj._fillReadTagValues(
                tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-read-tag-values-application-initiated-discovery-failed'
                ).errorFunc():
                    logFunc(
                        'applicationInitiatedDiscoveryObj._fillReadTagValues() failed. PARAMS'
                    )
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        return ReturnCodes.kOk

    def _readTagValues(self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func():
            logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func():
            logFunc('reading leaves. tagValueList=%s', tagValueList)

        if self.applicationInitiatedDiscoveryObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "application-initiated-discovery") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-network-ipv6") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-begin').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "application-initiated-discovery",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-network-ipv6",
                        Value.kXmlBegin, tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            res = self.applicationInitiatedDiscoveryObj._readTagValues(
                tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'read-tag-values-application-initiated-discovery-failed'
                ).errorFunc():
                    logFunc(
                        'applicationInitiatedDiscoveryObj._readTagValues() failed. tagValueList=%s',
                        tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "application-initiated-discovery") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-network-ipv6") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-end').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "application-initiated-discovery",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-network-ipv6",
                        Value.kXmlEnd, tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

        for logFunc in self._log('read-tag-values-done').debug3Func():
            logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)
        return ReturnCodes.kOk
Example #12
0
class BlinkyFileSystemMaapi(FileSystemMaapiBase):
    def __init__(self, logger):
        self.myInitGuard = InitGuard()
        self._log = logger.createLogger("sys-blinky-oper-example",
                                        "blinky-maapi-fileSystem")
        self.domain = None

        self.commandsObj = None

        self.timeoutsObj = None

        self.autoInitRequested = False
        self.autoInit = None
        self.autoInitSet = False

        self.checkUuidRequested = False
        self.checkUuid = None
        self.checkUuidSet = False

        self.readAheadRequested = False
        self.readAhead = None
        self.readAheadSet = False

        self.fileSystemTypeRequested = False
        self.fileSystemType = None
        self.fileSystemTypeSet = False

    def init(self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func():
            logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestAutoInit(True)

        self.requestCheckUuid(True)

        self.requestReadAhead(True)

        self.requestFileSystemType(True)

        if not self.commandsObj:
            self.commandsObj = self.newCommands()
            self.commandsObj.requestConfigAndOper()

        if not self.timeoutsObj:
            self.timeoutsObj = self.newTimeouts()
            self.timeoutsObj.requestConfigAndOper()

    def requestConfig(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func():
            logFunc('called, PARAMS')

        self.requestAutoInit(True)

        self.requestCheckUuid(True)

        self.requestReadAhead(True)

        self.requestFileSystemType(True)

        if not self.commandsObj:
            self.commandsObj = self.newCommands()
            self.commandsObj.requestConfig()

        if not self.timeoutsObj:
            self.timeoutsObj = self.newTimeouts()
            self.timeoutsObj.requestConfig()

    def requestOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestAutoInit(False)

        self.requestCheckUuid(False)

        self.requestReadAhead(False)

        self.requestFileSystemType(False)

        if not self.commandsObj:
            self.commandsObj = self.newCommands()
            self.commandsObj.requestOper()

        if not self.timeoutsObj:
            self.timeoutsObj = self.newTimeouts()
            self.timeoutsObj.requestOper()

    def clearAllRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func():
            logFunc('called, PARAMS')

        self.requestAutoInit(False)

        self.requestCheckUuid(False)

        self.requestReadAhead(False)

        self.requestFileSystemType(False)

        if not self.commandsObj:
            self.commandsObj = self.newCommands()
            self.commandsObj.clearAllRequested()

        if not self.timeoutsObj:
            self.timeoutsObj = self.newTimeouts()
            self.timeoutsObj.clearAllRequested()

    def clearAllSet(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func():
            logFunc('called, PARAMS')

        self.setAutoInit(None)
        self.autoInitSet = False

        self.setCheckUuid(None)
        self.checkUuidSet = False

        self.setReadAhead(None)
        self.readAheadSet = False

        self.setFileSystemType(None)
        self.fileSystemTypeSet = False

        if self.commandsObj:
            self.commandsObj.clearAllSet()

        if self.timeoutsObj:
            self.timeoutsObj.clearAllSet()

    def write(self, disk, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func():
            logFunc('called, PARAMS')
        return self._internalWrite(disk, trxContext)

    def read(self, disk, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(disk, False, trxContext)

    def readAllOrFail(self, disk, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(disk, True, trxContext)

    def newCommands(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-commands').debug3Func():
            logFunc('called.')
        commands = BlinkyCommandsMaapi(self._log)
        commands.init(self.domain)
        return commands

    def setCommandsObj(self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-commands').debug3Func():
            logFunc('called. obj=%s', obj)
        self.commandsObj = obj

    def getCommandsObj(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-commands').debug3Func():
            logFunc('called. self.commandsObj=%s', self.commandsObj)
        return self.commandsObj

    def hasCommands(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-commands').debug3Func():
            logFunc('called. self.commandsObj=%s', self.commandsObj)
        if self.commandsObj:
            return True
        return False

    def newTimeouts(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-timeouts').debug3Func():
            logFunc('called.')
        timeouts = BlinkyTimeoutsMaapi(self._log)
        timeouts.init(self.domain)
        return timeouts

    def setTimeoutsObj(self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-timeouts').debug3Func():
            logFunc('called. obj=%s', obj)
        self.timeoutsObj = obj

    def getTimeoutsObj(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-timeouts').debug3Func():
            logFunc('called. self.timeoutsObj=%s', self.timeoutsObj)
        return self.timeoutsObj

    def hasTimeouts(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-timeouts').debug3Func():
            logFunc('called. self.timeoutsObj=%s', self.timeoutsObj)
        if self.timeoutsObj:
            return True
        return False

    def requestAutoInit(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-autoinit').debug3Func():
            logFunc('called. requested=%s', requested)
        self.autoInitRequested = requested
        self.autoInitSet = False

    def isAutoInitRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-autoinit-requested').debug3Func():
            logFunc('called. requested=%s', self.autoInitRequested)
        return self.autoInitRequested

    def getAutoInit(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-autoinit').debug3Func():
            logFunc('called. self.autoInitSet=%s, self.autoInit=%s',
                    self.autoInitSet, self.autoInit)
        if self.autoInitSet:
            return self.autoInit
        return None

    def hasAutoInit(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-autoinit').debug3Func():
            logFunc('called. self.autoInitSet=%s, self.autoInit=%s',
                    self.autoInitSet, self.autoInit)
        if self.autoInitSet:
            return True
        return False

    def setAutoInit(self, autoInit):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-autoinit').debug3Func():
            logFunc('called. autoInit=%s, old=%s', autoInit, self.autoInit)
        self.autoInitSet = True
        self.autoInit = autoInit

    def requestCheckUuid(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-checkuuid').debug3Func():
            logFunc('called. requested=%s', requested)
        self.checkUuidRequested = requested
        self.checkUuidSet = False

    def isCheckUuidRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-checkuuid-requested').debug3Func():
            logFunc('called. requested=%s', self.checkUuidRequested)
        return self.checkUuidRequested

    def getCheckUuid(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-checkuuid').debug3Func():
            logFunc('called. self.checkUuidSet=%s, self.checkUuid=%s',
                    self.checkUuidSet, self.checkUuid)
        if self.checkUuidSet:
            return self.checkUuid
        return None

    def hasCheckUuid(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-checkuuid').debug3Func():
            logFunc('called. self.checkUuidSet=%s, self.checkUuid=%s',
                    self.checkUuidSet, self.checkUuid)
        if self.checkUuidSet:
            return True
        return False

    def setCheckUuid(self, checkUuid):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-checkuuid').debug3Func():
            logFunc('called. checkUuid=%s, old=%s', checkUuid, self.checkUuid)
        self.checkUuidSet = True
        self.checkUuid = checkUuid

    def requestReadAhead(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-readahead').debug3Func():
            logFunc('called. requested=%s', requested)
        self.readAheadRequested = requested
        self.readAheadSet = False

    def isReadAheadRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-readahead-requested').debug3Func():
            logFunc('called. requested=%s', self.readAheadRequested)
        return self.readAheadRequested

    def getReadAhead(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-readahead').debug3Func():
            logFunc('called. self.readAheadSet=%s, self.readAhead=%s',
                    self.readAheadSet, self.readAhead)
        if self.readAheadSet:
            return self.readAhead
        return None

    def hasReadAhead(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-readahead').debug3Func():
            logFunc('called. self.readAheadSet=%s, self.readAhead=%s',
                    self.readAheadSet, self.readAhead)
        if self.readAheadSet:
            return True
        return False

    def setReadAhead(self, readAhead):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-readahead').debug3Func():
            logFunc('called. readAhead=%s, old=%s', readAhead, self.readAhead)
        self.readAheadSet = True
        self.readAhead = readAhead

    def requestFileSystemType(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-filesystemtype').debug3Func():
            logFunc('called. requested=%s', requested)
        self.fileSystemTypeRequested = requested
        self.fileSystemTypeSet = False

    def isFileSystemTypeRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-filesystemtype-requested').debug3Func():
            logFunc('called. requested=%s', self.fileSystemTypeRequested)
        return self.fileSystemTypeRequested

    def getFileSystemType(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-filesystemtype').debug3Func():
            logFunc(
                'called. self.fileSystemTypeSet=%s, self.fileSystemType=%s',
                self.fileSystemTypeSet, self.fileSystemType)
        if self.fileSystemTypeSet:
            return self.fileSystemType
        return None

    def hasFileSystemType(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-filesystemtype').debug3Func():
            logFunc(
                'called. self.fileSystemTypeSet=%s, self.fileSystemType=%s',
                self.fileSystemTypeSet, self.fileSystemType)
        if self.fileSystemTypeSet:
            return True
        return False

    def setFileSystemType(self, fileSystemType):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-filesystemtype').debug3Func():
            logFunc('called. fileSystemType=%s, old=%s', fileSystemType,
                    self.fileSystemType)
        self.fileSystemTypeSet = True
        self.fileSystemType = fileSystemType

    def _clearAllReadData(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func():
            logFunc('called')

        if self.commandsObj:
            self.commandsObj._clearAllReadData()

        if self.timeoutsObj:
            self.timeoutsObj._clearAllReadData()

        self.autoInit = 0
        self.autoInitSet = False

        self.checkUuid = 0
        self.checkUuidSet = False

        self.readAhead = 0
        self.readAheadSet = False

        self.fileSystemType = 0
        self.fileSystemTypeSet = False

    def _getSelfKeyPath(self, disk, junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func():
            logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("file-system",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk",
             "qt-strg-dsk"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("system-defaults",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk",
             "qt-strg-dsk"))
        keyPath.addKeyPathPrefix(xmlVal)

        ancestorVal = Value()
        ancestorVal.setString(disk)
        keyPath.addKeyPathPrefix(ancestorVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("disk",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk",
             "qt-strg-dsk"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("storage",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage",
             "qt-strg"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)

        for logFunc in self._log('get-self-key-path-done').debug3Func():
            logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite(self, disk, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func():
            logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-fill-write-tag-value-failed').errorFunc():
                logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(disk, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-collect-items-to-delete-failed').errorFunc():
                logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(disk, None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext,
                                     itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc():
                logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func():
            logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead(self, disk, readAllOrFail, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func():
            logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-fill-read-tag-value-failed').errorFunc():
                logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(disk, None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc():
                logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-read-tag-values-failed').errorFunc():
                logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func():
            logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete(self, disk, itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func():
            logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        if self.commandsObj:
            res = self.commandsObj._collectItemsToDelete(disk, itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'collect-items-to-delete-commands-failed').errorFunc():
                    logFunc(
                        'commandsObj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError

        if self.timeoutsObj:
            res = self.timeoutsObj._collectItemsToDelete(disk, itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'collect-items-to-delete-timeouts-failed').errorFunc():
                    logFunc(
                        'timeoutsObj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError

        for logFunc in self._log('collect-items-to-delete-done').debug3Func():
            logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.hasAutoInit():
            valAutoInit = Value()
            if self.autoInit is not None:
                valAutoInit.setBool(self.autoInit)
            else:
                valAutoInit.setEmpty()
            tagValueList.push(
                ("auto-init",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"
                 ), valAutoInit)

        if self.hasCheckUuid():
            valCheckUuid = Value()
            if self.checkUuid is not None:
                valCheckUuid.setBool(self.checkUuid)
            else:
                valCheckUuid.setEmpty()
            tagValueList.push(
                ("check-uuid",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"
                 ), valCheckUuid)

        if self.hasReadAhead():
            valReadAhead = Value()
            if self.readAhead is not None:
                valReadAhead.setInt64(self.readAhead)
            else:
                valReadAhead.setEmpty()
            tagValueList.push(
                ("read-ahead",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"
                 ), valReadAhead)

        if self.hasFileSystemType():
            valFileSystemType = Value()
            if self.fileSystemType is not None:
                valFileSystemType.setEnum(self.fileSystemType.getValue())
            else:
                valFileSystemType.setEmpty()
            tagValueList.push(
                ("file-system-type",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"
                 ), valFileSystemType)

        if self.commandsObj:
            valBegin = Value()
            (tag, ns, prefix) = (
                "commands",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk",
                "qt-strg-dsk")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.commandsObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-write-tag-values-commands-failed').errorFunc():
                    logFunc('commandsObj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        if self.timeoutsObj:
            valBegin = Value()
            (tag, ns, prefix) = (
                "timeouts",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk",
                "qt-strg-dsk")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.timeoutsObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-write-tag-values-timeouts-failed').errorFunc():
                    logFunc('timeoutsObj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        return ReturnCodes.kOk

    def _fillReadTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.isAutoInitRequested():
            valAutoInit = Value()
            valAutoInit.setEmpty()
            tagValueList.push(
                ("auto-init",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"
                 ), valAutoInit)

        if self.isCheckUuidRequested():
            valCheckUuid = Value()
            valCheckUuid.setEmpty()
            tagValueList.push(
                ("check-uuid",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"
                 ), valCheckUuid)

        if self.isReadAheadRequested():
            valReadAhead = Value()
            valReadAhead.setEmpty()
            tagValueList.push(
                ("read-ahead",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"
                 ), valReadAhead)

        if self.isFileSystemTypeRequested():
            valFileSystemType = Value()
            valFileSystemType.setEmpty()
            tagValueList.push(
                ("file-system-type",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"
                 ), valFileSystemType)

        if self.commandsObj:
            valBegin = Value()
            (tag, ns, prefix) = (
                "commands",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk",
                "qt-strg-dsk")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.commandsObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-read-tag-values-commands-failed').errorFunc():
                    logFunc('commandsObj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        if self.timeoutsObj:
            valBegin = Value()
            (tag, ns, prefix) = (
                "timeouts",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk",
                "qt-strg-dsk")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.timeoutsObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-read-tag-values-timeouts-failed').errorFunc():
                    logFunc('timeoutsObj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        return ReturnCodes.kOk

    def _readTagValues(self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func():
            logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func():
            logFunc('reading leaves. tagValueList=%s', tagValueList)

        if self.isAutoInitRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "auto-init") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-autoinit'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "autoInit", "auto-init",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asBool()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-auto-init-bad-value').infoFunc():
                    logFunc('autoInit not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setAutoInit(tempVar)
            for logFunc in self._log('read-tag-values-auto-init').debug3Func():
                logFunc('read autoInit. autoInit=%s, tempValue=%s',
                        self.autoInit, tempValue.getType())

        if self.isCheckUuidRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "check-uuid") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-checkuuid'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "checkUuid", "check-uuid",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asBool()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-check-uuid-bad-value').infoFunc():
                    logFunc('checkUuid not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setCheckUuid(tempVar)
            for logFunc in self._log(
                    'read-tag-values-check-uuid').debug3Func():
                logFunc('read checkUuid. checkUuid=%s, tempValue=%s',
                        self.checkUuid, tempValue.getType())

        if self.isReadAheadRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "read-ahead") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-readahead'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "readAhead", "read-ahead",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-read-ahead-bad-value').infoFunc():
                    logFunc('readAhead not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setReadAhead(tempVar)
            for logFunc in self._log(
                    'read-tag-values-read-ahead').debug3Func():
                logFunc('read readAhead. readAhead=%s, tempValue=%s',
                        self.readAhead, tempValue.getType())

        if self.isFileSystemTypeRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "file-system-type") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-filesystemtype'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "fileSystemType", "file-system-type",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asEnum()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-file-system-type-bad-value').infoFunc(
                        ):
                    logFunc('fileSystemType not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setFileSystemType(tempVar)
            for logFunc in self._log(
                    'read-tag-values-file-system-type').debug3Func():
                logFunc('read fileSystemType. fileSystemType=%s, tempValue=%s',
                        self.fileSystemType, tempValue.getType())

        if self.commandsObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "commands") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-begin').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "commands",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk",
                        Value.kXmlBegin, tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            res = self.commandsObj._readTagValues(tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'read-tag-values-commands-failed').errorFunc():
                    logFunc(
                        'commandsObj._readTagValues() failed. tagValueList=%s',
                        tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "commands") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-end').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "commands",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk",
                        Value.kXmlEnd, tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

        if self.timeoutsObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "timeouts") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-begin').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "timeouts",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk",
                        Value.kXmlBegin, tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            res = self.timeoutsObj._readTagValues(tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'read-tag-values-timeouts-failed').errorFunc():
                    logFunc(
                        'timeoutsObj._readTagValues() failed. tagValueList=%s',
                        tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "timeouts") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-end').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "timeouts",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk",
                        Value.kXmlEnd, tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

        for logFunc in self._log('read-tag-values-done').debug3Func():
            logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)
        return ReturnCodes.kOk
Example #13
0
class BlinkyListMaapi(ListMaapiBase):
    def __init__(self, logger):
        self.myInitGuard = InitGuard()
        self._log = logger.createLogger("sys-blinky-oper-example",
                                        "blinky-maapi-list")
        self.domain = None

        self.descriptionRequested = False
        self.description = None
        self.descriptionSet = False

        self.severityRequested = False
        self.severity = None
        self.severitySet = False

        self.numberRequested = False
        self.number = None
        self.numberSet = False

        self.entityRequested = False
        self.entity = None
        self.entitySet = False

        self.sourceRequested = False
        self.source = None
        self.sourceSet = False

        self.simulatedRequested = False
        self.simulated = None
        self.simulatedSet = False

        self.nameRequested = False
        self.name = None
        self.nameSet = False

    def init(self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func():
            logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestDescription(True)

        self.requestSeverity(True)

        self.requestNumber(True)

        self.requestEntity(True)

        self.requestSource(True)

        self.requestSimulated(True)

        self.requestName(True)

    def requestConfig(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func():
            logFunc('called, PARAMS')

        self.requestDescription(False)

        self.requestSeverity(False)

        self.requestNumber(False)

        self.requestEntity(False)

        self.requestSource(False)

        self.requestSimulated(False)

        self.requestName(False)

    def requestOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestDescription(True)

        self.requestSeverity(True)

        self.requestNumber(True)

        self.requestEntity(True)

        self.requestSource(True)

        self.requestSimulated(True)

        self.requestName(True)

    def clearAllRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func():
            logFunc('called, PARAMS')

        self.requestDescription(False)

        self.requestSeverity(False)

        self.requestNumber(False)

        self.requestEntity(False)

        self.requestSource(False)

        self.requestSimulated(False)

        self.requestName(False)

    def clearAllSet(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func():
            logFunc('called, PARAMS')

    def write(self, list, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func():
            logFunc('called, PARAMS')
        return self._internalWrite(list, trxContext)

    def read(self, list, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(list, False, trxContext)

    def readAllOrFail(self, list, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(list, True, trxContext)

    def requestDescription(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-description').debug3Func():
            logFunc('called. requested=%s', requested)
        self.descriptionRequested = requested
        self.descriptionSet = False

    def isDescriptionRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-description-requested').debug3Func():
            logFunc('called. requested=%s', self.descriptionRequested)
        return self.descriptionRequested

    def getDescription(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-description').debug3Func():
            logFunc('called. self.descriptionSet=%s, self.description=%s',
                    self.descriptionSet, self.description)
        if self.descriptionSet:
            return self.description
        return None

    def hasDescription(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-description').debug3Func():
            logFunc('called. self.descriptionSet=%s, self.description=%s',
                    self.descriptionSet, self.description)
        if self.descriptionSet:
            return True
        return False

    def setDescription(self, description):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-description').debug3Func():
            logFunc('called. description=%s, old=%s', description,
                    self.description)
        self.descriptionSet = True
        self.description = description

    def requestSeverity(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-severity').debug3Func():
            logFunc('called. requested=%s', requested)
        self.severityRequested = requested
        self.severitySet = False

    def isSeverityRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-severity-requested').debug3Func():
            logFunc('called. requested=%s', self.severityRequested)
        return self.severityRequested

    def getSeverity(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-severity').debug3Func():
            logFunc('called. self.severitySet=%s, self.severity=%s',
                    self.severitySet, self.severity)
        if self.severitySet:
            return self.severity
        return None

    def hasSeverity(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-severity').debug3Func():
            logFunc('called. self.severitySet=%s, self.severity=%s',
                    self.severitySet, self.severity)
        if self.severitySet:
            return True
        return False

    def setSeverity(self, severity):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-severity').debug3Func():
            logFunc('called. severity=%s, old=%s', severity, self.severity)
        self.severitySet = True
        self.severity = severity

    def requestNumber(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-number').debug3Func():
            logFunc('called. requested=%s', requested)
        self.numberRequested = requested
        self.numberSet = False

    def isNumberRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-number-requested').debug3Func():
            logFunc('called. requested=%s', self.numberRequested)
        return self.numberRequested

    def getNumber(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-number').debug3Func():
            logFunc('called. self.numberSet=%s, self.number=%s',
                    self.numberSet, self.number)
        if self.numberSet:
            return self.number
        return None

    def hasNumber(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-number').debug3Func():
            logFunc('called. self.numberSet=%s, self.number=%s',
                    self.numberSet, self.number)
        if self.numberSet:
            return True
        return False

    def setNumber(self, number):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-number').debug3Func():
            logFunc('called. number=%s, old=%s', number, self.number)
        self.numberSet = True
        self.number = number

    def requestEntity(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-entity').debug3Func():
            logFunc('called. requested=%s', requested)
        self.entityRequested = requested
        self.entitySet = False

    def isEntityRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-entity-requested').debug3Func():
            logFunc('called. requested=%s', self.entityRequested)
        return self.entityRequested

    def getEntity(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-entity').debug3Func():
            logFunc('called. self.entitySet=%s, self.entity=%s',
                    self.entitySet, self.entity)
        if self.entitySet:
            return self.entity
        return None

    def hasEntity(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-entity').debug3Func():
            logFunc('called. self.entitySet=%s, self.entity=%s',
                    self.entitySet, self.entity)
        if self.entitySet:
            return True
        return False

    def setEntity(self, entity):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-entity').debug3Func():
            logFunc('called. entity=%s, old=%s', entity, self.entity)
        self.entitySet = True
        self.entity = entity

    def requestSource(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-source').debug3Func():
            logFunc('called. requested=%s', requested)
        self.sourceRequested = requested
        self.sourceSet = False

    def isSourceRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-source-requested').debug3Func():
            logFunc('called. requested=%s', self.sourceRequested)
        return self.sourceRequested

    def getSource(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-source').debug3Func():
            logFunc('called. self.sourceSet=%s, self.source=%s',
                    self.sourceSet, self.source)
        if self.sourceSet:
            return self.source
        return None

    def hasSource(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-source').debug3Func():
            logFunc('called. self.sourceSet=%s, self.source=%s',
                    self.sourceSet, self.source)
        if self.sourceSet:
            return True
        return False

    def setSource(self, source):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-source').debug3Func():
            logFunc('called. source=%s, old=%s', source, self.source)
        self.sourceSet = True
        self.source = source

    def requestSimulated(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-simulated').debug3Func():
            logFunc('called. requested=%s', requested)
        self.simulatedRequested = requested
        self.simulatedSet = False

    def isSimulatedRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-simulated-requested').debug3Func():
            logFunc('called. requested=%s', self.simulatedRequested)
        return self.simulatedRequested

    def getSimulated(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-simulated').debug3Func():
            logFunc('called. self.simulatedSet=%s, self.simulated=%s',
                    self.simulatedSet, self.simulated)
        if self.simulatedSet:
            return self.simulated
        return None

    def hasSimulated(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-simulated').debug3Func():
            logFunc('called. self.simulatedSet=%s, self.simulated=%s',
                    self.simulatedSet, self.simulated)
        if self.simulatedSet:
            return True
        return False

    def setSimulated(self, simulated):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-simulated').debug3Func():
            logFunc('called. simulated=%s, old=%s', simulated, self.simulated)
        self.simulatedSet = True
        self.simulated = simulated

    def requestName(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-name').debug3Func():
            logFunc('called. requested=%s', requested)
        self.nameRequested = requested
        self.nameSet = False

    def isNameRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-name-requested').debug3Func():
            logFunc('called. requested=%s', self.nameRequested)
        return self.nameRequested

    def getName(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-name').debug3Func():
            logFunc('called. self.nameSet=%s, self.name=%s', self.nameSet,
                    self.name)
        if self.nameSet:
            return self.name
        return None

    def hasName(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-name').debug3Func():
            logFunc('called. self.nameSet=%s, self.name=%s', self.nameSet,
                    self.name)
        if self.nameSet:
            return True
        return False

    def setName(self, name):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-name').debug3Func():
            logFunc('called. name=%s, old=%s', name, self.name)
        self.nameSet = True
        self.name = name

    def _clearAllReadData(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func():
            logFunc('called')

        self.description = 0
        self.descriptionSet = False

        self.severity = 0
        self.severitySet = False

        self.number = 0
        self.numberSet = False

        self.entity = 0
        self.entitySet = False

        self.source = 0
        self.sourceSet = False

        self.simulated = 0
        self.simulatedSet = False

        self.name = 0
        self.nameSet = False

    def _getSelfKeyPath(self, list, junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func():
            logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()

        ancestorVal = Value()
        ancestorVal.setInt64(list)
        keyPath.addKeyPathPrefix(ancestorVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("list",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms",
             "qt-sys-alarms"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("alarms",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms",
             "qt-sys-alarms"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("system",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system",
             "qt-sys"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)

        for logFunc in self._log('get-self-key-path-done').debug3Func():
            logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite(self, list, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func():
            logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-fill-write-tag-value-failed').errorFunc():
                logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(list, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-collect-items-to-delete-failed').errorFunc():
                logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(list, None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext,
                                     itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc():
                logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func():
            logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead(self, list, readAllOrFail, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func():
            logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-fill-read-tag-value-failed').errorFunc():
                logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(list, None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc():
                logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-read-tag-values-failed').errorFunc():
                logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func():
            logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete(self, list, itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func():
            logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        for logFunc in self._log('collect-items-to-delete-done').debug3Func():
            logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        return ReturnCodes.kOk

    def _fillReadTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.isDescriptionRequested():
            valDescription = Value()
            valDescription.setEmpty()
            tagValueList.push((
                "description",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"
            ), valDescription)

        if self.isSeverityRequested():
            valSeverity = Value()
            valSeverity.setEmpty()
            tagValueList.push((
                "severity",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"
            ), valSeverity)

        if self.isNumberRequested():
            valNumber = Value()
            valNumber.setEmpty()
            tagValueList.push((
                "number",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"
            ), valNumber)

        if self.isEntityRequested():
            valEntity = Value()
            valEntity.setEmpty()
            tagValueList.push((
                "entity",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"
            ), valEntity)

        if self.isSourceRequested():
            valSource = Value()
            valSource.setEmpty()
            tagValueList.push((
                "source",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"
            ), valSource)

        if self.isSimulatedRequested():
            valSimulated = Value()
            valSimulated.setEmpty()
            tagValueList.push((
                "simulated",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"
            ), valSimulated)

        if self.isNameRequested():
            valName = Value()
            valName.setEmpty()
            tagValueList.push((
                "name",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"
            ), valName)

        return ReturnCodes.kOk

    def _readTagValues(self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func():
            logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func():
            logFunc('reading leaves. tagValueList=%s', tagValueList)

        if self.isDescriptionRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "description") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-description'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "description", "description",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-description-bad-value').infoFunc():
                    logFunc('description not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setDescription(tempVar)
            for logFunc in self._log(
                    'read-tag-values-description').debug3Func():
                logFunc('read description. description=%s, tempValue=%s',
                        self.description, tempValue.getType())

        if self.isSeverityRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "severity") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-severity'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "severity", "severity",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asEnum()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-severity-bad-value').infoFunc():
                    logFunc('severity not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setSeverity(tempVar)
            for logFunc in self._log('read-tag-values-severity').debug3Func():
                logFunc('read severity. severity=%s, tempValue=%s',
                        self.severity, tempValue.getType())

        if self.isNumberRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "number") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-number'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "number", "number",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-number-bad-value').infoFunc():
                    logFunc('number not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setNumber(tempVar)
            for logFunc in self._log('read-tag-values-number').debug3Func():
                logFunc('read number. number=%s, tempValue=%s', self.number,
                        tempValue.getType())

        if self.isEntityRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "entity") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-entity'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "entity", "entity",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-entity-bad-value').infoFunc():
                    logFunc('entity not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setEntity(tempVar)
            for logFunc in self._log('read-tag-values-entity').debug3Func():
                logFunc('read entity. entity=%s, tempValue=%s', self.entity,
                        tempValue.getType())

        if self.isSourceRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "source") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-source'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "source", "source",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-source-bad-value').infoFunc():
                    logFunc('source not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setSource(tempVar)
            for logFunc in self._log('read-tag-values-source').debug3Func():
                logFunc('read source. source=%s, tempValue=%s', self.source,
                        tempValue.getType())

        if self.isSimulatedRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "simulated") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-simulated'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "simulated", "simulated",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asBool()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-simulated-bad-value').infoFunc():
                    logFunc('simulated not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setSimulated(tempVar)
            for logFunc in self._log('read-tag-values-simulated').debug3Func():
                logFunc('read simulated. simulated=%s, tempValue=%s',
                        self.simulated, tempValue.getType())

        if self.isNameRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "name") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-name').errorFunc(
                        ):
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "name", "name",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asEnum()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-name-bad-value').infoFunc():
                    logFunc('name not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setName(tempVar)
            for logFunc in self._log('read-tag-values-name').debug3Func():
                logFunc('read name. name=%s, tempValue=%s', self.name,
                        tempValue.getType())

        for logFunc in self._log('read-tag-values-done').debug3Func():
            logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)
        return ReturnCodes.kOk
Example #14
0
class BlinkySummaryMaapi(SummaryMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-summary")
        self.domain = None

        

        
        self.errorCountRequested = False
        self.errorCount = None
        self.errorCountSet = False
        
        self.emergencyCountRequested = False
        self.emergencyCount = None
        self.emergencyCountSet = False
        
        self.highestSeverityRequested = False
        self.highestSeverity = None
        self.highestSeveritySet = False
        
        self.criticalCountRequested = False
        self.criticalCount = None
        self.criticalCountSet = False
        
        self.warningCountRequested = False
        self.warningCount = None
        self.warningCountSet = False
        
        self.alertCountRequested = False
        self.alertCount = None
        self.alertCountSet = False
        
        self.noticeCountRequested = False
        self.noticeCount = None
        self.noticeCountSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestErrorCount(True)
        
        self.requestEmergencyCount(True)
        
        self.requestHighestSeverity(True)
        
        self.requestCriticalCount(True)
        
        self.requestWarningCount(True)
        
        self.requestAlertCount(True)
        
        self.requestNoticeCount(True)
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestErrorCount(False)
        
        self.requestEmergencyCount(False)
        
        self.requestHighestSeverity(False)
        
        self.requestCriticalCount(False)
        
        self.requestWarningCount(False)
        
        self.requestAlertCount(False)
        
        self.requestNoticeCount(False)
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestErrorCount(True)
        
        self.requestEmergencyCount(True)
        
        self.requestHighestSeverity(True)
        
        self.requestCriticalCount(True)
        
        self.requestWarningCount(True)
        
        self.requestAlertCount(True)
        
        self.requestNoticeCount(True)
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestErrorCount(False)
        
        self.requestEmergencyCount(False)
        
        self.requestHighestSeverity(False)
        
        self.requestCriticalCount(False)
        
        self.requestWarningCount(False)
        
        self.requestAlertCount(False)
        
        self.requestNoticeCount(False)
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        

    def write (self
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(trxContext)

    def read (self
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(
                                  True,
                                  trxContext)



    def requestErrorCount (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-errorcount').debug3Func(): logFunc('called. requested=%s', requested)
        self.errorCountRequested = requested
        self.errorCountSet = False

    def isErrorCountRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-errorcount-requested').debug3Func(): logFunc('called. requested=%s', self.errorCountRequested)
        return self.errorCountRequested

    def getErrorCount (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-errorcount').debug3Func(): logFunc('called. self.errorCountSet=%s, self.errorCount=%s', self.errorCountSet, self.errorCount)
        if self.errorCountSet:
            return self.errorCount
        return None

    def hasErrorCount (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-errorcount').debug3Func(): logFunc('called. self.errorCountSet=%s, self.errorCount=%s', self.errorCountSet, self.errorCount)
        if self.errorCountSet:
            return True
        return False

    def setErrorCount (self, errorCount):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-errorcount').debug3Func(): logFunc('called. errorCount=%s, old=%s', errorCount, self.errorCount)
        self.errorCountSet = True
        self.errorCount = errorCount

    def requestEmergencyCount (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-emergencycount').debug3Func(): logFunc('called. requested=%s', requested)
        self.emergencyCountRequested = requested
        self.emergencyCountSet = False

    def isEmergencyCountRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-emergencycount-requested').debug3Func(): logFunc('called. requested=%s', self.emergencyCountRequested)
        return self.emergencyCountRequested

    def getEmergencyCount (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-emergencycount').debug3Func(): logFunc('called. self.emergencyCountSet=%s, self.emergencyCount=%s', self.emergencyCountSet, self.emergencyCount)
        if self.emergencyCountSet:
            return self.emergencyCount
        return None

    def hasEmergencyCount (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-emergencycount').debug3Func(): logFunc('called. self.emergencyCountSet=%s, self.emergencyCount=%s', self.emergencyCountSet, self.emergencyCount)
        if self.emergencyCountSet:
            return True
        return False

    def setEmergencyCount (self, emergencyCount):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-emergencycount').debug3Func(): logFunc('called. emergencyCount=%s, old=%s', emergencyCount, self.emergencyCount)
        self.emergencyCountSet = True
        self.emergencyCount = emergencyCount

    def requestHighestSeverity (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-highestseverity').debug3Func(): logFunc('called. requested=%s', requested)
        self.highestSeverityRequested = requested
        self.highestSeveritySet = False

    def isHighestSeverityRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-highestseverity-requested').debug3Func(): logFunc('called. requested=%s', self.highestSeverityRequested)
        return self.highestSeverityRequested

    def getHighestSeverity (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-highestseverity').debug3Func(): logFunc('called. self.highestSeveritySet=%s, self.highestSeverity=%s', self.highestSeveritySet, self.highestSeverity)
        if self.highestSeveritySet:
            return self.highestSeverity
        return None

    def hasHighestSeverity (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-highestseverity').debug3Func(): logFunc('called. self.highestSeveritySet=%s, self.highestSeverity=%s', self.highestSeveritySet, self.highestSeverity)
        if self.highestSeveritySet:
            return True
        return False

    def setHighestSeverity (self, highestSeverity):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-highestseverity').debug3Func(): logFunc('called. highestSeverity=%s, old=%s', highestSeverity, self.highestSeverity)
        self.highestSeveritySet = True
        self.highestSeverity = highestSeverity

    def requestCriticalCount (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-criticalcount').debug3Func(): logFunc('called. requested=%s', requested)
        self.criticalCountRequested = requested
        self.criticalCountSet = False

    def isCriticalCountRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-criticalcount-requested').debug3Func(): logFunc('called. requested=%s', self.criticalCountRequested)
        return self.criticalCountRequested

    def getCriticalCount (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-criticalcount').debug3Func(): logFunc('called. self.criticalCountSet=%s, self.criticalCount=%s', self.criticalCountSet, self.criticalCount)
        if self.criticalCountSet:
            return self.criticalCount
        return None

    def hasCriticalCount (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-criticalcount').debug3Func(): logFunc('called. self.criticalCountSet=%s, self.criticalCount=%s', self.criticalCountSet, self.criticalCount)
        if self.criticalCountSet:
            return True
        return False

    def setCriticalCount (self, criticalCount):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-criticalcount').debug3Func(): logFunc('called. criticalCount=%s, old=%s', criticalCount, self.criticalCount)
        self.criticalCountSet = True
        self.criticalCount = criticalCount

    def requestWarningCount (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-warningcount').debug3Func(): logFunc('called. requested=%s', requested)
        self.warningCountRequested = requested
        self.warningCountSet = False

    def isWarningCountRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-warningcount-requested').debug3Func(): logFunc('called. requested=%s', self.warningCountRequested)
        return self.warningCountRequested

    def getWarningCount (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-warningcount').debug3Func(): logFunc('called. self.warningCountSet=%s, self.warningCount=%s', self.warningCountSet, self.warningCount)
        if self.warningCountSet:
            return self.warningCount
        return None

    def hasWarningCount (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-warningcount').debug3Func(): logFunc('called. self.warningCountSet=%s, self.warningCount=%s', self.warningCountSet, self.warningCount)
        if self.warningCountSet:
            return True
        return False

    def setWarningCount (self, warningCount):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-warningcount').debug3Func(): logFunc('called. warningCount=%s, old=%s', warningCount, self.warningCount)
        self.warningCountSet = True
        self.warningCount = warningCount

    def requestAlertCount (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-alertcount').debug3Func(): logFunc('called. requested=%s', requested)
        self.alertCountRequested = requested
        self.alertCountSet = False

    def isAlertCountRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-alertcount-requested').debug3Func(): logFunc('called. requested=%s', self.alertCountRequested)
        return self.alertCountRequested

    def getAlertCount (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-alertcount').debug3Func(): logFunc('called. self.alertCountSet=%s, self.alertCount=%s', self.alertCountSet, self.alertCount)
        if self.alertCountSet:
            return self.alertCount
        return None

    def hasAlertCount (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-alertcount').debug3Func(): logFunc('called. self.alertCountSet=%s, self.alertCount=%s', self.alertCountSet, self.alertCount)
        if self.alertCountSet:
            return True
        return False

    def setAlertCount (self, alertCount):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-alertcount').debug3Func(): logFunc('called. alertCount=%s, old=%s', alertCount, self.alertCount)
        self.alertCountSet = True
        self.alertCount = alertCount

    def requestNoticeCount (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-noticecount').debug3Func(): logFunc('called. requested=%s', requested)
        self.noticeCountRequested = requested
        self.noticeCountSet = False

    def isNoticeCountRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-noticecount-requested').debug3Func(): logFunc('called. requested=%s', self.noticeCountRequested)
        return self.noticeCountRequested

    def getNoticeCount (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-noticecount').debug3Func(): logFunc('called. self.noticeCountSet=%s, self.noticeCount=%s', self.noticeCountSet, self.noticeCount)
        if self.noticeCountSet:
            return self.noticeCount
        return None

    def hasNoticeCount (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-noticecount').debug3Func(): logFunc('called. self.noticeCountSet=%s, self.noticeCount=%s', self.noticeCountSet, self.noticeCount)
        if self.noticeCountSet:
            return True
        return False

    def setNoticeCount (self, noticeCount):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-noticecount').debug3Func(): logFunc('called. noticeCount=%s, old=%s', noticeCount, self.noticeCount)
        self.noticeCountSet = True
        self.noticeCount = noticeCount


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.errorCount = 0
        self.errorCountSet = False
        
        self.emergencyCount = 0
        self.emergencyCountSet = False
        
        self.highestSeverity = 0
        self.highestSeveritySet = False
        
        self.criticalCount = 0
        self.criticalCountSet = False
        
        self.warningCount = 0
        self.warningCountSet = False
        
        self.alertCount = 0
        self.alertCountSet = False
        
        self.noticeCount = 0
        self.noticeCountSet = False
        

    def _getSelfKeyPath (self
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("summary", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms", "qt-sys-alarms"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("alarms", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms", "qt-sys-alarms"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("system", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system", "qt-sys"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isErrorCountRequested():
            valErrorCount = Value()
            valErrorCount.setEmpty()
            tagValueList.push(("error-count", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"), valErrorCount)
        
        if self.isEmergencyCountRequested():
            valEmergencyCount = Value()
            valEmergencyCount.setEmpty()
            tagValueList.push(("emergency-count", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"), valEmergencyCount)
        
        if self.isHighestSeverityRequested():
            valHighestSeverity = Value()
            valHighestSeverity.setEmpty()
            tagValueList.push(("highest-severity", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"), valHighestSeverity)
        
        if self.isCriticalCountRequested():
            valCriticalCount = Value()
            valCriticalCount.setEmpty()
            tagValueList.push(("critical-count", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"), valCriticalCount)
        
        if self.isWarningCountRequested():
            valWarningCount = Value()
            valWarningCount.setEmpty()
            tagValueList.push(("warning-count", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"), valWarningCount)
        
        if self.isAlertCountRequested():
            valAlertCount = Value()
            valAlertCount.setEmpty()
            tagValueList.push(("alert-count", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"), valAlertCount)
        
        if self.isNoticeCountRequested():
            valNoticeCount = Value()
            valNoticeCount.setEmpty()
            tagValueList.push(("notice-count", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"), valNoticeCount)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isErrorCountRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "error-count") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-errorcount').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "errorCount", "error-count", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-error-count-bad-value').infoFunc(): logFunc('errorCount not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setErrorCount(tempVar)
            for logFunc in self._log('read-tag-values-error-count').debug3Func(): logFunc('read errorCount. errorCount=%s, tempValue=%s', self.errorCount, tempValue.getType())
        
        if self.isEmergencyCountRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "emergency-count") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-emergencycount').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "emergencyCount", "emergency-count", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-emergency-count-bad-value').infoFunc(): logFunc('emergencyCount not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setEmergencyCount(tempVar)
            for logFunc in self._log('read-tag-values-emergency-count').debug3Func(): logFunc('read emergencyCount. emergencyCount=%s, tempValue=%s', self.emergencyCount, tempValue.getType())
        
        if self.isHighestSeverityRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "highest-severity") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-highestseverity').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "highestSeverity", "highest-severity", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asEnum()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-highest-severity-bad-value').infoFunc(): logFunc('highestSeverity not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setHighestSeverity(tempVar)
            for logFunc in self._log('read-tag-values-highest-severity').debug3Func(): logFunc('read highestSeverity. highestSeverity=%s, tempValue=%s', self.highestSeverity, tempValue.getType())
        
        if self.isCriticalCountRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "critical-count") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-criticalcount').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "criticalCount", "critical-count", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-critical-count-bad-value').infoFunc(): logFunc('criticalCount not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setCriticalCount(tempVar)
            for logFunc in self._log('read-tag-values-critical-count').debug3Func(): logFunc('read criticalCount. criticalCount=%s, tempValue=%s', self.criticalCount, tempValue.getType())
        
        if self.isWarningCountRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "warning-count") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-warningcount').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "warningCount", "warning-count", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-warning-count-bad-value').infoFunc(): logFunc('warningCount not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setWarningCount(tempVar)
            for logFunc in self._log('read-tag-values-warning-count').debug3Func(): logFunc('read warningCount. warningCount=%s, tempValue=%s', self.warningCount, tempValue.getType())
        
        if self.isAlertCountRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "alert-count") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-alertcount').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "alertCount", "alert-count", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-alert-count-bad-value').infoFunc(): logFunc('alertCount not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setAlertCount(tempVar)
            for logFunc in self._log('read-tag-values-alert-count').debug3Func(): logFunc('read alertCount. alertCount=%s, tempValue=%s', self.alertCount, tempValue.getType())
        
        if self.isNoticeCountRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "notice-count") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-noticecount').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "noticeCount", "notice-count", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system-alarms", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-notice-count-bad-value').infoFunc(): logFunc('noticeCount not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setNoticeCount(tempVar)
            for logFunc in self._log('read-tag-values-notice-count').debug3Func(): logFunc('read noticeCount. noticeCount=%s, tempValue=%s', self.noticeCount, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
Example #15
0
class BlinkyTimeoutsMaapi(TimeoutsMaapiBase):
    def __init__(self, logger):
        self.myInitGuard = InitGuard()
        self._log = logger.createLogger("sys-blinky-oper-example",
                                        "blinky-maapi-timeouts")
        self.domain = None

        self.getLogicalDiskStatusRequested = False
        self.getLogicalDiskStatus = None
        self.getLogicalDiskStatusSet = False

        self.getPhysicalStatusRequested = False
        self.getPhysicalStatus = None
        self.getPhysicalStatusSet = False

        self.activateLogicalDiskRequested = False
        self.activateLogicalDisk = None
        self.activateLogicalDiskSet = False

    def init(self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func():
            logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestGetLogicalDiskStatus(True)

        self.requestGetPhysicalStatus(True)

        self.requestActivateLogicalDisk(True)

    def requestConfig(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func():
            logFunc('called, PARAMS')

        self.requestGetLogicalDiskStatus(True)

        self.requestGetPhysicalStatus(True)

        self.requestActivateLogicalDisk(True)

    def requestOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestGetLogicalDiskStatus(False)

        self.requestGetPhysicalStatus(False)

        self.requestActivateLogicalDisk(False)

    def clearAllRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func():
            logFunc('called, PARAMS')

        self.requestGetLogicalDiskStatus(False)

        self.requestGetPhysicalStatus(False)

        self.requestActivateLogicalDisk(False)

    def clearAllSet(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func():
            logFunc('called, PARAMS')

        self.setGetLogicalDiskStatus(None)
        self.getLogicalDiskStatusSet = False

        self.setGetPhysicalStatus(None)
        self.getPhysicalStatusSet = False

        self.setActivateLogicalDisk(None)
        self.activateLogicalDiskSet = False

    def write(self, controller, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func():
            logFunc('called, PARAMS')
        return self._internalWrite(controller, trxContext)

    def read(self, controller, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(controller, False, trxContext)

    def readAllOrFail(self, controller, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(controller, True, trxContext)

    def requestGetLogicalDiskStatus(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-getlogicaldiskstatus').debug3Func():
            logFunc('called. requested=%s', requested)
        self.getLogicalDiskStatusRequested = requested
        self.getLogicalDiskStatusSet = False

    def isGetLogicalDiskStatusRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log(
                'is-getlogicaldiskstatus-requested').debug3Func():
            logFunc('called. requested=%s', self.getLogicalDiskStatusRequested)
        return self.getLogicalDiskStatusRequested

    def getGetLogicalDiskStatus(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-getlogicaldiskstatus').debug3Func():
            logFunc(
                'called. self.getLogicalDiskStatusSet=%s, self.getLogicalDiskStatus=%s',
                self.getLogicalDiskStatusSet, self.getLogicalDiskStatus)
        if self.getLogicalDiskStatusSet:
            return self.getLogicalDiskStatus
        return None

    def hasGetLogicalDiskStatus(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-getlogicaldiskstatus').debug3Func():
            logFunc(
                'called. self.getLogicalDiskStatusSet=%s, self.getLogicalDiskStatus=%s',
                self.getLogicalDiskStatusSet, self.getLogicalDiskStatus)
        if self.getLogicalDiskStatusSet:
            return True
        return False

    def setGetLogicalDiskStatus(self, getLogicalDiskStatus):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-getlogicaldiskstatus').debug3Func():
            logFunc('called. getLogicalDiskStatus=%s, old=%s',
                    getLogicalDiskStatus, self.getLogicalDiskStatus)
        self.getLogicalDiskStatusSet = True
        self.getLogicalDiskStatus = getLogicalDiskStatus

    def requestGetPhysicalStatus(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-getphysicalstatus').debug3Func():
            logFunc('called. requested=%s', requested)
        self.getPhysicalStatusRequested = requested
        self.getPhysicalStatusSet = False

    def isGetPhysicalStatusRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log(
                'is-getphysicalstatus-requested').debug3Func():
            logFunc('called. requested=%s', self.getPhysicalStatusRequested)
        return self.getPhysicalStatusRequested

    def getGetPhysicalStatus(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-getphysicalstatus').debug3Func():
            logFunc(
                'called. self.getPhysicalStatusSet=%s, self.getPhysicalStatus=%s',
                self.getPhysicalStatusSet, self.getPhysicalStatus)
        if self.getPhysicalStatusSet:
            return self.getPhysicalStatus
        return None

    def hasGetPhysicalStatus(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-getphysicalstatus').debug3Func():
            logFunc(
                'called. self.getPhysicalStatusSet=%s, self.getPhysicalStatus=%s',
                self.getPhysicalStatusSet, self.getPhysicalStatus)
        if self.getPhysicalStatusSet:
            return True
        return False

    def setGetPhysicalStatus(self, getPhysicalStatus):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-getphysicalstatus').debug3Func():
            logFunc('called. getPhysicalStatus=%s, old=%s', getPhysicalStatus,
                    self.getPhysicalStatus)
        self.getPhysicalStatusSet = True
        self.getPhysicalStatus = getPhysicalStatus

    def requestActivateLogicalDisk(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-activatelogicaldisk').debug3Func():
            logFunc('called. requested=%s', requested)
        self.activateLogicalDiskRequested = requested
        self.activateLogicalDiskSet = False

    def isActivateLogicalDiskRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log(
                'is-activatelogicaldisk-requested').debug3Func():
            logFunc('called. requested=%s', self.activateLogicalDiskRequested)
        return self.activateLogicalDiskRequested

    def getActivateLogicalDisk(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-activatelogicaldisk').debug3Func():
            logFunc(
                'called. self.activateLogicalDiskSet=%s, self.activateLogicalDisk=%s',
                self.activateLogicalDiskSet, self.activateLogicalDisk)
        if self.activateLogicalDiskSet:
            return self.activateLogicalDisk
        return None

    def hasActivateLogicalDisk(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-activatelogicaldisk').debug3Func():
            logFunc(
                'called. self.activateLogicalDiskSet=%s, self.activateLogicalDisk=%s',
                self.activateLogicalDiskSet, self.activateLogicalDisk)
        if self.activateLogicalDiskSet:
            return True
        return False

    def setActivateLogicalDisk(self, activateLogicalDisk):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-activatelogicaldisk').debug3Func():
            logFunc('called. activateLogicalDisk=%s, old=%s',
                    activateLogicalDisk, self.activateLogicalDisk)
        self.activateLogicalDiskSet = True
        self.activateLogicalDisk = activateLogicalDisk

    def _clearAllReadData(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func():
            logFunc('called')

        self.getLogicalDiskStatus = 0
        self.getLogicalDiskStatusSet = False

        self.getPhysicalStatus = 0
        self.getPhysicalStatusSet = False

        self.activateLogicalDisk = 0
        self.activateLogicalDiskSet = False

    def _getSelfKeyPath(self, controller, junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func():
            logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()

        xmlVal = Value()
        xmlVal.setXmlTag((
            "timeouts",
            "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller",
            "qt-strg-ctrl"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag((
            "system-defaults",
            "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller",
            "qt-strg-ctrl"))
        keyPath.addKeyPathPrefix(xmlVal)

        ancestorVal = Value()
        ancestorVal.setString(controller)
        keyPath.addKeyPathPrefix(ancestorVal)

        xmlVal = Value()
        xmlVal.setXmlTag((
            "controller",
            "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller",
            "qt-strg-ctrl"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("storage",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage",
             "qt-strg"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)

        for logFunc in self._log('get-self-key-path-done').debug3Func():
            logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite(self, controller, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func():
            logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-fill-write-tag-value-failed').errorFunc():
                logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(controller, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-collect-items-to-delete-failed').errorFunc():
                logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(controller, None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext,
                                     itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc():
                logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func():
            logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead(self, controller, readAllOrFail, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func():
            logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-fill-read-tag-value-failed').errorFunc():
                logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(controller, None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc():
                logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-read-tag-values-failed').errorFunc():
                logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func():
            logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete(self, controller, itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func():
            logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        for logFunc in self._log('collect-items-to-delete-done').debug3Func():
            logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.hasGetLogicalDiskStatus():
            valGetLogicalDiskStatus = Value()
            if self.getLogicalDiskStatus is not None:
                valGetLogicalDiskStatus.setInt64(self.getLogicalDiskStatus)
            else:
                valGetLogicalDiskStatus.setEmpty()
            tagValueList.push((
                "get-logical-disk-status",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller"
            ), valGetLogicalDiskStatus)

        if self.hasGetPhysicalStatus():
            valGetPhysicalStatus = Value()
            if self.getPhysicalStatus is not None:
                valGetPhysicalStatus.setInt64(self.getPhysicalStatus)
            else:
                valGetPhysicalStatus.setEmpty()
            tagValueList.push((
                "get-physical-status",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller"
            ), valGetPhysicalStatus)

        if self.hasActivateLogicalDisk():
            valActivateLogicalDisk = Value()
            if self.activateLogicalDisk is not None:
                valActivateLogicalDisk.setInt64(self.activateLogicalDisk)
            else:
                valActivateLogicalDisk.setEmpty()
            tagValueList.push((
                "activate-logical-disk",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller"
            ), valActivateLogicalDisk)

        return ReturnCodes.kOk

    def _fillReadTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.isGetLogicalDiskStatusRequested():
            valGetLogicalDiskStatus = Value()
            valGetLogicalDiskStatus.setEmpty()
            tagValueList.push((
                "get-logical-disk-status",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller"
            ), valGetLogicalDiskStatus)

        if self.isGetPhysicalStatusRequested():
            valGetPhysicalStatus = Value()
            valGetPhysicalStatus.setEmpty()
            tagValueList.push((
                "get-physical-status",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller"
            ), valGetPhysicalStatus)

        if self.isActivateLogicalDiskRequested():
            valActivateLogicalDisk = Value()
            valActivateLogicalDisk.setEmpty()
            tagValueList.push((
                "activate-logical-disk",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller"
            ), valActivateLogicalDisk)

        return ReturnCodes.kOk

    def _readTagValues(self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func():
            logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func():
            logFunc('reading leaves. tagValueList=%s', tagValueList)

        if self.isGetLogicalDiskStatusRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "get-logical-disk-status") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-getlogicaldiskstatus'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "getLogicalDiskStatus", "get-logical-disk-status",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-get-logical-disk-status-bad-value'
                ).infoFunc():
                    logFunc('getLogicalDiskStatus not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setGetLogicalDiskStatus(tempVar)
            for logFunc in self._log(
                    'read-tag-values-get-logical-disk-status').debug3Func():
                logFunc(
                    'read getLogicalDiskStatus. getLogicalDiskStatus=%s, tempValue=%s',
                    self.getLogicalDiskStatus, tempValue.getType())

        if self.isGetPhysicalStatusRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "get-physical-status") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-getphysicalstatus'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "getPhysicalStatus", "get-physical-status",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-get-physical-status-bad-value'
                ).infoFunc():
                    logFunc('getPhysicalStatus not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setGetPhysicalStatus(tempVar)
            for logFunc in self._log(
                    'read-tag-values-get-physical-status').debug3Func():
                logFunc(
                    'read getPhysicalStatus. getPhysicalStatus=%s, tempValue=%s',
                    self.getPhysicalStatus, tempValue.getType())

        if self.isActivateLogicalDiskRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "activate-logical-disk") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-activatelogicaldisk'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "activateLogicalDisk", "activate-logical-disk",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-controller",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-activate-logical-disk-bad-value'
                ).infoFunc():
                    logFunc('activateLogicalDisk not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setActivateLogicalDisk(tempVar)
            for logFunc in self._log(
                    'read-tag-values-activate-logical-disk').debug3Func():
                logFunc(
                    'read activateLogicalDisk. activateLogicalDisk=%s, tempValue=%s',
                    self.activateLogicalDisk, tempValue.getType())

        for logFunc in self._log('read-tag-values-done').debug3Func():
            logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)
        return ReturnCodes.kOk
Example #16
0
class BlinkyCountersMaapi(CountersMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-counters")
        self.domain = None

        

        
        self.silentDroppedPacketsRequested = False
        self.silentDroppedPackets = None
        self.silentDroppedPacketsSet = False
        
        self.inPacketsRequested = False
        self.inPackets = None
        self.inPacketsSet = False
        
        self.inBadVersionPacketsRequested = False
        self.inBadVersionPackets = None
        self.inBadVersionPacketsSet = False
        
        self.inBadCommunityUsePacketsRequested = False
        self.inBadCommunityUsePackets = None
        self.inBadCommunityUsePacketsSet = False
        
        self.inAsnParseErrorsRequested = False
        self.inAsnParseErrors = None
        self.inAsnParseErrorsSet = False
        
        self.inBadCommunityPacketsRequested = False
        self.inBadCommunityPackets = None
        self.inBadCommunityPacketsSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestSilentDroppedPackets(True)
        
        self.requestInPackets(True)
        
        self.requestInBadVersionPackets(True)
        
        self.requestInBadCommunityUsePackets(True)
        
        self.requestInAsnParseErrors(True)
        
        self.requestInBadCommunityPackets(True)
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestSilentDroppedPackets(False)
        
        self.requestInPackets(False)
        
        self.requestInBadVersionPackets(False)
        
        self.requestInBadCommunityUsePackets(False)
        
        self.requestInAsnParseErrors(False)
        
        self.requestInBadCommunityPackets(False)
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestSilentDroppedPackets(True)
        
        self.requestInPackets(True)
        
        self.requestInBadVersionPackets(True)
        
        self.requestInBadCommunityUsePackets(True)
        
        self.requestInAsnParseErrors(True)
        
        self.requestInBadCommunityPackets(True)
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestSilentDroppedPackets(False)
        
        self.requestInPackets(False)
        
        self.requestInBadVersionPackets(False)
        
        self.requestInBadCommunityUsePackets(False)
        
        self.requestInAsnParseErrors(False)
        
        self.requestInBadCommunityPackets(False)
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        

    def write (self
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(trxContext)

    def read (self
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(
                                  True,
                                  trxContext)



    def requestSilentDroppedPackets (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-silentdroppedpackets').debug3Func(): logFunc('called. requested=%s', requested)
        self.silentDroppedPacketsRequested = requested
        self.silentDroppedPacketsSet = False

    def isSilentDroppedPacketsRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-silentdroppedpackets-requested').debug3Func(): logFunc('called. requested=%s', self.silentDroppedPacketsRequested)
        return self.silentDroppedPacketsRequested

    def getSilentDroppedPackets (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-silentdroppedpackets').debug3Func(): logFunc('called. self.silentDroppedPacketsSet=%s, self.silentDroppedPackets=%s', self.silentDroppedPacketsSet, self.silentDroppedPackets)
        if self.silentDroppedPacketsSet:
            return self.silentDroppedPackets
        return None

    def hasSilentDroppedPackets (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-silentdroppedpackets').debug3Func(): logFunc('called. self.silentDroppedPacketsSet=%s, self.silentDroppedPackets=%s', self.silentDroppedPacketsSet, self.silentDroppedPackets)
        if self.silentDroppedPacketsSet:
            return True
        return False

    def setSilentDroppedPackets (self, silentDroppedPackets):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-silentdroppedpackets').debug3Func(): logFunc('called. silentDroppedPackets=%s, old=%s', silentDroppedPackets, self.silentDroppedPackets)
        self.silentDroppedPacketsSet = True
        self.silentDroppedPackets = silentDroppedPackets

    def requestInPackets (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-inpackets').debug3Func(): logFunc('called. requested=%s', requested)
        self.inPacketsRequested = requested
        self.inPacketsSet = False

    def isInPacketsRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-inpackets-requested').debug3Func(): logFunc('called. requested=%s', self.inPacketsRequested)
        return self.inPacketsRequested

    def getInPackets (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-inpackets').debug3Func(): logFunc('called. self.inPacketsSet=%s, self.inPackets=%s', self.inPacketsSet, self.inPackets)
        if self.inPacketsSet:
            return self.inPackets
        return None

    def hasInPackets (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-inpackets').debug3Func(): logFunc('called. self.inPacketsSet=%s, self.inPackets=%s', self.inPacketsSet, self.inPackets)
        if self.inPacketsSet:
            return True
        return False

    def setInPackets (self, inPackets):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-inpackets').debug3Func(): logFunc('called. inPackets=%s, old=%s', inPackets, self.inPackets)
        self.inPacketsSet = True
        self.inPackets = inPackets

    def requestInBadVersionPackets (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-inbadversionpackets').debug3Func(): logFunc('called. requested=%s', requested)
        self.inBadVersionPacketsRequested = requested
        self.inBadVersionPacketsSet = False

    def isInBadVersionPacketsRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-inbadversionpackets-requested').debug3Func(): logFunc('called. requested=%s', self.inBadVersionPacketsRequested)
        return self.inBadVersionPacketsRequested

    def getInBadVersionPackets (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-inbadversionpackets').debug3Func(): logFunc('called. self.inBadVersionPacketsSet=%s, self.inBadVersionPackets=%s', self.inBadVersionPacketsSet, self.inBadVersionPackets)
        if self.inBadVersionPacketsSet:
            return self.inBadVersionPackets
        return None

    def hasInBadVersionPackets (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-inbadversionpackets').debug3Func(): logFunc('called. self.inBadVersionPacketsSet=%s, self.inBadVersionPackets=%s', self.inBadVersionPacketsSet, self.inBadVersionPackets)
        if self.inBadVersionPacketsSet:
            return True
        return False

    def setInBadVersionPackets (self, inBadVersionPackets):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-inbadversionpackets').debug3Func(): logFunc('called. inBadVersionPackets=%s, old=%s', inBadVersionPackets, self.inBadVersionPackets)
        self.inBadVersionPacketsSet = True
        self.inBadVersionPackets = inBadVersionPackets

    def requestInBadCommunityUsePackets (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-inbadcommunityusepackets').debug3Func(): logFunc('called. requested=%s', requested)
        self.inBadCommunityUsePacketsRequested = requested
        self.inBadCommunityUsePacketsSet = False

    def isInBadCommunityUsePacketsRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-inbadcommunityusepackets-requested').debug3Func(): logFunc('called. requested=%s', self.inBadCommunityUsePacketsRequested)
        return self.inBadCommunityUsePacketsRequested

    def getInBadCommunityUsePackets (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-inbadcommunityusepackets').debug3Func(): logFunc('called. self.inBadCommunityUsePacketsSet=%s, self.inBadCommunityUsePackets=%s', self.inBadCommunityUsePacketsSet, self.inBadCommunityUsePackets)
        if self.inBadCommunityUsePacketsSet:
            return self.inBadCommunityUsePackets
        return None

    def hasInBadCommunityUsePackets (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-inbadcommunityusepackets').debug3Func(): logFunc('called. self.inBadCommunityUsePacketsSet=%s, self.inBadCommunityUsePackets=%s', self.inBadCommunityUsePacketsSet, self.inBadCommunityUsePackets)
        if self.inBadCommunityUsePacketsSet:
            return True
        return False

    def setInBadCommunityUsePackets (self, inBadCommunityUsePackets):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-inbadcommunityusepackets').debug3Func(): logFunc('called. inBadCommunityUsePackets=%s, old=%s', inBadCommunityUsePackets, self.inBadCommunityUsePackets)
        self.inBadCommunityUsePacketsSet = True
        self.inBadCommunityUsePackets = inBadCommunityUsePackets

    def requestInAsnParseErrors (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-inasnparseerrors').debug3Func(): logFunc('called. requested=%s', requested)
        self.inAsnParseErrorsRequested = requested
        self.inAsnParseErrorsSet = False

    def isInAsnParseErrorsRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-inasnparseerrors-requested').debug3Func(): logFunc('called. requested=%s', self.inAsnParseErrorsRequested)
        return self.inAsnParseErrorsRequested

    def getInAsnParseErrors (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-inasnparseerrors').debug3Func(): logFunc('called. self.inAsnParseErrorsSet=%s, self.inAsnParseErrors=%s', self.inAsnParseErrorsSet, self.inAsnParseErrors)
        if self.inAsnParseErrorsSet:
            return self.inAsnParseErrors
        return None

    def hasInAsnParseErrors (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-inasnparseerrors').debug3Func(): logFunc('called. self.inAsnParseErrorsSet=%s, self.inAsnParseErrors=%s', self.inAsnParseErrorsSet, self.inAsnParseErrors)
        if self.inAsnParseErrorsSet:
            return True
        return False

    def setInAsnParseErrors (self, inAsnParseErrors):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-inasnparseerrors').debug3Func(): logFunc('called. inAsnParseErrors=%s, old=%s', inAsnParseErrors, self.inAsnParseErrors)
        self.inAsnParseErrorsSet = True
        self.inAsnParseErrors = inAsnParseErrors

    def requestInBadCommunityPackets (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-inbadcommunitypackets').debug3Func(): logFunc('called. requested=%s', requested)
        self.inBadCommunityPacketsRequested = requested
        self.inBadCommunityPacketsSet = False

    def isInBadCommunityPacketsRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-inbadcommunitypackets-requested').debug3Func(): logFunc('called. requested=%s', self.inBadCommunityPacketsRequested)
        return self.inBadCommunityPacketsRequested

    def getInBadCommunityPackets (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-inbadcommunitypackets').debug3Func(): logFunc('called. self.inBadCommunityPacketsSet=%s, self.inBadCommunityPackets=%s', self.inBadCommunityPacketsSet, self.inBadCommunityPackets)
        if self.inBadCommunityPacketsSet:
            return self.inBadCommunityPackets
        return None

    def hasInBadCommunityPackets (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-inbadcommunitypackets').debug3Func(): logFunc('called. self.inBadCommunityPacketsSet=%s, self.inBadCommunityPackets=%s', self.inBadCommunityPacketsSet, self.inBadCommunityPackets)
        if self.inBadCommunityPacketsSet:
            return True
        return False

    def setInBadCommunityPackets (self, inBadCommunityPackets):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-inbadcommunitypackets').debug3Func(): logFunc('called. inBadCommunityPackets=%s, old=%s', inBadCommunityPackets, self.inBadCommunityPackets)
        self.inBadCommunityPacketsSet = True
        self.inBadCommunityPackets = inBadCommunityPackets


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.silentDroppedPackets = 0
        self.silentDroppedPacketsSet = False
        
        self.inPackets = 0
        self.inPacketsSet = False
        
        self.inBadVersionPackets = 0
        self.inBadVersionPacketsSet = False
        
        self.inBadCommunityUsePackets = 0
        self.inBadCommunityUsePacketsSet = False
        
        self.inAsnParseErrors = 0
        self.inAsnParseErrorsSet = False
        
        self.inBadCommunityPackets = 0
        self.inBadCommunityPacketsSet = False
        

    def _getSelfKeyPath (self
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("counters", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp", "qt-snmp"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("snmp", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp", "qt-snmp"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isSilentDroppedPacketsRequested():
            valSilentDroppedPackets = Value()
            valSilentDroppedPackets.setEmpty()
            tagValueList.push(("silent-dropped-packets", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp"), valSilentDroppedPackets)
        
        if self.isInPacketsRequested():
            valInPackets = Value()
            valInPackets.setEmpty()
            tagValueList.push(("in-packets", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp"), valInPackets)
        
        if self.isInBadVersionPacketsRequested():
            valInBadVersionPackets = Value()
            valInBadVersionPackets.setEmpty()
            tagValueList.push(("in-bad-version-packets", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp"), valInBadVersionPackets)
        
        if self.isInBadCommunityUsePacketsRequested():
            valInBadCommunityUsePackets = Value()
            valInBadCommunityUsePackets.setEmpty()
            tagValueList.push(("in-bad-community-use-packets", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp"), valInBadCommunityUsePackets)
        
        if self.isInAsnParseErrorsRequested():
            valInAsnParseErrors = Value()
            valInAsnParseErrors.setEmpty()
            tagValueList.push(("in-asn-parse-errors", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp"), valInAsnParseErrors)
        
        if self.isInBadCommunityPacketsRequested():
            valInBadCommunityPackets = Value()
            valInBadCommunityPackets.setEmpty()
            tagValueList.push(("in-bad-community-packets", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp"), valInBadCommunityPackets)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isSilentDroppedPacketsRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "silent-dropped-packets") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-silentdroppedpackets').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "silentDroppedPackets", "silent-dropped-packets", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-silent-dropped-packets-bad-value').infoFunc(): logFunc('silentDroppedPackets not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setSilentDroppedPackets(tempVar)
            for logFunc in self._log('read-tag-values-silent-dropped-packets').debug3Func(): logFunc('read silentDroppedPackets. silentDroppedPackets=%s, tempValue=%s', self.silentDroppedPackets, tempValue.getType())
        
        if self.isInPacketsRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "in-packets") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-inpackets').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "inPackets", "in-packets", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-in-packets-bad-value').infoFunc(): logFunc('inPackets not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setInPackets(tempVar)
            for logFunc in self._log('read-tag-values-in-packets').debug3Func(): logFunc('read inPackets. inPackets=%s, tempValue=%s', self.inPackets, tempValue.getType())
        
        if self.isInBadVersionPacketsRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "in-bad-version-packets") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-inbadversionpackets').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "inBadVersionPackets", "in-bad-version-packets", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-in-bad-version-packets-bad-value').infoFunc(): logFunc('inBadVersionPackets not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setInBadVersionPackets(tempVar)
            for logFunc in self._log('read-tag-values-in-bad-version-packets').debug3Func(): logFunc('read inBadVersionPackets. inBadVersionPackets=%s, tempValue=%s', self.inBadVersionPackets, tempValue.getType())
        
        if self.isInBadCommunityUsePacketsRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "in-bad-community-use-packets") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-inbadcommunityusepackets').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "inBadCommunityUsePackets", "in-bad-community-use-packets", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-in-bad-community-use-packets-bad-value').infoFunc(): logFunc('inBadCommunityUsePackets not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setInBadCommunityUsePackets(tempVar)
            for logFunc in self._log('read-tag-values-in-bad-community-use-packets').debug3Func(): logFunc('read inBadCommunityUsePackets. inBadCommunityUsePackets=%s, tempValue=%s', self.inBadCommunityUsePackets, tempValue.getType())
        
        if self.isInAsnParseErrorsRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "in-asn-parse-errors") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-inasnparseerrors').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "inAsnParseErrors", "in-asn-parse-errors", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-in-asn-parse-errors-bad-value').infoFunc(): logFunc('inAsnParseErrors not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setInAsnParseErrors(tempVar)
            for logFunc in self._log('read-tag-values-in-asn-parse-errors').debug3Func(): logFunc('read inAsnParseErrors. inAsnParseErrors=%s, tempValue=%s', self.inAsnParseErrors, tempValue.getType())
        
        if self.isInBadCommunityPacketsRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "in-bad-community-packets") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-inbadcommunitypackets').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "inBadCommunityPackets", "in-bad-community-packets", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-snmp", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-in-bad-community-packets-bad-value').infoFunc(): logFunc('inBadCommunityPackets not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setInBadCommunityPackets(tempVar)
            for logFunc in self._log('read-tag-values-in-bad-community-packets').debug3Func(): logFunc('read inBadCommunityPackets. inBadCommunityPackets=%s, tempValue=%s', self.inBadCommunityPackets, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
Example #17
0
class BlinkyStatusMaapi(StatusMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-status")
        self.domain = None

        

        
        self.applicationEntryCountRequested = False
        self.applicationEntryCount = None
        self.applicationEntryCountSet = False
        
        self.concurrentRequestsRequested = False
        self.concurrentRequests = None
        self.concurrentRequestsSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestApplicationEntryCount(True)
        
        self.requestConcurrentRequests(True)
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestApplicationEntryCount(False)
        
        self.requestConcurrentRequests(False)
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestApplicationEntryCount(True)
        
        self.requestConcurrentRequests(True)
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestApplicationEntryCount(False)
        
        self.requestConcurrentRequests(False)
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        

    def write (self
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(trxContext)

    def read (self
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(
                                  True,
                                  trxContext)



    def requestApplicationEntryCount (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-applicationentrycount').debug3Func(): logFunc('called. requested=%s', requested)
        self.applicationEntryCountRequested = requested
        self.applicationEntryCountSet = False

    def isApplicationEntryCountRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-applicationentrycount-requested').debug3Func(): logFunc('called. requested=%s', self.applicationEntryCountRequested)
        return self.applicationEntryCountRequested

    def getApplicationEntryCount (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-applicationentrycount').debug3Func(): logFunc('called. self.applicationEntryCountSet=%s, self.applicationEntryCount=%s', self.applicationEntryCountSet, self.applicationEntryCount)
        if self.applicationEntryCountSet:
            return self.applicationEntryCount
        return None

    def hasApplicationEntryCount (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-applicationentrycount').debug3Func(): logFunc('called. self.applicationEntryCountSet=%s, self.applicationEntryCount=%s', self.applicationEntryCountSet, self.applicationEntryCount)
        if self.applicationEntryCountSet:
            return True
        return False

    def setApplicationEntryCount (self, applicationEntryCount):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-applicationentrycount').debug3Func(): logFunc('called. applicationEntryCount=%s, old=%s', applicationEntryCount, self.applicationEntryCount)
        self.applicationEntryCountSet = True
        self.applicationEntryCount = applicationEntryCount

    def requestConcurrentRequests (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-concurrentrequests').debug3Func(): logFunc('called. requested=%s', requested)
        self.concurrentRequestsRequested = requested
        self.concurrentRequestsSet = False

    def isConcurrentRequestsRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-concurrentrequests-requested').debug3Func(): logFunc('called. requested=%s', self.concurrentRequestsRequested)
        return self.concurrentRequestsRequested

    def getConcurrentRequests (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-concurrentrequests').debug3Func(): logFunc('called. self.concurrentRequestsSet=%s, self.concurrentRequests=%s', self.concurrentRequestsSet, self.concurrentRequests)
        if self.concurrentRequestsSet:
            return self.concurrentRequests
        return None

    def hasConcurrentRequests (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-concurrentrequests').debug3Func(): logFunc('called. self.concurrentRequestsSet=%s, self.concurrentRequests=%s', self.concurrentRequestsSet, self.concurrentRequests)
        if self.concurrentRequestsSet:
            return True
        return False

    def setConcurrentRequests (self, concurrentRequests):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-concurrentrequests').debug3Func(): logFunc('called. concurrentRequests=%s, old=%s', concurrentRequests, self.concurrentRequests)
        self.concurrentRequestsSet = True
        self.concurrentRequests = concurrentRequests


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.applicationEntryCount = 0
        self.applicationEntryCountSet = False
        
        self.concurrentRequests = 0
        self.concurrentRequestsSet = False
        

    def _getSelfKeyPath (self
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("status", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-network-ipv6", "qt-net-ip6"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("application-initiated-discovery", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-network-ipv6", "qt-net-ip6"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("neighbors", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-network-ipv6", "qt-net-ip6"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("ipv6", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-network-ipv6", "qt-net-ip6"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("network", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-network", "qt-net"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isApplicationEntryCountRequested():
            valApplicationEntryCount = Value()
            valApplicationEntryCount.setEmpty()
            tagValueList.push(("application-entry-count", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-network-ipv6"), valApplicationEntryCount)
        
        if self.isConcurrentRequestsRequested():
            valConcurrentRequests = Value()
            valConcurrentRequests.setEmpty()
            tagValueList.push(("concurrent-requests", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-network-ipv6"), valConcurrentRequests)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isApplicationEntryCountRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "application-entry-count") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-network-ipv6"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-applicationentrycount').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "applicationEntryCount", "application-entry-count", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-network-ipv6", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-application-entry-count-bad-value').infoFunc(): logFunc('applicationEntryCount not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setApplicationEntryCount(tempVar)
            for logFunc in self._log('read-tag-values-application-entry-count').debug3Func(): logFunc('read applicationEntryCount. applicationEntryCount=%s, tempValue=%s', self.applicationEntryCount, tempValue.getType())
        
        if self.isConcurrentRequestsRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "concurrent-requests") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-network-ipv6"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-concurrentrequests').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "concurrentRequests", "concurrent-requests", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-network-ipv6", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-concurrent-requests-bad-value').infoFunc(): logFunc('concurrentRequests not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setConcurrentRequests(tempVar)
            for logFunc in self._log('read-tag-values-concurrent-requests').debug3Func(): logFunc('read concurrentRequests. concurrentRequests=%s, tempValue=%s', self.concurrentRequests, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
Example #18
0
class BlinkyStatusMaapi(StatusMaapiBase):
    def __init__(self, logger):
        self.myInitGuard = InitGuard()
        self._log = logger.createLogger("sys-blinky-oper-example",
                                        "blinky-maapi-status")
        self.domain = None

        self.uuidRequested = False
        self.uuid = None
        self.uuidSet = False

        self.operationalStatusRequested = False
        self.operationalStatus = None
        self.operationalStatusSet = False

        self.fileSystemTypeRawRequested = False
        self.fileSystemTypeRaw = None
        self.fileSystemTypeRawSet = False

        self.fileSystemTypeRequested = False
        self.fileSystemType = None
        self.fileSystemTypeSet = False

        self.expectedUuidRequested = False
        self.expectedUuid = None
        self.expectedUuidSet = False

        self.operationalStatusReasonRequested = False
        self.operationalStatusReason = None
        self.operationalStatusReasonSet = False

    def init(self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func():
            logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestUuid(True)

        self.requestOperationalStatus(True)

        self.requestFileSystemTypeRaw(True)

        self.requestFileSystemType(True)

        self.requestExpectedUuid(True)

        self.requestOperationalStatusReason(True)

    def requestConfig(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func():
            logFunc('called, PARAMS')

        self.requestUuid(False)

        self.requestOperationalStatus(False)

        self.requestFileSystemTypeRaw(False)

        self.requestFileSystemType(False)

        self.requestExpectedUuid(False)

        self.requestOperationalStatusReason(False)

    def requestOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestUuid(True)

        self.requestOperationalStatus(True)

        self.requestFileSystemTypeRaw(True)

        self.requestFileSystemType(True)

        self.requestExpectedUuid(True)

        self.requestOperationalStatusReason(True)

    def clearAllRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func():
            logFunc('called, PARAMS')

        self.requestUuid(False)

        self.requestOperationalStatus(False)

        self.requestFileSystemTypeRaw(False)

        self.requestFileSystemType(False)

        self.requestExpectedUuid(False)

        self.requestOperationalStatusReason(False)

    def clearAllSet(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func():
            logFunc('called, PARAMS')

    def write(self, disk, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func():
            logFunc('called, PARAMS')
        return self._internalWrite(disk, trxContext)

    def read(self, disk, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(disk, False, trxContext)

    def readAllOrFail(self, disk, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(disk, True, trxContext)

    def requestUuid(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-uuid').debug3Func():
            logFunc('called. requested=%s', requested)
        self.uuidRequested = requested
        self.uuidSet = False

    def isUuidRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-uuid-requested').debug3Func():
            logFunc('called. requested=%s', self.uuidRequested)
        return self.uuidRequested

    def getUuid(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-uuid').debug3Func():
            logFunc('called. self.uuidSet=%s, self.uuid=%s', self.uuidSet,
                    self.uuid)
        if self.uuidSet:
            return self.uuid
        return None

    def hasUuid(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-uuid').debug3Func():
            logFunc('called. self.uuidSet=%s, self.uuid=%s', self.uuidSet,
                    self.uuid)
        if self.uuidSet:
            return True
        return False

    def setUuid(self, uuid):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-uuid').debug3Func():
            logFunc('called. uuid=%s, old=%s', uuid, self.uuid)
        self.uuidSet = True
        self.uuid = uuid

    def requestOperationalStatus(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-operationalstatus').debug3Func():
            logFunc('called. requested=%s', requested)
        self.operationalStatusRequested = requested
        self.operationalStatusSet = False

    def isOperationalStatusRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log(
                'is-operationalstatus-requested').debug3Func():
            logFunc('called. requested=%s', self.operationalStatusRequested)
        return self.operationalStatusRequested

    def getOperationalStatus(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-operationalstatus').debug3Func():
            logFunc(
                'called. self.operationalStatusSet=%s, self.operationalStatus=%s',
                self.operationalStatusSet, self.operationalStatus)
        if self.operationalStatusSet:
            return self.operationalStatus
        return None

    def hasOperationalStatus(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-operationalstatus').debug3Func():
            logFunc(
                'called. self.operationalStatusSet=%s, self.operationalStatus=%s',
                self.operationalStatusSet, self.operationalStatus)
        if self.operationalStatusSet:
            return True
        return False

    def setOperationalStatus(self, operationalStatus):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-operationalstatus').debug3Func():
            logFunc('called. operationalStatus=%s, old=%s', operationalStatus,
                    self.operationalStatus)
        self.operationalStatusSet = True
        self.operationalStatus = operationalStatus

    def requestFileSystemTypeRaw(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-filesystemtyperaw').debug3Func():
            logFunc('called. requested=%s', requested)
        self.fileSystemTypeRawRequested = requested
        self.fileSystemTypeRawSet = False

    def isFileSystemTypeRawRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log(
                'is-filesystemtyperaw-requested').debug3Func():
            logFunc('called. requested=%s', self.fileSystemTypeRawRequested)
        return self.fileSystemTypeRawRequested

    def getFileSystemTypeRaw(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-filesystemtyperaw').debug3Func():
            logFunc(
                'called. self.fileSystemTypeRawSet=%s, self.fileSystemTypeRaw=%s',
                self.fileSystemTypeRawSet, self.fileSystemTypeRaw)
        if self.fileSystemTypeRawSet:
            return self.fileSystemTypeRaw
        return None

    def hasFileSystemTypeRaw(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-filesystemtyperaw').debug3Func():
            logFunc(
                'called. self.fileSystemTypeRawSet=%s, self.fileSystemTypeRaw=%s',
                self.fileSystemTypeRawSet, self.fileSystemTypeRaw)
        if self.fileSystemTypeRawSet:
            return True
        return False

    def setFileSystemTypeRaw(self, fileSystemTypeRaw):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-filesystemtyperaw').debug3Func():
            logFunc('called. fileSystemTypeRaw=%s, old=%s', fileSystemTypeRaw,
                    self.fileSystemTypeRaw)
        self.fileSystemTypeRawSet = True
        self.fileSystemTypeRaw = fileSystemTypeRaw

    def requestFileSystemType(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-filesystemtype').debug3Func():
            logFunc('called. requested=%s', requested)
        self.fileSystemTypeRequested = requested
        self.fileSystemTypeSet = False

    def isFileSystemTypeRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-filesystemtype-requested').debug3Func():
            logFunc('called. requested=%s', self.fileSystemTypeRequested)
        return self.fileSystemTypeRequested

    def getFileSystemType(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-filesystemtype').debug3Func():
            logFunc(
                'called. self.fileSystemTypeSet=%s, self.fileSystemType=%s',
                self.fileSystemTypeSet, self.fileSystemType)
        if self.fileSystemTypeSet:
            return self.fileSystemType
        return None

    def hasFileSystemType(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-filesystemtype').debug3Func():
            logFunc(
                'called. self.fileSystemTypeSet=%s, self.fileSystemType=%s',
                self.fileSystemTypeSet, self.fileSystemType)
        if self.fileSystemTypeSet:
            return True
        return False

    def setFileSystemType(self, fileSystemType):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-filesystemtype').debug3Func():
            logFunc('called. fileSystemType=%s, old=%s', fileSystemType,
                    self.fileSystemType)
        self.fileSystemTypeSet = True
        self.fileSystemType = fileSystemType

    def requestExpectedUuid(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-expecteduuid').debug3Func():
            logFunc('called. requested=%s', requested)
        self.expectedUuidRequested = requested
        self.expectedUuidSet = False

    def isExpectedUuidRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-expecteduuid-requested').debug3Func():
            logFunc('called. requested=%s', self.expectedUuidRequested)
        return self.expectedUuidRequested

    def getExpectedUuid(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-expecteduuid').debug3Func():
            logFunc('called. self.expectedUuidSet=%s, self.expectedUuid=%s',
                    self.expectedUuidSet, self.expectedUuid)
        if self.expectedUuidSet:
            return self.expectedUuid
        return None

    def hasExpectedUuid(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-expecteduuid').debug3Func():
            logFunc('called. self.expectedUuidSet=%s, self.expectedUuid=%s',
                    self.expectedUuidSet, self.expectedUuid)
        if self.expectedUuidSet:
            return True
        return False

    def setExpectedUuid(self, expectedUuid):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-expecteduuid').debug3Func():
            logFunc('called. expectedUuid=%s, old=%s', expectedUuid,
                    self.expectedUuid)
        self.expectedUuidSet = True
        self.expectedUuid = expectedUuid

    def requestOperationalStatusReason(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log(
                'request-operationalstatusreason').debug3Func():
            logFunc('called. requested=%s', requested)
        self.operationalStatusReasonRequested = requested
        self.operationalStatusReasonSet = False

    def isOperationalStatusReasonRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log(
                'is-operationalstatusreason-requested').debug3Func():
            logFunc('called. requested=%s',
                    self.operationalStatusReasonRequested)
        return self.operationalStatusReasonRequested

    def getOperationalStatusReason(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-operationalstatusreason').debug3Func():
            logFunc(
                'called. self.operationalStatusReasonSet=%s, self.operationalStatusReason=%s',
                self.operationalStatusReasonSet, self.operationalStatusReason)
        if self.operationalStatusReasonSet:
            return self.operationalStatusReason
        return None

    def hasOperationalStatusReason(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-operationalstatusreason').debug3Func():
            logFunc(
                'called. self.operationalStatusReasonSet=%s, self.operationalStatusReason=%s',
                self.operationalStatusReasonSet, self.operationalStatusReason)
        if self.operationalStatusReasonSet:
            return True
        return False

    def setOperationalStatusReason(self, operationalStatusReason):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-operationalstatusreason').debug3Func():
            logFunc('called. operationalStatusReason=%s, old=%s',
                    operationalStatusReason, self.operationalStatusReason)
        self.operationalStatusReasonSet = True
        self.operationalStatusReason = operationalStatusReason

    def _clearAllReadData(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func():
            logFunc('called')

        self.uuid = 0
        self.uuidSet = False

        self.operationalStatus = 0
        self.operationalStatusSet = False

        self.fileSystemTypeRaw = 0
        self.fileSystemTypeRawSet = False

        self.fileSystemType = 0
        self.fileSystemTypeSet = False

        self.expectedUuid = 0
        self.expectedUuidSet = False

        self.operationalStatusReason = 0
        self.operationalStatusReasonSet = False

    def _getSelfKeyPath(self, disk, junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func():
            logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("status",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk",
             "qt-strg-dsk"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("file-system",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk",
             "qt-strg-dsk"))
        keyPath.addKeyPathPrefix(xmlVal)

        ancestorVal = Value()
        ancestorVal.setString(disk)
        keyPath.addKeyPathPrefix(ancestorVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("disk",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk",
             "qt-strg-dsk"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("storage",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage",
             "qt-strg"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)

        for logFunc in self._log('get-self-key-path-done').debug3Func():
            logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite(self, disk, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func():
            logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-fill-write-tag-value-failed').errorFunc():
                logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(disk, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-collect-items-to-delete-failed').errorFunc():
                logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(disk, None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext,
                                     itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc():
                logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func():
            logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead(self, disk, readAllOrFail, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func():
            logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-fill-read-tag-value-failed').errorFunc():
                logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(disk, None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc():
                logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-read-tag-values-failed').errorFunc():
                logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func():
            logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete(self, disk, itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func():
            logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        for logFunc in self._log('collect-items-to-delete-done').debug3Func():
            logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        return ReturnCodes.kOk

    def _fillReadTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.isUuidRequested():
            valUuid = Value()
            valUuid.setEmpty()
            tagValueList.push(
                ("uuid",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"
                 ), valUuid)

        if self.isOperationalStatusRequested():
            valOperationalStatus = Value()
            valOperationalStatus.setEmpty()
            tagValueList.push(
                ("operational-status",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"
                 ), valOperationalStatus)

        if self.isFileSystemTypeRawRequested():
            valFileSystemTypeRaw = Value()
            valFileSystemTypeRaw.setEmpty()
            tagValueList.push(
                ("file-system-type-raw",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"
                 ), valFileSystemTypeRaw)

        if self.isFileSystemTypeRequested():
            valFileSystemType = Value()
            valFileSystemType.setEmpty()
            tagValueList.push(
                ("file-system-type",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"
                 ), valFileSystemType)

        if self.isExpectedUuidRequested():
            valExpectedUuid = Value()
            valExpectedUuid.setEmpty()
            tagValueList.push(
                ("expected-uuid",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"
                 ), valExpectedUuid)

        if self.isOperationalStatusReasonRequested():
            valOperationalStatusReason = Value()
            valOperationalStatusReason.setEmpty()
            tagValueList.push(
                ("operational-status-reason",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"
                 ), valOperationalStatusReason)

        return ReturnCodes.kOk

    def _readTagValues(self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func():
            logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func():
            logFunc('reading leaves. tagValueList=%s', tagValueList)

        if self.isUuidRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "uuid") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-uuid').errorFunc(
                        ):
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "uuid", "uuid",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-uuid-bad-value').infoFunc():
                    logFunc('uuid not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setUuid(tempVar)
            for logFunc in self._log('read-tag-values-uuid').debug3Func():
                logFunc('read uuid. uuid=%s, tempValue=%s', self.uuid,
                        tempValue.getType())

        if self.isOperationalStatusRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "operational-status") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-operationalstatus'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "operationalStatus", "operational-status",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asEnum()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-operational-status-bad-value'
                ).infoFunc():
                    logFunc('operationalStatus not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setOperationalStatus(tempVar)
            for logFunc in self._log(
                    'read-tag-values-operational-status').debug3Func():
                logFunc(
                    'read operationalStatus. operationalStatus=%s, tempValue=%s',
                    self.operationalStatus, tempValue.getType())

        if self.isFileSystemTypeRawRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "file-system-type-raw") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-filesystemtyperaw'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "fileSystemTypeRaw", "file-system-type-raw",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-file-system-type-raw-bad-value'
                ).infoFunc():
                    logFunc('fileSystemTypeRaw not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setFileSystemTypeRaw(tempVar)
            for logFunc in self._log(
                    'read-tag-values-file-system-type-raw').debug3Func():
                logFunc(
                    'read fileSystemTypeRaw. fileSystemTypeRaw=%s, tempValue=%s',
                    self.fileSystemTypeRaw, tempValue.getType())

        if self.isFileSystemTypeRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "file-system-type") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-filesystemtype'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "fileSystemType", "file-system-type",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asEnum()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-file-system-type-bad-value').infoFunc(
                        ):
                    logFunc('fileSystemType not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setFileSystemType(tempVar)
            for logFunc in self._log(
                    'read-tag-values-file-system-type').debug3Func():
                logFunc('read fileSystemType. fileSystemType=%s, tempValue=%s',
                        self.fileSystemType, tempValue.getType())

        if self.isExpectedUuidRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "expected-uuid") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-expecteduuid'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "expectedUuid", "expected-uuid",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-expected-uuid-bad-value').infoFunc():
                    logFunc('expectedUuid not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setExpectedUuid(tempVar)
            for logFunc in self._log(
                    'read-tag-values-expected-uuid').debug3Func():
                logFunc('read expectedUuid. expectedUuid=%s, tempValue=%s',
                        self.expectedUuid, tempValue.getType())

        if self.isOperationalStatusReasonRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "operational-status-reason") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-operationalstatusreason'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "operationalStatusReason", "operational-status-reason",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asEnum()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-operational-status-reason-bad-value'
                ).infoFunc():
                    logFunc('operationalStatusReason not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setOperationalStatusReason(tempVar)
            for logFunc in self._log(
                    'read-tag-values-operational-status-reason').debug3Func():
                logFunc(
                    'read operationalStatusReason. operationalStatusReason=%s, tempValue=%s',
                    self.operationalStatusReason, tempValue.getType())

        for logFunc in self._log('read-tag-values-done').debug3Func():
            logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)
        return ReturnCodes.kOk
class BlinkyTestGenerationUnderscoreMaapi(TestGenerationUnderscoreMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-testGenerationUnderscore")
        self.domain = None

        

        
        self.nameRequested = False
        self.name = None
        self.nameSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestName(True)
        
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestName(True)
        
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestName(False)
        
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestName(False)
        
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setName(None)
        self.nameSet = False
        
        

    def write (self
              , lake
              , fish_
              , testGenerationUnderscore
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(lake, fish_, testGenerationUnderscore, trxContext)

    def read (self
              , lake
              , fish_
              , testGenerationUnderscore
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(lake, fish_, testGenerationUnderscore, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , lake
                       , fish_
                       , testGenerationUnderscore
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(lake, fish_, testGenerationUnderscore, 
                                  True,
                                  trxContext)



    def requestName (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-name').debug3Func(): logFunc('called. requested=%s', requested)
        self.nameRequested = requested
        self.nameSet = False

    def isNameRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-name-requested').debug3Func(): logFunc('called. requested=%s', self.nameRequested)
        return self.nameRequested

    def getName (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-name').debug3Func(): logFunc('called. self.nameSet=%s, self.name=%s', self.nameSet, self.name)
        if self.nameSet:
            return self.name
        return None

    def hasName (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-name').debug3Func(): logFunc('called. self.nameSet=%s, self.name=%s', self.nameSet, self.name)
        if self.nameSet:
            return True
        return False

    def setName (self, name):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-name').debug3Func(): logFunc('called. name=%s, old=%s', name, self.name)
        self.nameSet = True
        self.name = name


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.name = 0
        self.nameSet = False
        

    def _getSelfKeyPath (self, lake
                         , fish_
                         , testGenerationUnderscore
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        ancestorVal = Value()
        ancestorVal.setString(testGenerationUnderscore);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("test-generation_underscore", "http://qwilt.com/model/lake-example", "lake-example"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(fish_);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("fish", "http://qwilt.com/model/lake-example", "lake-example"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(lake);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("lake", "http://qwilt.com/model/lake-example", "lake-example"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        lake, 
                        fish_, 
                        testGenerationUnderscore, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(lake, 
                                         fish_, 
                                         testGenerationUnderscore, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(lake, 
                                       fish_, 
                                       testGenerationUnderscore, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       lake, 
                       fish_, 
                       testGenerationUnderscore, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(lake, 
                                       fish_, 
                                       testGenerationUnderscore, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               lake, 
                               fish_, 
                               testGenerationUnderscore, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasName():
            valName = Value()
            if self.name is not None:
                valName.setString(self.name)
            else:
                valName.setEmpty()
            tagValueList.push(("name", "http://qwilt.com/model/lake-example"), valName)
        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isNameRequested():
            valName = Value()
            valName.setEmpty()
            tagValueList.push(("name", "http://qwilt.com/model/lake-example"), valName)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isNameRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "name") or \
                (ns != "http://qwilt.com/model/lake-example"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-name').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "name", "name", "http://qwilt.com/model/lake-example", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-name-bad-value').infoFunc(): logFunc('name not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setName(tempVar)
            for logFunc in self._log('read-tag-values-name').debug3Func(): logFunc('read name. name=%s, tempValue=%s', self.name, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
Example #20
0
class BlinkyAntennaMaapi(AntennaMaapiBase):
    def __init__(self, logger):
        self.myInitGuard = InitGuard()
        self._log = logger.createLogger("sys-blinky-oper-example",
                                        "blinky-maapi-antenna")
        self.domain = None

        self.partListObj = None

        self.heightRequested = False
        self.height = None
        self.heightSet = False

    def init(self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func():
            logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestHeight(True)

        if not self.partListObj:
            self.partListObj = self.newPartList()
            self.partListObj.requestConfigAndOper()

    def requestConfig(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func():
            logFunc('called, PARAMS')

        self.requestHeight(True)

        if not self.partListObj:
            self.partListObj = self.newPartList()
            self.partListObj.requestConfig()

    def requestOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestHeight(False)

        if not self.partListObj:
            self.partListObj = self.newPartList()
            self.partListObj.requestOper()

    def clearAllRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func():
            logFunc('called, PARAMS')

        self.requestHeight(False)

        if not self.partListObj:
            self.partListObj = self.newPartList()
            self.partListObj.clearAllRequested()

    def clearAllSet(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func():
            logFunc('called, PARAMS')

        self.setHeight(None)
        self.heightSet = False

        if self.partListObj:
            self.partListObj.clearAllSet()

    def write(self, table, fish_, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func():
            logFunc('called, PARAMS')
        return self._internalWrite(table, fish_, trxContext)

    def read(self, table, fish_, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(table, fish_, False, trxContext)

    def readAllOrFail(self, table, fish_, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(table, fish_, True, trxContext)

    def newPartList(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-partlist').debug3Func():
            logFunc('called.')
        partList = BlinkyPartMaapiList(self._log)
        partList.init(self.domain)
        return partList

    def setPartListObj(self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-partlist').debug3Func():
            logFunc('called. obj=%s', obj)
        self.partListObj = obj

    def getPartListObj(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-partlist').debug3Func():
            logFunc('called. self.partListObj=%s', self.partListObj)
        return self.partListObj

    def hasPartList(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-partlist').debug3Func():
            logFunc('called. self.partListObj=%s', self.partListObj)
        if self.partListObj:
            return True
        return False

    def requestHeight(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-height').debug3Func():
            logFunc('called. requested=%s', requested)
        self.heightRequested = requested
        self.heightSet = False

    def isHeightRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-height-requested').debug3Func():
            logFunc('called. requested=%s', self.heightRequested)
        return self.heightRequested

    def getHeight(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-height').debug3Func():
            logFunc('called. self.heightSet=%s, self.height=%s',
                    self.heightSet, self.height)
        if self.heightSet:
            return self.height
        return None

    def hasHeight(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-height').debug3Func():
            logFunc('called. self.heightSet=%s, self.height=%s',
                    self.heightSet, self.height)
        if self.heightSet:
            return True
        return False

    def setHeight(self, height):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-height').debug3Func():
            logFunc('called. height=%s, old=%s', height, self.height)
        self.heightSet = True
        self.height = height

    def _clearAllReadData(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func():
            logFunc('called')

        if self.partListObj:
            self.partListObj._clearAllReadData()

        self.height = 0
        self.heightSet = False

    def _getSelfKeyPath(self, table, fish_, junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func():
            logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()

        xmlVal = Value()
        xmlVal.setXmlTag(("antenna", "http://qwilt.com/model/room", "room"))
        keyPath.addKeyPathPrefix(xmlVal)

        ancestorVal = Value()
        ancestorVal.setString(fish_)
        keyPath.addKeyPathPrefix(ancestorVal)

        xmlVal = Value()
        xmlVal.setXmlTag(("fish", "http://qwilt.com/model/room", "room"))
        keyPath.addKeyPathPrefix(xmlVal)

        ancestorVal = Value()
        ancestorVal.setString(table)
        keyPath.addKeyPathPrefix(ancestorVal)

        xmlVal = Value()
        xmlVal.setXmlTag(("table", "http://qwilt.com/model/room", "room"))
        keyPath.addKeyPathPrefix(xmlVal)

        for logFunc in self._log('get-self-key-path-done').debug3Func():
            logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite(self, table, fish_, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func():
            logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-fill-write-tag-value-failed').errorFunc():
                logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(table, fish_, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-collect-items-to-delete-failed').errorFunc():
                logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(table, fish_, None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext,
                                     itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc():
                logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func():
            logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead(self, table, fish_, readAllOrFail, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func():
            logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-fill-read-tag-value-failed').errorFunc():
                logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(table, fish_, None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc():
                logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-read-tag-values-failed').errorFunc():
                logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func():
            logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete(self, table, fish_, itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func():
            logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        if self.partListObj:
            res = self.partListObj._collectItemsToDelete(
                table, fish_, itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'collect-items-to-delete-parts-failed').errorFunc():
                    logFunc(
                        'partListObj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError

        for logFunc in self._log('collect-items-to-delete-done').debug3Func():
            logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.hasHeight():
            valHeight = Value()
            if self.height is not None:
                valHeight.setInt64(self.height)
            else:
                valHeight.setEmpty()
            tagValueList.push(("height", "http://qwilt.com/model/room"),
                              valHeight)

        if self.partListObj:
            valBegin = Value()
            (tag, ns, prefix) = ("parts", "http://qwilt.com/model/room",
                                 "room")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.partListObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-write-tag-values-parts-failed').errorFunc():
                    logFunc('partListObj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        return ReturnCodes.kOk

    def _fillReadTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.isHeightRequested():
            valHeight = Value()
            valHeight.setEmpty()
            tagValueList.push(("height", "http://qwilt.com/model/room"),
                              valHeight)

        if self.partListObj:
            valBegin = Value()
            (tag, ns, prefix) = ("parts", "http://qwilt.com/model/room",
                                 "room")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.partListObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-read-tag-values-parts-failed').errorFunc():
                    logFunc('partListObj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        return ReturnCodes.kOk

    def _readTagValues(self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func():
            logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func():
            logFunc('reading leaves. tagValueList=%s', tagValueList)

        if self.isHeightRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "height") or \
                (ns != "http://qwilt.com/model/room"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-height'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "height", "height", "http://qwilt.com/model/room", tag,
                        ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-height-bad-value').infoFunc():
                    logFunc('height not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setHeight(tempVar)
            for logFunc in self._log('read-tag-values-height').debug3Func():
                logFunc('read height. height=%s, tempValue=%s', self.height,
                        tempValue.getType())

        if self.partListObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "parts") or \
                (ns != "http://qwilt.com/model/room") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-begin').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "parts", "http://qwilt.com/model/room",
                        Value.kXmlBegin, tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            res = self.partListObj._readTagValues(tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'read-tag-values-parts-failed').errorFunc():
                    logFunc(
                        'partListObj._readTagValues() failed. tagValueList=%s',
                        tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "parts") or \
                (ns != "http://qwilt.com/model/room") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-end').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "parts", "http://qwilt.com/model/room", Value.kXmlEnd,
                        tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

        for logFunc in self._log('read-tag-values-done').debug3Func():
            logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)
        return ReturnCodes.kOk
Example #21
0
class BlinkyArpMaapi(ArpMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-arp")
        self.domain = None

        

        
        self.testTimeoutMsecRequested = False
        self.testTimeoutMsec = None
        self.testTimeoutMsecSet = False
        
        self.testIntervalMsecRequested = False
        self.testIntervalMsec = None
        self.testIntervalMsecSet = False
        
        self.upPeriodRequested = False
        self.upPeriod = None
        self.upPeriodSet = False
        
        self.downPeriodRequested = False
        self.downPeriod = None
        self.downPeriodSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestTestTimeoutMsec(True)
        
        self.requestTestIntervalMsec(True)
        
        self.requestUpPeriod(True)
        
        self.requestDownPeriod(True)
        
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestTestTimeoutMsec(True)
        
        self.requestTestIntervalMsec(True)
        
        self.requestUpPeriod(True)
        
        self.requestDownPeriod(True)
        
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestTestTimeoutMsec(False)
        
        self.requestTestIntervalMsec(False)
        
        self.requestUpPeriod(False)
        
        self.requestDownPeriod(False)
        
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestTestTimeoutMsec(False)
        
        self.requestTestIntervalMsec(False)
        
        self.requestUpPeriod(False)
        
        self.requestDownPeriod(False)
        
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setTestTimeoutMsec(None)
        self.testTimeoutMsecSet = False
        
        self.setTestIntervalMsec(None)
        self.testIntervalMsecSet = False
        
        self.setUpPeriod(None)
        self.upPeriodSet = False
        
        self.setDownPeriod(None)
        self.downPeriodSet = False
        
        

    def write (self
              , interface
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(interface, trxContext)

    def read (self
              , interface
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(interface, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , interface
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(interface, 
                                  True,
                                  trxContext)



    def requestTestTimeoutMsec (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-testtimeoutmsec').debug3Func(): logFunc('called. requested=%s', requested)
        self.testTimeoutMsecRequested = requested
        self.testTimeoutMsecSet = False

    def isTestTimeoutMsecRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-testtimeoutmsec-requested').debug3Func(): logFunc('called. requested=%s', self.testTimeoutMsecRequested)
        return self.testTimeoutMsecRequested

    def getTestTimeoutMsec (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-testtimeoutmsec').debug3Func(): logFunc('called. self.testTimeoutMsecSet=%s, self.testTimeoutMsec=%s', self.testTimeoutMsecSet, self.testTimeoutMsec)
        if self.testTimeoutMsecSet:
            return self.testTimeoutMsec
        return None

    def hasTestTimeoutMsec (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-testtimeoutmsec').debug3Func(): logFunc('called. self.testTimeoutMsecSet=%s, self.testTimeoutMsec=%s', self.testTimeoutMsecSet, self.testTimeoutMsec)
        if self.testTimeoutMsecSet:
            return True
        return False

    def setTestTimeoutMsec (self, testTimeoutMsec):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-testtimeoutmsec').debug3Func(): logFunc('called. testTimeoutMsec=%s, old=%s', testTimeoutMsec, self.testTimeoutMsec)
        self.testTimeoutMsecSet = True
        self.testTimeoutMsec = testTimeoutMsec

    def requestTestIntervalMsec (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-testintervalmsec').debug3Func(): logFunc('called. requested=%s', requested)
        self.testIntervalMsecRequested = requested
        self.testIntervalMsecSet = False

    def isTestIntervalMsecRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-testintervalmsec-requested').debug3Func(): logFunc('called. requested=%s', self.testIntervalMsecRequested)
        return self.testIntervalMsecRequested

    def getTestIntervalMsec (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-testintervalmsec').debug3Func(): logFunc('called. self.testIntervalMsecSet=%s, self.testIntervalMsec=%s', self.testIntervalMsecSet, self.testIntervalMsec)
        if self.testIntervalMsecSet:
            return self.testIntervalMsec
        return None

    def hasTestIntervalMsec (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-testintervalmsec').debug3Func(): logFunc('called. self.testIntervalMsecSet=%s, self.testIntervalMsec=%s', self.testIntervalMsecSet, self.testIntervalMsec)
        if self.testIntervalMsecSet:
            return True
        return False

    def setTestIntervalMsec (self, testIntervalMsec):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-testintervalmsec').debug3Func(): logFunc('called. testIntervalMsec=%s, old=%s', testIntervalMsec, self.testIntervalMsec)
        self.testIntervalMsecSet = True
        self.testIntervalMsec = testIntervalMsec

    def requestUpPeriod (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-upperiod').debug3Func(): logFunc('called. requested=%s', requested)
        self.upPeriodRequested = requested
        self.upPeriodSet = False

    def isUpPeriodRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-upperiod-requested').debug3Func(): logFunc('called. requested=%s', self.upPeriodRequested)
        return self.upPeriodRequested

    def getUpPeriod (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-upperiod').debug3Func(): logFunc('called. self.upPeriodSet=%s, self.upPeriod=%s', self.upPeriodSet, self.upPeriod)
        if self.upPeriodSet:
            return self.upPeriod
        return None

    def hasUpPeriod (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-upperiod').debug3Func(): logFunc('called. self.upPeriodSet=%s, self.upPeriod=%s', self.upPeriodSet, self.upPeriod)
        if self.upPeriodSet:
            return True
        return False

    def setUpPeriod (self, upPeriod):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-upperiod').debug3Func(): logFunc('called. upPeriod=%s, old=%s', upPeriod, self.upPeriod)
        self.upPeriodSet = True
        self.upPeriod = upPeriod

    def requestDownPeriod (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-downperiod').debug3Func(): logFunc('called. requested=%s', requested)
        self.downPeriodRequested = requested
        self.downPeriodSet = False

    def isDownPeriodRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-downperiod-requested').debug3Func(): logFunc('called. requested=%s', self.downPeriodRequested)
        return self.downPeriodRequested

    def getDownPeriod (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-downperiod').debug3Func(): logFunc('called. self.downPeriodSet=%s, self.downPeriod=%s', self.downPeriodSet, self.downPeriod)
        if self.downPeriodSet:
            return self.downPeriod
        return None

    def hasDownPeriod (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-downperiod').debug3Func(): logFunc('called. self.downPeriodSet=%s, self.downPeriod=%s', self.downPeriodSet, self.downPeriod)
        if self.downPeriodSet:
            return True
        return False

    def setDownPeriod (self, downPeriod):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-downperiod').debug3Func(): logFunc('called. downPeriod=%s, old=%s', downPeriod, self.downPeriod)
        self.downPeriodSet = True
        self.downPeriod = downPeriod


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.testTimeoutMsec = 0
        self.testTimeoutMsecSet = False
        
        self.testIntervalMsec = 0
        self.testIntervalMsecSet = False
        
        self.upPeriod = 0
        self.upPeriodSet = False
        
        self.downPeriod = 0
        self.downPeriodSet = False
        

    def _getSelfKeyPath (self, interface
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("arp", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces", "qt-if"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("ipv4", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces", "qt-if"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("connectivity-check", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces", "qt-if"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(interface);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("interface", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces", "qt-if"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("interfaces", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces", "qt-if"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        interface, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(interface, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(interface, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       interface, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(interface, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               interface, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasTestTimeoutMsec():
            valTestTimeoutMsec = Value()
            if self.testTimeoutMsec is not None:
                valTestTimeoutMsec.setInt64(self.testTimeoutMsec)
            else:
                valTestTimeoutMsec.setEmpty()
            tagValueList.push(("test-timeout-msec", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"), valTestTimeoutMsec)
        
        if self.hasTestIntervalMsec():
            valTestIntervalMsec = Value()
            if self.testIntervalMsec is not None:
                valTestIntervalMsec.setInt64(self.testIntervalMsec)
            else:
                valTestIntervalMsec.setEmpty()
            tagValueList.push(("test-interval-msec", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"), valTestIntervalMsec)
        
        if self.hasUpPeriod():
            valUpPeriod = Value()
            if self.upPeriod is not None:
                valUpPeriod.setInt64(self.upPeriod)
            else:
                valUpPeriod.setEmpty()
            tagValueList.push(("up-period", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"), valUpPeriod)
        
        if self.hasDownPeriod():
            valDownPeriod = Value()
            if self.downPeriod is not None:
                valDownPeriod.setInt64(self.downPeriod)
            else:
                valDownPeriod.setEmpty()
            tagValueList.push(("down-period", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"), valDownPeriod)
        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isTestTimeoutMsecRequested():
            valTestTimeoutMsec = Value()
            valTestTimeoutMsec.setEmpty()
            tagValueList.push(("test-timeout-msec", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"), valTestTimeoutMsec)
        
        if self.isTestIntervalMsecRequested():
            valTestIntervalMsec = Value()
            valTestIntervalMsec.setEmpty()
            tagValueList.push(("test-interval-msec", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"), valTestIntervalMsec)
        
        if self.isUpPeriodRequested():
            valUpPeriod = Value()
            valUpPeriod.setEmpty()
            tagValueList.push(("up-period", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"), valUpPeriod)
        
        if self.isDownPeriodRequested():
            valDownPeriod = Value()
            valDownPeriod.setEmpty()
            tagValueList.push(("down-period", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"), valDownPeriod)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isTestTimeoutMsecRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "test-timeout-msec") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-testtimeoutmsec').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "testTimeoutMsec", "test-timeout-msec", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-test-timeout-msec-bad-value').infoFunc(): logFunc('testTimeoutMsec not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setTestTimeoutMsec(tempVar)
            for logFunc in self._log('read-tag-values-test-timeout-msec').debug3Func(): logFunc('read testTimeoutMsec. testTimeoutMsec=%s, tempValue=%s', self.testTimeoutMsec, tempValue.getType())
        
        if self.isTestIntervalMsecRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "test-interval-msec") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-testintervalmsec').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "testIntervalMsec", "test-interval-msec", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-test-interval-msec-bad-value').infoFunc(): logFunc('testIntervalMsec not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setTestIntervalMsec(tempVar)
            for logFunc in self._log('read-tag-values-test-interval-msec').debug3Func(): logFunc('read testIntervalMsec. testIntervalMsec=%s, tempValue=%s', self.testIntervalMsec, tempValue.getType())
        
        if self.isUpPeriodRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "up-period") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-upperiod').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "upPeriod", "up-period", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-up-period-bad-value').infoFunc(): logFunc('upPeriod not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setUpPeriod(tempVar)
            for logFunc in self._log('read-tag-values-up-period').debug3Func(): logFunc('read upPeriod. upPeriod=%s, tempValue=%s', self.upPeriod, tempValue.getType())
        
        if self.isDownPeriodRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "down-period") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-downperiod').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "downPeriod", "down-period", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-down-period-bad-value').infoFunc(): logFunc('downPeriod not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setDownPeriod(tempVar)
            for logFunc in self._log('read-tag-values-down-period').debug3Func(): logFunc('read downPeriod. downPeriod=%s, tempValue=%s', self.downPeriod, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
Example #22
0
class BlinkyCountersMaapi(CountersMaapiBase):
    def __init__(self, logger):
        self.myInitGuard = InitGuard()
        self._log = logger.createLogger("sys-blinky-oper-example",
                                        "blinky-maapi-counters")
        self.domain = None

        self.resultDownRequested = False
        self.resultDown = None
        self.resultDownSet = False

        self.resultUnknownRequested = False
        self.resultUnknown = None
        self.resultUnknownSet = False

        self.testsRequested = False
        self.tests = None
        self.testsSet = False

        self.resultUpRequested = False
        self.resultUp = None
        self.resultUpSet = False

    def init(self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func():
            logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestResultDown(True)

        self.requestResultUnknown(True)

        self.requestTests(True)

        self.requestResultUp(True)

    def requestConfig(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func():
            logFunc('called, PARAMS')

        self.requestResultDown(False)

        self.requestResultUnknown(False)

        self.requestTests(False)

        self.requestResultUp(False)

    def requestOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestResultDown(True)

        self.requestResultUnknown(True)

        self.requestTests(True)

        self.requestResultUp(True)

    def clearAllRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func():
            logFunc('called, PARAMS')

        self.requestResultDown(False)

        self.requestResultUnknown(False)

        self.requestTests(False)

        self.requestResultUp(False)

    def clearAllSet(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func():
            logFunc('called, PARAMS')

    def write(self, interface, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func():
            logFunc('called, PARAMS')
        return self._internalWrite(interface, trxContext)

    def read(self, interface, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(interface, False, trxContext)

    def readAllOrFail(self, interface, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(interface, True, trxContext)

    def requestResultDown(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-resultdown').debug3Func():
            logFunc('called. requested=%s', requested)
        self.resultDownRequested = requested
        self.resultDownSet = False

    def isResultDownRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-resultdown-requested').debug3Func():
            logFunc('called. requested=%s', self.resultDownRequested)
        return self.resultDownRequested

    def getResultDown(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-resultdown').debug3Func():
            logFunc('called. self.resultDownSet=%s, self.resultDown=%s',
                    self.resultDownSet, self.resultDown)
        if self.resultDownSet:
            return self.resultDown
        return None

    def hasResultDown(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-resultdown').debug3Func():
            logFunc('called. self.resultDownSet=%s, self.resultDown=%s',
                    self.resultDownSet, self.resultDown)
        if self.resultDownSet:
            return True
        return False

    def setResultDown(self, resultDown):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-resultdown').debug3Func():
            logFunc('called. resultDown=%s, old=%s', resultDown,
                    self.resultDown)
        self.resultDownSet = True
        self.resultDown = resultDown

    def requestResultUnknown(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-resultunknown').debug3Func():
            logFunc('called. requested=%s', requested)
        self.resultUnknownRequested = requested
        self.resultUnknownSet = False

    def isResultUnknownRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-resultunknown-requested').debug3Func():
            logFunc('called. requested=%s', self.resultUnknownRequested)
        return self.resultUnknownRequested

    def getResultUnknown(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-resultunknown').debug3Func():
            logFunc('called. self.resultUnknownSet=%s, self.resultUnknown=%s',
                    self.resultUnknownSet, self.resultUnknown)
        if self.resultUnknownSet:
            return self.resultUnknown
        return None

    def hasResultUnknown(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-resultunknown').debug3Func():
            logFunc('called. self.resultUnknownSet=%s, self.resultUnknown=%s',
                    self.resultUnknownSet, self.resultUnknown)
        if self.resultUnknownSet:
            return True
        return False

    def setResultUnknown(self, resultUnknown):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-resultunknown').debug3Func():
            logFunc('called. resultUnknown=%s, old=%s', resultUnknown,
                    self.resultUnknown)
        self.resultUnknownSet = True
        self.resultUnknown = resultUnknown

    def requestTests(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-tests').debug3Func():
            logFunc('called. requested=%s', requested)
        self.testsRequested = requested
        self.testsSet = False

    def isTestsRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-tests-requested').debug3Func():
            logFunc('called. requested=%s', self.testsRequested)
        return self.testsRequested

    def getTests(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-tests').debug3Func():
            logFunc('called. self.testsSet=%s, self.tests=%s', self.testsSet,
                    self.tests)
        if self.testsSet:
            return self.tests
        return None

    def hasTests(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-tests').debug3Func():
            logFunc('called. self.testsSet=%s, self.tests=%s', self.testsSet,
                    self.tests)
        if self.testsSet:
            return True
        return False

    def setTests(self, tests):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-tests').debug3Func():
            logFunc('called. tests=%s, old=%s', tests, self.tests)
        self.testsSet = True
        self.tests = tests

    def requestResultUp(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-resultup').debug3Func():
            logFunc('called. requested=%s', requested)
        self.resultUpRequested = requested
        self.resultUpSet = False

    def isResultUpRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-resultup-requested').debug3Func():
            logFunc('called. requested=%s', self.resultUpRequested)
        return self.resultUpRequested

    def getResultUp(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-resultup').debug3Func():
            logFunc('called. self.resultUpSet=%s, self.resultUp=%s',
                    self.resultUpSet, self.resultUp)
        if self.resultUpSet:
            return self.resultUp
        return None

    def hasResultUp(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-resultup').debug3Func():
            logFunc('called. self.resultUpSet=%s, self.resultUp=%s',
                    self.resultUpSet, self.resultUp)
        if self.resultUpSet:
            return True
        return False

    def setResultUp(self, resultUp):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-resultup').debug3Func():
            logFunc('called. resultUp=%s, old=%s', resultUp, self.resultUp)
        self.resultUpSet = True
        self.resultUp = resultUp

    def _clearAllReadData(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func():
            logFunc('called')

        self.resultDown = 0
        self.resultDownSet = False

        self.resultUnknown = 0
        self.resultUnknownSet = False

        self.tests = 0
        self.testsSet = False

        self.resultUp = 0
        self.resultUpSet = False

    def _getSelfKeyPath(self, interface, junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func():
            logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("counters",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces",
             "qt-if"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("link",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces",
             "qt-if"))
        keyPath.addKeyPathPrefix(xmlVal)

        ancestorVal = Value()
        ancestorVal.setString(interface)
        keyPath.addKeyPathPrefix(ancestorVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("interface",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces",
             "qt-if"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("interfaces",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces",
             "qt-if"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)

        for logFunc in self._log('get-self-key-path-done').debug3Func():
            logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite(self, interface, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func():
            logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-fill-write-tag-value-failed').errorFunc():
                logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(interface, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-collect-items-to-delete-failed').errorFunc():
                logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(interface, None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext,
                                     itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc():
                logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func():
            logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead(self, interface, readAllOrFail, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func():
            logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-fill-read-tag-value-failed').errorFunc():
                logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(interface, None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc():
                logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-read-tag-values-failed').errorFunc():
                logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func():
            logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete(self, interface, itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func():
            logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        for logFunc in self._log('collect-items-to-delete-done').debug3Func():
            logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        return ReturnCodes.kOk

    def _fillReadTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.isResultDownRequested():
            valResultDown = Value()
            valResultDown.setEmpty()
            tagValueList.push(
                ("result-down",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"),
                valResultDown)

        if self.isResultUnknownRequested():
            valResultUnknown = Value()
            valResultUnknown.setEmpty()
            tagValueList.push(
                ("result-unknown",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"),
                valResultUnknown)

        if self.isTestsRequested():
            valTests = Value()
            valTests.setEmpty()
            tagValueList.push(
                ("tests",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"),
                valTests)

        if self.isResultUpRequested():
            valResultUp = Value()
            valResultUp.setEmpty()
            tagValueList.push(
                ("result-up",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"),
                valResultUp)

        return ReturnCodes.kOk

    def _readTagValues(self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func():
            logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func():
            logFunc('reading leaves. tagValueList=%s', tagValueList)

        if self.isResultDownRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "result-down") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-resultdown'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "resultDown", "result-down",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-result-down-bad-value').infoFunc():
                    logFunc('resultDown not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setResultDown(tempVar)
            for logFunc in self._log(
                    'read-tag-values-result-down').debug3Func():
                logFunc('read resultDown. resultDown=%s, tempValue=%s',
                        self.resultDown, tempValue.getType())

        if self.isResultUnknownRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "result-unknown") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-resultunknown'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "resultUnknown", "result-unknown",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-result-unknown-bad-value').infoFunc():
                    logFunc('resultUnknown not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setResultUnknown(tempVar)
            for logFunc in self._log(
                    'read-tag-values-result-unknown').debug3Func():
                logFunc('read resultUnknown. resultUnknown=%s, tempValue=%s',
                        self.resultUnknown, tempValue.getType())

        if self.isTestsRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "tests") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-tests').errorFunc(
                        ):
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "tests", "tests",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-tests-bad-value').infoFunc():
                    logFunc('tests not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setTests(tempVar)
            for logFunc in self._log('read-tag-values-tests').debug3Func():
                logFunc('read tests. tests=%s, tempValue=%s', self.tests,
                        tempValue.getType())

        if self.isResultUpRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "result-up") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-resultup'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "resultUp", "result-up",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-result-up-bad-value').infoFunc():
                    logFunc('resultUp not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setResultUp(tempVar)
            for logFunc in self._log('read-tag-values-result-up').debug3Func():
                logFunc('read resultUp. resultUp=%s, tempValue=%s',
                        self.resultUp, tempValue.getType())

        for logFunc in self._log('read-tag-values-done').debug3Func():
            logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)
        return ReturnCodes.kOk
Example #23
0
class BlinkyDecisionMaapi(DecisionMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-decision")
        self.domain = None

        

        
        self.logBacktraceRequested = False
        self.logBacktrace = None
        self.logBacktraceSet = False
        
        self.ignoreConditionRequested = False
        self.ignoreCondition = None
        self.ignoreConditionSet = False
        
        self.logRequested = False
        self.log = None
        self.logSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestLogBacktrace(True)
        
        self.requestIgnoreCondition(True)
        
        self.requestLog(True)
        
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestLogBacktrace(True)
        
        self.requestIgnoreCondition(True)
        
        self.requestLog(True)
        
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestLogBacktrace(False)
        
        self.requestIgnoreCondition(False)
        
        self.requestLog(False)
        
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestLogBacktrace(False)
        
        self.requestIgnoreCondition(False)
        
        self.requestLog(False)
        
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setLogBacktrace(None)
        self.logBacktraceSet = False
        
        self.setIgnoreCondition(None)
        self.ignoreConditionSet = False
        
        self.setLog(None)
        self.logSet = False
        
        

    def write (self
              , loggerClass
              , instance
              , rule
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(loggerClass, instance, rule, trxContext)

    def read (self
              , loggerClass
              , instance
              , rule
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(loggerClass, instance, rule, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , loggerClass
                       , instance
                       , rule
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(loggerClass, instance, rule, 
                                  True,
                                  trxContext)



    def requestLogBacktrace (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-logbacktrace').debug3Func(): logFunc('called. requested=%s', requested)
        self.logBacktraceRequested = requested
        self.logBacktraceSet = False

    def isLogBacktraceRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-logbacktrace-requested').debug3Func(): logFunc('called. requested=%s', self.logBacktraceRequested)
        return self.logBacktraceRequested

    def getLogBacktrace (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-logbacktrace').debug3Func(): logFunc('called. self.logBacktraceSet=%s, self.logBacktrace=%s', self.logBacktraceSet, self.logBacktrace)
        if self.logBacktraceSet:
            return self.logBacktrace
        return None

    def hasLogBacktrace (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-logbacktrace').debug3Func(): logFunc('called. self.logBacktraceSet=%s, self.logBacktrace=%s', self.logBacktraceSet, self.logBacktrace)
        if self.logBacktraceSet:
            return True
        return False

    def setLogBacktrace (self, logBacktrace):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-logbacktrace').debug3Func(): logFunc('called. logBacktrace=%s, old=%s', logBacktrace, self.logBacktrace)
        self.logBacktraceSet = True
        self.logBacktrace = logBacktrace

    def requestIgnoreCondition (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-ignorecondition').debug3Func(): logFunc('called. requested=%s', requested)
        self.ignoreConditionRequested = requested
        self.ignoreConditionSet = False

    def isIgnoreConditionRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-ignorecondition-requested').debug3Func(): logFunc('called. requested=%s', self.ignoreConditionRequested)
        return self.ignoreConditionRequested

    def getIgnoreCondition (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-ignorecondition').debug3Func(): logFunc('called. self.ignoreConditionSet=%s, self.ignoreCondition=%s', self.ignoreConditionSet, self.ignoreCondition)
        if self.ignoreConditionSet:
            return self.ignoreCondition
        return None

    def hasIgnoreCondition (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-ignorecondition').debug3Func(): logFunc('called. self.ignoreConditionSet=%s, self.ignoreCondition=%s', self.ignoreConditionSet, self.ignoreCondition)
        if self.ignoreConditionSet:
            return True
        return False

    def setIgnoreCondition (self, ignoreCondition):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-ignorecondition').debug3Func(): logFunc('called. ignoreCondition=%s, old=%s', ignoreCondition, self.ignoreCondition)
        self.ignoreConditionSet = True
        self.ignoreCondition = ignoreCondition

    def requestLog (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-log').debug3Func(): logFunc('called. requested=%s', requested)
        self.logRequested = requested
        self.logSet = False

    def isLogRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-log-requested').debug3Func(): logFunc('called. requested=%s', self.logRequested)
        return self.logRequested

    def getLog (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-log').debug3Func(): logFunc('called. self.logSet=%s, self.log=%s', self.logSet, self.log)
        if self.logSet:
            return self.log
        return None

    def hasLog (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-log').debug3Func(): logFunc('called. self.logSet=%s, self.log=%s', self.logSet, self.log)
        if self.logSet:
            return True
        return False

    def setLog (self, log):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-log').debug3Func(): logFunc('called. log=%s, old=%s', log, self.log)
        self.logSet = True
        self.log = log


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.logBacktrace = 0
        self.logBacktraceSet = False
        
        self.ignoreCondition = 0
        self.ignoreConditionSet = False
        
        self.log = 0
        self.logSet = False
        

    def _getSelfKeyPath (self, loggerClass
                         , instance
                         , rule
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("decision", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", "qt-debug"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(rule);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("rule", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", "qt-debug"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(instance);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("instance", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", "qt-debug"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(loggerClass);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("logger-class", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", "qt-debug"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        loggerClass, 
                        instance, 
                        rule, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(loggerClass, 
                                         instance, 
                                         rule, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(loggerClass, 
                                       instance, 
                                       rule, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       loggerClass, 
                       instance, 
                       rule, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(loggerClass, 
                                       instance, 
                                       rule, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               loggerClass, 
                               instance, 
                               rule, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasLogBacktrace():
            valLogBacktrace = Value()
            if self.logBacktrace is not None:
                valLogBacktrace.setEnum(self.logBacktrace.getValue())
            else:
                valLogBacktrace.setEmpty()
            tagValueList.push(("log-backtrace", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"), valLogBacktrace)
        
        if self.hasIgnoreCondition():
            valIgnoreCondition = Value()
            if self.ignoreCondition is not None:
                valIgnoreCondition.setEnum(self.ignoreCondition.getValue())
            else:
                valIgnoreCondition.setEmpty()
            tagValueList.push(("ignore-condition", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"), valIgnoreCondition)
        
        if self.hasLog():
            valLog = Value()
            if self.log is not None:
                valLog.setEnum(self.log.getValue())
            else:
                valLog.setEmpty()
            tagValueList.push(("log", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"), valLog)
        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isLogBacktraceRequested():
            valLogBacktrace = Value()
            valLogBacktrace.setEmpty()
            tagValueList.push(("log-backtrace", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"), valLogBacktrace)
        
        if self.isIgnoreConditionRequested():
            valIgnoreCondition = Value()
            valIgnoreCondition.setEmpty()
            tagValueList.push(("ignore-condition", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"), valIgnoreCondition)
        
        if self.isLogRequested():
            valLog = Value()
            valLog.setEmpty()
            tagValueList.push(("log", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"), valLog)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isLogBacktraceRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "log-backtrace") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-logbacktrace').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "logBacktrace", "log-backtrace", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asEnum()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-log-backtrace-bad-value').infoFunc(): logFunc('logBacktrace not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setLogBacktrace(tempVar)
            for logFunc in self._log('read-tag-values-log-backtrace').debug3Func(): logFunc('read logBacktrace. logBacktrace=%s, tempValue=%s', self.logBacktrace, tempValue.getType())
        
        if self.isIgnoreConditionRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "ignore-condition") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-ignorecondition').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "ignoreCondition", "ignore-condition", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asEnum()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-ignore-condition-bad-value').infoFunc(): logFunc('ignoreCondition not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setIgnoreCondition(tempVar)
            for logFunc in self._log('read-tag-values-ignore-condition').debug3Func(): logFunc('read ignoreCondition. ignoreCondition=%s, tempValue=%s', self.ignoreCondition, tempValue.getType())
        
        if self.isLogRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "log") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-log').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "log", "log", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asEnum()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-log-bad-value').infoFunc(): logFunc('log not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setLog(tempVar)
            for logFunc in self._log('read-tag-values-log').debug3Func(): logFunc('read log. log=%s, tempValue=%s', self.log, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
Example #24
0
class BlinkyThresholdsMaapi(ThresholdsMaapiBase):
    def __init__(self, logger):
        self.myInitGuard = InitGuard()
        self._log = logger.createLogger("sys-blinky-oper-example",
                                        "blinky-maapi-thresholds")
        self.domain = None

        self.pollLatencyErrorSecondsRequested = False
        self.pollLatencyErrorSeconds = None
        self.pollLatencyErrorSecondsSet = False

        self.pollLatencyWarningSecondsRequested = False
        self.pollLatencyWarningSeconds = None
        self.pollLatencyWarningSecondsSet = False

    def init(self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func():
            logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestPollLatencyErrorSeconds(True)

        self.requestPollLatencyWarningSeconds(True)

    def requestConfig(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func():
            logFunc('called, PARAMS')

        self.requestPollLatencyErrorSeconds(True)

        self.requestPollLatencyWarningSeconds(True)

    def requestOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestPollLatencyErrorSeconds(False)

        self.requestPollLatencyWarningSeconds(False)

    def clearAllRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func():
            logFunc('called, PARAMS')

        self.requestPollLatencyErrorSeconds(False)

        self.requestPollLatencyWarningSeconds(False)

    def clearAllSet(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func():
            logFunc('called, PARAMS')

        self.setPollLatencyErrorSeconds(None)
        self.pollLatencyErrorSecondsSet = False

        self.setPollLatencyWarningSeconds(None)
        self.pollLatencyWarningSecondsSet = False

    def write(self, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func():
            logFunc('called, PARAMS')
        return self._internalWrite(trxContext)

    def read(self, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(False, trxContext)

    def readAllOrFail(self, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(True, trxContext)

    def requestPollLatencyErrorSeconds(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log(
                'request-polllatencyerrorseconds').debug3Func():
            logFunc('called. requested=%s', requested)
        self.pollLatencyErrorSecondsRequested = requested
        self.pollLatencyErrorSecondsSet = False

    def isPollLatencyErrorSecondsRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log(
                'is-polllatencyerrorseconds-requested').debug3Func():
            logFunc('called. requested=%s',
                    self.pollLatencyErrorSecondsRequested)
        return self.pollLatencyErrorSecondsRequested

    def getPollLatencyErrorSeconds(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-polllatencyerrorseconds').debug3Func():
            logFunc(
                'called. self.pollLatencyErrorSecondsSet=%s, self.pollLatencyErrorSeconds=%s',
                self.pollLatencyErrorSecondsSet, self.pollLatencyErrorSeconds)
        if self.pollLatencyErrorSecondsSet:
            return self.pollLatencyErrorSeconds
        return None

    def hasPollLatencyErrorSeconds(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-polllatencyerrorseconds').debug3Func():
            logFunc(
                'called. self.pollLatencyErrorSecondsSet=%s, self.pollLatencyErrorSeconds=%s',
                self.pollLatencyErrorSecondsSet, self.pollLatencyErrorSeconds)
        if self.pollLatencyErrorSecondsSet:
            return True
        return False

    def setPollLatencyErrorSeconds(self, pollLatencyErrorSeconds):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-polllatencyerrorseconds').debug3Func():
            logFunc('called. pollLatencyErrorSeconds=%s, old=%s',
                    pollLatencyErrorSeconds, self.pollLatencyErrorSeconds)
        self.pollLatencyErrorSecondsSet = True
        self.pollLatencyErrorSeconds = pollLatencyErrorSeconds

    def requestPollLatencyWarningSeconds(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log(
                'request-polllatencywarningseconds').debug3Func():
            logFunc('called. requested=%s', requested)
        self.pollLatencyWarningSecondsRequested = requested
        self.pollLatencyWarningSecondsSet = False

    def isPollLatencyWarningSecondsRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log(
                'is-polllatencywarningseconds-requested').debug3Func():
            logFunc('called. requested=%s',
                    self.pollLatencyWarningSecondsRequested)
        return self.pollLatencyWarningSecondsRequested

    def getPollLatencyWarningSeconds(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-polllatencywarningseconds').debug3Func():
            logFunc(
                'called. self.pollLatencyWarningSecondsSet=%s, self.pollLatencyWarningSeconds=%s',
                self.pollLatencyWarningSecondsSet,
                self.pollLatencyWarningSeconds)
        if self.pollLatencyWarningSecondsSet:
            return self.pollLatencyWarningSeconds
        return None

    def hasPollLatencyWarningSeconds(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-polllatencywarningseconds').debug3Func():
            logFunc(
                'called. self.pollLatencyWarningSecondsSet=%s, self.pollLatencyWarningSeconds=%s',
                self.pollLatencyWarningSecondsSet,
                self.pollLatencyWarningSeconds)
        if self.pollLatencyWarningSecondsSet:
            return True
        return False

    def setPollLatencyWarningSeconds(self, pollLatencyWarningSeconds):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-polllatencywarningseconds').debug3Func():
            logFunc('called. pollLatencyWarningSeconds=%s, old=%s',
                    pollLatencyWarningSeconds, self.pollLatencyWarningSeconds)
        self.pollLatencyWarningSecondsSet = True
        self.pollLatencyWarningSeconds = pollLatencyWarningSeconds

    def _clearAllReadData(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func():
            logFunc('called')

        self.pollLatencyErrorSeconds = 0
        self.pollLatencyErrorSecondsSet = False

        self.pollLatencyWarningSeconds = 0
        self.pollLatencyWarningSecondsSet = False

    def _getSelfKeyPath(self, junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func():
            logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("thresholds",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", "qt-log"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("housekeeper",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", "qt-log"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("log", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log",
             "qt-log"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)

        for logFunc in self._log('get-self-key-path-done').debug3Func():
            logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite(self, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func():
            logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-fill-write-tag-value-failed').errorFunc():
                logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-collect-items-to-delete-failed').errorFunc():
                logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext,
                                     itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc():
                logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func():
            logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead(self, readAllOrFail, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func():
            logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-fill-read-tag-value-failed').errorFunc():
                logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc():
                logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-read-tag-values-failed').errorFunc():
                logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func():
            logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete(self, itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func():
            logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        for logFunc in self._log('collect-items-to-delete-done').debug3Func():
            logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.hasPollLatencyErrorSeconds():
            valPollLatencyErrorSeconds = Value()
            if self.pollLatencyErrorSeconds is not None:
                valPollLatencyErrorSeconds.setInt64(
                    self.pollLatencyErrorSeconds)
            else:
                valPollLatencyErrorSeconds.setEmpty()
            tagValueList.push(
                ("poll-latency-error-seconds",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"),
                valPollLatencyErrorSeconds)

        if self.hasPollLatencyWarningSeconds():
            valPollLatencyWarningSeconds = Value()
            if self.pollLatencyWarningSeconds is not None:
                valPollLatencyWarningSeconds.setInt64(
                    self.pollLatencyWarningSeconds)
            else:
                valPollLatencyWarningSeconds.setEmpty()
            tagValueList.push(
                ("poll-latency-warning-seconds",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"),
                valPollLatencyWarningSeconds)

        return ReturnCodes.kOk

    def _fillReadTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.isPollLatencyErrorSecondsRequested():
            valPollLatencyErrorSeconds = Value()
            valPollLatencyErrorSeconds.setEmpty()
            tagValueList.push(
                ("poll-latency-error-seconds",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"),
                valPollLatencyErrorSeconds)

        if self.isPollLatencyWarningSecondsRequested():
            valPollLatencyWarningSeconds = Value()
            valPollLatencyWarningSeconds.setEmpty()
            tagValueList.push(
                ("poll-latency-warning-seconds",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"),
                valPollLatencyWarningSeconds)

        return ReturnCodes.kOk

    def _readTagValues(self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func():
            logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func():
            logFunc('reading leaves. tagValueList=%s', tagValueList)

        if self.isPollLatencyErrorSecondsRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "poll-latency-error-seconds") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-polllatencyerrorseconds'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "pollLatencyErrorSeconds",
                        "poll-latency-error-seconds",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-poll-latency-error-seconds-bad-value'
                ).infoFunc():
                    logFunc('pollLatencyErrorSeconds not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setPollLatencyErrorSeconds(tempVar)
            for logFunc in self._log(
                    'read-tag-values-poll-latency-error-seconds').debug3Func():
                logFunc(
                    'read pollLatencyErrorSeconds. pollLatencyErrorSeconds=%s, tempValue=%s',
                    self.pollLatencyErrorSeconds, tempValue.getType())

        if self.isPollLatencyWarningSecondsRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "poll-latency-warning-seconds") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-polllatencywarningseconds'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "pollLatencyWarningSeconds",
                        "poll-latency-warning-seconds",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-poll-latency-warning-seconds-bad-value'
                ).infoFunc():
                    logFunc('pollLatencyWarningSeconds not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setPollLatencyWarningSeconds(tempVar)
            for logFunc in self._log(
                    'read-tag-values-poll-latency-warning-seconds').debug3Func(
                    ):
                logFunc(
                    'read pollLatencyWarningSeconds. pollLatencyWarningSeconds=%s, tempValue=%s',
                    self.pollLatencyWarningSeconds, tempValue.getType())

        for logFunc in self._log('read-tag-values-done').debug3Func():
            logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)
        return ReturnCodes.kOk
Example #25
0
class BlinkyDeviceMaapi(DeviceMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-device")
        self.domain = None

        

        
        self.idRequested = False
        self.id = None
        self.idSet = False
        
        self.fruIdRequested = False
        self.fruId = None
        self.fruIdSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestId(True)
        
        self.requestFruId(True)
        
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestId(True)
        
        self.requestFruId(True)
        
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestId(False)
        
        self.requestFruId(False)
        
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestId(False)
        
        self.requestFruId(False)
        
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setId(None)
        self.idSet = False
        
        self.setFruId(None)
        self.fruIdSet = False
        
        

    def write (self
              , powerSupply
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(powerSupply, trxContext)

    def read (self
              , powerSupply
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(powerSupply, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , powerSupply
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(powerSupply, 
                                  True,
                                  trxContext)



    def requestId (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-id').debug3Func(): logFunc('called. requested=%s', requested)
        self.idRequested = requested
        self.idSet = False

    def isIdRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-id-requested').debug3Func(): logFunc('called. requested=%s', self.idRequested)
        return self.idRequested

    def getId (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-id').debug3Func(): logFunc('called. self.idSet=%s, self.id=%s', self.idSet, self.id)
        if self.idSet:
            return self.id
        return None

    def hasId (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-id').debug3Func(): logFunc('called. self.idSet=%s, self.id=%s', self.idSet, self.id)
        if self.idSet:
            return True
        return False

    def setId (self, id):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-id').debug3Func(): logFunc('called. id=%s, old=%s', id, self.id)
        self.idSet = True
        self.id = id

    def requestFruId (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-fruid').debug3Func(): logFunc('called. requested=%s', requested)
        self.fruIdRequested = requested
        self.fruIdSet = False

    def isFruIdRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-fruid-requested').debug3Func(): logFunc('called. requested=%s', self.fruIdRequested)
        return self.fruIdRequested

    def getFruId (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-fruid').debug3Func(): logFunc('called. self.fruIdSet=%s, self.fruId=%s', self.fruIdSet, self.fruId)
        if self.fruIdSet:
            return self.fruId
        return None

    def hasFruId (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-fruid').debug3Func(): logFunc('called. self.fruIdSet=%s, self.fruId=%s', self.fruIdSet, self.fruId)
        if self.fruIdSet:
            return True
        return False

    def setFruId (self, fruId):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-fruid').debug3Func(): logFunc('called. fruId=%s, old=%s', fruId, self.fruId)
        self.fruIdSet = True
        self.fruId = fruId


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.id = 0
        self.idSet = False
        
        self.fruId = 0
        self.fruIdSet = False
        

    def _getSelfKeyPath (self, powerSupply
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("device", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power", "qt-pltf-pwr"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("system-defaults", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power", "qt-pltf-pwr"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(powerSupply);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("power-supply", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power", "qt-pltf-pwr"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("power", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power", "qt-pltf-pwr"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("platform", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform", "qt-pltf"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        powerSupply, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(powerSupply, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(powerSupply, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       powerSupply, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(powerSupply, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               powerSupply, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasId():
            valId = Value()
            if self.id is not None:
                valId.setString(self.id)
            else:
                valId.setEmpty()
            tagValueList.push(("id", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power"), valId)
        
        if self.hasFruId():
            valFruId = Value()
            if self.fruId is not None:
                valFruId.setString(self.fruId)
            else:
                valFruId.setEmpty()
            tagValueList.push(("fru-id", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power"), valFruId)
        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isIdRequested():
            valId = Value()
            valId.setEmpty()
            tagValueList.push(("id", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power"), valId)
        
        if self.isFruIdRequested():
            valFruId = Value()
            valFruId.setEmpty()
            tagValueList.push(("fru-id", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power"), valFruId)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isIdRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "id") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-id').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "id", "id", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-id-bad-value').infoFunc(): logFunc('id not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setId(tempVar)
            for logFunc in self._log('read-tag-values-id').debug3Func(): logFunc('read id. id=%s, tempValue=%s', self.id, tempValue.getType())
        
        if self.isFruIdRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "fru-id") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-fruid').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "fruId", "fru-id", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-fru-id-bad-value').infoFunc(): logFunc('fruId not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setFruId(tempVar)
            for logFunc in self._log('read-tag-values-fru-id').debug3Func(): logFunc('read fruId. fruId=%s, tempValue=%s', self.fruId, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
Example #26
0
class BlinkySizeMaapi(SizeMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-size")
        self.domain = None

        

        
        self.lengthRequested = False
        self.length = None
        self.lengthSet = False
        
        self.boringLevelRequested = False
        self.boringLevel = None
        self.boringLevelSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestLength(True)
        
        self.requestBoringLevel(True)
        
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestLength(True)
        
        self.requestBoringLevel(True)
        
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestLength(False)
        
        self.requestBoringLevel(False)
        
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestLength(False)
        
        self.requestBoringLevel(False)
        
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setLength(None)
        self.lengthSet = False
        
        self.setBoringLevel(None)
        self.boringLevelSet = False
        
        

    def write (self
              , show
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(show, trxContext)

    def read (self
              , show
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(show, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , show
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(show, 
                                  True,
                                  trxContext)



    def requestLength (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-length').debug3Func(): logFunc('called. requested=%s', requested)
        self.lengthRequested = requested
        self.lengthSet = False

    def isLengthRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-length-requested').debug3Func(): logFunc('called. requested=%s', self.lengthRequested)
        return self.lengthRequested

    def getLength (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-length').debug3Func(): logFunc('called. self.lengthSet=%s, self.length=%s', self.lengthSet, self.length)
        if self.lengthSet:
            return self.length
        return None

    def hasLength (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-length').debug3Func(): logFunc('called. self.lengthSet=%s, self.length=%s', self.lengthSet, self.length)
        if self.lengthSet:
            return True
        return False

    def setLength (self, length):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-length').debug3Func(): logFunc('called. length=%s, old=%s', length, self.length)
        self.lengthSet = True
        self.length = length

    def requestBoringLevel (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-boringlevel').debug3Func(): logFunc('called. requested=%s', requested)
        self.boringLevelRequested = requested
        self.boringLevelSet = False

    def isBoringLevelRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-boringlevel-requested').debug3Func(): logFunc('called. requested=%s', self.boringLevelRequested)
        return self.boringLevelRequested

    def getBoringLevel (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-boringlevel').debug3Func(): logFunc('called. self.boringLevelSet=%s, self.boringLevel=%s', self.boringLevelSet, self.boringLevel)
        if self.boringLevelSet:
            return self.boringLevel
        return None

    def hasBoringLevel (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-boringlevel').debug3Func(): logFunc('called. self.boringLevelSet=%s, self.boringLevel=%s', self.boringLevelSet, self.boringLevel)
        if self.boringLevelSet:
            return True
        return False

    def setBoringLevel (self, boringLevel):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-boringlevel').debug3Func(): logFunc('called. boringLevel=%s, old=%s', boringLevel, self.boringLevel)
        self.boringLevelSet = True
        self.boringLevel = boringLevel


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.length = 0
        self.lengthSet = False
        
        self.boringLevel = 0
        self.boringLevelSet = False
        

    def _getSelfKeyPath (self, show
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("size", "http://qwilt.com/model/tv", "tv"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(show);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("show", "http://qwilt.com/model/tv", "tv"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        show, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(show, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(show, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       show, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(show, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               show, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasLength():
            valLength = Value()
            if self.length is not None:
                valLength.setInt64(self.length)
            else:
                valLength.setEmpty()
            tagValueList.push(("length", "http://qwilt.com/model/tv"), valLength)
        
        if self.hasBoringLevel():
            valBoringLevel = Value()
            if self.boringLevel is not None:
                valBoringLevel.setInt64(self.boringLevel)
            else:
                valBoringLevel.setEmpty()
            tagValueList.push(("boring-level", "http://qwilt.com/model/tv"), valBoringLevel)
        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isLengthRequested():
            valLength = Value()
            valLength.setEmpty()
            tagValueList.push(("length", "http://qwilt.com/model/tv"), valLength)
        
        if self.isBoringLevelRequested():
            valBoringLevel = Value()
            valBoringLevel.setEmpty()
            tagValueList.push(("boring-level", "http://qwilt.com/model/tv"), valBoringLevel)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isLengthRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "length") or \
                (ns != "http://qwilt.com/model/tv"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-length').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "length", "length", "http://qwilt.com/model/tv", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-length-bad-value').infoFunc(): logFunc('length not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setLength(tempVar)
            for logFunc in self._log('read-tag-values-length').debug3Func(): logFunc('read length. length=%s, tempValue=%s', self.length, tempValue.getType())
        
        if self.isBoringLevelRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "boring-level") or \
                (ns != "http://qwilt.com/model/tv"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-boringlevel').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "boringLevel", "boring-level", "http://qwilt.com/model/tv", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-boring-level-bad-value').infoFunc(): logFunc('boringLevel not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setBoringLevel(tempVar)
            for logFunc in self._log('read-tag-values-boring-level').debug3Func(): logFunc('read boringLevel. boringLevel=%s, tempValue=%s', self.boringLevel, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
Example #27
0
class BlinkyCommandsMaapi(CommandsMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-commands")
        self.domain = None

        

        
        self.postMountRequested = False
        self.postMount = None
        self.postMountSet = False
        
        self.preMountExtrasRequested = False
        self.preMountExtras = None
        self.preMountExtrasSet = False
        
        self.preMountRequested = False
        self.preMount = None
        self.preMountSet = False
        
        self.postMountExtrasRequested = False
        self.postMountExtras = None
        self.postMountExtrasSet = False
        
        self.mkfsRequested = False
        self.mkfs = None
        self.mkfsSet = False
        
        self.mkfsExtrasRequested = False
        self.mkfsExtras = None
        self.mkfsExtrasSet = False
        
        self.mountExtrasRequested = False
        self.mountExtras = None
        self.mountExtrasSet = False
        
        self.mountRequested = False
        self.mount = None
        self.mountSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestPostMount(True)
        
        self.requestPreMountExtras(True)
        
        self.requestPreMount(True)
        
        self.requestPostMountExtras(True)
        
        self.requestMkfs(True)
        
        self.requestMkfsExtras(True)
        
        self.requestMountExtras(True)
        
        self.requestMount(True)
        
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestPostMount(True)
        
        self.requestPreMountExtras(True)
        
        self.requestPreMount(True)
        
        self.requestPostMountExtras(True)
        
        self.requestMkfs(True)
        
        self.requestMkfsExtras(True)
        
        self.requestMountExtras(True)
        
        self.requestMount(True)
        
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestPostMount(False)
        
        self.requestPreMountExtras(False)
        
        self.requestPreMount(False)
        
        self.requestPostMountExtras(False)
        
        self.requestMkfs(False)
        
        self.requestMkfsExtras(False)
        
        self.requestMountExtras(False)
        
        self.requestMount(False)
        
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestPostMount(False)
        
        self.requestPreMountExtras(False)
        
        self.requestPreMount(False)
        
        self.requestPostMountExtras(False)
        
        self.requestMkfs(False)
        
        self.requestMkfsExtras(False)
        
        self.requestMountExtras(False)
        
        self.requestMount(False)
        
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setPostMount(None)
        self.postMountSet = False
        
        self.setPreMountExtras(None)
        self.preMountExtrasSet = False
        
        self.setPreMount(None)
        self.preMountSet = False
        
        self.setPostMountExtras(None)
        self.postMountExtrasSet = False
        
        self.setMkfs(None)
        self.mkfsSet = False
        
        self.setMkfsExtras(None)
        self.mkfsExtrasSet = False
        
        self.setMountExtras(None)
        self.mountExtrasSet = False
        
        self.setMount(None)
        self.mountSet = False
        
        

    def write (self
              , disk
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(disk, trxContext)

    def read (self
              , disk
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(disk, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , disk
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(disk, 
                                  True,
                                  trxContext)



    def requestPostMount (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-postmount').debug3Func(): logFunc('called. requested=%s', requested)
        self.postMountRequested = requested
        self.postMountSet = False

    def isPostMountRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-postmount-requested').debug3Func(): logFunc('called. requested=%s', self.postMountRequested)
        return self.postMountRequested

    def getPostMount (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-postmount').debug3Func(): logFunc('called. self.postMountSet=%s, self.postMount=%s', self.postMountSet, self.postMount)
        if self.postMountSet:
            return self.postMount
        return None

    def hasPostMount (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-postmount').debug3Func(): logFunc('called. self.postMountSet=%s, self.postMount=%s', self.postMountSet, self.postMount)
        if self.postMountSet:
            return True
        return False

    def setPostMount (self, postMount):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-postmount').debug3Func(): logFunc('called. postMount=%s, old=%s', postMount, self.postMount)
        self.postMountSet = True
        self.postMount = postMount

    def requestPreMountExtras (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-premountextras').debug3Func(): logFunc('called. requested=%s', requested)
        self.preMountExtrasRequested = requested
        self.preMountExtrasSet = False

    def isPreMountExtrasRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-premountextras-requested').debug3Func(): logFunc('called. requested=%s', self.preMountExtrasRequested)
        return self.preMountExtrasRequested

    def getPreMountExtras (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-premountextras').debug3Func(): logFunc('called. self.preMountExtrasSet=%s, self.preMountExtras=%s', self.preMountExtrasSet, self.preMountExtras)
        if self.preMountExtrasSet:
            return self.preMountExtras
        return None

    def hasPreMountExtras (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-premountextras').debug3Func(): logFunc('called. self.preMountExtrasSet=%s, self.preMountExtras=%s', self.preMountExtrasSet, self.preMountExtras)
        if self.preMountExtrasSet:
            return True
        return False

    def setPreMountExtras (self, preMountExtras):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-premountextras').debug3Func(): logFunc('called. preMountExtras=%s, old=%s', preMountExtras, self.preMountExtras)
        self.preMountExtrasSet = True
        self.preMountExtras = preMountExtras

    def requestPreMount (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-premount').debug3Func(): logFunc('called. requested=%s', requested)
        self.preMountRequested = requested
        self.preMountSet = False

    def isPreMountRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-premount-requested').debug3Func(): logFunc('called. requested=%s', self.preMountRequested)
        return self.preMountRequested

    def getPreMount (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-premount').debug3Func(): logFunc('called. self.preMountSet=%s, self.preMount=%s', self.preMountSet, self.preMount)
        if self.preMountSet:
            return self.preMount
        return None

    def hasPreMount (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-premount').debug3Func(): logFunc('called. self.preMountSet=%s, self.preMount=%s', self.preMountSet, self.preMount)
        if self.preMountSet:
            return True
        return False

    def setPreMount (self, preMount):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-premount').debug3Func(): logFunc('called. preMount=%s, old=%s', preMount, self.preMount)
        self.preMountSet = True
        self.preMount = preMount

    def requestPostMountExtras (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-postmountextras').debug3Func(): logFunc('called. requested=%s', requested)
        self.postMountExtrasRequested = requested
        self.postMountExtrasSet = False

    def isPostMountExtrasRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-postmountextras-requested').debug3Func(): logFunc('called. requested=%s', self.postMountExtrasRequested)
        return self.postMountExtrasRequested

    def getPostMountExtras (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-postmountextras').debug3Func(): logFunc('called. self.postMountExtrasSet=%s, self.postMountExtras=%s', self.postMountExtrasSet, self.postMountExtras)
        if self.postMountExtrasSet:
            return self.postMountExtras
        return None

    def hasPostMountExtras (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-postmountextras').debug3Func(): logFunc('called. self.postMountExtrasSet=%s, self.postMountExtras=%s', self.postMountExtrasSet, self.postMountExtras)
        if self.postMountExtrasSet:
            return True
        return False

    def setPostMountExtras (self, postMountExtras):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-postmountextras').debug3Func(): logFunc('called. postMountExtras=%s, old=%s', postMountExtras, self.postMountExtras)
        self.postMountExtrasSet = True
        self.postMountExtras = postMountExtras

    def requestMkfs (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-mkfs').debug3Func(): logFunc('called. requested=%s', requested)
        self.mkfsRequested = requested
        self.mkfsSet = False

    def isMkfsRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-mkfs-requested').debug3Func(): logFunc('called. requested=%s', self.mkfsRequested)
        return self.mkfsRequested

    def getMkfs (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-mkfs').debug3Func(): logFunc('called. self.mkfsSet=%s, self.mkfs=%s', self.mkfsSet, self.mkfs)
        if self.mkfsSet:
            return self.mkfs
        return None

    def hasMkfs (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-mkfs').debug3Func(): logFunc('called. self.mkfsSet=%s, self.mkfs=%s', self.mkfsSet, self.mkfs)
        if self.mkfsSet:
            return True
        return False

    def setMkfs (self, mkfs):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-mkfs').debug3Func(): logFunc('called. mkfs=%s, old=%s', mkfs, self.mkfs)
        self.mkfsSet = True
        self.mkfs = mkfs

    def requestMkfsExtras (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-mkfsextras').debug3Func(): logFunc('called. requested=%s', requested)
        self.mkfsExtrasRequested = requested
        self.mkfsExtrasSet = False

    def isMkfsExtrasRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-mkfsextras-requested').debug3Func(): logFunc('called. requested=%s', self.mkfsExtrasRequested)
        return self.mkfsExtrasRequested

    def getMkfsExtras (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-mkfsextras').debug3Func(): logFunc('called. self.mkfsExtrasSet=%s, self.mkfsExtras=%s', self.mkfsExtrasSet, self.mkfsExtras)
        if self.mkfsExtrasSet:
            return self.mkfsExtras
        return None

    def hasMkfsExtras (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-mkfsextras').debug3Func(): logFunc('called. self.mkfsExtrasSet=%s, self.mkfsExtras=%s', self.mkfsExtrasSet, self.mkfsExtras)
        if self.mkfsExtrasSet:
            return True
        return False

    def setMkfsExtras (self, mkfsExtras):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-mkfsextras').debug3Func(): logFunc('called. mkfsExtras=%s, old=%s', mkfsExtras, self.mkfsExtras)
        self.mkfsExtrasSet = True
        self.mkfsExtras = mkfsExtras

    def requestMountExtras (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-mountextras').debug3Func(): logFunc('called. requested=%s', requested)
        self.mountExtrasRequested = requested
        self.mountExtrasSet = False

    def isMountExtrasRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-mountextras-requested').debug3Func(): logFunc('called. requested=%s', self.mountExtrasRequested)
        return self.mountExtrasRequested

    def getMountExtras (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-mountextras').debug3Func(): logFunc('called. self.mountExtrasSet=%s, self.mountExtras=%s', self.mountExtrasSet, self.mountExtras)
        if self.mountExtrasSet:
            return self.mountExtras
        return None

    def hasMountExtras (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-mountextras').debug3Func(): logFunc('called. self.mountExtrasSet=%s, self.mountExtras=%s', self.mountExtrasSet, self.mountExtras)
        if self.mountExtrasSet:
            return True
        return False

    def setMountExtras (self, mountExtras):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-mountextras').debug3Func(): logFunc('called. mountExtras=%s, old=%s', mountExtras, self.mountExtras)
        self.mountExtrasSet = True
        self.mountExtras = mountExtras

    def requestMount (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-mount').debug3Func(): logFunc('called. requested=%s', requested)
        self.mountRequested = requested
        self.mountSet = False

    def isMountRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-mount-requested').debug3Func(): logFunc('called. requested=%s', self.mountRequested)
        return self.mountRequested

    def getMount (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-mount').debug3Func(): logFunc('called. self.mountSet=%s, self.mount=%s', self.mountSet, self.mount)
        if self.mountSet:
            return self.mount
        return None

    def hasMount (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-mount').debug3Func(): logFunc('called. self.mountSet=%s, self.mount=%s', self.mountSet, self.mount)
        if self.mountSet:
            return True
        return False

    def setMount (self, mount):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-mount').debug3Func(): logFunc('called. mount=%s, old=%s', mount, self.mount)
        self.mountSet = True
        self.mount = mount


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.postMount = 0
        self.postMountSet = False
        
        self.preMountExtras = 0
        self.preMountExtrasSet = False
        
        self.preMount = 0
        self.preMountSet = False
        
        self.postMountExtras = 0
        self.postMountExtrasSet = False
        
        self.mkfs = 0
        self.mkfsSet = False
        
        self.mkfsExtras = 0
        self.mkfsExtrasSet = False
        
        self.mountExtras = 0
        self.mountExtrasSet = False
        
        self.mount = 0
        self.mountSet = False
        

    def _getSelfKeyPath (self, disk
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("commands", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk", "qt-strg-dsk"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("file-system", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk", "qt-strg-dsk"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(disk);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("disk", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk", "qt-strg-dsk"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("storage", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage", "qt-strg"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        disk, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(disk, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(disk, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       disk, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(disk, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               disk, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasPostMount():
            valPostMount = Value()
            if self.postMount is not None:
                valPostMount.setString(self.postMount)
            else:
                valPostMount.setEmpty()
            tagValueList.push(("post-mount", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valPostMount)
        
        if self.hasPreMountExtras():
            valPreMountExtras = Value()
            if self.preMountExtras is not None:
                valPreMountExtras.setString(self.preMountExtras)
            else:
                valPreMountExtras.setEmpty()
            tagValueList.push(("pre-mount-extras", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valPreMountExtras)
        
        if self.hasPreMount():
            valPreMount = Value()
            if self.preMount is not None:
                valPreMount.setString(self.preMount)
            else:
                valPreMount.setEmpty()
            tagValueList.push(("pre-mount", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valPreMount)
        
        if self.hasPostMountExtras():
            valPostMountExtras = Value()
            if self.postMountExtras is not None:
                valPostMountExtras.setString(self.postMountExtras)
            else:
                valPostMountExtras.setEmpty()
            tagValueList.push(("post-mount-extras", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valPostMountExtras)
        
        if self.hasMkfs():
            valMkfs = Value()
            if self.mkfs is not None:
                valMkfs.setString(self.mkfs)
            else:
                valMkfs.setEmpty()
            tagValueList.push(("mkfs", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valMkfs)
        
        if self.hasMkfsExtras():
            valMkfsExtras = Value()
            if self.mkfsExtras is not None:
                valMkfsExtras.setString(self.mkfsExtras)
            else:
                valMkfsExtras.setEmpty()
            tagValueList.push(("mkfs-extras", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valMkfsExtras)
        
        if self.hasMountExtras():
            valMountExtras = Value()
            if self.mountExtras is not None:
                valMountExtras.setString(self.mountExtras)
            else:
                valMountExtras.setEmpty()
            tagValueList.push(("mount-extras", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valMountExtras)
        
        if self.hasMount():
            valMount = Value()
            if self.mount is not None:
                valMount.setString(self.mount)
            else:
                valMount.setEmpty()
            tagValueList.push(("mount", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valMount)
        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isPostMountRequested():
            valPostMount = Value()
            valPostMount.setEmpty()
            tagValueList.push(("post-mount", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valPostMount)
        
        if self.isPreMountExtrasRequested():
            valPreMountExtras = Value()
            valPreMountExtras.setEmpty()
            tagValueList.push(("pre-mount-extras", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valPreMountExtras)
        
        if self.isPreMountRequested():
            valPreMount = Value()
            valPreMount.setEmpty()
            tagValueList.push(("pre-mount", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valPreMount)
        
        if self.isPostMountExtrasRequested():
            valPostMountExtras = Value()
            valPostMountExtras.setEmpty()
            tagValueList.push(("post-mount-extras", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valPostMountExtras)
        
        if self.isMkfsRequested():
            valMkfs = Value()
            valMkfs.setEmpty()
            tagValueList.push(("mkfs", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valMkfs)
        
        if self.isMkfsExtrasRequested():
            valMkfsExtras = Value()
            valMkfsExtras.setEmpty()
            tagValueList.push(("mkfs-extras", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valMkfsExtras)
        
        if self.isMountExtrasRequested():
            valMountExtras = Value()
            valMountExtras.setEmpty()
            tagValueList.push(("mount-extras", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valMountExtras)
        
        if self.isMountRequested():
            valMount = Value()
            valMount.setEmpty()
            tagValueList.push(("mount", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valMount)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isPostMountRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "post-mount") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-postmount').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "postMount", "post-mount", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-post-mount-bad-value').infoFunc(): logFunc('postMount not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setPostMount(tempVar)
            for logFunc in self._log('read-tag-values-post-mount').debug3Func(): logFunc('read postMount. postMount=%s, tempValue=%s', self.postMount, tempValue.getType())
        
        if self.isPreMountExtrasRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "pre-mount-extras") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-premountextras').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "preMountExtras", "pre-mount-extras", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-pre-mount-extras-bad-value').infoFunc(): logFunc('preMountExtras not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setPreMountExtras(tempVar)
            for logFunc in self._log('read-tag-values-pre-mount-extras').debug3Func(): logFunc('read preMountExtras. preMountExtras=%s, tempValue=%s', self.preMountExtras, tempValue.getType())
        
        if self.isPreMountRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "pre-mount") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-premount').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "preMount", "pre-mount", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-pre-mount-bad-value').infoFunc(): logFunc('preMount not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setPreMount(tempVar)
            for logFunc in self._log('read-tag-values-pre-mount').debug3Func(): logFunc('read preMount. preMount=%s, tempValue=%s', self.preMount, tempValue.getType())
        
        if self.isPostMountExtrasRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "post-mount-extras") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-postmountextras').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "postMountExtras", "post-mount-extras", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-post-mount-extras-bad-value').infoFunc(): logFunc('postMountExtras not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setPostMountExtras(tempVar)
            for logFunc in self._log('read-tag-values-post-mount-extras').debug3Func(): logFunc('read postMountExtras. postMountExtras=%s, tempValue=%s', self.postMountExtras, tempValue.getType())
        
        if self.isMkfsRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "mkfs") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-mkfs').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "mkfs", "mkfs", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-mkfs-bad-value').infoFunc(): logFunc('mkfs not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setMkfs(tempVar)
            for logFunc in self._log('read-tag-values-mkfs').debug3Func(): logFunc('read mkfs. mkfs=%s, tempValue=%s', self.mkfs, tempValue.getType())
        
        if self.isMkfsExtrasRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "mkfs-extras") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-mkfsextras').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "mkfsExtras", "mkfs-extras", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-mkfs-extras-bad-value').infoFunc(): logFunc('mkfsExtras not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setMkfsExtras(tempVar)
            for logFunc in self._log('read-tag-values-mkfs-extras').debug3Func(): logFunc('read mkfsExtras. mkfsExtras=%s, tempValue=%s', self.mkfsExtras, tempValue.getType())
        
        if self.isMountExtrasRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "mount-extras") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-mountextras').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "mountExtras", "mount-extras", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-mount-extras-bad-value').infoFunc(): logFunc('mountExtras not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setMountExtras(tempVar)
            for logFunc in self._log('read-tag-values-mount-extras').debug3Func(): logFunc('read mountExtras. mountExtras=%s, tempValue=%s', self.mountExtras, tempValue.getType())
        
        if self.isMountRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "mount") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-mount').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "mount", "mount", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-mount-bad-value').infoFunc(): logFunc('mount not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setMount(tempVar)
            for logFunc in self._log('read-tag-values-mount').debug3Func(): logFunc('read mount. mount=%s, tempValue=%s', self.mount, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
class BlinkySystemDefaultsMaapi(SystemDefaultsMaapiBase):
    def __init__(self, logger):
        self.myInitGuard = InitGuard()
        self._log = logger.createLogger("sys-blinky-oper-example",
                                        "blinky-maapi-systemDefaults")
        self.domain = None

        self.deviceObj = None

        self.simulationObj = None

        self.muteReportingRequested = False
        self.muteReporting = None
        self.muteReportingSet = False

        self.locationRequested = False
        self.location = None
        self.locationSet = False

    def init(self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func():
            logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestMuteReporting(True)

        self.requestLocation(True)

        if not self.deviceObj:
            self.deviceObj = self.newDevice()
            self.deviceObj.requestConfigAndOper()

        if not self.simulationObj:
            self.simulationObj = self.newSimulation()
            self.simulationObj.requestConfigAndOper()

    def requestConfig(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func():
            logFunc('called, PARAMS')

        self.requestMuteReporting(True)

        self.requestLocation(True)

        if not self.deviceObj:
            self.deviceObj = self.newDevice()
            self.deviceObj.requestConfig()

        if not self.simulationObj:
            self.simulationObj = self.newSimulation()
            self.simulationObj.requestConfig()

    def requestOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestMuteReporting(False)

        self.requestLocation(False)

        if not self.deviceObj:
            self.deviceObj = self.newDevice()
            self.deviceObj.requestOper()

        if not self.simulationObj:
            self.simulationObj = self.newSimulation()
            self.simulationObj.requestOper()

    def clearAllRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func():
            logFunc('called, PARAMS')

        self.requestMuteReporting(False)

        self.requestLocation(False)

        if not self.deviceObj:
            self.deviceObj = self.newDevice()
            self.deviceObj.clearAllRequested()

        if not self.simulationObj:
            self.simulationObj = self.newSimulation()
            self.simulationObj.clearAllRequested()

    def clearAllSet(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func():
            logFunc('called, PARAMS')

        self.setMuteReporting(None)
        self.muteReportingSet = False

        self.setLocation(None)
        self.locationSet = False

        if self.deviceObj:
            self.deviceObj.clearAllSet()

        if self.simulationObj:
            self.simulationObj.clearAllSet()

    def write(self, powerSupply, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func():
            logFunc('called, PARAMS')
        return self._internalWrite(powerSupply, trxContext)

    def read(self, powerSupply, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(powerSupply, False, trxContext)

    def readAllOrFail(self, powerSupply, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(powerSupply, True, trxContext)

    def newDevice(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-device').debug3Func():
            logFunc('called.')
        device = BlinkyDeviceMaapi(self._log)
        device.init(self.domain)
        return device

    def setDeviceObj(self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-device').debug3Func():
            logFunc('called. obj=%s', obj)
        self.deviceObj = obj

    def getDeviceObj(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-device').debug3Func():
            logFunc('called. self.deviceObj=%s', self.deviceObj)
        return self.deviceObj

    def hasDevice(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-device').debug3Func():
            logFunc('called. self.deviceObj=%s', self.deviceObj)
        if self.deviceObj:
            return True
        return False

    def newSimulation(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-simulation').debug3Func():
            logFunc('called.')
        simulation = BlinkySimulationMaapi(self._log)
        simulation.init(self.domain)
        return simulation

    def setSimulationObj(self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-simulation').debug3Func():
            logFunc('called. obj=%s', obj)
        self.simulationObj = obj

    def getSimulationObj(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-simulation').debug3Func():
            logFunc('called. self.simulationObj=%s', self.simulationObj)
        return self.simulationObj

    def hasSimulation(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-simulation').debug3Func():
            logFunc('called. self.simulationObj=%s', self.simulationObj)
        if self.simulationObj:
            return True
        return False

    def requestMuteReporting(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-mutereporting').debug3Func():
            logFunc('called. requested=%s', requested)
        self.muteReportingRequested = requested
        self.muteReportingSet = False

    def isMuteReportingRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-mutereporting-requested').debug3Func():
            logFunc('called. requested=%s', self.muteReportingRequested)
        return self.muteReportingRequested

    def getMuteReporting(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-mutereporting').debug3Func():
            logFunc('called. self.muteReportingSet=%s, self.muteReporting=%s',
                    self.muteReportingSet, self.muteReporting)
        if self.muteReportingSet:
            return self.muteReporting
        return None

    def hasMuteReporting(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-mutereporting').debug3Func():
            logFunc('called. self.muteReportingSet=%s, self.muteReporting=%s',
                    self.muteReportingSet, self.muteReporting)
        if self.muteReportingSet:
            return True
        return False

    def setMuteReporting(self, muteReporting):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-mutereporting').debug3Func():
            logFunc('called. muteReporting=%s, old=%s', muteReporting,
                    self.muteReporting)
        self.muteReportingSet = True
        self.muteReporting = muteReporting

    def requestLocation(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-location').debug3Func():
            logFunc('called. requested=%s', requested)
        self.locationRequested = requested
        self.locationSet = False

    def isLocationRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-location-requested').debug3Func():
            logFunc('called. requested=%s', self.locationRequested)
        return self.locationRequested

    def getLocation(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-location').debug3Func():
            logFunc('called. self.locationSet=%s, self.location=%s',
                    self.locationSet, self.location)
        if self.locationSet:
            return self.location
        return None

    def hasLocation(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-location').debug3Func():
            logFunc('called. self.locationSet=%s, self.location=%s',
                    self.locationSet, self.location)
        if self.locationSet:
            return True
        return False

    def setLocation(self, location):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-location').debug3Func():
            logFunc('called. location=%s, old=%s', location, self.location)
        self.locationSet = True
        self.location = location

    def _clearAllReadData(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func():
            logFunc('called')

        if self.deviceObj:
            self.deviceObj._clearAllReadData()

        if self.simulationObj:
            self.simulationObj._clearAllReadData()

        self.muteReporting = 0
        self.muteReportingSet = False

        self.location = 0
        self.locationSet = False

    def _getSelfKeyPath(self, powerSupply, junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func():
            logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("system-defaults",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power",
             "qt-pltf-pwr"))
        keyPath.addKeyPathPrefix(xmlVal)

        ancestorVal = Value()
        ancestorVal.setString(powerSupply)
        keyPath.addKeyPathPrefix(ancestorVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("power-supply",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power",
             "qt-pltf-pwr"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("power",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power",
             "qt-pltf-pwr"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("platform",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform",
             "qt-pltf"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)

        for logFunc in self._log('get-self-key-path-done').debug3Func():
            logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite(self, powerSupply, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func():
            logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-fill-write-tag-value-failed').errorFunc():
                logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(powerSupply, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-collect-items-to-delete-failed').errorFunc():
                logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(powerSupply, None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext,
                                     itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc():
                logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func():
            logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead(self, powerSupply, readAllOrFail, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func():
            logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-fill-read-tag-value-failed').errorFunc():
                logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(powerSupply, None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc():
                logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-read-tag-values-failed').errorFunc():
                logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func():
            logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete(self, powerSupply, itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func():
            logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        if self.deviceObj:
            res = self.deviceObj._collectItemsToDelete(powerSupply,
                                                       itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'collect-items-to-delete-device-failed').errorFunc():
                    logFunc('deviceObj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError

        if self.simulationObj:
            res = self.simulationObj._collectItemsToDelete(
                powerSupply, itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'collect-items-to-delete-simulation-failed').errorFunc(
                        ):
                    logFunc(
                        'simulationObj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError

        for logFunc in self._log('collect-items-to-delete-done').debug3Func():
            logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.hasMuteReporting():
            valMuteReporting = Value()
            if self.muteReporting is not None:
                valMuteReporting.setBool(self.muteReporting)
            else:
                valMuteReporting.setEmpty()
            tagValueList.push((
                "mute-reporting",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power"
            ), valMuteReporting)

        if self.hasLocation():
            valLocation = Value()
            if self.location is not None:
                valLocation.setString(self.location)
            else:
                valLocation.setEmpty()
            tagValueList.push((
                "location",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power"
            ), valLocation)

        if self.deviceObj:
            valBegin = Value()
            (tag, ns, prefix) = (
                "device",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power",
                "qt-pltf-pwr")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.deviceObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-write-tag-values-device-failed').errorFunc():
                    logFunc('deviceObj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        if self.simulationObj:
            valBegin = Value()
            (tag, ns, prefix) = (
                "simulation",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power",
                "qt-pltf-pwr")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.simulationObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-write-tag-values-simulation-failed').errorFunc():
                    logFunc(
                        'simulationObj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        return ReturnCodes.kOk

    def _fillReadTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.isMuteReportingRequested():
            valMuteReporting = Value()
            valMuteReporting.setEmpty()
            tagValueList.push((
                "mute-reporting",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power"
            ), valMuteReporting)

        if self.isLocationRequested():
            valLocation = Value()
            valLocation.setEmpty()
            tagValueList.push((
                "location",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power"
            ), valLocation)

        if self.deviceObj:
            valBegin = Value()
            (tag, ns, prefix) = (
                "device",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power",
                "qt-pltf-pwr")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.deviceObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-read-tag-values-device-failed').errorFunc():
                    logFunc('deviceObj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        if self.simulationObj:
            valBegin = Value()
            (tag, ns, prefix) = (
                "simulation",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power",
                "qt-pltf-pwr")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.simulationObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-read-tag-values-simulation-failed').errorFunc():
                    logFunc(
                        'simulationObj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        return ReturnCodes.kOk

    def _readTagValues(self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func():
            logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func():
            logFunc('reading leaves. tagValueList=%s', tagValueList)

        if self.isMuteReportingRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "mute-reporting") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-mutereporting'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "muteReporting", "mute-reporting",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asBool()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-mute-reporting-bad-value').infoFunc():
                    logFunc('muteReporting not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setMuteReporting(tempVar)
            for logFunc in self._log(
                    'read-tag-values-mute-reporting').debug3Func():
                logFunc('read muteReporting. muteReporting=%s, tempValue=%s',
                        self.muteReporting, tempValue.getType())

        if self.isLocationRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "location") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-location'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "location", "location",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-location-bad-value').infoFunc():
                    logFunc('location not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setLocation(tempVar)
            for logFunc in self._log('read-tag-values-location').debug3Func():
                logFunc('read location. location=%s, tempValue=%s',
                        self.location, tempValue.getType())

        if self.deviceObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "device") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-begin').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "device",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power",
                        Value.kXmlBegin, tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            res = self.deviceObj._readTagValues(tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'read-tag-values-device-failed').errorFunc():
                    logFunc(
                        'deviceObj._readTagValues() failed. tagValueList=%s',
                        tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "device") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-end').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "device",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power",
                        Value.kXmlEnd, tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

        if self.simulationObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "simulation") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-begin').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "simulation",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power",
                        Value.kXmlBegin, tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            res = self.simulationObj._readTagValues(tagValueList,
                                                    readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'read-tag-values-simulation-failed').errorFunc():
                    logFunc(
                        'simulationObj._readTagValues() failed. tagValueList=%s',
                        tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "simulation") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-end').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "simulation",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-platform-power",
                        Value.kXmlEnd, tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

        for logFunc in self._log('read-tag-values-done').debug3Func():
            logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)
        return ReturnCodes.kOk
class BlinkyHouseKeeperMaapi(HouseKeeperMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-houseKeeper")
        self.domain = None

        
        self.subTaskIntervalObj = None
        

        
        self.threadPriorityRequested = False
        self.threadPriority = None
        self.threadPrioritySet = False
        
        self.threadAffinityRequested = False
        self.threadAffinity = None
        self.threadAffinitySet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestThreadPriority(True)
        
        self.requestThreadAffinity(True)
        
        
        
        if not self.subTaskIntervalObj:
            self.subTaskIntervalObj = self.newSubTaskInterval()
            self.subTaskIntervalObj.requestConfigAndOper()
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestThreadPriority(True)
        
        self.requestThreadAffinity(True)
        
        
        
        if not self.subTaskIntervalObj:
            self.subTaskIntervalObj = self.newSubTaskInterval()
            self.subTaskIntervalObj.requestConfig()
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestThreadPriority(False)
        
        self.requestThreadAffinity(False)
        
        
        
        if not self.subTaskIntervalObj:
            self.subTaskIntervalObj = self.newSubTaskInterval()
            self.subTaskIntervalObj.requestOper()
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestThreadPriority(False)
        
        self.requestThreadAffinity(False)
        
        
        
        if not self.subTaskIntervalObj:
            self.subTaskIntervalObj = self.newSubTaskInterval()
            self.subTaskIntervalObj.clearAllRequested()
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setThreadPriority(None)
        self.threadPrioritySet = False
        
        self.setThreadAffinity(None)
        self.threadAffinitySet = False
        
        
        if self.subTaskIntervalObj:
            self.subTaskIntervalObj.clearAllSet()
        

    def write (self
              , line
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(line, trxContext)

    def read (self
              , line
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(line, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , line
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(line, 
                                  True,
                                  trxContext)

    def newSubTaskInterval (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-subtaskinterval').debug3Func(): logFunc('called.')
        subTaskInterval = BlinkySubTaskIntervalMaapi(self._log)
        subTaskInterval.init(self.domain)
        return subTaskInterval

    def setSubTaskIntervalObj (self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-subtaskinterval').debug3Func(): logFunc('called. obj=%s', obj)
        self.subTaskIntervalObj = obj

    def getSubTaskIntervalObj (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-subtaskinterval').debug3Func(): logFunc('called. self.subTaskIntervalObj=%s', self.subTaskIntervalObj)
        return self.subTaskIntervalObj

    def hasSubTaskInterval (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-subtaskinterval').debug3Func(): logFunc('called. self.subTaskIntervalObj=%s', self.subTaskIntervalObj)
        if self.subTaskIntervalObj:
            return True
        return False



    def requestThreadPriority (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-threadpriority').debug3Func(): logFunc('called. requested=%s', requested)
        self.threadPriorityRequested = requested
        self.threadPrioritySet = False

    def isThreadPriorityRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-threadpriority-requested').debug3Func(): logFunc('called. requested=%s', self.threadPriorityRequested)
        return self.threadPriorityRequested

    def getThreadPriority (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-threadpriority').debug3Func(): logFunc('called. self.threadPrioritySet=%s, self.threadPriority=%s', self.threadPrioritySet, self.threadPriority)
        if self.threadPrioritySet:
            return self.threadPriority
        return None

    def hasThreadPriority (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-threadpriority').debug3Func(): logFunc('called. self.threadPrioritySet=%s, self.threadPriority=%s', self.threadPrioritySet, self.threadPriority)
        if self.threadPrioritySet:
            return True
        return False

    def setThreadPriority (self, threadPriority):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-threadpriority').debug3Func(): logFunc('called. threadPriority=%s, old=%s', threadPriority, self.threadPriority)
        self.threadPrioritySet = True
        self.threadPriority = threadPriority

    def requestThreadAffinity (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-threadaffinity').debug3Func(): logFunc('called. requested=%s', requested)
        self.threadAffinityRequested = requested
        self.threadAffinitySet = False

    def isThreadAffinityRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-threadaffinity-requested').debug3Func(): logFunc('called. requested=%s', self.threadAffinityRequested)
        return self.threadAffinityRequested

    def getThreadAffinity (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-threadaffinity').debug3Func(): logFunc('called. self.threadAffinitySet=%s, self.threadAffinity=%s', self.threadAffinitySet, self.threadAffinity)
        if self.threadAffinitySet:
            return self.threadAffinity
        return None

    def hasThreadAffinity (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-threadaffinity').debug3Func(): logFunc('called. self.threadAffinitySet=%s, self.threadAffinity=%s', self.threadAffinitySet, self.threadAffinity)
        if self.threadAffinitySet:
            return True
        return False

    def setThreadAffinity (self, threadAffinity):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-threadaffinity').debug3Func(): logFunc('called. threadAffinity=%s, old=%s', threadAffinity, self.threadAffinity)
        self.threadAffinitySet = True
        self.threadAffinity = threadAffinity


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        
        if self.subTaskIntervalObj:
            self.subTaskIntervalObj._clearAllReadData()
        

        
        self.threadPriority = 0
        self.threadPrioritySet = False
        
        self.threadAffinity = 0
        self.threadAffinitySet = False
        

    def _getSelfKeyPath (self, line
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("house-keeper", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", "qtc-line"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("analyzer", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", "qtc-line"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(line);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("line", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", "qtc-line"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("content", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content", "qtc"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        line, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(line, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(line, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       line, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(line, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               line, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        
        if self.subTaskIntervalObj:
            res = self.subTaskIntervalObj._collectItemsToDelete(line, 
                                                                          
                                                                          itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('collect-items-to-delete-sub-task-interval-failed').errorFunc(): logFunc('subTaskIntervalObj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError
        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasThreadPriority():
            valThreadPriority = Value()
            if self.threadPriority is not None:
                valThreadPriority.setString(self.threadPriority)
            else:
                valThreadPriority.setEmpty()
            tagValueList.push(("thread-priority", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"), valThreadPriority)
        
        if self.hasThreadAffinity():
            valThreadAffinity = Value()
            if self.threadAffinity is not None:
                valThreadAffinity.setString(self.threadAffinity)
            else:
                valThreadAffinity.setEmpty()
            tagValueList.push(("thread-affinity", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"), valThreadAffinity)
        

        
        if self.subTaskIntervalObj:
            valBegin = Value()
            (tag, ns, prefix) = ("sub-task-interval" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", "qtc-line")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.subTaskIntervalObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-write-tag-values-sub-task-interval-failed').errorFunc(): logFunc('subTaskIntervalObj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isThreadPriorityRequested():
            valThreadPriority = Value()
            valThreadPriority.setEmpty()
            tagValueList.push(("thread-priority", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"), valThreadPriority)
        
        if self.isThreadAffinityRequested():
            valThreadAffinity = Value()
            valThreadAffinity.setEmpty()
            tagValueList.push(("thread-affinity", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"), valThreadAffinity)
        

        
        if self.subTaskIntervalObj:
            valBegin = Value()
            (tag, ns, prefix) = ("sub-task-interval" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", "qtc-line")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.subTaskIntervalObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-read-tag-values-sub-task-interval-failed').errorFunc(): logFunc('subTaskIntervalObj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isThreadPriorityRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "thread-priority") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-threadpriority').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "threadPriority", "thread-priority", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-thread-priority-bad-value').infoFunc(): logFunc('threadPriority not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setThreadPriority(tempVar)
            for logFunc in self._log('read-tag-values-thread-priority').debug3Func(): logFunc('read threadPriority. threadPriority=%s, tempValue=%s', self.threadPriority, tempValue.getType())
        
        if self.isThreadAffinityRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "thread-affinity") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-threadaffinity').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "threadAffinity", "thread-affinity", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-thread-affinity-bad-value').infoFunc(): logFunc('threadAffinity not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setThreadAffinity(tempVar)
            for logFunc in self._log('read-tag-values-thread-affinity').debug3Func(): logFunc('read threadAffinity. threadAffinity=%s, tempValue=%s', self.threadAffinity, tempValue.getType())
        

        
        if self.subTaskIntervalObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "sub-task-interval") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log('reag-tag-values-unexpected-tag-begin').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                        "sub-task-interval", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", Value.kXmlBegin,
                                                                        tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
            
            res = self.subTaskIntervalObj._readTagValues(tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('read-tag-values-sub-task-interval-failed').errorFunc(): logFunc('subTaskIntervalObj._readTagValues() failed. tagValueList=%s', tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "sub-task-interval") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log('reag-tag-values-unexpected-tag-end').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                      "sub-task-interval", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", Value.kXmlEnd,
                                                                        tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
Example #30
0
class BlinkyIpv6Maapi(Ipv6MaapiBase):
    def __init__(self, logger):
        self.myInitGuard = InitGuard()
        self._log = logger.createLogger("sys-blinky-oper-example",
                                        "blinky-maapi-ipv6")
        self.domain = None

        self.pingObj = None

        self.neighborDiscoveryObj = None

        self.methodRequested = False
        self.method = None
        self.methodSet = False

    def init(self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func():
            logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestMethod(True)

        if not self.pingObj:
            self.pingObj = self.newPing()
            self.pingObj.requestConfigAndOper()

        if not self.neighborDiscoveryObj:
            self.neighborDiscoveryObj = self.newNeighborDiscovery()
            self.neighborDiscoveryObj.requestConfigAndOper()

    def requestConfig(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func():
            logFunc('called, PARAMS')

        self.requestMethod(True)

        if not self.pingObj:
            self.pingObj = self.newPing()
            self.pingObj.requestConfig()

        if not self.neighborDiscoveryObj:
            self.neighborDiscoveryObj = self.newNeighborDiscovery()
            self.neighborDiscoveryObj.requestConfig()

    def requestOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestMethod(False)

        if not self.pingObj:
            self.pingObj = self.newPing()
            self.pingObj.requestOper()

        if not self.neighborDiscoveryObj:
            self.neighborDiscoveryObj = self.newNeighborDiscovery()
            self.neighborDiscoveryObj.requestOper()

    def clearAllRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func():
            logFunc('called, PARAMS')

        self.requestMethod(False)

        if not self.pingObj:
            self.pingObj = self.newPing()
            self.pingObj.clearAllRequested()

        if not self.neighborDiscoveryObj:
            self.neighborDiscoveryObj = self.newNeighborDiscovery()
            self.neighborDiscoveryObj.clearAllRequested()

    def clearAllSet(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func():
            logFunc('called, PARAMS')

        self.setMethod(None)
        self.methodSet = False

        if self.pingObj:
            self.pingObj.clearAllSet()

        if self.neighborDiscoveryObj:
            self.neighborDiscoveryObj.clearAllSet()

    def write(self, interface, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func():
            logFunc('called, PARAMS')
        return self._internalWrite(interface, trxContext)

    def read(self, interface, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(interface, False, trxContext)

    def readAllOrFail(self, interface, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(interface, True, trxContext)

    def newPing(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-ping').debug3Func():
            logFunc('called.')
        ping = BlinkyPingMaapi(self._log)
        ping.init(self.domain)
        return ping

    def setPingObj(self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-ping').debug3Func():
            logFunc('called. obj=%s', obj)
        self.pingObj = obj

    def getPingObj(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-ping').debug3Func():
            logFunc('called. self.pingObj=%s', self.pingObj)
        return self.pingObj

    def hasPing(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-ping').debug3Func():
            logFunc('called. self.pingObj=%s', self.pingObj)
        if self.pingObj:
            return True
        return False

    def newNeighborDiscovery(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-neighbordiscovery').debug3Func():
            logFunc('called.')
        neighborDiscovery = BlinkyNeighborDiscoveryMaapi(self._log)
        neighborDiscovery.init(self.domain)
        return neighborDiscovery

    def setNeighborDiscoveryObj(self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-neighbordiscovery').debug3Func():
            logFunc('called. obj=%s', obj)
        self.neighborDiscoveryObj = obj

    def getNeighborDiscoveryObj(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-neighbordiscovery').debug3Func():
            logFunc('called. self.neighborDiscoveryObj=%s',
                    self.neighborDiscoveryObj)
        return self.neighborDiscoveryObj

    def hasNeighborDiscovery(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-neighbordiscovery').debug3Func():
            logFunc('called. self.neighborDiscoveryObj=%s',
                    self.neighborDiscoveryObj)
        if self.neighborDiscoveryObj:
            return True
        return False

    def requestMethod(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-method').debug3Func():
            logFunc('called. requested=%s', requested)
        self.methodRequested = requested
        self.methodSet = False

    def isMethodRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-method-requested').debug3Func():
            logFunc('called. requested=%s', self.methodRequested)
        return self.methodRequested

    def getMethod(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-method').debug3Func():
            logFunc('called. self.methodSet=%s, self.method=%s',
                    self.methodSet, self.method)
        if self.methodSet:
            return self.method
        return None

    def hasMethod(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-method').debug3Func():
            logFunc('called. self.methodSet=%s, self.method=%s',
                    self.methodSet, self.method)
        if self.methodSet:
            return True
        return False

    def setMethod(self, method):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-method').debug3Func():
            logFunc('called. method=%s, old=%s', method, self.method)
        self.methodSet = True
        self.method = method

    def _clearAllReadData(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func():
            logFunc('called')

        if self.pingObj:
            self.pingObj._clearAllReadData()

        if self.neighborDiscoveryObj:
            self.neighborDiscoveryObj._clearAllReadData()

        self.method = 0
        self.methodSet = False

    def _getSelfKeyPath(self, interface, junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func():
            logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("ipv6",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces",
             "qt-if"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("connectivity-check",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces",
             "qt-if"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("system-defaults",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces",
             "qt-if"))
        keyPath.addKeyPathPrefix(xmlVal)

        ancestorVal = Value()
        ancestorVal.setString(interface)
        keyPath.addKeyPathPrefix(ancestorVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("interface",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces",
             "qt-if"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("interfaces",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces",
             "qt-if"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)

        for logFunc in self._log('get-self-key-path-done').debug3Func():
            logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite(self, interface, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func():
            logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-fill-write-tag-value-failed').errorFunc():
                logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(interface, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-collect-items-to-delete-failed').errorFunc():
                logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(interface, None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext,
                                     itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc():
                logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func():
            logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead(self, interface, readAllOrFail, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func():
            logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-fill-read-tag-value-failed').errorFunc():
                logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(interface, None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc():
                logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-read-tag-values-failed').errorFunc():
                logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func():
            logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete(self, interface, itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func():
            logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        if self.pingObj:
            res = self.pingObj._collectItemsToDelete(interface, itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'collect-items-to-delete-ping-failed').errorFunc():
                    logFunc('pingObj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError

        if self.neighborDiscoveryObj:
            res = self.neighborDiscoveryObj._collectItemsToDelete(
                interface, itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'collect-items-to-delete-neighbor-discovery-failed'
                ).errorFunc():
                    logFunc(
                        'neighborDiscoveryObj._collectItemsToDelete() failed. PARAMS'
                    )
                return ReturnCodes.kGeneralError

        for logFunc in self._log('collect-items-to-delete-done').debug3Func():
            logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.hasMethod():
            valMethod = Value()
            if self.method is not None:
                valMethod.setEnum(self.method.getValue())
            else:
                valMethod.setEmpty()
            tagValueList.push(
                ("method",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"),
                valMethod)

        if self.pingObj:
            valBegin = Value()
            (tag, ns, prefix) = (
                "ping",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces",
                "qt-if")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.pingObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-write-tag-values-ping-failed').errorFunc():
                    logFunc('pingObj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        if self.neighborDiscoveryObj:
            valBegin = Value()
            (tag, ns, prefix) = (
                "neighbor-discovery",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces",
                "qt-if")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.neighborDiscoveryObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-write-tag-values-neighbor-discovery-failed'
                ).errorFunc():
                    logFunc(
                        'neighborDiscoveryObj._fillWriteTagValues() failed. PARAMS'
                    )
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        return ReturnCodes.kOk

    def _fillReadTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.isMethodRequested():
            valMethod = Value()
            valMethod.setEmpty()
            tagValueList.push(
                ("method",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"),
                valMethod)

        if self.pingObj:
            valBegin = Value()
            (tag, ns, prefix) = (
                "ping",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces",
                "qt-if")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.pingObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-read-tag-values-ping-failed').errorFunc():
                    logFunc('pingObj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        if self.neighborDiscoveryObj:
            valBegin = Value()
            (tag, ns, prefix) = (
                "neighbor-discovery",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces",
                "qt-if")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.neighborDiscoveryObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-read-tag-values-neighbor-discovery-failed'
                ).errorFunc():
                    logFunc(
                        'neighborDiscoveryObj._fillReadTagValues() failed. PARAMS'
                    )
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        return ReturnCodes.kOk

    def _readTagValues(self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func():
            logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func():
            logFunc('reading leaves. tagValueList=%s', tagValueList)

        if self.isMethodRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "method") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-method'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "method", "method",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asEnum()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-method-bad-value').infoFunc():
                    logFunc('method not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setMethod(tempVar)
            for logFunc in self._log('read-tag-values-method').debug3Func():
                logFunc('read method. method=%s, tempValue=%s', self.method,
                        tempValue.getType())

        if self.pingObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "ping") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-begin').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "ping",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces",
                        Value.kXmlBegin, tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            res = self.pingObj._readTagValues(tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'read-tag-values-ping-failed').errorFunc():
                    logFunc('pingObj._readTagValues() failed. tagValueList=%s',
                            tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "ping") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-end').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "ping",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces",
                        Value.kXmlEnd, tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

        if self.neighborDiscoveryObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "neighbor-discovery") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-begin').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "neighbor-discovery",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces",
                        Value.kXmlBegin, tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            res = self.neighborDiscoveryObj._readTagValues(
                tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'read-tag-values-neighbor-discovery-failed').errorFunc(
                        ):
                    logFunc(
                        'neighborDiscoveryObj._readTagValues() failed. tagValueList=%s',
                        tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "neighbor-discovery") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-end').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "neighbor-discovery",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces",
                        Value.kXmlEnd, tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

        for logFunc in self._log('read-tag-values-done').debug3Func():
            logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)
        return ReturnCodes.kOk
Example #31
0
class BlinkyStatusMaapi(StatusMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-status")
        self.domain = None

        

        
        self.tableLastChangeTicksRequested = False
        self.tableLastChangeTicks = None
        self.tableLastChangeTicksSet = False
        
        self.interfaceNumberRequested = False
        self.interfaceNumber = None
        self.interfaceNumberSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestTableLastChangeTicks(True)
        
        self.requestInterfaceNumber(True)
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestTableLastChangeTicks(False)
        
        self.requestInterfaceNumber(False)
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestTableLastChangeTicks(True)
        
        self.requestInterfaceNumber(True)
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestTableLastChangeTicks(False)
        
        self.requestInterfaceNumber(False)
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        

    def write (self
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(trxContext)

    def read (self
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(
                                  True,
                                  trxContext)



    def requestTableLastChangeTicks (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-tablelastchangeticks').debug3Func(): logFunc('called. requested=%s', requested)
        self.tableLastChangeTicksRequested = requested
        self.tableLastChangeTicksSet = False

    def isTableLastChangeTicksRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-tablelastchangeticks-requested').debug3Func(): logFunc('called. requested=%s', self.tableLastChangeTicksRequested)
        return self.tableLastChangeTicksRequested

    def getTableLastChangeTicks (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-tablelastchangeticks').debug3Func(): logFunc('called. self.tableLastChangeTicksSet=%s, self.tableLastChangeTicks=%s', self.tableLastChangeTicksSet, self.tableLastChangeTicks)
        if self.tableLastChangeTicksSet:
            return self.tableLastChangeTicks
        return None

    def hasTableLastChangeTicks (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-tablelastchangeticks').debug3Func(): logFunc('called. self.tableLastChangeTicksSet=%s, self.tableLastChangeTicks=%s', self.tableLastChangeTicksSet, self.tableLastChangeTicks)
        if self.tableLastChangeTicksSet:
            return True
        return False

    def setTableLastChangeTicks (self, tableLastChangeTicks):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-tablelastchangeticks').debug3Func(): logFunc('called. tableLastChangeTicks=%s, old=%s', tableLastChangeTicks, self.tableLastChangeTicks)
        self.tableLastChangeTicksSet = True
        self.tableLastChangeTicks = tableLastChangeTicks

    def requestInterfaceNumber (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-interfacenumber').debug3Func(): logFunc('called. requested=%s', requested)
        self.interfaceNumberRequested = requested
        self.interfaceNumberSet = False

    def isInterfaceNumberRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-interfacenumber-requested').debug3Func(): logFunc('called. requested=%s', self.interfaceNumberRequested)
        return self.interfaceNumberRequested

    def getInterfaceNumber (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-interfacenumber').debug3Func(): logFunc('called. self.interfaceNumberSet=%s, self.interfaceNumber=%s', self.interfaceNumberSet, self.interfaceNumber)
        if self.interfaceNumberSet:
            return self.interfaceNumber
        return None

    def hasInterfaceNumber (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-interfacenumber').debug3Func(): logFunc('called. self.interfaceNumberSet=%s, self.interfaceNumber=%s', self.interfaceNumberSet, self.interfaceNumber)
        if self.interfaceNumberSet:
            return True
        return False

    def setInterfaceNumber (self, interfaceNumber):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-interfacenumber').debug3Func(): logFunc('called. interfaceNumber=%s, old=%s', interfaceNumber, self.interfaceNumber)
        self.interfaceNumberSet = True
        self.interfaceNumber = interfaceNumber


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.tableLastChangeTicks = 0
        self.tableLastChangeTicksSet = False
        
        self.interfaceNumber = 0
        self.interfaceNumberSet = False
        

    def _getSelfKeyPath (self
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("status", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces", "qt-if"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("interfaces", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces", "qt-if"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isTableLastChangeTicksRequested():
            valTableLastChangeTicks = Value()
            valTableLastChangeTicks.setEmpty()
            tagValueList.push(("table-last-change-ticks", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"), valTableLastChangeTicks)
        
        if self.isInterfaceNumberRequested():
            valInterfaceNumber = Value()
            valInterfaceNumber.setEmpty()
            tagValueList.push(("interface-number", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"), valInterfaceNumber)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isTableLastChangeTicksRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "table-last-change-ticks") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-tablelastchangeticks').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "tableLastChangeTicks", "table-last-change-ticks", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asUint32()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-table-last-change-ticks-bad-value').infoFunc(): logFunc('tableLastChangeTicks not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setTableLastChangeTicks(tempVar)
            for logFunc in self._log('read-tag-values-table-last-change-ticks').debug3Func(): logFunc('read tableLastChangeTicks. tableLastChangeTicks=%s, tempValue=%s', self.tableLastChangeTicks, tempValue.getType())
        
        if self.isInterfaceNumberRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "interface-number") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-interfacenumber').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "interfaceNumber", "interface-number", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-interfaces", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt32()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-interface-number-bad-value').infoFunc(): logFunc('interfaceNumber not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setInterfaceNumber(tempVar)
            for logFunc in self._log('read-tag-values-interface-number').debug3Func(): logFunc('read interfaceNumber. interfaceNumber=%s, tempValue=%s', self.interfaceNumber, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
Example #32
0
class BlinkyStatusMaapi(StatusMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-status")
        self.domain = None

        

        
        self.initialValueRequested = False
        self.initialValue = None
        self.initialValueSet = False
        
        self.actualValueRequested = False
        self.actualValue = None
        self.actualValueSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestInitialValue(True)
        
        self.requestActualValue(True)
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestInitialValue(False)
        
        self.requestActualValue(False)
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestInitialValue(True)
        
        self.requestActualValue(True)
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestInitialValue(False)
        
        self.requestActualValue(False)
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        

    def write (self
              , linux_
              , variableCollection
              , variable
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(linux_, variableCollection, variable, trxContext)

    def read (self
              , linux_
              , variableCollection
              , variable
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(linux_, variableCollection, variable, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , linux_
                       , variableCollection
                       , variable
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(linux_, variableCollection, variable, 
                                  True,
                                  trxContext)



    def requestInitialValue (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-initialvalue').debug3Func(): logFunc('called. requested=%s', requested)
        self.initialValueRequested = requested
        self.initialValueSet = False

    def isInitialValueRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-initialvalue-requested').debug3Func(): logFunc('called. requested=%s', self.initialValueRequested)
        return self.initialValueRequested

    def getInitialValue (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-initialvalue').debug3Func(): logFunc('called. self.initialValueSet=%s, self.initialValue=%s', self.initialValueSet, self.initialValue)
        if self.initialValueSet:
            return self.initialValue
        return None

    def hasInitialValue (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-initialvalue').debug3Func(): logFunc('called. self.initialValueSet=%s, self.initialValue=%s', self.initialValueSet, self.initialValue)
        if self.initialValueSet:
            return True
        return False

    def setInitialValue (self, initialValue):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-initialvalue').debug3Func(): logFunc('called. initialValue=%s, old=%s', initialValue, self.initialValue)
        self.initialValueSet = True
        self.initialValue = initialValue

    def requestActualValue (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-actualvalue').debug3Func(): logFunc('called. requested=%s', requested)
        self.actualValueRequested = requested
        self.actualValueSet = False

    def isActualValueRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-actualvalue-requested').debug3Func(): logFunc('called. requested=%s', self.actualValueRequested)
        return self.actualValueRequested

    def getActualValue (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-actualvalue').debug3Func(): logFunc('called. self.actualValueSet=%s, self.actualValue=%s', self.actualValueSet, self.actualValue)
        if self.actualValueSet:
            return self.actualValue
        return None

    def hasActualValue (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-actualvalue').debug3Func(): logFunc('called. self.actualValueSet=%s, self.actualValue=%s', self.actualValueSet, self.actualValue)
        if self.actualValueSet:
            return True
        return False

    def setActualValue (self, actualValue):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-actualvalue').debug3Func(): logFunc('called. actualValue=%s, old=%s', actualValue, self.actualValue)
        self.actualValueSet = True
        self.actualValue = actualValue


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.initialValue = 0
        self.initialValueSet = False
        
        self.actualValue = 0
        self.actualValueSet = False
        

    def _getSelfKeyPath (self, linux_
                         , variableCollection
                         , variable
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("status", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-linux-variables", "qt-lnx-variables"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(variable);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("variable", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-linux-variables", "qt-lnx-variables"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(variableCollection);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("variable-collection", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-linux-variables", "qt-lnx-variables"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(linux_);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("linux", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-linux", "qt-lnx"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        linux_, 
                        variableCollection, 
                        variable, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(linux_, 
                                         variableCollection, 
                                         variable, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(linux_, 
                                       variableCollection, 
                                       variable, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       linux_, 
                       variableCollection, 
                       variable, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(linux_, 
                                       variableCollection, 
                                       variable, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               linux_, 
                               variableCollection, 
                               variable, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isInitialValueRequested():
            valInitialValue = Value()
            valInitialValue.setEmpty()
            tagValueList.push(("initial-value", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-linux-variables"), valInitialValue)
        
        if self.isActualValueRequested():
            valActualValue = Value()
            valActualValue.setEmpty()
            tagValueList.push(("actual-value", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-linux-variables"), valActualValue)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isInitialValueRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "initial-value") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-linux-variables"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-initialvalue').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "initialValue", "initial-value", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-linux-variables", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-initial-value-bad-value').infoFunc(): logFunc('initialValue not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setInitialValue(tempVar)
            for logFunc in self._log('read-tag-values-initial-value').debug3Func(): logFunc('read initialValue. initialValue=%s, tempValue=%s', self.initialValue, tempValue.getType())
        
        if self.isActualValueRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "actual-value") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-linux-variables"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-actualvalue').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "actualValue", "actual-value", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-linux-variables", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-actual-value-bad-value').infoFunc(): logFunc('actualValue not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setActualValue(tempVar)
            for logFunc in self._log('read-tag-values-actual-value').debug3Func(): logFunc('read actualValue. actualValue=%s, tempValue=%s', self.actualValue, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
Example #33
0
class BlinkyOutputMaapi(OutputMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-output")
        self.domain = None

        

        
        self.fileBaseNameRequested = False
        self.fileBaseName = None
        self.fileBaseNameSet = False
        
        self.maxFileSizePercentRequested = False
        self.maxFileSizePercent = None
        self.maxFileSizePercentSet = False
        
        self.fileDirectoryRequested = False
        self.fileDirectory = None
        self.fileDirectorySet = False
        
        self.archiveModeRequested = False
        self.archiveMode = None
        self.archiveModeSet = False
        
        self.maxSizeMbRequested = False
        self.maxSizeMb = None
        self.maxSizeMbSet = False
        
        self.writeModeRequested = False
        self.writeMode = None
        self.writeModeSet = False
        
        self.fileRotationIntervalMinutesRequested = False
        self.fileRotationIntervalMinutes = None
        self.fileRotationIntervalMinutesSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestFileBaseName(True)
        
        self.requestMaxFileSizePercent(True)
        
        self.requestFileDirectory(True)
        
        self.requestArchiveMode(True)
        
        self.requestMaxSizeMb(True)
        
        self.requestWriteMode(True)
        
        self.requestFileRotationIntervalMinutes(True)
        
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestFileBaseName(True)
        
        self.requestMaxFileSizePercent(True)
        
        self.requestFileDirectory(True)
        
        self.requestArchiveMode(True)
        
        self.requestMaxSizeMb(True)
        
        self.requestWriteMode(True)
        
        self.requestFileRotationIntervalMinutes(True)
        
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestFileBaseName(False)
        
        self.requestMaxFileSizePercent(False)
        
        self.requestFileDirectory(False)
        
        self.requestArchiveMode(False)
        
        self.requestMaxSizeMb(False)
        
        self.requestWriteMode(False)
        
        self.requestFileRotationIntervalMinutes(False)
        
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestFileBaseName(False)
        
        self.requestMaxFileSizePercent(False)
        
        self.requestFileDirectory(False)
        
        self.requestArchiveMode(False)
        
        self.requestMaxSizeMb(False)
        
        self.requestWriteMode(False)
        
        self.requestFileRotationIntervalMinutes(False)
        
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setFileBaseName(None)
        self.fileBaseNameSet = False
        
        self.setMaxFileSizePercent(None)
        self.maxFileSizePercentSet = False
        
        self.setFileDirectory(None)
        self.fileDirectorySet = False
        
        self.setArchiveMode(None)
        self.archiveModeSet = False
        
        self.setMaxSizeMb(None)
        self.maxSizeMbSet = False
        
        self.setWriteMode(None)
        self.writeModeSet = False
        
        self.setFileRotationIntervalMinutes(None)
        self.fileRotationIntervalMinutesSet = False
        
        

    def write (self
              , loggerClass
              , instance
              , destination
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(loggerClass, instance, destination, trxContext)

    def read (self
              , loggerClass
              , instance
              , destination
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(loggerClass, instance, destination, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , loggerClass
                       , instance
                       , destination
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(loggerClass, instance, destination, 
                                  True,
                                  trxContext)



    def requestFileBaseName (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-filebasename').debug3Func(): logFunc('called. requested=%s', requested)
        self.fileBaseNameRequested = requested
        self.fileBaseNameSet = False

    def isFileBaseNameRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-filebasename-requested').debug3Func(): logFunc('called. requested=%s', self.fileBaseNameRequested)
        return self.fileBaseNameRequested

    def getFileBaseName (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-filebasename').debug3Func(): logFunc('called. self.fileBaseNameSet=%s, self.fileBaseName=%s', self.fileBaseNameSet, self.fileBaseName)
        if self.fileBaseNameSet:
            return self.fileBaseName
        return None

    def hasFileBaseName (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-filebasename').debug3Func(): logFunc('called. self.fileBaseNameSet=%s, self.fileBaseName=%s', self.fileBaseNameSet, self.fileBaseName)
        if self.fileBaseNameSet:
            return True
        return False

    def setFileBaseName (self, fileBaseName):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-filebasename').debug3Func(): logFunc('called. fileBaseName=%s, old=%s', fileBaseName, self.fileBaseName)
        self.fileBaseNameSet = True
        self.fileBaseName = fileBaseName

    def requestMaxFileSizePercent (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-maxfilesizepercent').debug3Func(): logFunc('called. requested=%s', requested)
        self.maxFileSizePercentRequested = requested
        self.maxFileSizePercentSet = False

    def isMaxFileSizePercentRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-maxfilesizepercent-requested').debug3Func(): logFunc('called. requested=%s', self.maxFileSizePercentRequested)
        return self.maxFileSizePercentRequested

    def getMaxFileSizePercent (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-maxfilesizepercent').debug3Func(): logFunc('called. self.maxFileSizePercentSet=%s, self.maxFileSizePercent=%s', self.maxFileSizePercentSet, self.maxFileSizePercent)
        if self.maxFileSizePercentSet:
            return self.maxFileSizePercent
        return None

    def hasMaxFileSizePercent (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-maxfilesizepercent').debug3Func(): logFunc('called. self.maxFileSizePercentSet=%s, self.maxFileSizePercent=%s', self.maxFileSizePercentSet, self.maxFileSizePercent)
        if self.maxFileSizePercentSet:
            return True
        return False

    def setMaxFileSizePercent (self, maxFileSizePercent):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-maxfilesizepercent').debug3Func(): logFunc('called. maxFileSizePercent=%s, old=%s', maxFileSizePercent, self.maxFileSizePercent)
        self.maxFileSizePercentSet = True
        self.maxFileSizePercent = maxFileSizePercent

    def requestFileDirectory (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-filedirectory').debug3Func(): logFunc('called. requested=%s', requested)
        self.fileDirectoryRequested = requested
        self.fileDirectorySet = False

    def isFileDirectoryRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-filedirectory-requested').debug3Func(): logFunc('called. requested=%s', self.fileDirectoryRequested)
        return self.fileDirectoryRequested

    def getFileDirectory (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-filedirectory').debug3Func(): logFunc('called. self.fileDirectorySet=%s, self.fileDirectory=%s', self.fileDirectorySet, self.fileDirectory)
        if self.fileDirectorySet:
            return self.fileDirectory
        return None

    def hasFileDirectory (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-filedirectory').debug3Func(): logFunc('called. self.fileDirectorySet=%s, self.fileDirectory=%s', self.fileDirectorySet, self.fileDirectory)
        if self.fileDirectorySet:
            return True
        return False

    def setFileDirectory (self, fileDirectory):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-filedirectory').debug3Func(): logFunc('called. fileDirectory=%s, old=%s', fileDirectory, self.fileDirectory)
        self.fileDirectorySet = True
        self.fileDirectory = fileDirectory

    def requestArchiveMode (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-archivemode').debug3Func(): logFunc('called. requested=%s', requested)
        self.archiveModeRequested = requested
        self.archiveModeSet = False

    def isArchiveModeRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-archivemode-requested').debug3Func(): logFunc('called. requested=%s', self.archiveModeRequested)
        return self.archiveModeRequested

    def getArchiveMode (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-archivemode').debug3Func(): logFunc('called. self.archiveModeSet=%s, self.archiveMode=%s', self.archiveModeSet, self.archiveMode)
        if self.archiveModeSet:
            return self.archiveMode
        return None

    def hasArchiveMode (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-archivemode').debug3Func(): logFunc('called. self.archiveModeSet=%s, self.archiveMode=%s', self.archiveModeSet, self.archiveMode)
        if self.archiveModeSet:
            return True
        return False

    def setArchiveMode (self, archiveMode):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-archivemode').debug3Func(): logFunc('called. archiveMode=%s, old=%s', archiveMode, self.archiveMode)
        self.archiveModeSet = True
        self.archiveMode = archiveMode

    def requestMaxSizeMb (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-maxsizemb').debug3Func(): logFunc('called. requested=%s', requested)
        self.maxSizeMbRequested = requested
        self.maxSizeMbSet = False

    def isMaxSizeMbRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-maxsizemb-requested').debug3Func(): logFunc('called. requested=%s', self.maxSizeMbRequested)
        return self.maxSizeMbRequested

    def getMaxSizeMb (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-maxsizemb').debug3Func(): logFunc('called. self.maxSizeMbSet=%s, self.maxSizeMb=%s', self.maxSizeMbSet, self.maxSizeMb)
        if self.maxSizeMbSet:
            return self.maxSizeMb
        return None

    def hasMaxSizeMb (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-maxsizemb').debug3Func(): logFunc('called. self.maxSizeMbSet=%s, self.maxSizeMb=%s', self.maxSizeMbSet, self.maxSizeMb)
        if self.maxSizeMbSet:
            return True
        return False

    def setMaxSizeMb (self, maxSizeMb):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-maxsizemb').debug3Func(): logFunc('called. maxSizeMb=%s, old=%s', maxSizeMb, self.maxSizeMb)
        self.maxSizeMbSet = True
        self.maxSizeMb = maxSizeMb

    def requestWriteMode (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-writemode').debug3Func(): logFunc('called. requested=%s', requested)
        self.writeModeRequested = requested
        self.writeModeSet = False

    def isWriteModeRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-writemode-requested').debug3Func(): logFunc('called. requested=%s', self.writeModeRequested)
        return self.writeModeRequested

    def getWriteMode (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-writemode').debug3Func(): logFunc('called. self.writeModeSet=%s, self.writeMode=%s', self.writeModeSet, self.writeMode)
        if self.writeModeSet:
            return self.writeMode
        return None

    def hasWriteMode (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-writemode').debug3Func(): logFunc('called. self.writeModeSet=%s, self.writeMode=%s', self.writeModeSet, self.writeMode)
        if self.writeModeSet:
            return True
        return False

    def setWriteMode (self, writeMode):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-writemode').debug3Func(): logFunc('called. writeMode=%s, old=%s', writeMode, self.writeMode)
        self.writeModeSet = True
        self.writeMode = writeMode

    def requestFileRotationIntervalMinutes (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-filerotationintervalminutes').debug3Func(): logFunc('called. requested=%s', requested)
        self.fileRotationIntervalMinutesRequested = requested
        self.fileRotationIntervalMinutesSet = False

    def isFileRotationIntervalMinutesRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-filerotationintervalminutes-requested').debug3Func(): logFunc('called. requested=%s', self.fileRotationIntervalMinutesRequested)
        return self.fileRotationIntervalMinutesRequested

    def getFileRotationIntervalMinutes (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-filerotationintervalminutes').debug3Func(): logFunc('called. self.fileRotationIntervalMinutesSet=%s, self.fileRotationIntervalMinutes=%s', self.fileRotationIntervalMinutesSet, self.fileRotationIntervalMinutes)
        if self.fileRotationIntervalMinutesSet:
            return self.fileRotationIntervalMinutes
        return None

    def hasFileRotationIntervalMinutes (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-filerotationintervalminutes').debug3Func(): logFunc('called. self.fileRotationIntervalMinutesSet=%s, self.fileRotationIntervalMinutes=%s', self.fileRotationIntervalMinutesSet, self.fileRotationIntervalMinutes)
        if self.fileRotationIntervalMinutesSet:
            return True
        return False

    def setFileRotationIntervalMinutes (self, fileRotationIntervalMinutes):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-filerotationintervalminutes').debug3Func(): logFunc('called. fileRotationIntervalMinutes=%s, old=%s', fileRotationIntervalMinutes, self.fileRotationIntervalMinutes)
        self.fileRotationIntervalMinutesSet = True
        self.fileRotationIntervalMinutes = fileRotationIntervalMinutes


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.fileBaseName = 0
        self.fileBaseNameSet = False
        
        self.maxFileSizePercent = 0
        self.maxFileSizePercentSet = False
        
        self.fileDirectory = 0
        self.fileDirectorySet = False
        
        self.archiveMode = 0
        self.archiveModeSet = False
        
        self.maxSizeMb = 0
        self.maxSizeMbSet = False
        
        self.writeMode = 0
        self.writeModeSet = False
        
        self.fileRotationIntervalMinutes = 0
        self.fileRotationIntervalMinutesSet = False
        

    def _getSelfKeyPath (self, loggerClass
                         , instance
                         , destination
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("output", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", "qt-debug"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(destination);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("destination", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", "qt-debug"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(instance);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("instance", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", "qt-debug"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(loggerClass);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("logger-class", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", "qt-debug"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        loggerClass, 
                        instance, 
                        destination, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(loggerClass, 
                                         instance, 
                                         destination, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(loggerClass, 
                                       instance, 
                                       destination, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       loggerClass, 
                       instance, 
                       destination, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(loggerClass, 
                                       instance, 
                                       destination, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               loggerClass, 
                               instance, 
                               destination, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasFileBaseName():
            valFileBaseName = Value()
            if self.fileBaseName is not None:
                valFileBaseName.setString(self.fileBaseName)
            else:
                valFileBaseName.setEmpty()
            tagValueList.push(("file-base-name", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"), valFileBaseName)
        
        if self.hasMaxFileSizePercent():
            valMaxFileSizePercent = Value()
            if self.maxFileSizePercent is not None:
                valMaxFileSizePercent.setInt64(self.maxFileSizePercent)
            else:
                valMaxFileSizePercent.setEmpty()
            tagValueList.push(("max-file-size-percent", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"), valMaxFileSizePercent)
        
        if self.hasFileDirectory():
            valFileDirectory = Value()
            if self.fileDirectory is not None:
                valFileDirectory.setString(self.fileDirectory)
            else:
                valFileDirectory.setEmpty()
            tagValueList.push(("file-directory", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"), valFileDirectory)
        
        if self.hasArchiveMode():
            valArchiveMode = Value()
            if self.archiveMode is not None:
                valArchiveMode.setEnum(self.archiveMode.getValue())
            else:
                valArchiveMode.setEmpty()
            tagValueList.push(("archive-mode", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"), valArchiveMode)
        
        if self.hasMaxSizeMb():
            valMaxSizeMb = Value()
            if self.maxSizeMb is not None:
                valMaxSizeMb.setInt64(self.maxSizeMb)
            else:
                valMaxSizeMb.setEmpty()
            tagValueList.push(("max-size-mb", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"), valMaxSizeMb)
        
        if self.hasWriteMode():
            valWriteMode = Value()
            if self.writeMode is not None:
                valWriteMode.setEnum(self.writeMode.getValue())
            else:
                valWriteMode.setEmpty()
            tagValueList.push(("write-mode", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"), valWriteMode)
        
        if self.hasFileRotationIntervalMinutes():
            valFileRotationIntervalMinutes = Value()
            if self.fileRotationIntervalMinutes is not None:
                valFileRotationIntervalMinutes.setInt64(self.fileRotationIntervalMinutes)
            else:
                valFileRotationIntervalMinutes.setEmpty()
            tagValueList.push(("file-rotation-interval-minutes", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"), valFileRotationIntervalMinutes)
        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isFileBaseNameRequested():
            valFileBaseName = Value()
            valFileBaseName.setEmpty()
            tagValueList.push(("file-base-name", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"), valFileBaseName)
        
        if self.isMaxFileSizePercentRequested():
            valMaxFileSizePercent = Value()
            valMaxFileSizePercent.setEmpty()
            tagValueList.push(("max-file-size-percent", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"), valMaxFileSizePercent)
        
        if self.isFileDirectoryRequested():
            valFileDirectory = Value()
            valFileDirectory.setEmpty()
            tagValueList.push(("file-directory", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"), valFileDirectory)
        
        if self.isArchiveModeRequested():
            valArchiveMode = Value()
            valArchiveMode.setEmpty()
            tagValueList.push(("archive-mode", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"), valArchiveMode)
        
        if self.isMaxSizeMbRequested():
            valMaxSizeMb = Value()
            valMaxSizeMb.setEmpty()
            tagValueList.push(("max-size-mb", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"), valMaxSizeMb)
        
        if self.isWriteModeRequested():
            valWriteMode = Value()
            valWriteMode.setEmpty()
            tagValueList.push(("write-mode", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"), valWriteMode)
        
        if self.isFileRotationIntervalMinutesRequested():
            valFileRotationIntervalMinutes = Value()
            valFileRotationIntervalMinutes.setEmpty()
            tagValueList.push(("file-rotation-interval-minutes", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"), valFileRotationIntervalMinutes)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isFileBaseNameRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "file-base-name") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-filebasename').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "fileBaseName", "file-base-name", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-file-base-name-bad-value').infoFunc(): logFunc('fileBaseName not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setFileBaseName(tempVar)
            for logFunc in self._log('read-tag-values-file-base-name').debug3Func(): logFunc('read fileBaseName. fileBaseName=%s, tempValue=%s', self.fileBaseName, tempValue.getType())
        
        if self.isMaxFileSizePercentRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "max-file-size-percent") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-maxfilesizepercent').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "maxFileSizePercent", "max-file-size-percent", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-max-file-size-percent-bad-value').infoFunc(): logFunc('maxFileSizePercent not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setMaxFileSizePercent(tempVar)
            for logFunc in self._log('read-tag-values-max-file-size-percent').debug3Func(): logFunc('read maxFileSizePercent. maxFileSizePercent=%s, tempValue=%s', self.maxFileSizePercent, tempValue.getType())
        
        if self.isFileDirectoryRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "file-directory") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-filedirectory').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "fileDirectory", "file-directory", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-file-directory-bad-value').infoFunc(): logFunc('fileDirectory not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setFileDirectory(tempVar)
            for logFunc in self._log('read-tag-values-file-directory').debug3Func(): logFunc('read fileDirectory. fileDirectory=%s, tempValue=%s', self.fileDirectory, tempValue.getType())
        
        if self.isArchiveModeRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "archive-mode") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-archivemode').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "archiveMode", "archive-mode", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asEnum()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-archive-mode-bad-value').infoFunc(): logFunc('archiveMode not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setArchiveMode(tempVar)
            for logFunc in self._log('read-tag-values-archive-mode').debug3Func(): logFunc('read archiveMode. archiveMode=%s, tempValue=%s', self.archiveMode, tempValue.getType())
        
        if self.isMaxSizeMbRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "max-size-mb") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-maxsizemb').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "maxSizeMb", "max-size-mb", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-max-size-mb-bad-value').infoFunc(): logFunc('maxSizeMb not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setMaxSizeMb(tempVar)
            for logFunc in self._log('read-tag-values-max-size-mb').debug3Func(): logFunc('read maxSizeMb. maxSizeMb=%s, tempValue=%s', self.maxSizeMb, tempValue.getType())
        
        if self.isWriteModeRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "write-mode") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-writemode').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "writeMode", "write-mode", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asEnum()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-write-mode-bad-value').infoFunc(): logFunc('writeMode not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setWriteMode(tempVar)
            for logFunc in self._log('read-tag-values-write-mode').debug3Func(): logFunc('read writeMode. writeMode=%s, tempValue=%s', self.writeMode, tempValue.getType())
        
        if self.isFileRotationIntervalMinutesRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "file-rotation-interval-minutes") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-filerotationintervalminutes').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "fileRotationIntervalMinutes", "file-rotation-interval-minutes", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-file-rotation-interval-minutes-bad-value').infoFunc(): logFunc('fileRotationIntervalMinutes not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setFileRotationIntervalMinutes(tempVar)
            for logFunc in self._log('read-tag-values-file-rotation-interval-minutes').debug3Func(): logFunc('read fileRotationIntervalMinutes. fileRotationIntervalMinutes=%s, tempValue=%s', self.fileRotationIntervalMinutes, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
class BlinkySystemDefaultsMaapi(SystemDefaultsMaapiBase):
    def __init__(self, logger):
        self.myInitGuard = InitGuard()
        self._log = logger.createLogger("sys-blinky-oper-example",
                                        "blinky-maapi-systemDefaults")
        self.domain = None

        self.controllerRequested = False
        self.controller = None
        self.controllerSet = False

        self.enabledRequested = False
        self.enabled = None
        self.enabledSet = False

        self.descriptionRequested = False
        self.description = None
        self.descriptionSet = False

        self.locationTypeRequested = False
        self.locationType = None
        self.locationTypeSet = False

    def init(self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func():
            logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestController(True)

        self.requestEnabled(True)

        self.requestDescription(True)

        self.requestLocationType(True)

    def requestConfig(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func():
            logFunc('called, PARAMS')

        self.requestController(True)

        self.requestEnabled(True)

        self.requestDescription(True)

        self.requestLocationType(True)

    def requestOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestController(False)

        self.requestEnabled(False)

        self.requestDescription(False)

        self.requestLocationType(False)

    def clearAllRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func():
            logFunc('called, PARAMS')

        self.requestController(False)

        self.requestEnabled(False)

        self.requestDescription(False)

        self.requestLocationType(False)

    def clearAllSet(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func():
            logFunc('called, PARAMS')

        self.setController(None)
        self.controllerSet = False

        self.setEnabled(None)
        self.enabledSet = False

        self.setDescription(None)
        self.descriptionSet = False

        self.setLocationType(None)
        self.locationTypeSet = False

    def write(self, module, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func():
            logFunc('called, PARAMS')
        return self._internalWrite(module, trxContext)

    def read(self, module, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(module, False, trxContext)

    def readAllOrFail(self, module, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(module, True, trxContext)

    def requestController(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-controller').debug3Func():
            logFunc('called. requested=%s', requested)
        self.controllerRequested = requested
        self.controllerSet = False

    def isControllerRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-controller-requested').debug3Func():
            logFunc('called. requested=%s', self.controllerRequested)
        return self.controllerRequested

    def getController(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-controller').debug3Func():
            logFunc('called. self.controllerSet=%s, self.controller=%s',
                    self.controllerSet, self.controller)
        if self.controllerSet:
            return self.controller
        return None

    def hasController(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-controller').debug3Func():
            logFunc('called. self.controllerSet=%s, self.controller=%s',
                    self.controllerSet, self.controller)
        if self.controllerSet:
            return True
        return False

    def setController(self, controller):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-controller').debug3Func():
            logFunc('called. controller=%s, old=%s', controller,
                    self.controller)
        self.controllerSet = True
        self.controller = controller

    def requestEnabled(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-enabled').debug3Func():
            logFunc('called. requested=%s', requested)
        self.enabledRequested = requested
        self.enabledSet = False

    def isEnabledRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-enabled-requested').debug3Func():
            logFunc('called. requested=%s', self.enabledRequested)
        return self.enabledRequested

    def getEnabled(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-enabled').debug3Func():
            logFunc('called. self.enabledSet=%s, self.enabled=%s',
                    self.enabledSet, self.enabled)
        if self.enabledSet:
            return self.enabled
        return None

    def hasEnabled(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-enabled').debug3Func():
            logFunc('called. self.enabledSet=%s, self.enabled=%s',
                    self.enabledSet, self.enabled)
        if self.enabledSet:
            return True
        return False

    def setEnabled(self, enabled):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-enabled').debug3Func():
            logFunc('called. enabled=%s, old=%s', enabled, self.enabled)
        self.enabledSet = True
        self.enabled = enabled

    def requestDescription(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-description').debug3Func():
            logFunc('called. requested=%s', requested)
        self.descriptionRequested = requested
        self.descriptionSet = False

    def isDescriptionRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-description-requested').debug3Func():
            logFunc('called. requested=%s', self.descriptionRequested)
        return self.descriptionRequested

    def getDescription(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-description').debug3Func():
            logFunc('called. self.descriptionSet=%s, self.description=%s',
                    self.descriptionSet, self.description)
        if self.descriptionSet:
            return self.description
        return None

    def hasDescription(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-description').debug3Func():
            logFunc('called. self.descriptionSet=%s, self.description=%s',
                    self.descriptionSet, self.description)
        if self.descriptionSet:
            return True
        return False

    def setDescription(self, description):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-description').debug3Func():
            logFunc('called. description=%s, old=%s', description,
                    self.description)
        self.descriptionSet = True
        self.description = description

    def requestLocationType(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-locationtype').debug3Func():
            logFunc('called. requested=%s', requested)
        self.locationTypeRequested = requested
        self.locationTypeSet = False

    def isLocationTypeRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-locationtype-requested').debug3Func():
            logFunc('called. requested=%s', self.locationTypeRequested)
        return self.locationTypeRequested

    def getLocationType(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-locationtype').debug3Func():
            logFunc('called. self.locationTypeSet=%s, self.locationType=%s',
                    self.locationTypeSet, self.locationType)
        if self.locationTypeSet:
            return self.locationType
        return None

    def hasLocationType(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-locationtype').debug3Func():
            logFunc('called. self.locationTypeSet=%s, self.locationType=%s',
                    self.locationTypeSet, self.locationType)
        if self.locationTypeSet:
            return True
        return False

    def setLocationType(self, locationType):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-locationtype').debug3Func():
            logFunc('called. locationType=%s, old=%s', locationType,
                    self.locationType)
        self.locationTypeSet = True
        self.locationType = locationType

    def _clearAllReadData(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func():
            logFunc('called')

        self.controller = 0
        self.controllerSet = False

        self.enabled = 0
        self.enabledSet = False

        self.description = 0
        self.descriptionSet = False

        self.locationType = 0
        self.locationTypeSet = False

    def _getSelfKeyPath(self, module, junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func():
            logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("system-defaults",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module",
             "qt-strg-module"))
        keyPath.addKeyPathPrefix(xmlVal)

        ancestorVal = Value()
        ancestorVal.setString(module)
        keyPath.addKeyPathPrefix(ancestorVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("module",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module",
             "qt-strg-module"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("storage",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage",
             "qt-strg"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)

        for logFunc in self._log('get-self-key-path-done').debug3Func():
            logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite(self, module, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func():
            logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-fill-write-tag-value-failed').errorFunc():
                logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(module, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-collect-items-to-delete-failed').errorFunc():
                logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(module, None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext,
                                     itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc():
                logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func():
            logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead(self, module, readAllOrFail, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func():
            logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-fill-read-tag-value-failed').errorFunc():
                logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(module, None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc():
                logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-read-tag-values-failed').errorFunc():
                logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func():
            logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete(self, module, itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func():
            logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        for logFunc in self._log('collect-items-to-delete-done').debug3Func():
            logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.hasController():
            valController = Value()
            if self.controller is not None:
                valController.setString(self.controller)
            else:
                valController.setEmpty()
            tagValueList.push((
                "controller",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module"
            ), valController)

        if self.hasEnabled():
            valEnabled = Value()
            if self.enabled is not None:
                valEnabled.setBool(self.enabled)
            else:
                valEnabled.setEmpty()
            tagValueList.push((
                "enabled",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module"
            ), valEnabled)

        if self.hasDescription():
            valDescription = Value()
            if self.description is not None:
                valDescription.setString(self.description)
            else:
                valDescription.setEmpty()
            tagValueList.push((
                "description",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module"
            ), valDescription)

        if self.hasLocationType():
            valLocationType = Value()
            if self.locationType is not None:
                valLocationType.setEnum(self.locationType.getValue())
            else:
                valLocationType.setEmpty()
            tagValueList.push((
                "location-type",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module"
            ), valLocationType)

        return ReturnCodes.kOk

    def _fillReadTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.isControllerRequested():
            valController = Value()
            valController.setEmpty()
            tagValueList.push((
                "controller",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module"
            ), valController)

        if self.isEnabledRequested():
            valEnabled = Value()
            valEnabled.setEmpty()
            tagValueList.push((
                "enabled",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module"
            ), valEnabled)

        if self.isDescriptionRequested():
            valDescription = Value()
            valDescription.setEmpty()
            tagValueList.push((
                "description",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module"
            ), valDescription)

        if self.isLocationTypeRequested():
            valLocationType = Value()
            valLocationType.setEmpty()
            tagValueList.push((
                "location-type",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module"
            ), valLocationType)

        return ReturnCodes.kOk

    def _readTagValues(self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func():
            logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func():
            logFunc('reading leaves. tagValueList=%s', tagValueList)

        if self.isControllerRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "controller") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-controller'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "controller", "controller",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-controller-bad-value').infoFunc():
                    logFunc('controller not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setController(tempVar)
            for logFunc in self._log(
                    'read-tag-values-controller').debug3Func():
                logFunc('read controller. controller=%s, tempValue=%s',
                        self.controller, tempValue.getType())

        if self.isEnabledRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "enabled") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-enabled'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "enabled", "enabled",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asBool()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-enabled-bad-value').infoFunc():
                    logFunc('enabled not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setEnabled(tempVar)
            for logFunc in self._log('read-tag-values-enabled').debug3Func():
                logFunc('read enabled. enabled=%s, tempValue=%s', self.enabled,
                        tempValue.getType())

        if self.isDescriptionRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "description") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-description'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "description", "description",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-description-bad-value').infoFunc():
                    logFunc('description not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setDescription(tempVar)
            for logFunc in self._log(
                    'read-tag-values-description').debug3Func():
                logFunc('read description. description=%s, tempValue=%s',
                        self.description, tempValue.getType())

        if self.isLocationTypeRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "location-type") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-locationtype'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "locationType", "location-type",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-module",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asEnum()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-location-type-bad-value').infoFunc():
                    logFunc('locationType not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setLocationType(tempVar)
            for logFunc in self._log(
                    'read-tag-values-location-type').debug3Func():
                logFunc('read locationType. locationType=%s, tempValue=%s',
                        self.locationType, tempValue.getType())

        for logFunc in self._log('read-tag-values-done').debug3Func():
            logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)
        return ReturnCodes.kOk
Example #35
0
class BlinkyStatusMaapi(StatusMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-status")
        self.domain = None

        

        
        self.versionRequested = False
        self.version = None
        self.versionSet = False
        
        self.healthRequested = False
        self.health = None
        self.healthSet = False
        
        self.numOfCracksRequested = False
        self.numOfCracks = None
        self.numOfCracksSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestVersion(True)
        
        self.requestHealth(True)
        
        self.requestNumOfCracks(True)
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestVersion(False)
        
        self.requestHealth(False)
        
        self.requestNumOfCracks(False)
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestVersion(True)
        
        self.requestHealth(True)
        
        self.requestNumOfCracks(True)
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestVersion(False)
        
        self.requestHealth(False)
        
        self.requestNumOfCracks(False)
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        

    def write (self
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(trxContext)

    def read (self
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(
                                  True,
                                  trxContext)



    def requestVersion (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-version').debug3Func(): logFunc('called. requested=%s', requested)
        self.versionRequested = requested
        self.versionSet = False

    def isVersionRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-version-requested').debug3Func(): logFunc('called. requested=%s', self.versionRequested)
        return self.versionRequested

    def getVersion (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-version').debug3Func(): logFunc('called. self.versionSet=%s, self.version=%s', self.versionSet, self.version)
        if self.versionSet:
            return self.version
        return None

    def hasVersion (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-version').debug3Func(): logFunc('called. self.versionSet=%s, self.version=%s', self.versionSet, self.version)
        if self.versionSet:
            return True
        return False

    def setVersion (self, version):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-version').debug3Func(): logFunc('called. version=%s, old=%s', version, self.version)
        self.versionSet = True
        self.version = version

    def requestHealth (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-health').debug3Func(): logFunc('called. requested=%s', requested)
        self.healthRequested = requested
        self.healthSet = False

    def isHealthRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-health-requested').debug3Func(): logFunc('called. requested=%s', self.healthRequested)
        return self.healthRequested

    def getHealth (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-health').debug3Func(): logFunc('called. self.healthSet=%s, self.health=%s', self.healthSet, self.health)
        if self.healthSet:
            return self.health
        return None

    def hasHealth (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-health').debug3Func(): logFunc('called. self.healthSet=%s, self.health=%s', self.healthSet, self.health)
        if self.healthSet:
            return True
        return False

    def setHealth (self, health):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-health').debug3Func(): logFunc('called. health=%s, old=%s', health, self.health)
        self.healthSet = True
        self.health = health

    def requestNumOfCracks (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-numofcracks').debug3Func(): logFunc('called. requested=%s', requested)
        self.numOfCracksRequested = requested
        self.numOfCracksSet = False

    def isNumOfCracksRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-numofcracks-requested').debug3Func(): logFunc('called. requested=%s', self.numOfCracksRequested)
        return self.numOfCracksRequested

    def getNumOfCracks (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-numofcracks').debug3Func(): logFunc('called. self.numOfCracksSet=%s, self.numOfCracks=%s', self.numOfCracksSet, self.numOfCracks)
        if self.numOfCracksSet:
            return self.numOfCracks
        return None

    def hasNumOfCracks (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-numofcracks').debug3Func(): logFunc('called. self.numOfCracksSet=%s, self.numOfCracks=%s', self.numOfCracksSet, self.numOfCracks)
        if self.numOfCracksSet:
            return True
        return False

    def setNumOfCracks (self, numOfCracks):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-numofcracks').debug3Func(): logFunc('called. numOfCracks=%s, old=%s', numOfCracks, self.numOfCracks)
        self.numOfCracksSet = True
        self.numOfCracks = numOfCracks


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.version = 0
        self.versionSet = False
        
        self.health = 0
        self.healthSet = False
        
        self.numOfCracks = 0
        self.numOfCracksSet = False
        

    def _getSelfKeyPath (self
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("status", "http://qwilt.com/ns/yang/ut/sys/blinky/example/python/simple-example", "se"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("chair", "http://qwilt.com/ns/yang/ut/sys/blinky/example/python/simple-example", "se"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isVersionRequested():
            valVersion = Value()
            valVersion.setEmpty()
            tagValueList.push(("version", "http://qwilt.com/ns/yang/ut/sys/blinky/example/python/simple-example"), valVersion)
        
        if self.isHealthRequested():
            valHealth = Value()
            valHealth.setEmpty()
            tagValueList.push(("health", "http://qwilt.com/ns/yang/ut/sys/blinky/example/python/simple-example"), valHealth)
        
        if self.isNumOfCracksRequested():
            valNumOfCracks = Value()
            valNumOfCracks.setEmpty()
            tagValueList.push(("num-of-cracks", "http://qwilt.com/ns/yang/ut/sys/blinky/example/python/simple-example"), valNumOfCracks)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isVersionRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "version") or \
                (ns != "http://qwilt.com/ns/yang/ut/sys/blinky/example/python/simple-example"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-version').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "version", "version", "http://qwilt.com/ns/yang/ut/sys/blinky/example/python/simple-example", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-version-bad-value').infoFunc(): logFunc('version not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setVersion(tempVar)
            for logFunc in self._log('read-tag-values-version').debug3Func(): logFunc('read version. version=%s, tempValue=%s', self.version, tempValue.getType())
        
        if self.isHealthRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "health") or \
                (ns != "http://qwilt.com/ns/yang/ut/sys/blinky/example/python/simple-example"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-health').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "health", "health", "http://qwilt.com/ns/yang/ut/sys/blinky/example/python/simple-example", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-health-bad-value').infoFunc(): logFunc('health not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setHealth(tempVar)
            for logFunc in self._log('read-tag-values-health').debug3Func(): logFunc('read health. health=%s, tempValue=%s', self.health, tempValue.getType())
        
        if self.isNumOfCracksRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "num-of-cracks") or \
                (ns != "http://qwilt.com/ns/yang/ut/sys/blinky/example/python/simple-example"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-numofcracks').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "numOfCracks", "num-of-cracks", "http://qwilt.com/ns/yang/ut/sys/blinky/example/python/simple-example", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-num-of-cracks-bad-value').infoFunc(): logFunc('numOfCracks not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setNumOfCracks(tempVar)
            for logFunc in self._log('read-tag-values-num-of-cracks').debug3Func(): logFunc('read numOfCracks. numOfCracks=%s, tempValue=%s', self.numOfCracks, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
Example #36
0
class BlinkyTableMaapi(TableMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-table")
        self.domain = None

        
        self.fish_ListObj = None
        
        self.sizeObj = None
        

        
        self.ipRequested = False
        self.ip = None
        self.ipSet = False
        
        self.nameRequested = False
        self.name = None
        self.nameSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestIp(True)
        
        self.requestName(True)
        
        
        
        if not self.fish_ListObj:
            self.fish_ListObj = self.newFish_List()
            self.fish_ListObj.requestConfigAndOper()
        
        if not self.sizeObj:
            self.sizeObj = self.newSize()
            self.sizeObj.requestConfigAndOper()
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestIp(True)
        
        self.requestName(True)
        
        
        
        if not self.fish_ListObj:
            self.fish_ListObj = self.newFish_List()
            self.fish_ListObj.requestConfig()
        
        if not self.sizeObj:
            self.sizeObj = self.newSize()
            self.sizeObj.requestConfig()
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestIp(False)
        
        self.requestName(False)
        
        
        
        if not self.fish_ListObj:
            self.fish_ListObj = self.newFish_List()
            self.fish_ListObj.requestOper()
        
        if not self.sizeObj:
            self.sizeObj = self.newSize()
            self.sizeObj.requestOper()
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestIp(False)
        
        self.requestName(False)
        
        
        
        if not self.fish_ListObj:
            self.fish_ListObj = self.newFish_List()
            self.fish_ListObj.clearAllRequested()
        
        if not self.sizeObj:
            self.sizeObj = self.newSize()
            self.sizeObj.clearAllRequested()
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setIp(None)
        self.ipSet = False
        
        self.setName(None)
        self.nameSet = False
        
        
        if self.fish_ListObj:
            self.fish_ListObj.clearAllSet()
        
        if self.sizeObj:
            self.sizeObj.clearAllSet()
        

    def write (self
              , table
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(table, trxContext)

    def read (self
              , table
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(table, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , table
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(table, 
                                  True,
                                  trxContext)

    def newFish_List (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-fish_list').debug3Func(): logFunc('called.')
        fish_List = BlinkyFishMaapiList(self._log)
        fish_List.init(self.domain)
        return fish_List

    def setFish_ListObj (self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-fish_list').debug3Func(): logFunc('called. obj=%s', obj)
        self.fish_ListObj = obj

    def getFish_ListObj (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-fish_list').debug3Func(): logFunc('called. self.fish_ListObj=%s', self.fish_ListObj)
        return self.fish_ListObj

    def hasFish_List (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-fish_list').debug3Func(): logFunc('called. self.fish_ListObj=%s', self.fish_ListObj)
        if self.fish_ListObj:
            return True
        return False

    def newSize (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-size').debug3Func(): logFunc('called.')
        size = BlinkySizeMaapi(self._log)
        size.init(self.domain)
        return size

    def setSizeObj (self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-size').debug3Func(): logFunc('called. obj=%s', obj)
        self.sizeObj = obj

    def getSizeObj (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-size').debug3Func(): logFunc('called. self.sizeObj=%s', self.sizeObj)
        return self.sizeObj

    def hasSize (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-size').debug3Func(): logFunc('called. self.sizeObj=%s', self.sizeObj)
        if self.sizeObj:
            return True
        return False



    def requestIp (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-ip').debug3Func(): logFunc('called. requested=%s', requested)
        self.ipRequested = requested
        self.ipSet = False

    def isIpRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-ip-requested').debug3Func(): logFunc('called. requested=%s', self.ipRequested)
        return self.ipRequested

    def getIp (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-ip').debug3Func(): logFunc('called. self.ipSet=%s, self.ip=%s', self.ipSet, self.ip)
        if self.ipSet:
            return self.ip
        return None

    def hasIp (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-ip').debug3Func(): logFunc('called. self.ipSet=%s, self.ip=%s', self.ipSet, self.ip)
        if self.ipSet:
            return True
        return False

    def setIp (self, ip):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-ip').debug3Func(): logFunc('called. ip=%s, old=%s', ip, self.ip)
        self.ipSet = True
        self.ip = ip

    def requestName (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-name').debug3Func(): logFunc('called. requested=%s', requested)
        self.nameRequested = requested
        self.nameSet = False

    def isNameRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-name-requested').debug3Func(): logFunc('called. requested=%s', self.nameRequested)
        return self.nameRequested

    def getName (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-name').debug3Func(): logFunc('called. self.nameSet=%s, self.name=%s', self.nameSet, self.name)
        if self.nameSet:
            return self.name
        return None

    def hasName (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-name').debug3Func(): logFunc('called. self.nameSet=%s, self.name=%s', self.nameSet, self.name)
        if self.nameSet:
            return True
        return False

    def setName (self, name):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-name').debug3Func(): logFunc('called. name=%s, old=%s', name, self.name)
        self.nameSet = True
        self.name = name


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        
        if self.fish_ListObj:
            self.fish_ListObj._clearAllReadData()
        
        if self.sizeObj:
            self.sizeObj._clearAllReadData()
        

        
        self.ip = 0
        self.ipSet = False
        
        self.name = 0
        self.nameSet = False
        

    def _getSelfKeyPath (self, table
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        ancestorVal = Value()
        ancestorVal.setString(table);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("table", "http://qwilt.com/model/room", "room"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        table, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(table, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(table, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       table, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(table, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               table, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        
        if self.fish_ListObj:
            res = self.fish_ListObj._collectItemsToDelete(table, 
                                                                          
                                                                          itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('collect-items-to-delete-fish-failed').errorFunc(): logFunc('fish_ListObj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError
        
        if self.sizeObj:
            res = self.sizeObj._collectItemsToDelete(table, 
                                                                          
                                                                          itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('collect-items-to-delete-size-failed').errorFunc(): logFunc('sizeObj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError
        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasIp():
            valIp = Value()
            if self.ip is not None:
                valIp.setIPv4(self.ip)
            else:
                valIp.setEmpty()
            tagValueList.push(("ip", "http://qwilt.com/model/room"), valIp)
        
        if self.hasName():
            valName = Value()
            if self.name is not None:
                valName.setString(self.name)
            else:
                valName.setEmpty()
            tagValueList.push(("name", "http://qwilt.com/model/room"), valName)
        

        
        if self.fish_ListObj:
            valBegin = Value()
            (tag, ns, prefix) = ("fish" , "http://qwilt.com/model/room", "room")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.fish_ListObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-write-tag-values-fish-failed').errorFunc(): logFunc('fish_ListObj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        
        if self.sizeObj:
            valBegin = Value()
            (tag, ns, prefix) = ("size" , "http://qwilt.com/model/room", "room")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.sizeObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-write-tag-values-size-failed').errorFunc(): logFunc('sizeObj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isIpRequested():
            valIp = Value()
            valIp.setEmpty()
            tagValueList.push(("ip", "http://qwilt.com/model/room"), valIp)
        
        if self.isNameRequested():
            valName = Value()
            valName.setEmpty()
            tagValueList.push(("name", "http://qwilt.com/model/room"), valName)
        

        
        if self.fish_ListObj:
            valBegin = Value()
            (tag, ns, prefix) = ("fish" , "http://qwilt.com/model/room", "room")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.fish_ListObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-read-tag-values-fish-failed').errorFunc(): logFunc('fish_ListObj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        
        if self.sizeObj:
            valBegin = Value()
            (tag, ns, prefix) = ("size" , "http://qwilt.com/model/room", "room")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.sizeObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-read-tag-values-size-failed').errorFunc(): logFunc('sizeObj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isIpRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "ip") or \
                (ns != "http://qwilt.com/model/room"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-ip').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "ip", "ip", "http://qwilt.com/model/room", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = (tempValue.asIPv4())
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-ip-bad-value').infoFunc(): logFunc('ip not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setIp(tempVar)
            for logFunc in self._log('read-tag-values-ip').debug3Func(): logFunc('read ip. ip=%s, tempValue=%s', self.ip, tempValue.getType())
        
        if self.isNameRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "name") or \
                (ns != "http://qwilt.com/model/room"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-name').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "name", "name", "http://qwilt.com/model/room", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-name-bad-value').infoFunc(): logFunc('name not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setName(tempVar)
            for logFunc in self._log('read-tag-values-name').debug3Func(): logFunc('read name. name=%s, tempValue=%s', self.name, tempValue.getType())
        

        
        if self.fish_ListObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "fish") or \
                (ns != "http://qwilt.com/model/room") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log('reag-tag-values-unexpected-tag-begin').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                        "fish", "http://qwilt.com/model/room", Value.kXmlBegin,
                                                                        tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
            
            res = self.fish_ListObj._readTagValues(tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('read-tag-values-fish-failed').errorFunc(): logFunc('fish_ListObj._readTagValues() failed. tagValueList=%s', tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "fish") or \
                (ns != "http://qwilt.com/model/room") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log('reag-tag-values-unexpected-tag-end').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                      "fish", "http://qwilt.com/model/room", Value.kXmlEnd,
                                                                        tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
        
        if self.sizeObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "size") or \
                (ns != "http://qwilt.com/model/room") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log('reag-tag-values-unexpected-tag-begin').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                        "size", "http://qwilt.com/model/room", Value.kXmlBegin,
                                                                        tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
            
            res = self.sizeObj._readTagValues(tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('read-tag-values-size-failed').errorFunc(): logFunc('sizeObj._readTagValues() failed. tagValueList=%s', tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "size") or \
                (ns != "http://qwilt.com/model/room") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log('reag-tag-values-unexpected-tag-end').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                      "size", "http://qwilt.com/model/room", Value.kXmlEnd,
                                                                        tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
class BlinkyExecutionMaapi(ExecutionMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-execution")
        self.domain = None

        
        self.statusObj = None
        
        self.commandObj = None
        

        
        self.priorityRequested = False
        self.priority = None
        self.prioritySet = False
        
        self.umaskRequested = False
        self.umask = None
        self.umaskSet = False
        
        self.affinityRequested = False
        self.affinity = None
        self.affinitySet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestPriority(True)
        
        self.requestUmask(True)
        
        self.requestAffinity(True)
        
        
        
        if not self.statusObj:
            self.statusObj = self.newStatus()
            self.statusObj.requestConfigAndOper()
        
        if not self.commandObj:
            self.commandObj = self.newCommand()
            self.commandObj.requestConfigAndOper()
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestPriority(True)
        
        self.requestUmask(True)
        
        self.requestAffinity(True)
        
        
        
        if not self.statusObj:
            self.statusObj = self.newStatus()
            self.statusObj.requestConfig()
        
        if not self.commandObj:
            self.commandObj = self.newCommand()
            self.commandObj.requestConfig()
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestPriority(False)
        
        self.requestUmask(False)
        
        self.requestAffinity(False)
        
        
        
        if not self.statusObj:
            self.statusObj = self.newStatus()
            self.statusObj.requestOper()
        
        if not self.commandObj:
            self.commandObj = self.newCommand()
            self.commandObj.requestOper()
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestPriority(False)
        
        self.requestUmask(False)
        
        self.requestAffinity(False)
        
        
        
        if not self.statusObj:
            self.statusObj = self.newStatus()
            self.statusObj.clearAllRequested()
        
        if not self.commandObj:
            self.commandObj = self.newCommand()
            self.commandObj.clearAllRequested()
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setPriority(None)
        self.prioritySet = False
        
        self.setUmask(None)
        self.umaskSet = False
        
        self.setAffinity(None)
        self.affinitySet = False
        
        
        if self.statusObj:
            self.statusObj.clearAllSet()
        
        if self.commandObj:
            self.commandObj.clearAllSet()
        

    def write (self
              , process
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(process, trxContext)

    def read (self
              , process
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(process, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , process
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(process, 
                                  True,
                                  trxContext)

    def newStatus (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-status').debug3Func(): logFunc('called.')
        status = BlinkyStatusMaapi(self._log)
        status.init(self.domain)
        return status

    def setStatusObj (self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-status').debug3Func(): logFunc('called. obj=%s', obj)
        self.statusObj = obj

    def getStatusObj (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-status').debug3Func(): logFunc('called. self.statusObj=%s', self.statusObj)
        return self.statusObj

    def hasStatus (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-status').debug3Func(): logFunc('called. self.statusObj=%s', self.statusObj)
        if self.statusObj:
            return True
        return False

    def newCommand (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-command').debug3Func(): logFunc('called.')
        command = BlinkyCommandMaapi(self._log)
        command.init(self.domain)
        return command

    def setCommandObj (self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-command').debug3Func(): logFunc('called. obj=%s', obj)
        self.commandObj = obj

    def getCommandObj (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-command').debug3Func(): logFunc('called. self.commandObj=%s', self.commandObj)
        return self.commandObj

    def hasCommand (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-command').debug3Func(): logFunc('called. self.commandObj=%s', self.commandObj)
        if self.commandObj:
            return True
        return False



    def requestPriority (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-priority').debug3Func(): logFunc('called. requested=%s', requested)
        self.priorityRequested = requested
        self.prioritySet = False

    def isPriorityRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-priority-requested').debug3Func(): logFunc('called. requested=%s', self.priorityRequested)
        return self.priorityRequested

    def getPriority (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-priority').debug3Func(): logFunc('called. self.prioritySet=%s, self.priority=%s', self.prioritySet, self.priority)
        if self.prioritySet:
            return self.priority
        return None

    def hasPriority (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-priority').debug3Func(): logFunc('called. self.prioritySet=%s, self.priority=%s', self.prioritySet, self.priority)
        if self.prioritySet:
            return True
        return False

    def setPriority (self, priority):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-priority').debug3Func(): logFunc('called. priority=%s, old=%s', priority, self.priority)
        self.prioritySet = True
        self.priority = priority

    def requestUmask (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-umask').debug3Func(): logFunc('called. requested=%s', requested)
        self.umaskRequested = requested
        self.umaskSet = False

    def isUmaskRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-umask-requested').debug3Func(): logFunc('called. requested=%s', self.umaskRequested)
        return self.umaskRequested

    def getUmask (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-umask').debug3Func(): logFunc('called. self.umaskSet=%s, self.umask=%s', self.umaskSet, self.umask)
        if self.umaskSet:
            return self.umask
        return None

    def hasUmask (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-umask').debug3Func(): logFunc('called. self.umaskSet=%s, self.umask=%s', self.umaskSet, self.umask)
        if self.umaskSet:
            return True
        return False

    def setUmask (self, umask):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-umask').debug3Func(): logFunc('called. umask=%s, old=%s', umask, self.umask)
        self.umaskSet = True
        self.umask = umask

    def requestAffinity (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-affinity').debug3Func(): logFunc('called. requested=%s', requested)
        self.affinityRequested = requested
        self.affinitySet = False

    def isAffinityRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-affinity-requested').debug3Func(): logFunc('called. requested=%s', self.affinityRequested)
        return self.affinityRequested

    def getAffinity (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-affinity').debug3Func(): logFunc('called. self.affinitySet=%s, self.affinity=%s', self.affinitySet, self.affinity)
        if self.affinitySet:
            return self.affinity
        return None

    def hasAffinity (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-affinity').debug3Func(): logFunc('called. self.affinitySet=%s, self.affinity=%s', self.affinitySet, self.affinity)
        if self.affinitySet:
            return True
        return False

    def setAffinity (self, affinity):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-affinity').debug3Func(): logFunc('called. affinity=%s, old=%s', affinity, self.affinity)
        self.affinitySet = True
        self.affinity = affinity


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        
        if self.statusObj:
            self.statusObj._clearAllReadData()
        
        if self.commandObj:
            self.commandObj._clearAllReadData()
        

        
        self.priority = 0
        self.prioritySet = False
        
        self.umask = 0
        self.umaskSet = False
        
        self.affinity = 0
        self.affinitySet = False
        

    def _getSelfKeyPath (self, process
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("execution", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process", "qt-proc"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(process);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("process", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process", "qt-proc"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        process, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(process, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(process, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       process, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(process, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               process, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        
        if self.statusObj:
            res = self.statusObj._collectItemsToDelete(process, 
                                                                          
                                                                          itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('collect-items-to-delete-status-failed').errorFunc(): logFunc('statusObj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError
        
        if self.commandObj:
            res = self.commandObj._collectItemsToDelete(process, 
                                                                          
                                                                          itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('collect-items-to-delete-command-failed').errorFunc(): logFunc('commandObj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError
        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasPriority():
            valPriority = Value()
            if self.priority is not None:
                valPriority.setString(self.priority)
            else:
                valPriority.setEmpty()
            tagValueList.push(("priority", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process"), valPriority)
        
        if self.hasUmask():
            valUmask = Value()
            if self.umask is not None:
                valUmask.setUint64(self.umask)
            else:
                valUmask.setEmpty()
            tagValueList.push(("umask", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process"), valUmask)
        
        if self.hasAffinity():
            valAffinity = Value()
            if self.affinity is not None:
                valAffinity.setString(self.affinity)
            else:
                valAffinity.setEmpty()
            tagValueList.push(("affinity", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process"), valAffinity)
        

        
        if self.statusObj:
            valBegin = Value()
            (tag, ns, prefix) = ("status" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process", "qt-proc")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.statusObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-write-tag-values-status-failed').errorFunc(): logFunc('statusObj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        
        if self.commandObj:
            valBegin = Value()
            (tag, ns, prefix) = ("command" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process", "qt-proc")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.commandObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-write-tag-values-command-failed').errorFunc(): logFunc('commandObj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isPriorityRequested():
            valPriority = Value()
            valPriority.setEmpty()
            tagValueList.push(("priority", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process"), valPriority)
        
        if self.isUmaskRequested():
            valUmask = Value()
            valUmask.setEmpty()
            tagValueList.push(("umask", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process"), valUmask)
        
        if self.isAffinityRequested():
            valAffinity = Value()
            valAffinity.setEmpty()
            tagValueList.push(("affinity", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process"), valAffinity)
        

        
        if self.statusObj:
            valBegin = Value()
            (tag, ns, prefix) = ("status" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process", "qt-proc")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.statusObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-read-tag-values-status-failed').errorFunc(): logFunc('statusObj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        
        if self.commandObj:
            valBegin = Value()
            (tag, ns, prefix) = ("command" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process", "qt-proc")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.commandObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-read-tag-values-command-failed').errorFunc(): logFunc('commandObj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isPriorityRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "priority") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-priority').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "priority", "priority", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-priority-bad-value').infoFunc(): logFunc('priority not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setPriority(tempVar)
            for logFunc in self._log('read-tag-values-priority').debug3Func(): logFunc('read priority. priority=%s, tempValue=%s', self.priority, tempValue.getType())
        
        if self.isUmaskRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "umask") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-umask').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "umask", "umask", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asUint64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-umask-bad-value').infoFunc(): logFunc('umask not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setUmask(tempVar)
            for logFunc in self._log('read-tag-values-umask').debug3Func(): logFunc('read umask. umask=%s, tempValue=%s', self.umask, tempValue.getType())
        
        if self.isAffinityRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "affinity") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-affinity').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "affinity", "affinity", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-affinity-bad-value').infoFunc(): logFunc('affinity not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setAffinity(tempVar)
            for logFunc in self._log('read-tag-values-affinity').debug3Func(): logFunc('read affinity. affinity=%s, tempValue=%s', self.affinity, tempValue.getType())
        

        
        if self.statusObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "status") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log('reag-tag-values-unexpected-tag-begin').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                        "status", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process", Value.kXmlBegin,
                                                                        tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
            
            res = self.statusObj._readTagValues(tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('read-tag-values-status-failed').errorFunc(): logFunc('statusObj._readTagValues() failed. tagValueList=%s', tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "status") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log('reag-tag-values-unexpected-tag-end').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                      "status", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process", Value.kXmlEnd,
                                                                        tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
        
        if self.commandObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "command") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log('reag-tag-values-unexpected-tag-begin').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                        "command", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process", Value.kXmlBegin,
                                                                        tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
            
            res = self.commandObj._readTagValues(tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('read-tag-values-command-failed').errorFunc(): logFunc('commandObj._readTagValues() failed. tagValueList=%s', tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "command") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log('reag-tag-values-unexpected-tag-end').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                      "command", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process", Value.kXmlEnd,
                                                                        tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
Example #38
0
class BlinkyPersonMaapi(PersonMaapiBase):
    def __init__(self, logger):
        self.myInitGuard = InitGuard()
        self._log = logger.createLogger("sys-blinky-oper-example",
                                        "blinky-maapi-person")
        self.domain = None

        self.nameRequested = False
        self.name = None
        self.nameSet = False

        self.heightRequested = False
        self.height = None
        self.heightSet = False

    def init(self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func():
            logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestName(True)

        self.requestHeight(True)

    def requestConfig(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func():
            logFunc('called, PARAMS')

        self.requestName(True)

        self.requestHeight(True)

    def requestOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestName(False)

        self.requestHeight(False)

    def clearAllRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func():
            logFunc('called, PARAMS')

        self.requestName(False)

        self.requestHeight(False)

    def clearAllSet(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func():
            logFunc('called, PARAMS')

        self.setName(None)
        self.nameSet = False

        self.setHeight(None)
        self.heightSet = False

    def write(self, person, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func():
            logFunc('called, PARAMS')
        return self._internalWrite(person, trxContext)

    def read(self, person, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(person, False, trxContext)

    def readAllOrFail(self, person, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(person, True, trxContext)

    def requestName(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-name').debug3Func():
            logFunc('called. requested=%s', requested)
        self.nameRequested = requested
        self.nameSet = False

    def isNameRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-name-requested').debug3Func():
            logFunc('called. requested=%s', self.nameRequested)
        return self.nameRequested

    def getName(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-name').debug3Func():
            logFunc('called. self.nameSet=%s, self.name=%s', self.nameSet,
                    self.name)
        if self.nameSet:
            return self.name
        return None

    def hasName(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-name').debug3Func():
            logFunc('called. self.nameSet=%s, self.name=%s', self.nameSet,
                    self.name)
        if self.nameSet:
            return True
        return False

    def setName(self, name):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-name').debug3Func():
            logFunc('called. name=%s, old=%s', name, self.name)
        self.nameSet = True
        self.name = name

    def requestHeight(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-height').debug3Func():
            logFunc('called. requested=%s', requested)
        self.heightRequested = requested
        self.heightSet = False

    def isHeightRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-height-requested').debug3Func():
            logFunc('called. requested=%s', self.heightRequested)
        return self.heightRequested

    def getHeight(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-height').debug3Func():
            logFunc('called. self.heightSet=%s, self.height=%s',
                    self.heightSet, self.height)
        if self.heightSet:
            return self.height
        return None

    def hasHeight(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-height').debug3Func():
            logFunc('called. self.heightSet=%s, self.height=%s',
                    self.heightSet, self.height)
        if self.heightSet:
            return True
        return False

    def setHeight(self, height):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-height').debug3Func():
            logFunc('called. height=%s, old=%s', height, self.height)
        self.heightSet = True
        self.height = height

    def _clearAllReadData(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func():
            logFunc('called')

        self.name = 0
        self.nameSet = False

        self.height = 0
        self.heightSet = False

    def _getSelfKeyPath(self, person, junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func():
            logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()

        ancestorVal = Value()
        ancestorVal.setString(person)
        keyPath.addKeyPathPrefix(ancestorVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("people", "http://qwilt.com/model/school-example", "sche"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("school", "http://qwilt.com/model/school-example", "sche"))
        keyPath.addKeyPathPrefix(xmlVal)

        for logFunc in self._log('get-self-key-path-done').debug3Func():
            logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite(self, person, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func():
            logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-fill-write-tag-value-failed').errorFunc():
                logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(person, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-collect-items-to-delete-failed').errorFunc():
                logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(person, None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext,
                                     itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc():
                logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func():
            logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead(self, person, readAllOrFail, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func():
            logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-fill-read-tag-value-failed').errorFunc():
                logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(person, None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc():
                logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-read-tag-values-failed').errorFunc():
                logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func():
            logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete(self, person, itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func():
            logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        for logFunc in self._log('collect-items-to-delete-done').debug3Func():
            logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.hasName():
            valName = Value()
            if self.name is not None:
                valName.setString(self.name)
            else:
                valName.setEmpty()
            tagValueList.push(
                ("name", "http://qwilt.com/model/school-example"), valName)

        if self.hasHeight():
            valHeight = Value()
            if self.height is not None:
                valHeight.setInt64(self.height)
            else:
                valHeight.setEmpty()
            tagValueList.push(
                ("height", "http://qwilt.com/model/school-example"), valHeight)

        return ReturnCodes.kOk

    def _fillReadTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.isNameRequested():
            valName = Value()
            valName.setEmpty()
            tagValueList.push(
                ("name", "http://qwilt.com/model/school-example"), valName)

        if self.isHeightRequested():
            valHeight = Value()
            valHeight.setEmpty()
            tagValueList.push(
                ("height", "http://qwilt.com/model/school-example"), valHeight)

        return ReturnCodes.kOk

    def _readTagValues(self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func():
            logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func():
            logFunc('reading leaves. tagValueList=%s', tagValueList)

        if self.isNameRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "name") or \
                (ns != "http://qwilt.com/model/school-example"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-name').errorFunc(
                        ):
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "name", "name",
                        "http://qwilt.com/model/school-example", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-name-bad-value').infoFunc():
                    logFunc('name not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setName(tempVar)
            for logFunc in self._log('read-tag-values-name').debug3Func():
                logFunc('read name. name=%s, tempValue=%s', self.name,
                        tempValue.getType())

        if self.isHeightRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "height") or \
                (ns != "http://qwilt.com/model/school-example"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-height'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "height", "height",
                        "http://qwilt.com/model/school-example", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-height-bad-value').infoFunc():
                    logFunc('height not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setHeight(tempVar)
            for logFunc in self._log('read-tag-values-height').debug3Func():
                logFunc('read height. height=%s, tempValue=%s', self.height,
                        tempValue.getType())

        for logFunc in self._log('read-tag-values-done').debug3Func():
            logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)
        return ReturnCodes.kOk
Example #39
0
class BlinkyCountersMaapi(CountersMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-counters")
        self.domain = None

        

        
        self.strTestRequested = False
        self.strTest = None
        self.strTestSet = False
        
        self.moodRequested = False
        self.mood = None
        self.moodSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestStrTest(True)
        
        self.requestMood(True)
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestStrTest(False)
        
        self.requestMood(False)
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestStrTest(True)
        
        self.requestMood(True)
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        
        self.requestStrTest(False)
        
        self.requestMood(False)
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        

    def write (self
              , alien
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(alien, trxContext)

    def read (self
              , alien
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(alien, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , alien
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(alien, 
                                  True,
                                  trxContext)



    def requestStrTest (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-strtest').debug3Func(): logFunc('called. requested=%s', requested)
        self.strTestRequested = requested
        self.strTestSet = False

    def isStrTestRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-strtest-requested').debug3Func(): logFunc('called. requested=%s', self.strTestRequested)
        return self.strTestRequested

    def getStrTest (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-strtest').debug3Func(): logFunc('called. self.strTestSet=%s, self.strTest=%s', self.strTestSet, self.strTest)
        if self.strTestSet:
            return self.strTest
        return None

    def hasStrTest (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-strtest').debug3Func(): logFunc('called. self.strTestSet=%s, self.strTest=%s', self.strTestSet, self.strTest)
        if self.strTestSet:
            return True
        return False

    def setStrTest (self, strTest):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-strtest').debug3Func(): logFunc('called. strTest=%s, old=%s', strTest, self.strTest)
        self.strTestSet = True
        self.strTest = strTest

    def requestMood (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-mood').debug3Func(): logFunc('called. requested=%s', requested)
        self.moodRequested = requested
        self.moodSet = False

    def isMoodRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-mood-requested').debug3Func(): logFunc('called. requested=%s', self.moodRequested)
        return self.moodRequested

    def getMood (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-mood').debug3Func(): logFunc('called. self.moodSet=%s, self.mood=%s', self.moodSet, self.mood)
        if self.moodSet:
            return self.mood
        return None

    def hasMood (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-mood').debug3Func(): logFunc('called. self.moodSet=%s, self.mood=%s', self.moodSet, self.mood)
        if self.moodSet:
            return True
        return False

    def setMood (self, mood):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-mood').debug3Func(): logFunc('called. mood=%s, old=%s', mood, self.mood)
        self.moodSet = True
        self.mood = mood


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.strTest = 0
        self.strTestSet = False
        
        self.mood = 0
        self.moodSet = False
        

    def _getSelfKeyPath (self, alien
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("counters", "http://qwilt.com/ns/yang/ut/sys/blinky/example/python/oper-example", "oe"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("status-wrapper", "http://qwilt.com/ns/yang/ut/sys/blinky/example/python/oper-example", "oe"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(alien);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("alien", "http://qwilt.com/ns/yang/ut/sys/blinky/example/python/oper-example", "oe"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("root", "http://qwilt.com/ns/yang/ut/sys/blinky/example/python/oper-example", "oe"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        alien, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(alien, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(alien, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       alien, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(alien, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               alien, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isStrTestRequested():
            valStrTest = Value()
            valStrTest.setEmpty()
            tagValueList.push(("str-test", "http://qwilt.com/ns/yang/ut/sys/blinky/example/python/oper-example"), valStrTest)
        
        if self.isMoodRequested():
            valMood = Value()
            valMood.setEmpty()
            tagValueList.push(("mood", "http://qwilt.com/ns/yang/ut/sys/blinky/example/python/oper-example"), valMood)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isStrTestRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "str-test") or \
                (ns != "http://qwilt.com/ns/yang/ut/sys/blinky/example/python/oper-example"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-strtest').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "strTest", "str-test", "http://qwilt.com/ns/yang/ut/sys/blinky/example/python/oper-example", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-str-test-bad-value').infoFunc(): logFunc('strTest not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setStrTest(tempVar)
            for logFunc in self._log('read-tag-values-str-test').debug3Func(): logFunc('read strTest. strTest=%s, tempValue=%s', self.strTest, tempValue.getType())
        
        if self.isMoodRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "mood") or \
                (ns != "http://qwilt.com/ns/yang/ut/sys/blinky/example/python/oper-example"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-mood').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "mood", "mood", "http://qwilt.com/ns/yang/ut/sys/blinky/example/python/oper-example", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asUint64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-mood-bad-value').infoFunc(): logFunc('mood not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setMood(tempVar)
            for logFunc in self._log('read-tag-values-mood').debug3Func(): logFunc('read mood. mood=%s, tempValue=%s', self.mood, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
class BlinkyInterfaceMaapi(InterfaceMaapiBase):
    def __init__(self, logger):
        self.myInitGuard = InitGuard()
        self._log = logger.createLogger("sys-blinky-oper-example",
                                        "blinky-maapi-interface")
        self.domain = None

        self.deliveryObj = None

        self.systemDefaultsObj = None

        self.descriptionRequested = False
        self.description = None
        self.descriptionSet = False

        self.nameRequested = False
        self.name = None
        self.nameSet = False

    def init(self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func():
            logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestDescription(True)

        self.requestName(True)

        if not self.deliveryObj:
            self.deliveryObj = self.newDelivery()
            self.deliveryObj.requestConfigAndOper()

        if not self.systemDefaultsObj:
            self.systemDefaultsObj = self.newSystemDefaults()
            self.systemDefaultsObj.requestConfigAndOper()

    def requestConfig(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func():
            logFunc('called, PARAMS')

        self.requestDescription(True)

        self.requestName(True)

        if not self.deliveryObj:
            self.deliveryObj = self.newDelivery()
            self.deliveryObj.requestConfig()

        if not self.systemDefaultsObj:
            self.systemDefaultsObj = self.newSystemDefaults()
            self.systemDefaultsObj.requestConfig()

    def requestOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestDescription(False)

        self.requestName(False)

        if not self.deliveryObj:
            self.deliveryObj = self.newDelivery()
            self.deliveryObj.requestOper()

        if not self.systemDefaultsObj:
            self.systemDefaultsObj = self.newSystemDefaults()
            self.systemDefaultsObj.requestOper()

    def clearAllRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func():
            logFunc('called, PARAMS')

        self.requestDescription(False)

        self.requestName(False)

        if not self.deliveryObj:
            self.deliveryObj = self.newDelivery()
            self.deliveryObj.clearAllRequested()

        if not self.systemDefaultsObj:
            self.systemDefaultsObj = self.newSystemDefaults()
            self.systemDefaultsObj.clearAllRequested()

    def clearAllSet(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func():
            logFunc('called, PARAMS')

        self.setDescription(None)
        self.descriptionSet = False

        self.setName(None)
        self.nameSet = False

        if self.deliveryObj:
            self.deliveryObj.clearAllSet()

        if self.systemDefaultsObj:
            self.systemDefaultsObj.clearAllSet()

    def write(self, interface, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func():
            logFunc('called, PARAMS')
        return self._internalWrite(interface, trxContext)

    def read(self, interface, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(interface, False, trxContext)

    def readAllOrFail(self, interface, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(interface, True, trxContext)

    def newDelivery(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-delivery').debug3Func():
            logFunc('called.')
        delivery = BlinkyDeliveryMaapi(self._log)
        delivery.init(self.domain)
        return delivery

    def setDeliveryObj(self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-delivery').debug3Func():
            logFunc('called. obj=%s', obj)
        self.deliveryObj = obj

    def getDeliveryObj(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-delivery').debug3Func():
            logFunc('called. self.deliveryObj=%s', self.deliveryObj)
        return self.deliveryObj

    def hasDelivery(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-delivery').debug3Func():
            logFunc('called. self.deliveryObj=%s', self.deliveryObj)
        if self.deliveryObj:
            return True
        return False

    def newSystemDefaults(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-systemdefaults').debug3Func():
            logFunc('called.')
        systemDefaults = BlinkySystemDefaultsMaapi(self._log)
        systemDefaults.init(self.domain)
        return systemDefaults

    def setSystemDefaultsObj(self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-systemdefaults').debug3Func():
            logFunc('called. obj=%s', obj)
        self.systemDefaultsObj = obj

    def getSystemDefaultsObj(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-systemdefaults').debug3Func():
            logFunc('called. self.systemDefaultsObj=%s',
                    self.systemDefaultsObj)
        return self.systemDefaultsObj

    def hasSystemDefaults(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-systemdefaults').debug3Func():
            logFunc('called. self.systemDefaultsObj=%s',
                    self.systemDefaultsObj)
        if self.systemDefaultsObj:
            return True
        return False

    def requestDescription(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-description').debug3Func():
            logFunc('called. requested=%s', requested)
        self.descriptionRequested = requested
        self.descriptionSet = False

    def isDescriptionRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-description-requested').debug3Func():
            logFunc('called. requested=%s', self.descriptionRequested)
        return self.descriptionRequested

    def getDescription(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-description').debug3Func():
            logFunc('called. self.descriptionSet=%s, self.description=%s',
                    self.descriptionSet, self.description)
        if self.descriptionSet:
            return self.description
        return None

    def hasDescription(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-description').debug3Func():
            logFunc('called. self.descriptionSet=%s, self.description=%s',
                    self.descriptionSet, self.description)
        if self.descriptionSet:
            return True
        return False

    def setDescription(self, description):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-description').debug3Func():
            logFunc('called. description=%s, old=%s', description,
                    self.description)
        self.descriptionSet = True
        self.description = description

    def requestName(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-name').debug3Func():
            logFunc('called. requested=%s', requested)
        self.nameRequested = requested
        self.nameSet = False

    def isNameRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-name-requested').debug3Func():
            logFunc('called. requested=%s', self.nameRequested)
        return self.nameRequested

    def getName(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-name').debug3Func():
            logFunc('called. self.nameSet=%s, self.name=%s', self.nameSet,
                    self.name)
        if self.nameSet:
            return self.name
        return None

    def hasName(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-name').debug3Func():
            logFunc('called. self.nameSet=%s, self.name=%s', self.nameSet,
                    self.name)
        if self.nameSet:
            return True
        return False

    def setName(self, name):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-name').debug3Func():
            logFunc('called. name=%s, old=%s', name, self.name)
        self.nameSet = True
        self.name = name

    def _clearAllReadData(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func():
            logFunc('called')

        if self.deliveryObj:
            self.deliveryObj._clearAllReadData()

        if self.systemDefaultsObj:
            self.systemDefaultsObj._clearAllReadData()

        self.description = 0
        self.descriptionSet = False

        self.name = 0
        self.nameSet = False

    def _getSelfKeyPath(self, interface, junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func():
            logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()

        ancestorVal = Value()
        ancestorVal.setString(interface)
        keyPath.addKeyPathPrefix(ancestorVal)

        xmlVal = Value()
        xmlVal.setXmlTag((
            "interface",
            "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces",
            "qtc-if"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag((
            "interfaces",
            "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces",
            "qtc-if"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("content",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content", "qtc"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)

        for logFunc in self._log('get-self-key-path-done').debug3Func():
            logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite(self, interface, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func():
            logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-fill-write-tag-value-failed').errorFunc():
                logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(interface, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-collect-items-to-delete-failed').errorFunc():
                logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(interface, None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext,
                                     itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc():
                logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func():
            logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead(self, interface, readAllOrFail, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func():
            logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-fill-read-tag-value-failed').errorFunc():
                logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(interface, None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc():
                logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-read-tag-values-failed').errorFunc():
                logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func():
            logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete(self, interface, itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func():
            logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        if self.deliveryObj:
            res = self.deliveryObj._collectItemsToDelete(
                interface, itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'collect-items-to-delete-delivery-failed').errorFunc():
                    logFunc(
                        'deliveryObj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError

        if self.systemDefaultsObj:
            res = self.systemDefaultsObj._collectItemsToDelete(
                interface, itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'collect-items-to-delete-system-defaults-failed'
                ).errorFunc():
                    logFunc(
                        'systemDefaultsObj._collectItemsToDelete() failed. PARAMS'
                    )
                return ReturnCodes.kGeneralError

        for logFunc in self._log('collect-items-to-delete-done').debug3Func():
            logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.hasDescription():
            valDescription = Value()
            if self.description is not None:
                valDescription.setString(self.description)
            else:
                valDescription.setEmpty()
            tagValueList.push((
                "description",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces"
            ), valDescription)

        if self.hasName():
            valName = Value()
            if self.name is not None:
                valName.setString(self.name)
            else:
                valName.setEmpty()
            tagValueList.push((
                "name",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces"
            ), valName)

        if self.deliveryObj:
            valBegin = Value()
            (tag, ns, prefix) = (
                "delivery",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces",
                "qtc-if")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.deliveryObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-write-tag-values-delivery-failed').errorFunc():
                    logFunc('deliveryObj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        if self.systemDefaultsObj:
            valBegin = Value()
            (tag, ns, prefix) = (
                "system-defaults",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces",
                "qtc-if")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.systemDefaultsObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-write-tag-values-system-defaults-failed'
                ).errorFunc():
                    logFunc(
                        'systemDefaultsObj._fillWriteTagValues() failed. PARAMS'
                    )
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        return ReturnCodes.kOk

    def _fillReadTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.isDescriptionRequested():
            valDescription = Value()
            valDescription.setEmpty()
            tagValueList.push((
                "description",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces"
            ), valDescription)

        if self.isNameRequested():
            valName = Value()
            valName.setEmpty()
            tagValueList.push((
                "name",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces"
            ), valName)

        if self.deliveryObj:
            valBegin = Value()
            (tag, ns, prefix) = (
                "delivery",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces",
                "qtc-if")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.deliveryObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-read-tag-values-delivery-failed').errorFunc():
                    logFunc('deliveryObj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        if self.systemDefaultsObj:
            valBegin = Value()
            (tag, ns, prefix) = (
                "system-defaults",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces",
                "qtc-if")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.systemDefaultsObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-read-tag-values-system-defaults-failed'
                ).errorFunc():
                    logFunc(
                        'systemDefaultsObj._fillReadTagValues() failed. PARAMS'
                    )
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        return ReturnCodes.kOk

    def _readTagValues(self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func():
            logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func():
            logFunc('reading leaves. tagValueList=%s', tagValueList)

        if self.isDescriptionRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "description") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-description'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "description", "description",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-description-bad-value').infoFunc():
                    logFunc('description not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setDescription(tempVar)
            for logFunc in self._log(
                    'read-tag-values-description').debug3Func():
                logFunc('read description. description=%s, tempValue=%s',
                        self.description, tempValue.getType())

        if self.isNameRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "name") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-name').errorFunc(
                        ):
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "name", "name",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-name-bad-value').infoFunc():
                    logFunc('name not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setName(tempVar)
            for logFunc in self._log('read-tag-values-name').debug3Func():
                logFunc('read name. name=%s, tempValue=%s', self.name,
                        tempValue.getType())

        if self.deliveryObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "delivery") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-begin').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "delivery",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces",
                        Value.kXmlBegin, tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            res = self.deliveryObj._readTagValues(tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'read-tag-values-delivery-failed').errorFunc():
                    logFunc(
                        'deliveryObj._readTagValues() failed. tagValueList=%s',
                        tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "delivery") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-end').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "delivery",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces",
                        Value.kXmlEnd, tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

        if self.systemDefaultsObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "system-defaults") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-begin').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "system-defaults",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces",
                        Value.kXmlBegin, tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            res = self.systemDefaultsObj._readTagValues(
                tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'read-tag-values-system-defaults-failed').errorFunc():
                    logFunc(
                        'systemDefaultsObj._readTagValues() failed. tagValueList=%s',
                        tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "system-defaults") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-end').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "system-defaults",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces",
                        Value.kXmlEnd, tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

        for logFunc in self._log('read-tag-values-done').debug3Func():
            logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)
        return ReturnCodes.kOk
class BlinkyHouseKeeperMaapi(HouseKeeperMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-houseKeeper")
        self.domain = None

        

        
        self.threadPriorityRequested = False
        self.threadPriority = None
        self.threadPrioritySet = False
        
        self.sleepMsecRequested = False
        self.sleepMsec = None
        self.sleepMsecSet = False
        
        self.countersUpdateIntervalMsecRequested = False
        self.countersUpdateIntervalMsec = None
        self.countersUpdateIntervalMsecSet = False
        
        self.threadAffinityRequested = False
        self.threadAffinity = None
        self.threadAffinitySet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestThreadPriority(True)
        
        self.requestSleepMsec(True)
        
        self.requestCountersUpdateIntervalMsec(True)
        
        self.requestThreadAffinity(True)
        
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestThreadPriority(True)
        
        self.requestSleepMsec(True)
        
        self.requestCountersUpdateIntervalMsec(True)
        
        self.requestThreadAffinity(True)
        
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestThreadPriority(False)
        
        self.requestSleepMsec(False)
        
        self.requestCountersUpdateIntervalMsec(False)
        
        self.requestThreadAffinity(False)
        
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestThreadPriority(False)
        
        self.requestSleepMsec(False)
        
        self.requestCountersUpdateIntervalMsec(False)
        
        self.requestThreadAffinity(False)
        
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setThreadPriority(None)
        self.threadPrioritySet = False
        
        self.setSleepMsec(None)
        self.sleepMsecSet = False
        
        self.setCountersUpdateIntervalMsec(None)
        self.countersUpdateIntervalMsecSet = False
        
        self.setThreadAffinity(None)
        self.threadAffinitySet = False
        
        

    def write (self
              , line
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(line, trxContext)

    def read (self
              , line
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(line, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , line
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(line, 
                                  True,
                                  trxContext)



    def requestThreadPriority (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-threadpriority').debug3Func(): logFunc('called. requested=%s', requested)
        self.threadPriorityRequested = requested
        self.threadPrioritySet = False

    def isThreadPriorityRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-threadpriority-requested').debug3Func(): logFunc('called. requested=%s', self.threadPriorityRequested)
        return self.threadPriorityRequested

    def getThreadPriority (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-threadpriority').debug3Func(): logFunc('called. self.threadPrioritySet=%s, self.threadPriority=%s', self.threadPrioritySet, self.threadPriority)
        if self.threadPrioritySet:
            return self.threadPriority
        return None

    def hasThreadPriority (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-threadpriority').debug3Func(): logFunc('called. self.threadPrioritySet=%s, self.threadPriority=%s', self.threadPrioritySet, self.threadPriority)
        if self.threadPrioritySet:
            return True
        return False

    def setThreadPriority (self, threadPriority):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-threadpriority').debug3Func(): logFunc('called. threadPriority=%s, old=%s', threadPriority, self.threadPriority)
        self.threadPrioritySet = True
        self.threadPriority = threadPriority

    def requestSleepMsec (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-sleepmsec').debug3Func(): logFunc('called. requested=%s', requested)
        self.sleepMsecRequested = requested
        self.sleepMsecSet = False

    def isSleepMsecRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-sleepmsec-requested').debug3Func(): logFunc('called. requested=%s', self.sleepMsecRequested)
        return self.sleepMsecRequested

    def getSleepMsec (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-sleepmsec').debug3Func(): logFunc('called. self.sleepMsecSet=%s, self.sleepMsec=%s', self.sleepMsecSet, self.sleepMsec)
        if self.sleepMsecSet:
            return self.sleepMsec
        return None

    def hasSleepMsec (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-sleepmsec').debug3Func(): logFunc('called. self.sleepMsecSet=%s, self.sleepMsec=%s', self.sleepMsecSet, self.sleepMsec)
        if self.sleepMsecSet:
            return True
        return False

    def setSleepMsec (self, sleepMsec):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-sleepmsec').debug3Func(): logFunc('called. sleepMsec=%s, old=%s', sleepMsec, self.sleepMsec)
        self.sleepMsecSet = True
        self.sleepMsec = sleepMsec

    def requestCountersUpdateIntervalMsec (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-countersupdateintervalmsec').debug3Func(): logFunc('called. requested=%s', requested)
        self.countersUpdateIntervalMsecRequested = requested
        self.countersUpdateIntervalMsecSet = False

    def isCountersUpdateIntervalMsecRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-countersupdateintervalmsec-requested').debug3Func(): logFunc('called. requested=%s', self.countersUpdateIntervalMsecRequested)
        return self.countersUpdateIntervalMsecRequested

    def getCountersUpdateIntervalMsec (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-countersupdateintervalmsec').debug3Func(): logFunc('called. self.countersUpdateIntervalMsecSet=%s, self.countersUpdateIntervalMsec=%s', self.countersUpdateIntervalMsecSet, self.countersUpdateIntervalMsec)
        if self.countersUpdateIntervalMsecSet:
            return self.countersUpdateIntervalMsec
        return None

    def hasCountersUpdateIntervalMsec (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-countersupdateintervalmsec').debug3Func(): logFunc('called. self.countersUpdateIntervalMsecSet=%s, self.countersUpdateIntervalMsec=%s', self.countersUpdateIntervalMsecSet, self.countersUpdateIntervalMsec)
        if self.countersUpdateIntervalMsecSet:
            return True
        return False

    def setCountersUpdateIntervalMsec (self, countersUpdateIntervalMsec):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-countersupdateintervalmsec').debug3Func(): logFunc('called. countersUpdateIntervalMsec=%s, old=%s', countersUpdateIntervalMsec, self.countersUpdateIntervalMsec)
        self.countersUpdateIntervalMsecSet = True
        self.countersUpdateIntervalMsec = countersUpdateIntervalMsec

    def requestThreadAffinity (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-threadaffinity').debug3Func(): logFunc('called. requested=%s', requested)
        self.threadAffinityRequested = requested
        self.threadAffinitySet = False

    def isThreadAffinityRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-threadaffinity-requested').debug3Func(): logFunc('called. requested=%s', self.threadAffinityRequested)
        return self.threadAffinityRequested

    def getThreadAffinity (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-threadaffinity').debug3Func(): logFunc('called. self.threadAffinitySet=%s, self.threadAffinity=%s', self.threadAffinitySet, self.threadAffinity)
        if self.threadAffinitySet:
            return self.threadAffinity
        return None

    def hasThreadAffinity (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-threadaffinity').debug3Func(): logFunc('called. self.threadAffinitySet=%s, self.threadAffinity=%s', self.threadAffinitySet, self.threadAffinity)
        if self.threadAffinitySet:
            return True
        return False

    def setThreadAffinity (self, threadAffinity):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-threadaffinity').debug3Func(): logFunc('called. threadAffinity=%s, old=%s', threadAffinity, self.threadAffinity)
        self.threadAffinitySet = True
        self.threadAffinity = threadAffinity


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.threadPriority = 0
        self.threadPrioritySet = False
        
        self.sleepMsec = 0
        self.sleepMsecSet = False
        
        self.countersUpdateIntervalMsec = 0
        self.countersUpdateIntervalMsecSet = False
        
        self.threadAffinity = 0
        self.threadAffinitySet = False
        

    def _getSelfKeyPath (self, line
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("house-keeper", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", "qtc-line"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("dispatcher", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", "qtc-line"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(line);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("line", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", "qtc-line"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("content", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content", "qtc"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        line, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(line, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(line, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       line, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(line, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               line, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasThreadPriority():
            valThreadPriority = Value()
            if self.threadPriority is not None:
                valThreadPriority.setString(self.threadPriority)
            else:
                valThreadPriority.setEmpty()
            tagValueList.push(("thread-priority", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"), valThreadPriority)
        
        if self.hasSleepMsec():
            valSleepMsec = Value()
            if self.sleepMsec is not None:
                valSleepMsec.setInt64(self.sleepMsec)
            else:
                valSleepMsec.setEmpty()
            tagValueList.push(("sleep-msec", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"), valSleepMsec)
        
        if self.hasCountersUpdateIntervalMsec():
            valCountersUpdateIntervalMsec = Value()
            if self.countersUpdateIntervalMsec is not None:
                valCountersUpdateIntervalMsec.setInt64(self.countersUpdateIntervalMsec)
            else:
                valCountersUpdateIntervalMsec.setEmpty()
            tagValueList.push(("counters-update-interval-msec", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"), valCountersUpdateIntervalMsec)
        
        if self.hasThreadAffinity():
            valThreadAffinity = Value()
            if self.threadAffinity is not None:
                valThreadAffinity.setString(self.threadAffinity)
            else:
                valThreadAffinity.setEmpty()
            tagValueList.push(("thread-affinity", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"), valThreadAffinity)
        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isThreadPriorityRequested():
            valThreadPriority = Value()
            valThreadPriority.setEmpty()
            tagValueList.push(("thread-priority", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"), valThreadPriority)
        
        if self.isSleepMsecRequested():
            valSleepMsec = Value()
            valSleepMsec.setEmpty()
            tagValueList.push(("sleep-msec", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"), valSleepMsec)
        
        if self.isCountersUpdateIntervalMsecRequested():
            valCountersUpdateIntervalMsec = Value()
            valCountersUpdateIntervalMsec.setEmpty()
            tagValueList.push(("counters-update-interval-msec", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"), valCountersUpdateIntervalMsec)
        
        if self.isThreadAffinityRequested():
            valThreadAffinity = Value()
            valThreadAffinity.setEmpty()
            tagValueList.push(("thread-affinity", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"), valThreadAffinity)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isThreadPriorityRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "thread-priority") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-threadpriority').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "threadPriority", "thread-priority", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-thread-priority-bad-value').infoFunc(): logFunc('threadPriority not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setThreadPriority(tempVar)
            for logFunc in self._log('read-tag-values-thread-priority').debug3Func(): logFunc('read threadPriority. threadPriority=%s, tempValue=%s', self.threadPriority, tempValue.getType())
        
        if self.isSleepMsecRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "sleep-msec") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-sleepmsec').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "sleepMsec", "sleep-msec", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-sleep-msec-bad-value').infoFunc(): logFunc('sleepMsec not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setSleepMsec(tempVar)
            for logFunc in self._log('read-tag-values-sleep-msec').debug3Func(): logFunc('read sleepMsec. sleepMsec=%s, tempValue=%s', self.sleepMsec, tempValue.getType())
        
        if self.isCountersUpdateIntervalMsecRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "counters-update-interval-msec") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-countersupdateintervalmsec').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "countersUpdateIntervalMsec", "counters-update-interval-msec", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-counters-update-interval-msec-bad-value').infoFunc(): logFunc('countersUpdateIntervalMsec not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setCountersUpdateIntervalMsec(tempVar)
            for logFunc in self._log('read-tag-values-counters-update-interval-msec').debug3Func(): logFunc('read countersUpdateIntervalMsec. countersUpdateIntervalMsec=%s, tempValue=%s', self.countersUpdateIntervalMsec, tempValue.getType())
        
        if self.isThreadAffinityRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "thread-affinity") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-threadaffinity').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "threadAffinity", "thread-affinity", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-thread-affinity-bad-value').infoFunc(): logFunc('threadAffinity not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setThreadAffinity(tempVar)
            for logFunc in self._log('read-tag-values-thread-affinity').debug3Func(): logFunc('read threadAffinity. threadAffinity=%s, tempValue=%s', self.threadAffinity, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
class BlinkyPrefixMaapiList(PrefixMaapiListBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-prefix")
        self.domain = None

        self.prefixs = {}
        self.prefixKeys = []

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def newPrefix (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-prefix').debug3Func(): logFunc('called.')
        prefix = BlinkyPrefixMaapi(self._log)
        prefix.init(self.domain)
        return prefix

    def setPrefixObj (self, key, prefixObj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-prefix-obj').debug3Func(): logFunc('called. key=%s, prefixObj=%s', key, prefixObj)
        if key not in self.prefixs:
            self.prefixKeys.append(key)
        self.prefixs[str(key)] = prefixObj

    def getPrefixObj (self, key):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-prefix-obj').debug3Func(): logFunc('called. key=%s', key)
        if str(key) in self.prefixs.keys():
            for logFunc in self._log('get-prefix-obj-done').debug3Func(): logFunc('Done. found key=%s, obj=%s', key, self.prefixs[str(key)])
            return self.prefixs[str(key)]
        for logFunc in self._log('get-prefix-obj-missing').errorFunc(): logFunc('prefix %s not in prefixs. existing items: %s', key, self.prefixs.keys())
        return None

    def deletePrefix (self, key):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('delete-prefix').debug3Func(): logFunc('called. key=%s', key)
        if str(key) not in self.prefixKeys:
            for logFunc in self._log('delete-prefix-not-found').warningFunc(): logFunc('key=%s is missing from the prefixKeys list', key)
            if str(key) in self.prefixs.keys():
                # internal problem - list & dictionary are not synced
                for logFunc in self._log('delete-prefix-not-found-but-in-dict').errorFunc(): logFunc('prefixs dictionary & prefixKeys list are out-of-sync. key %s exists in dict but not in list', key)
            return ReturnCodes.kGeneralError
        if str(key) not in self.prefixs.keys():
            # internal problem - list & dictionary are not synced
            for logFunc in self._log('delete-prefix-not-found-but-in-list').errorFunc(): logFunc('prefixs dictionary & prefixKeys list are out-of-sync. key %s exists in list but not in dict', key)
            return ReturnCodes.kGeneralError

        self.prefixKeys.remove(str(key))
        del self.prefixs[str(key)]

    def hasPrefixObj (self, key):
        self.myInitGuard.isInitOrCrash()
        has = False
        if str(key) in self.prefixs.keys():
            if self.prefixs[str(key)]:
                has = True
        for logFunc in self._log('has-prefix-done').debug3Func(): logFunc('done. key=%s exists=%s', key, has)
        return has

    def getListKeys (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-list-keys').debug3Func(): logFunc('called. keys=%s', [str(x) for x in self.prefixKeys])
        return self.prefixKeys

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called.')
        for prefix in self.prefixs.values():
            prefix.requestConfigAndOper()

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called.')
        for prefix in self.prefixs.values():
            prefix.requestConfig()

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called.')
        for prefix in self.prefixs.values():
            prefix.requestOper()

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called.')
        for prefix in self.prefixs.values():
            prefix.clearAllRequested()

    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')
        for prefix in self.prefixs.values():
            if prefix:
                prefix._clearAllReadData()

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        for key in self.prefixs.keys():
            if self.prefixs[key]:
                self.prefixs[key].clearAllSet()
            else:
                self.prefixKeys.remove(str(key))
                del self.prefixs[str(key)]

    def _getSelfKeyPath (self, zone
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS. junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()

        
        
        
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("ipv4", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content", "qtc"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(zone);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("zone", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content", "qtc"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("zones", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content", "qtc"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("content", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content", "qtc"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def readListKeys (self
                      , zone
                      
                      , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-list-keys').debug3Func(): logFunc('called')

        # clear the old map
        self.prefixs = {}
        self.prefixKeys = []

        keyPath = self._getSelfKeyPath(zone, 
                                       
                                       None)

        xmlVal = Value()
        xmlVal.setXmlTag(("prefix", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content", "qtc"))
        keyPath.addKeyPathPostfix(xmlVal)

        keys = []

        res = self.domain.readMaapiKeys(keyPath, keys, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-list-keys-domain-failed').errorFunc(): logFunc('domain.readMaapiKeys() failed')
            return ReturnCodes.kGeneralError

        for key in keys:
            self.prefixKeys.append(key.getCannonicalStr())
            self.prefixs[key.getCannonicalStr()] = None

        return ReturnCodes.kOk

    def write (self
               , zone
               , trxContext=None
               ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(zone, 
                                   trxContext)

    def read (self
              , zone
              
              , trxContext=None):
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(zone, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , zone
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(zone, 
                                  True,
                                  trxContext)

    def _internalWrite (self, 
                        zone, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called.')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('internal-write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(zone, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(zone, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       zone, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('internal-read-fill-read-tag-values-failed').errorFunc(): logFunc('_fillReadTagValues() failed')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(zone, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('internal-read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed.')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('internal-read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed.')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               zone, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        for key in self.prefixs.keys():
            if self.prefixs[key]:
                res = self.prefixs[key]._collectItemsToDelete(zone, 
                                                                     
                                                                     key,
                                                                     itemsToDelete)
                if res != ReturnCodes.kOk:
                    for logFunc in self._log('collect-items-to-delete-prefix-failed').errorFunc(): logFunc('prefixObj._collectItemsToDelete() failed. key=%s. PARAMS', key)
                    return ReturnCodes.kGeneralError

            else:
                keyPath = self._getSelfKeyPath(zone, 
                                               
                                               None)
                xmlVal = Value()
                xmlVal.setXmlTag(("prefix", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content", "qtc"))
                keyPath.addKeyPathPostfix(xmlVal)
                valKey = Value()
                valKey.setIPv4Prefix(key)
                keyPath.addKeyPathPostfix(valKey)

                itemsToDelete.append(keyPath)

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        for key in self.prefixs.keys():
            if self.prefixs[key]:
                valBegin = Value()
                (tag, ns, prefix) = ("prefix", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content", "qtc")
                valBegin.setXmlBegin((tag, ns, prefix))
                tagValueList.push((tag, ns), valBegin)

                valKey = Value()
                valKey.setIPv4Prefix(key)
                tagValueList.push(("prefix", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content"), valKey)

                tagValueListLen = tagValueList.getLen()

                res = self.prefixs[key]._fillWriteTagValues(tagValueList)
                if res != ReturnCodes.kOk:
                    for logFunc in self._log('fill-write-tag-values-prefix-failed').errorFunc(): logFunc('prefix._fillWriteTagValues() failed. key=%s', key)
                    return ReturnCodes.kGeneralError

                if tagValueList.getLen() == tagValueListLen:
                    # descendant didn't add anything, no need to read it.
                    tagValueList.pop()
                    tagValueList.pop()
                else:
                    valEnd = Value()
                    valEnd.setXmlEnd((tag, ns, prefix))
                    tagValueList.push((tag, ns), valEnd)

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        for key in self.prefixs.keys():
            if self.prefixs[key]:
                valBegin = Value()
                (tag, ns, prefix) = ("prefix", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content", "qtc")
                valBegin.setXmlBegin((tag, ns, prefix))
                tagValueList.push((tag, ns), valBegin)

                valKey = Value()
                valKey.setIPv4Prefix(key)
                tagValueList.push(("prefix", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content"), valKey)

                tagValueListLen = tagValueList.getLen()

                res = self.prefixs[key]._fillReadTagValues(tagValueList)
                if res != ReturnCodes.kOk:
                    for logFunc in self._log('fill-read-tag-values-prefix-failed').errorFunc(): logFunc('prefix._fillReadTagValues() failed. key=%s', key)
                    return ReturnCodes.kGeneralError

                if tagValueList.getLen() == tagValueListLen:
                    # descendant didn't add anything, no need to read it.
                    tagValueList.pop()
                    tagValueList.pop()
                else:
                    valEnd = Value()
                    valEnd.setXmlEnd((tag, ns, prefix))
                    tagValueList.push((tag, ns), valEnd)

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. tagValueList=%s, readAllOrFail=%s', tagValueList, readAllOrFail)

        res = ReturnCodes.kOk

        for key in self.prefixs.keys():
            if self.prefixs[key]:
                ((tag, ns), valBegin) = tagValueList.popFront()
                if (tag != "prefix") or \
                    (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content") or \
                    (valBegin.getType() != Value.kXmlBegin):
                    for logFunc in self._log('reag-tag-values-unexpected-tag-begin').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                            "prefix", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content", Value.kXmlBegin,
                                                                            tag, ns, valBegin.getType())
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError

                ((tag, ns), valKey) = tagValueList.popFront()
                if (tag != "prefix") or \
                    (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content"):
                    for logFunc in self._log('reag-tag-values-unexpected-tag-key').errorFunc(): logFunc('got unexpected tag-value for key. expected: (%s, %s), got: (%s, %s)',
                                                                          "prefix", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content", tag, ns)
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError

                key = (valKey.asIPv4Prefix())
                if res != ReturnCodes.kOk:
                    if readAllOrFail:
                        self._clearAllReadData()
                    return ReturnCodes.kGeneralError

                res = self.prefixs[key]._readTagValues(tagValueList, readAllOrFail)
                if res != ReturnCodes.kOk:
                    for logFunc in self._log('read-tag-values-prefix-failed').errorFunc(): logFunc('prefix._readTagValues() failed. key=%s', key)
                    if readAllOrFail:
                        self._clearAllReadData()
                    return ReturnCodes.kGeneralError

                ((tag, ns), valEnd) = tagValueList.popFront()
                if (tag != "prefix") or \
                    (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content") or \
                    (valEnd.getType() != Value.kXmlEnd):
                    for logFunc in self._log('reag-tag-values-unexpected-tag-end').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                          "prefix", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content", Value.kXmlEnd,
                                                                            tag, ns, valEnd.getType())
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. tagValueList=%s, readAllOrFail=%s', tagValueList, readAllOrFail)
        return ReturnCodes.kOk
Example #43
0
class BlinkyBbbMaapi(BbbMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-bbb")
        self.domain = None

        

        
        self.b4int64Requested = False
        self.b4int64 = None
        self.b4int64Set = False
        
        self.b6strRequested = False
        self.b6str = None
        self.b6strSet = False
        
        self.b3strRequested = False
        self.b3str = None
        self.b3strSet = False
        
        self.b5strRequested = False
        self.b5str = None
        self.b5strSet = False
        
        self.b7strRequested = False
        self.b7str = None
        self.b7strSet = False
        
        self.b9strRequested = False
        self.b9str = None
        self.b9strSet = False
        
        self.b1strRequested = False
        self.b1str = None
        self.b1strSet = False
        
        self.b8strRequested = False
        self.b8str = None
        self.b8strSet = False
        
        self.b2strRequested = False
        self.b2str = None
        self.b2strSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestB4int64(True)
        
        self.requestB6str(True)
        
        self.requestB3str(True)
        
        self.requestB5str(True)
        
        self.requestB7str(True)
        
        self.requestB9str(True)
        
        self.requestB1str(True)
        
        self.requestB8str(True)
        
        self.requestB2str(True)
        
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestB4int64(True)
        
        self.requestB6str(True)
        
        self.requestB3str(True)
        
        self.requestB5str(True)
        
        self.requestB7str(True)
        
        self.requestB9str(True)
        
        self.requestB1str(True)
        
        self.requestB8str(True)
        
        self.requestB2str(True)
        
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestB4int64(False)
        
        self.requestB6str(False)
        
        self.requestB3str(False)
        
        self.requestB5str(False)
        
        self.requestB7str(False)
        
        self.requestB9str(False)
        
        self.requestB1str(False)
        
        self.requestB8str(False)
        
        self.requestB2str(False)
        
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestB4int64(False)
        
        self.requestB6str(False)
        
        self.requestB3str(False)
        
        self.requestB5str(False)
        
        self.requestB7str(False)
        
        self.requestB9str(False)
        
        self.requestB1str(False)
        
        self.requestB8str(False)
        
        self.requestB2str(False)
        
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setB4int64(None)
        self.b4int64Set = False
        
        self.setB6str(None)
        self.b6strSet = False
        
        self.setB3str(None)
        self.b3strSet = False
        
        self.setB5str(None)
        self.b5strSet = False
        
        self.setB7str(None)
        self.b7strSet = False
        
        self.setB9str(None)
        self.b9strSet = False
        
        self.setB1str(None)
        self.b1strSet = False
        
        self.setB8str(None)
        self.b8strSet = False
        
        self.setB2str(None)
        self.b2strSet = False
        
        

    def write (self
              , lll
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(lll, trxContext)

    def read (self
              , lll
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(lll, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , lll
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(lll, 
                                  True,
                                  trxContext)



    def requestB4int64 (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-b4int64').debug3Func(): logFunc('called. requested=%s', requested)
        self.b4int64Requested = requested
        self.b4int64Set = False

    def isB4int64Requested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-b4int64-requested').debug3Func(): logFunc('called. requested=%s', self.b4int64Requested)
        return self.b4int64Requested

    def getB4int64 (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-b4int64').debug3Func(): logFunc('called. self.b4int64Set=%s, self.b4int64=%s', self.b4int64Set, self.b4int64)
        if self.b4int64Set:
            return self.b4int64
        return None

    def hasB4int64 (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-b4int64').debug3Func(): logFunc('called. self.b4int64Set=%s, self.b4int64=%s', self.b4int64Set, self.b4int64)
        if self.b4int64Set:
            return True
        return False

    def setB4int64 (self, b4int64):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-b4int64').debug3Func(): logFunc('called. b4int64=%s, old=%s', b4int64, self.b4int64)
        self.b4int64Set = True
        self.b4int64 = b4int64

    def requestB6str (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-b6str').debug3Func(): logFunc('called. requested=%s', requested)
        self.b6strRequested = requested
        self.b6strSet = False

    def isB6strRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-b6str-requested').debug3Func(): logFunc('called. requested=%s', self.b6strRequested)
        return self.b6strRequested

    def getB6str (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-b6str').debug3Func(): logFunc('called. self.b6strSet=%s, self.b6str=%s', self.b6strSet, self.b6str)
        if self.b6strSet:
            return self.b6str
        return None

    def hasB6str (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-b6str').debug3Func(): logFunc('called. self.b6strSet=%s, self.b6str=%s', self.b6strSet, self.b6str)
        if self.b6strSet:
            return True
        return False

    def setB6str (self, b6str):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-b6str').debug3Func(): logFunc('called. b6str=%s, old=%s', b6str, self.b6str)
        self.b6strSet = True
        self.b6str = b6str

    def requestB3str (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-b3str').debug3Func(): logFunc('called. requested=%s', requested)
        self.b3strRequested = requested
        self.b3strSet = False

    def isB3strRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-b3str-requested').debug3Func(): logFunc('called. requested=%s', self.b3strRequested)
        return self.b3strRequested

    def getB3str (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-b3str').debug3Func(): logFunc('called. self.b3strSet=%s, self.b3str=%s', self.b3strSet, self.b3str)
        if self.b3strSet:
            return self.b3str
        return None

    def hasB3str (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-b3str').debug3Func(): logFunc('called. self.b3strSet=%s, self.b3str=%s', self.b3strSet, self.b3str)
        if self.b3strSet:
            return True
        return False

    def setB3str (self, b3str):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-b3str').debug3Func(): logFunc('called. b3str=%s, old=%s', b3str, self.b3str)
        self.b3strSet = True
        self.b3str = b3str

    def requestB5str (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-b5str').debug3Func(): logFunc('called. requested=%s', requested)
        self.b5strRequested = requested
        self.b5strSet = False

    def isB5strRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-b5str-requested').debug3Func(): logFunc('called. requested=%s', self.b5strRequested)
        return self.b5strRequested

    def getB5str (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-b5str').debug3Func(): logFunc('called. self.b5strSet=%s, self.b5str=%s', self.b5strSet, self.b5str)
        if self.b5strSet:
            return self.b5str
        return None

    def hasB5str (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-b5str').debug3Func(): logFunc('called. self.b5strSet=%s, self.b5str=%s', self.b5strSet, self.b5str)
        if self.b5strSet:
            return True
        return False

    def setB5str (self, b5str):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-b5str').debug3Func(): logFunc('called. b5str=%s, old=%s', b5str, self.b5str)
        self.b5strSet = True
        self.b5str = b5str

    def requestB7str (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-b7str').debug3Func(): logFunc('called. requested=%s', requested)
        self.b7strRequested = requested
        self.b7strSet = False

    def isB7strRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-b7str-requested').debug3Func(): logFunc('called. requested=%s', self.b7strRequested)
        return self.b7strRequested

    def getB7str (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-b7str').debug3Func(): logFunc('called. self.b7strSet=%s, self.b7str=%s', self.b7strSet, self.b7str)
        if self.b7strSet:
            return self.b7str
        return None

    def hasB7str (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-b7str').debug3Func(): logFunc('called. self.b7strSet=%s, self.b7str=%s', self.b7strSet, self.b7str)
        if self.b7strSet:
            return True
        return False

    def setB7str (self, b7str):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-b7str').debug3Func(): logFunc('called. b7str=%s, old=%s', b7str, self.b7str)
        self.b7strSet = True
        self.b7str = b7str

    def requestB9str (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-b9str').debug3Func(): logFunc('called. requested=%s', requested)
        self.b9strRequested = requested
        self.b9strSet = False

    def isB9strRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-b9str-requested').debug3Func(): logFunc('called. requested=%s', self.b9strRequested)
        return self.b9strRequested

    def getB9str (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-b9str').debug3Func(): logFunc('called. self.b9strSet=%s, self.b9str=%s', self.b9strSet, self.b9str)
        if self.b9strSet:
            return self.b9str
        return None

    def hasB9str (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-b9str').debug3Func(): logFunc('called. self.b9strSet=%s, self.b9str=%s', self.b9strSet, self.b9str)
        if self.b9strSet:
            return True
        return False

    def setB9str (self, b9str):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-b9str').debug3Func(): logFunc('called. b9str=%s, old=%s', b9str, self.b9str)
        self.b9strSet = True
        self.b9str = b9str

    def requestB1str (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-b1str').debug3Func(): logFunc('called. requested=%s', requested)
        self.b1strRequested = requested
        self.b1strSet = False

    def isB1strRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-b1str-requested').debug3Func(): logFunc('called. requested=%s', self.b1strRequested)
        return self.b1strRequested

    def getB1str (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-b1str').debug3Func(): logFunc('called. self.b1strSet=%s, self.b1str=%s', self.b1strSet, self.b1str)
        if self.b1strSet:
            return self.b1str
        return None

    def hasB1str (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-b1str').debug3Func(): logFunc('called. self.b1strSet=%s, self.b1str=%s', self.b1strSet, self.b1str)
        if self.b1strSet:
            return True
        return False

    def setB1str (self, b1str):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-b1str').debug3Func(): logFunc('called. b1str=%s, old=%s', b1str, self.b1str)
        self.b1strSet = True
        self.b1str = b1str

    def requestB8str (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-b8str').debug3Func(): logFunc('called. requested=%s', requested)
        self.b8strRequested = requested
        self.b8strSet = False

    def isB8strRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-b8str-requested').debug3Func(): logFunc('called. requested=%s', self.b8strRequested)
        return self.b8strRequested

    def getB8str (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-b8str').debug3Func(): logFunc('called. self.b8strSet=%s, self.b8str=%s', self.b8strSet, self.b8str)
        if self.b8strSet:
            return self.b8str
        return None

    def hasB8str (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-b8str').debug3Func(): logFunc('called. self.b8strSet=%s, self.b8str=%s', self.b8strSet, self.b8str)
        if self.b8strSet:
            return True
        return False

    def setB8str (self, b8str):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-b8str').debug3Func(): logFunc('called. b8str=%s, old=%s', b8str, self.b8str)
        self.b8strSet = True
        self.b8str = b8str

    def requestB2str (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-b2str').debug3Func(): logFunc('called. requested=%s', requested)
        self.b2strRequested = requested
        self.b2strSet = False

    def isB2strRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-b2str-requested').debug3Func(): logFunc('called. requested=%s', self.b2strRequested)
        return self.b2strRequested

    def getB2str (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-b2str').debug3Func(): logFunc('called. self.b2strSet=%s, self.b2str=%s', self.b2strSet, self.b2str)
        if self.b2strSet:
            return self.b2str
        return None

    def hasB2str (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-b2str').debug3Func(): logFunc('called. self.b2strSet=%s, self.b2str=%s', self.b2strSet, self.b2str)
        if self.b2strSet:
            return True
        return False

    def setB2str (self, b2str):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-b2str').debug3Func(): logFunc('called. b2str=%s, old=%s', b2str, self.b2str)
        self.b2strSet = True
        self.b2str = b2str


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.b4int64 = 0
        self.b4int64Set = False
        
        self.b6str = 0
        self.b6strSet = False
        
        self.b3str = 0
        self.b3strSet = False
        
        self.b5str = 0
        self.b5strSet = False
        
        self.b7str = 0
        self.b7strSet = False
        
        self.b9str = 0
        self.b9strSet = False
        
        self.b1str = 0
        self.b1strSet = False
        
        self.b8str = 0
        self.b8strSet = False
        
        self.b2str = 0
        self.b2strSet = False
        

    def _getSelfKeyPath (self, lll
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("bbb", "http://qwilt.com/model/benchmark", "bnch"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(lll);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("lll", "http://qwilt.com/model/benchmark", "bnch"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("base", "http://qwilt.com/model/benchmark", "bnch"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        lll, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(lll, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(lll, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       lll, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(lll, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               lll, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasB4int64():
            valB4int64 = Value()
            if self.b4int64 is not None:
                valB4int64.setInt64(self.b4int64)
            else:
                valB4int64.setEmpty()
            tagValueList.push(("b4int64", "http://qwilt.com/model/benchmark"), valB4int64)
        
        if self.hasB6str():
            valB6str = Value()
            if self.b6str is not None:
                valB6str.setString(self.b6str)
            else:
                valB6str.setEmpty()
            tagValueList.push(("b6str", "http://qwilt.com/model/benchmark"), valB6str)
        
        if self.hasB3str():
            valB3str = Value()
            if self.b3str is not None:
                valB3str.setString(self.b3str)
            else:
                valB3str.setEmpty()
            tagValueList.push(("b3str", "http://qwilt.com/model/benchmark"), valB3str)
        
        if self.hasB5str():
            valB5str = Value()
            if self.b5str is not None:
                valB5str.setString(self.b5str)
            else:
                valB5str.setEmpty()
            tagValueList.push(("b5str", "http://qwilt.com/model/benchmark"), valB5str)
        
        if self.hasB7str():
            valB7str = Value()
            if self.b7str is not None:
                valB7str.setString(self.b7str)
            else:
                valB7str.setEmpty()
            tagValueList.push(("b7str", "http://qwilt.com/model/benchmark"), valB7str)
        
        if self.hasB9str():
            valB9str = Value()
            if self.b9str is not None:
                valB9str.setString(self.b9str)
            else:
                valB9str.setEmpty()
            tagValueList.push(("b9str", "http://qwilt.com/model/benchmark"), valB9str)
        
        if self.hasB1str():
            valB1str = Value()
            if self.b1str is not None:
                valB1str.setString(self.b1str)
            else:
                valB1str.setEmpty()
            tagValueList.push(("b1str", "http://qwilt.com/model/benchmark"), valB1str)
        
        if self.hasB8str():
            valB8str = Value()
            if self.b8str is not None:
                valB8str.setString(self.b8str)
            else:
                valB8str.setEmpty()
            tagValueList.push(("b8str", "http://qwilt.com/model/benchmark"), valB8str)
        
        if self.hasB2str():
            valB2str = Value()
            if self.b2str is not None:
                valB2str.setString(self.b2str)
            else:
                valB2str.setEmpty()
            tagValueList.push(("b2str", "http://qwilt.com/model/benchmark"), valB2str)
        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isB4int64Requested():
            valB4int64 = Value()
            valB4int64.setEmpty()
            tagValueList.push(("b4int64", "http://qwilt.com/model/benchmark"), valB4int64)
        
        if self.isB6strRequested():
            valB6str = Value()
            valB6str.setEmpty()
            tagValueList.push(("b6str", "http://qwilt.com/model/benchmark"), valB6str)
        
        if self.isB3strRequested():
            valB3str = Value()
            valB3str.setEmpty()
            tagValueList.push(("b3str", "http://qwilt.com/model/benchmark"), valB3str)
        
        if self.isB5strRequested():
            valB5str = Value()
            valB5str.setEmpty()
            tagValueList.push(("b5str", "http://qwilt.com/model/benchmark"), valB5str)
        
        if self.isB7strRequested():
            valB7str = Value()
            valB7str.setEmpty()
            tagValueList.push(("b7str", "http://qwilt.com/model/benchmark"), valB7str)
        
        if self.isB9strRequested():
            valB9str = Value()
            valB9str.setEmpty()
            tagValueList.push(("b9str", "http://qwilt.com/model/benchmark"), valB9str)
        
        if self.isB1strRequested():
            valB1str = Value()
            valB1str.setEmpty()
            tagValueList.push(("b1str", "http://qwilt.com/model/benchmark"), valB1str)
        
        if self.isB8strRequested():
            valB8str = Value()
            valB8str.setEmpty()
            tagValueList.push(("b8str", "http://qwilt.com/model/benchmark"), valB8str)
        
        if self.isB2strRequested():
            valB2str = Value()
            valB2str.setEmpty()
            tagValueList.push(("b2str", "http://qwilt.com/model/benchmark"), valB2str)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isB4int64Requested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "b4int64") or \
                (ns != "http://qwilt.com/model/benchmark"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-b4int64').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "b4int64", "b4int64", "http://qwilt.com/model/benchmark", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-b4int64-bad-value').infoFunc(): logFunc('b4int64 not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setB4int64(tempVar)
            for logFunc in self._log('read-tag-values-b4int64').debug3Func(): logFunc('read b4int64. b4int64=%s, tempValue=%s', self.b4int64, tempValue.getType())
        
        if self.isB6strRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "b6str") or \
                (ns != "http://qwilt.com/model/benchmark"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-b6str').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "b6str", "b6str", "http://qwilt.com/model/benchmark", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-b6str-bad-value').infoFunc(): logFunc('b6str not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setB6str(tempVar)
            for logFunc in self._log('read-tag-values-b6str').debug3Func(): logFunc('read b6str. b6str=%s, tempValue=%s', self.b6str, tempValue.getType())
        
        if self.isB3strRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "b3str") or \
                (ns != "http://qwilt.com/model/benchmark"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-b3str').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "b3str", "b3str", "http://qwilt.com/model/benchmark", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-b3str-bad-value').infoFunc(): logFunc('b3str not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setB3str(tempVar)
            for logFunc in self._log('read-tag-values-b3str').debug3Func(): logFunc('read b3str. b3str=%s, tempValue=%s', self.b3str, tempValue.getType())
        
        if self.isB5strRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "b5str") or \
                (ns != "http://qwilt.com/model/benchmark"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-b5str').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "b5str", "b5str", "http://qwilt.com/model/benchmark", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-b5str-bad-value').infoFunc(): logFunc('b5str not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setB5str(tempVar)
            for logFunc in self._log('read-tag-values-b5str').debug3Func(): logFunc('read b5str. b5str=%s, tempValue=%s', self.b5str, tempValue.getType())
        
        if self.isB7strRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "b7str") or \
                (ns != "http://qwilt.com/model/benchmark"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-b7str').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "b7str", "b7str", "http://qwilt.com/model/benchmark", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-b7str-bad-value').infoFunc(): logFunc('b7str not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setB7str(tempVar)
            for logFunc in self._log('read-tag-values-b7str').debug3Func(): logFunc('read b7str. b7str=%s, tempValue=%s', self.b7str, tempValue.getType())
        
        if self.isB9strRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "b9str") or \
                (ns != "http://qwilt.com/model/benchmark"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-b9str').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "b9str", "b9str", "http://qwilt.com/model/benchmark", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-b9str-bad-value').infoFunc(): logFunc('b9str not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setB9str(tempVar)
            for logFunc in self._log('read-tag-values-b9str').debug3Func(): logFunc('read b9str. b9str=%s, tempValue=%s', self.b9str, tempValue.getType())
        
        if self.isB1strRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "b1str") or \
                (ns != "http://qwilt.com/model/benchmark"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-b1str').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "b1str", "b1str", "http://qwilt.com/model/benchmark", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-b1str-bad-value').infoFunc(): logFunc('b1str not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setB1str(tempVar)
            for logFunc in self._log('read-tag-values-b1str').debug3Func(): logFunc('read b1str. b1str=%s, tempValue=%s', self.b1str, tempValue.getType())
        
        if self.isB8strRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "b8str") or \
                (ns != "http://qwilt.com/model/benchmark"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-b8str').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "b8str", "b8str", "http://qwilt.com/model/benchmark", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-b8str-bad-value').infoFunc(): logFunc('b8str not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setB8str(tempVar)
            for logFunc in self._log('read-tag-values-b8str').debug3Func(): logFunc('read b8str. b8str=%s, tempValue=%s', self.b8str, tempValue.getType())
        
        if self.isB2strRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "b2str") or \
                (ns != "http://qwilt.com/model/benchmark"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-b2str').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "b2str", "b2str", "http://qwilt.com/model/benchmark", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-b2str-bad-value').infoFunc(): logFunc('b2str not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setB2str(tempVar)
            for logFunc in self._log('read-tag-values-b2str').debug3Func(): logFunc('read b2str. b2str=%s, tempValue=%s', self.b2str, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
Example #44
0
class BlinkySystemDefaultsMaapi(SystemDefaultsMaapiBase):
    def __init__(self, logger):
        self.myInitGuard = InitGuard()
        self._log = logger.createLogger("sys-blinky-oper-example",
                                        "blinky-maapi-systemDefaults")
        self.domain = None

        self.qShellObj = None

        self.dispatcherObj = None

        self.analyzerObj = None

    def init(self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func():
            logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func():
            logFunc('called, PARAMS')

        if not self.qShellObj:
            self.qShellObj = self.newQShell()
            self.qShellObj.requestConfigAndOper()

        if not self.dispatcherObj:
            self.dispatcherObj = self.newDispatcher()
            self.dispatcherObj.requestConfigAndOper()

        if not self.analyzerObj:
            self.analyzerObj = self.newAnalyzer()
            self.analyzerObj.requestConfigAndOper()

    def requestConfig(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func():
            logFunc('called, PARAMS')

        if not self.qShellObj:
            self.qShellObj = self.newQShell()
            self.qShellObj.requestConfig()

        if not self.dispatcherObj:
            self.dispatcherObj = self.newDispatcher()
            self.dispatcherObj.requestConfig()

        if not self.analyzerObj:
            self.analyzerObj = self.newAnalyzer()
            self.analyzerObj.requestConfig()

    def requestOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func():
            logFunc('called, PARAMS')

        if not self.qShellObj:
            self.qShellObj = self.newQShell()
            self.qShellObj.requestOper()

        if not self.dispatcherObj:
            self.dispatcherObj = self.newDispatcher()
            self.dispatcherObj.requestOper()

        if not self.analyzerObj:
            self.analyzerObj = self.newAnalyzer()
            self.analyzerObj.requestOper()

    def clearAllRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func():
            logFunc('called, PARAMS')

        if not self.qShellObj:
            self.qShellObj = self.newQShell()
            self.qShellObj.clearAllRequested()

        if not self.dispatcherObj:
            self.dispatcherObj = self.newDispatcher()
            self.dispatcherObj.clearAllRequested()

        if not self.analyzerObj:
            self.analyzerObj = self.newAnalyzer()
            self.analyzerObj.clearAllRequested()

    def clearAllSet(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func():
            logFunc('called, PARAMS')

        if self.qShellObj:
            self.qShellObj.clearAllSet()

        if self.dispatcherObj:
            self.dispatcherObj.clearAllSet()

        if self.analyzerObj:
            self.analyzerObj.clearAllSet()

    def write(self, line, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func():
            logFunc('called, PARAMS')
        return self._internalWrite(line, trxContext)

    def read(self, line, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(line, False, trxContext)

    def readAllOrFail(self, line, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(line, True, trxContext)

    def newQShell(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-qshell').debug3Func():
            logFunc('called.')
        qShell = BlinkyQShellMaapi(self._log)
        qShell.init(self.domain)
        return qShell

    def setQShellObj(self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-qshell').debug3Func():
            logFunc('called. obj=%s', obj)
        self.qShellObj = obj

    def getQShellObj(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-qshell').debug3Func():
            logFunc('called. self.qShellObj=%s', self.qShellObj)
        return self.qShellObj

    def hasQShell(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-qshell').debug3Func():
            logFunc('called. self.qShellObj=%s', self.qShellObj)
        if self.qShellObj:
            return True
        return False

    def newDispatcher(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-dispatcher').debug3Func():
            logFunc('called.')
        dispatcher = BlinkyDispatcherMaapi(self._log)
        dispatcher.init(self.domain)
        return dispatcher

    def setDispatcherObj(self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-dispatcher').debug3Func():
            logFunc('called. obj=%s', obj)
        self.dispatcherObj = obj

    def getDispatcherObj(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-dispatcher').debug3Func():
            logFunc('called. self.dispatcherObj=%s', self.dispatcherObj)
        return self.dispatcherObj

    def hasDispatcher(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-dispatcher').debug3Func():
            logFunc('called. self.dispatcherObj=%s', self.dispatcherObj)
        if self.dispatcherObj:
            return True
        return False

    def newAnalyzer(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-analyzer').debug3Func():
            logFunc('called.')
        analyzer = BlinkyAnalyzerMaapi(self._log)
        analyzer.init(self.domain)
        return analyzer

    def setAnalyzerObj(self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-analyzer').debug3Func():
            logFunc('called. obj=%s', obj)
        self.analyzerObj = obj

    def getAnalyzerObj(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-analyzer').debug3Func():
            logFunc('called. self.analyzerObj=%s', self.analyzerObj)
        return self.analyzerObj

    def hasAnalyzer(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-analyzer').debug3Func():
            logFunc('called. self.analyzerObj=%s', self.analyzerObj)
        if self.analyzerObj:
            return True
        return False

    def _clearAllReadData(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func():
            logFunc('called')

        if self.qShellObj:
            self.qShellObj._clearAllReadData()

        if self.dispatcherObj:
            self.dispatcherObj._clearAllReadData()

        if self.analyzerObj:
            self.analyzerObj._clearAllReadData()

    def _getSelfKeyPath(self, line, junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func():
            logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("system-defaults",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line",
             "qtc-line"))
        keyPath.addKeyPathPrefix(xmlVal)

        ancestorVal = Value()
        ancestorVal.setString(line)
        keyPath.addKeyPathPrefix(ancestorVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("line",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line",
             "qtc-line"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("content",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content", "qtc"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)

        for logFunc in self._log('get-self-key-path-done').debug3Func():
            logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite(self, line, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func():
            logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-fill-write-tag-value-failed').errorFunc():
                logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(line, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-collect-items-to-delete-failed').errorFunc():
                logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(line, None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext,
                                     itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc():
                logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func():
            logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead(self, line, readAllOrFail, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func():
            logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-fill-read-tag-value-failed').errorFunc():
                logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(line, None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc():
                logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-read-tag-values-failed').errorFunc():
                logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func():
            logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete(self, line, itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func():
            logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        if self.qShellObj:
            res = self.qShellObj._collectItemsToDelete(line, itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'collect-items-to-delete-q-shell-failed').errorFunc():
                    logFunc('qShellObj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError

        if self.dispatcherObj:
            res = self.dispatcherObj._collectItemsToDelete(line, itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'collect-items-to-delete-dispatcher-failed').errorFunc(
                        ):
                    logFunc(
                        'dispatcherObj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError

        if self.analyzerObj:
            res = self.analyzerObj._collectItemsToDelete(line, itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'collect-items-to-delete-analyzer-failed').errorFunc():
                    logFunc(
                        'analyzerObj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError

        for logFunc in self._log('collect-items-to-delete-done').debug3Func():
            logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.qShellObj:
            valBegin = Value()
            (tag, ns, prefix) = (
                "q-shell",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line",
                "qtc-line")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.qShellObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-write-tag-values-q-shell-failed').errorFunc():
                    logFunc('qShellObj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        if self.dispatcherObj:
            valBegin = Value()
            (tag, ns, prefix) = (
                "dispatcher",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line",
                "qtc-line")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.dispatcherObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-write-tag-values-dispatcher-failed').errorFunc():
                    logFunc(
                        'dispatcherObj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        if self.analyzerObj:
            valBegin = Value()
            (tag, ns, prefix) = (
                "analyzer",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line",
                "qtc-line")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.analyzerObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-write-tag-values-analyzer-failed').errorFunc():
                    logFunc('analyzerObj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        return ReturnCodes.kOk

    def _fillReadTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.qShellObj:
            valBegin = Value()
            (tag, ns, prefix) = (
                "q-shell",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line",
                "qtc-line")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.qShellObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-read-tag-values-q-shell-failed').errorFunc():
                    logFunc('qShellObj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        if self.dispatcherObj:
            valBegin = Value()
            (tag, ns, prefix) = (
                "dispatcher",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line",
                "qtc-line")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.dispatcherObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-read-tag-values-dispatcher-failed').errorFunc():
                    logFunc(
                        'dispatcherObj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        if self.analyzerObj:
            valBegin = Value()
            (tag, ns, prefix) = (
                "analyzer",
                "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line",
                "qtc-line")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.analyzerObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'fill-read-tag-values-analyzer-failed').errorFunc():
                    logFunc('analyzerObj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)

        return ReturnCodes.kOk

    def _readTagValues(self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func():
            logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func():
            logFunc('reading leaves. tagValueList=%s', tagValueList)

        if self.qShellObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "q-shell") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-begin').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "q-shell",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line",
                        Value.kXmlBegin, tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            res = self.qShellObj._readTagValues(tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'read-tag-values-q-shell-failed').errorFunc():
                    logFunc(
                        'qShellObj._readTagValues() failed. tagValueList=%s',
                        tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "q-shell") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-end').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "q-shell",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line",
                        Value.kXmlEnd, tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

        if self.dispatcherObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "dispatcher") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-begin').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "dispatcher",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line",
                        Value.kXmlBegin, tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            res = self.dispatcherObj._readTagValues(tagValueList,
                                                    readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'read-tag-values-dispatcher-failed').errorFunc():
                    logFunc(
                        'dispatcherObj._readTagValues() failed. tagValueList=%s',
                        tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "dispatcher") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-end').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "dispatcher",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line",
                        Value.kXmlEnd, tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

        if self.analyzerObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "analyzer") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-begin').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "analyzer",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line",
                        Value.kXmlBegin, tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            res = self.analyzerObj._readTagValues(tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log(
                        'read-tag-values-analyzer-failed').errorFunc():
                    logFunc(
                        'analyzerObj._readTagValues() failed. tagValueList=%s',
                        tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "analyzer") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-end').errorFunc():
                    logFunc(
                        'got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                        "analyzer",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line",
                        Value.kXmlEnd, tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

        for logFunc in self._log('read-tag-values-done').debug3Func():
            logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)
        return ReturnCodes.kOk
Example #45
0
class BlinkyDeliveryMaapi(DeliveryMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-delivery")
        self.domain = None

        
        self.ipv4Obj = None
        
        self.ipv6Obj = None
        

        
        self.preferredDeliveryInterfaceRequested = False
        self.preferredDeliveryInterface = None
        self.preferredDeliveryInterfaceSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestPreferredDeliveryInterface(True)
        
        
        
        if not self.ipv4Obj:
            self.ipv4Obj = self.newIpv4()
            self.ipv4Obj.requestConfigAndOper()
        
        if not self.ipv6Obj:
            self.ipv6Obj = self.newIpv6()
            self.ipv6Obj.requestConfigAndOper()
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestPreferredDeliveryInterface(True)
        
        
        
        if not self.ipv4Obj:
            self.ipv4Obj = self.newIpv4()
            self.ipv4Obj.requestConfig()
        
        if not self.ipv6Obj:
            self.ipv6Obj = self.newIpv6()
            self.ipv6Obj.requestConfig()
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestPreferredDeliveryInterface(False)
        
        
        
        if not self.ipv4Obj:
            self.ipv4Obj = self.newIpv4()
            self.ipv4Obj.requestOper()
        
        if not self.ipv6Obj:
            self.ipv6Obj = self.newIpv6()
            self.ipv6Obj.requestOper()
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestPreferredDeliveryInterface(False)
        
        
        
        if not self.ipv4Obj:
            self.ipv4Obj = self.newIpv4()
            self.ipv4Obj.clearAllRequested()
        
        if not self.ipv6Obj:
            self.ipv6Obj = self.newIpv6()
            self.ipv6Obj.clearAllRequested()
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setPreferredDeliveryInterface(None)
        self.preferredDeliveryInterfaceSet = False
        
        
        if self.ipv4Obj:
            self.ipv4Obj.clearAllSet()
        
        if self.ipv6Obj:
            self.ipv6Obj.clearAllSet()
        

    def write (self
              , interface
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(interface, trxContext)

    def read (self
              , interface
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(interface, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , interface
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(interface, 
                                  True,
                                  trxContext)

    def newIpv4 (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-ipv4').debug3Func(): logFunc('called.')
        ipv4 = BlinkyIpv4Maapi(self._log)
        ipv4.init(self.domain)
        return ipv4

    def setIpv4Obj (self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-ipv4').debug3Func(): logFunc('called. obj=%s', obj)
        self.ipv4Obj = obj

    def getIpv4Obj (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-ipv4').debug3Func(): logFunc('called. self.ipv4Obj=%s', self.ipv4Obj)
        return self.ipv4Obj

    def hasIpv4 (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-ipv4').debug3Func(): logFunc('called. self.ipv4Obj=%s', self.ipv4Obj)
        if self.ipv4Obj:
            return True
        return False

    def newIpv6 (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-ipv6').debug3Func(): logFunc('called.')
        ipv6 = BlinkyIpv6Maapi(self._log)
        ipv6.init(self.domain)
        return ipv6

    def setIpv6Obj (self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-ipv6').debug3Func(): logFunc('called. obj=%s', obj)
        self.ipv6Obj = obj

    def getIpv6Obj (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-ipv6').debug3Func(): logFunc('called. self.ipv6Obj=%s', self.ipv6Obj)
        return self.ipv6Obj

    def hasIpv6 (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-ipv6').debug3Func(): logFunc('called. self.ipv6Obj=%s', self.ipv6Obj)
        if self.ipv6Obj:
            return True
        return False



    def requestPreferredDeliveryInterface (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-preferreddeliveryinterface').debug3Func(): logFunc('called. requested=%s', requested)
        self.preferredDeliveryInterfaceRequested = requested
        self.preferredDeliveryInterfaceSet = False

    def isPreferredDeliveryInterfaceRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-preferreddeliveryinterface-requested').debug3Func(): logFunc('called. requested=%s', self.preferredDeliveryInterfaceRequested)
        return self.preferredDeliveryInterfaceRequested

    def getPreferredDeliveryInterface (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-preferreddeliveryinterface').debug3Func(): logFunc('called. self.preferredDeliveryInterfaceSet=%s, self.preferredDeliveryInterface=%s', self.preferredDeliveryInterfaceSet, self.preferredDeliveryInterface)
        if self.preferredDeliveryInterfaceSet:
            return self.preferredDeliveryInterface
        return None

    def hasPreferredDeliveryInterface (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-preferreddeliveryinterface').debug3Func(): logFunc('called. self.preferredDeliveryInterfaceSet=%s, self.preferredDeliveryInterface=%s', self.preferredDeliveryInterfaceSet, self.preferredDeliveryInterface)
        if self.preferredDeliveryInterfaceSet:
            return True
        return False

    def setPreferredDeliveryInterface (self, preferredDeliveryInterface):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-preferreddeliveryinterface').debug3Func(): logFunc('called. preferredDeliveryInterface=%s, old=%s', preferredDeliveryInterface, self.preferredDeliveryInterface)
        self.preferredDeliveryInterfaceSet = True
        self.preferredDeliveryInterface = preferredDeliveryInterface


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        
        if self.ipv4Obj:
            self.ipv4Obj._clearAllReadData()
        
        if self.ipv6Obj:
            self.ipv6Obj._clearAllReadData()
        

        
        self.preferredDeliveryInterface = 0
        self.preferredDeliveryInterfaceSet = False
        

    def _getSelfKeyPath (self, interface
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("delivery", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces", "qtc-if"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(interface);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("interface", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces", "qtc-if"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("interfaces", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces", "qtc-if"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("content", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content", "qtc"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        interface, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(interface, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(interface, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       interface, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(interface, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               interface, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        
        if self.ipv4Obj:
            res = self.ipv4Obj._collectItemsToDelete(interface, 
                                                                          
                                                                          itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('collect-items-to-delete-ipv4-failed').errorFunc(): logFunc('ipv4Obj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError
        
        if self.ipv6Obj:
            res = self.ipv6Obj._collectItemsToDelete(interface, 
                                                                          
                                                                          itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('collect-items-to-delete-ipv6-failed').errorFunc(): logFunc('ipv6Obj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError
        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasPreferredDeliveryInterface():
            valPreferredDeliveryInterface = Value()
            if self.preferredDeliveryInterface is not None:
                valPreferredDeliveryInterface.setString(self.preferredDeliveryInterface)
            else:
                valPreferredDeliveryInterface.setEmpty()
            tagValueList.push(("preferred-delivery-interface", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces"), valPreferredDeliveryInterface)
        

        
        if self.ipv4Obj:
            valBegin = Value()
            (tag, ns, prefix) = ("ipv4" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces", "qtc-if")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.ipv4Obj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-write-tag-values-ipv4-failed').errorFunc(): logFunc('ipv4Obj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        
        if self.ipv6Obj:
            valBegin = Value()
            (tag, ns, prefix) = ("ipv6" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces", "qtc-if")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.ipv6Obj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-write-tag-values-ipv6-failed').errorFunc(): logFunc('ipv6Obj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isPreferredDeliveryInterfaceRequested():
            valPreferredDeliveryInterface = Value()
            valPreferredDeliveryInterface.setEmpty()
            tagValueList.push(("preferred-delivery-interface", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces"), valPreferredDeliveryInterface)
        

        
        if self.ipv4Obj:
            valBegin = Value()
            (tag, ns, prefix) = ("ipv4" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces", "qtc-if")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.ipv4Obj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-read-tag-values-ipv4-failed').errorFunc(): logFunc('ipv4Obj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        
        if self.ipv6Obj:
            valBegin = Value()
            (tag, ns, prefix) = ("ipv6" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces", "qtc-if")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.ipv6Obj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-read-tag-values-ipv6-failed').errorFunc(): logFunc('ipv6Obj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isPreferredDeliveryInterfaceRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "preferred-delivery-interface") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-preferreddeliveryinterface').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "preferredDeliveryInterface", "preferred-delivery-interface", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-preferred-delivery-interface-bad-value').infoFunc(): logFunc('preferredDeliveryInterface not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setPreferredDeliveryInterface(tempVar)
            for logFunc in self._log('read-tag-values-preferred-delivery-interface').debug3Func(): logFunc('read preferredDeliveryInterface. preferredDeliveryInterface=%s, tempValue=%s', self.preferredDeliveryInterface, tempValue.getType())
        

        
        if self.ipv4Obj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "ipv4") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log('reag-tag-values-unexpected-tag-begin').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                        "ipv4", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces", Value.kXmlBegin,
                                                                        tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
            
            res = self.ipv4Obj._readTagValues(tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('read-tag-values-ipv4-failed').errorFunc(): logFunc('ipv4Obj._readTagValues() failed. tagValueList=%s', tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "ipv4") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log('reag-tag-values-unexpected-tag-end').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                      "ipv4", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces", Value.kXmlEnd,
                                                                        tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
        
        if self.ipv6Obj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "ipv6") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log('reag-tag-values-unexpected-tag-begin').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                        "ipv6", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces", Value.kXmlBegin,
                                                                        tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
            
            res = self.ipv6Obj._readTagValues(tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('read-tag-values-ipv6-failed').errorFunc(): logFunc('ipv6Obj._readTagValues() failed. tagValueList=%s', tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "ipv6") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log('reag-tag-values-unexpected-tag-end').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                      "ipv6", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-interfaces", Value.kXmlEnd,
                                                                        tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
Example #46
0
class BlinkyConfigQMaapi(ConfigQMaapiBase):
    def __init__(self, logger):
        self.myInitGuard = InitGuard()
        self._log = logger.createLogger("sys-blinky-oper-example",
                                        "blinky-maapi-configQ")
        self.domain = None

        self.valueConfigQRequested = False
        self.valueConfigQ = None
        self.valueConfigQSet = False

    def init(self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func():
            logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestValueConfigQ(True)

    def requestConfig(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func():
            logFunc('called, PARAMS')

        self.requestValueConfigQ(True)

    def requestOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestValueConfigQ(False)

    def clearAllRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func():
            logFunc('called, PARAMS')

        self.requestValueConfigQ(False)

    def clearAllSet(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func():
            logFunc('called, PARAMS')

        self.setValueConfigQ(None)
        self.valueConfigQSet = False

    def write(self, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func():
            logFunc('called, PARAMS')
        return self._internalWrite(trxContext)

    def read(self, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(False, trxContext)

    def readAllOrFail(self, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(True, trxContext)

    def requestValueConfigQ(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-valueconfigq').debug3Func():
            logFunc('called. requested=%s', requested)
        self.valueConfigQRequested = requested
        self.valueConfigQSet = False

    def isValueConfigQRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-valueconfigq-requested').debug3Func():
            logFunc('called. requested=%s', self.valueConfigQRequested)
        return self.valueConfigQRequested

    def getValueConfigQ(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-valueconfigq').debug3Func():
            logFunc('called. self.valueConfigQSet=%s, self.valueConfigQ=%s',
                    self.valueConfigQSet, self.valueConfigQ)
        if self.valueConfigQSet:
            return self.valueConfigQ
        return None

    def hasValueConfigQ(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-valueconfigq').debug3Func():
            logFunc('called. self.valueConfigQSet=%s, self.valueConfigQ=%s',
                    self.valueConfigQSet, self.valueConfigQ)
        if self.valueConfigQSet:
            return True
        return False

    def setValueConfigQ(self, valueConfigQ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-valueconfigq').debug3Func():
            logFunc('called. valueConfigQ=%s, old=%s', valueConfigQ,
                    self.valueConfigQ)
        self.valueConfigQSet = True
        self.valueConfigQ = valueConfigQ

    def _clearAllReadData(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func():
            logFunc('called')

        self.valueConfigQ = 0
        self.valueConfigQSet = False

    def _getSelfKeyPath(self, junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func():
            logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()

        xmlVal = Value()
        xmlVal.setXmlTag(("config-q", "http://qwilt.com/model/oper", "oper"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(("config-a", "http://qwilt.com/model/oper", "oper"))
        keyPath.addKeyPathPrefix(xmlVal)

        for logFunc in self._log('get-self-key-path-done').debug3Func():
            logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite(self, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func():
            logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-fill-write-tag-value-failed').errorFunc():
                logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-collect-items-to-delete-failed').errorFunc():
                logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext,
                                     itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc():
                logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func():
            logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead(self, readAllOrFail, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func():
            logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-fill-read-tag-value-failed').errorFunc():
                logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc():
                logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-read-tag-values-failed').errorFunc():
                logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func():
            logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete(self, itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func():
            logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        for logFunc in self._log('collect-items-to-delete-done').debug3Func():
            logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.hasValueConfigQ():
            valValueConfigQ = Value()
            if self.valueConfigQ is not None:
                valValueConfigQ.setInt8(self.valueConfigQ)
            else:
                valValueConfigQ.setEmpty()
            tagValueList.push(
                ("value-config-q", "http://qwilt.com/model/oper"),
                valValueConfigQ)

        return ReturnCodes.kOk

    def _fillReadTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.isValueConfigQRequested():
            valValueConfigQ = Value()
            valValueConfigQ.setEmpty()
            tagValueList.push(
                ("value-config-q", "http://qwilt.com/model/oper"),
                valValueConfigQ)

        return ReturnCodes.kOk

    def _readTagValues(self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func():
            logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func():
            logFunc('reading leaves. tagValueList=%s', tagValueList)

        if self.isValueConfigQRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "value-config-q") or \
                (ns != "http://qwilt.com/model/oper"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-valueconfigq'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "valueConfigQ", "value-config-q",
                        "http://qwilt.com/model/oper", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt8()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-value-config-q-bad-value').infoFunc():
                    logFunc('valueConfigQ not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setValueConfigQ(tempVar)
            for logFunc in self._log(
                    'read-tag-values-value-config-q').debug3Func():
                logFunc('read valueConfigQ. valueConfigQ=%s, tempValue=%s',
                        self.valueConfigQ, tempValue.getType())

        for logFunc in self._log('read-tag-values-done').debug3Func():
            logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)
        return ReturnCodes.kOk
Example #47
0
class BlinkyInstanceMaapi(InstanceMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-instance")
        self.domain = None

        
        self.internalObj = None
        
        self.destinationListObj = None
        
        self.systemDefaultsObj = None
        
        self.ruleListObj = None
        

        
        self.nameRequested = False
        self.name = None
        self.nameSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestName(True)
        
        
        
        if not self.internalObj:
            self.internalObj = self.newInternal()
            self.internalObj.requestConfigAndOper()
        
        if not self.destinationListObj:
            self.destinationListObj = self.newDestinationList()
            self.destinationListObj.requestConfigAndOper()
        
        if not self.systemDefaultsObj:
            self.systemDefaultsObj = self.newSystemDefaults()
            self.systemDefaultsObj.requestConfigAndOper()
        
        if not self.ruleListObj:
            self.ruleListObj = self.newRuleList()
            self.ruleListObj.requestConfigAndOper()
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestName(True)
        
        
        
        if not self.internalObj:
            self.internalObj = self.newInternal()
            self.internalObj.requestConfig()
        
        if not self.destinationListObj:
            self.destinationListObj = self.newDestinationList()
            self.destinationListObj.requestConfig()
        
        if not self.systemDefaultsObj:
            self.systemDefaultsObj = self.newSystemDefaults()
            self.systemDefaultsObj.requestConfig()
        
        if not self.ruleListObj:
            self.ruleListObj = self.newRuleList()
            self.ruleListObj.requestConfig()
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestName(False)
        
        
        
        if not self.internalObj:
            self.internalObj = self.newInternal()
            self.internalObj.requestOper()
        
        if not self.destinationListObj:
            self.destinationListObj = self.newDestinationList()
            self.destinationListObj.requestOper()
        
        if not self.systemDefaultsObj:
            self.systemDefaultsObj = self.newSystemDefaults()
            self.systemDefaultsObj.requestOper()
        
        if not self.ruleListObj:
            self.ruleListObj = self.newRuleList()
            self.ruleListObj.requestOper()
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestName(False)
        
        
        
        if not self.internalObj:
            self.internalObj = self.newInternal()
            self.internalObj.clearAllRequested()
        
        if not self.destinationListObj:
            self.destinationListObj = self.newDestinationList()
            self.destinationListObj.clearAllRequested()
        
        if not self.systemDefaultsObj:
            self.systemDefaultsObj = self.newSystemDefaults()
            self.systemDefaultsObj.clearAllRequested()
        
        if not self.ruleListObj:
            self.ruleListObj = self.newRuleList()
            self.ruleListObj.clearAllRequested()
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setName(None)
        self.nameSet = False
        
        
        if self.internalObj:
            self.internalObj.clearAllSet()
        
        if self.destinationListObj:
            self.destinationListObj.clearAllSet()
        
        if self.systemDefaultsObj:
            self.systemDefaultsObj.clearAllSet()
        
        if self.ruleListObj:
            self.ruleListObj.clearAllSet()
        

    def write (self
              , loggerClass
              , instance
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(loggerClass, instance, trxContext)

    def read (self
              , loggerClass
              , instance
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(loggerClass, instance, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , loggerClass
                       , instance
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(loggerClass, instance, 
                                  True,
                                  trxContext)

    def newInternal (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-internal').debug3Func(): logFunc('called.')
        internal = BlinkyInternalMaapi(self._log)
        internal.init(self.domain)
        return internal

    def setInternalObj (self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-internal').debug3Func(): logFunc('called. obj=%s', obj)
        self.internalObj = obj

    def getInternalObj (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-internal').debug3Func(): logFunc('called. self.internalObj=%s', self.internalObj)
        return self.internalObj

    def hasInternal (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-internal').debug3Func(): logFunc('called. self.internalObj=%s', self.internalObj)
        if self.internalObj:
            return True
        return False

    def newDestinationList (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-destinationlist').debug3Func(): logFunc('called.')
        destinationList = BlinkyDestinationMaapiList(self._log)
        destinationList.init(self.domain)
        return destinationList

    def setDestinationListObj (self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-destinationlist').debug3Func(): logFunc('called. obj=%s', obj)
        self.destinationListObj = obj

    def getDestinationListObj (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-destinationlist').debug3Func(): logFunc('called. self.destinationListObj=%s', self.destinationListObj)
        return self.destinationListObj

    def hasDestinationList (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-destinationlist').debug3Func(): logFunc('called. self.destinationListObj=%s', self.destinationListObj)
        if self.destinationListObj:
            return True
        return False

    def newSystemDefaults (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-systemdefaults').debug3Func(): logFunc('called.')
        systemDefaults = BlinkySystemDefaultsMaapi(self._log)
        systemDefaults.init(self.domain)
        return systemDefaults

    def setSystemDefaultsObj (self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-systemdefaults').debug3Func(): logFunc('called. obj=%s', obj)
        self.systemDefaultsObj = obj

    def getSystemDefaultsObj (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-systemdefaults').debug3Func(): logFunc('called. self.systemDefaultsObj=%s', self.systemDefaultsObj)
        return self.systemDefaultsObj

    def hasSystemDefaults (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-systemdefaults').debug3Func(): logFunc('called. self.systemDefaultsObj=%s', self.systemDefaultsObj)
        if self.systemDefaultsObj:
            return True
        return False

    def newRuleList (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-rulelist').debug3Func(): logFunc('called.')
        ruleList = BlinkyRuleMaapiList(self._log)
        ruleList.init(self.domain)
        return ruleList

    def setRuleListObj (self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-rulelist').debug3Func(): logFunc('called. obj=%s', obj)
        self.ruleListObj = obj

    def getRuleListObj (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-rulelist').debug3Func(): logFunc('called. self.ruleListObj=%s', self.ruleListObj)
        return self.ruleListObj

    def hasRuleList (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-rulelist').debug3Func(): logFunc('called. self.ruleListObj=%s', self.ruleListObj)
        if self.ruleListObj:
            return True
        return False



    def requestName (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-name').debug3Func(): logFunc('called. requested=%s', requested)
        self.nameRequested = requested
        self.nameSet = False

    def isNameRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-name-requested').debug3Func(): logFunc('called. requested=%s', self.nameRequested)
        return self.nameRequested

    def getName (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-name').debug3Func(): logFunc('called. self.nameSet=%s, self.name=%s', self.nameSet, self.name)
        if self.nameSet:
            return self.name
        return None

    def hasName (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-name').debug3Func(): logFunc('called. self.nameSet=%s, self.name=%s', self.nameSet, self.name)
        if self.nameSet:
            return True
        return False

    def setName (self, name):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-name').debug3Func(): logFunc('called. name=%s, old=%s', name, self.name)
        self.nameSet = True
        self.name = name


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        
        if self.internalObj:
            self.internalObj._clearAllReadData()
        
        if self.destinationListObj:
            self.destinationListObj._clearAllReadData()
        
        if self.systemDefaultsObj:
            self.systemDefaultsObj._clearAllReadData()
        
        if self.ruleListObj:
            self.ruleListObj._clearAllReadData()
        

        
        self.name = 0
        self.nameSet = False
        

    def _getSelfKeyPath (self, loggerClass
                         , instance
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        ancestorVal = Value()
        ancestorVal.setString(instance);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("instance", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", "qt-debug"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(loggerClass);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("logger-class", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", "qt-debug"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        loggerClass, 
                        instance, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(loggerClass, 
                                         instance, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(loggerClass, 
                                       instance, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       loggerClass, 
                       instance, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(loggerClass, 
                                       instance, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               loggerClass, 
                               instance, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        
        if self.internalObj:
            res = self.internalObj._collectItemsToDelete(loggerClass, 
                                                                          instance, 
                                                                          
                                                                          itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('collect-items-to-delete-internal-failed').errorFunc(): logFunc('internalObj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError
        
        if self.destinationListObj:
            res = self.destinationListObj._collectItemsToDelete(loggerClass, 
                                                                          instance, 
                                                                          
                                                                          itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('collect-items-to-delete-destination-failed').errorFunc(): logFunc('destinationListObj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError
        
        if self.systemDefaultsObj:
            res = self.systemDefaultsObj._collectItemsToDelete(loggerClass, 
                                                                          instance, 
                                                                          
                                                                          itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('collect-items-to-delete-system-defaults-failed').errorFunc(): logFunc('systemDefaultsObj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError
        
        if self.ruleListObj:
            res = self.ruleListObj._collectItemsToDelete(loggerClass, 
                                                                          instance, 
                                                                          
                                                                          itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('collect-items-to-delete-rule-failed').errorFunc(): logFunc('ruleListObj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError
        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasName():
            valName = Value()
            if self.name is not None:
                valName.setString(self.name)
            else:
                valName.setEmpty()
            tagValueList.push(("name", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"), valName)
        

        
        if self.internalObj:
            valBegin = Value()
            (tag, ns, prefix) = ("internal" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", "qt-debug")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.internalObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-write-tag-values-internal-failed').errorFunc(): logFunc('internalObj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        
        if self.destinationListObj:
            valBegin = Value()
            (tag, ns, prefix) = ("destination" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", "qt-debug")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.destinationListObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-write-tag-values-destination-failed').errorFunc(): logFunc('destinationListObj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        
        if self.systemDefaultsObj:
            valBegin = Value()
            (tag, ns, prefix) = ("system-defaults" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", "qt-debug")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.systemDefaultsObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-write-tag-values-system-defaults-failed').errorFunc(): logFunc('systemDefaultsObj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        
        if self.ruleListObj:
            valBegin = Value()
            (tag, ns, prefix) = ("rule" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", "qt-debug")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.ruleListObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-write-tag-values-rule-failed').errorFunc(): logFunc('ruleListObj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isNameRequested():
            valName = Value()
            valName.setEmpty()
            tagValueList.push(("name", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"), valName)
        

        
        if self.internalObj:
            valBegin = Value()
            (tag, ns, prefix) = ("internal" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", "qt-debug")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.internalObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-read-tag-values-internal-failed').errorFunc(): logFunc('internalObj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        
        if self.destinationListObj:
            valBegin = Value()
            (tag, ns, prefix) = ("destination" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", "qt-debug")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.destinationListObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-read-tag-values-destination-failed').errorFunc(): logFunc('destinationListObj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        
        if self.systemDefaultsObj:
            valBegin = Value()
            (tag, ns, prefix) = ("system-defaults" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", "qt-debug")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.systemDefaultsObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-read-tag-values-system-defaults-failed').errorFunc(): logFunc('systemDefaultsObj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        
        if self.ruleListObj:
            valBegin = Value()
            (tag, ns, prefix) = ("rule" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", "qt-debug")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.ruleListObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-read-tag-values-rule-failed').errorFunc(): logFunc('ruleListObj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isNameRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "name") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-name').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "name", "name", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-name-bad-value').infoFunc(): logFunc('name not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setName(tempVar)
            for logFunc in self._log('read-tag-values-name').debug3Func(): logFunc('read name. name=%s, tempValue=%s', self.name, tempValue.getType())
        

        
        if self.internalObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "internal") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log('reag-tag-values-unexpected-tag-begin').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                        "internal", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", Value.kXmlBegin,
                                                                        tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
            
            res = self.internalObj._readTagValues(tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('read-tag-values-internal-failed').errorFunc(): logFunc('internalObj._readTagValues() failed. tagValueList=%s', tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "internal") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log('reag-tag-values-unexpected-tag-end').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                      "internal", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", Value.kXmlEnd,
                                                                        tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
        
        if self.destinationListObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "destination") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log('reag-tag-values-unexpected-tag-begin').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                        "destination", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", Value.kXmlBegin,
                                                                        tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
            
            res = self.destinationListObj._readTagValues(tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('read-tag-values-destination-failed').errorFunc(): logFunc('destinationListObj._readTagValues() failed. tagValueList=%s', tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "destination") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log('reag-tag-values-unexpected-tag-end').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                      "destination", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", Value.kXmlEnd,
                                                                        tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
        
        if self.systemDefaultsObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "system-defaults") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log('reag-tag-values-unexpected-tag-begin').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                        "system-defaults", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", Value.kXmlBegin,
                                                                        tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
            
            res = self.systemDefaultsObj._readTagValues(tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('read-tag-values-system-defaults-failed').errorFunc(): logFunc('systemDefaultsObj._readTagValues() failed. tagValueList=%s', tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "system-defaults") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log('reag-tag-values-unexpected-tag-end').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                      "system-defaults", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", Value.kXmlEnd,
                                                                        tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
        
        if self.ruleListObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "rule") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log('reag-tag-values-unexpected-tag-begin').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                        "rule", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", Value.kXmlBegin,
                                                                        tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
            
            res = self.ruleListObj._readTagValues(tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('read-tag-values-rule-failed').errorFunc(): logFunc('ruleListObj._readTagValues() failed. tagValueList=%s', tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "rule") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log('reag-tag-values-unexpected-tag-end').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                      "rule", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-debug", Value.kXmlEnd,
                                                                        tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
Example #48
0
class BlinkyDpdkMaapi(DpdkMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-dpdk")
        self.domain = None

        

        
        self.channelQueueSizeRequested = False
        self.channelQueueSize = None
        self.channelQueueSizeSet = False
        
        self.memSizeRequested = False
        self.memSize = None
        self.memSizeSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestChannelQueueSize(True)
        
        self.requestMemSize(True)
        
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestChannelQueueSize(True)
        
        self.requestMemSize(True)
        
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestChannelQueueSize(False)
        
        self.requestMemSize(False)
        
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestChannelQueueSize(False)
        
        self.requestMemSize(False)
        
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setChannelQueueSize(None)
        self.channelQueueSizeSet = False
        
        self.setMemSize(None)
        self.memSizeSet = False
        
        

    def write (self
              , line
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(line, trxContext)

    def read (self
              , line
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(line, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , line
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(line, 
                                  True,
                                  trxContext)



    def requestChannelQueueSize (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-channelqueuesize').debug3Func(): logFunc('called. requested=%s', requested)
        self.channelQueueSizeRequested = requested
        self.channelQueueSizeSet = False

    def isChannelQueueSizeRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-channelqueuesize-requested').debug3Func(): logFunc('called. requested=%s', self.channelQueueSizeRequested)
        return self.channelQueueSizeRequested

    def getChannelQueueSize (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-channelqueuesize').debug3Func(): logFunc('called. self.channelQueueSizeSet=%s, self.channelQueueSize=%s', self.channelQueueSizeSet, self.channelQueueSize)
        if self.channelQueueSizeSet:
            return self.channelQueueSize
        return None

    def hasChannelQueueSize (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-channelqueuesize').debug3Func(): logFunc('called. self.channelQueueSizeSet=%s, self.channelQueueSize=%s', self.channelQueueSizeSet, self.channelQueueSize)
        if self.channelQueueSizeSet:
            return True
        return False

    def setChannelQueueSize (self, channelQueueSize):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-channelqueuesize').debug3Func(): logFunc('called. channelQueueSize=%s, old=%s', channelQueueSize, self.channelQueueSize)
        self.channelQueueSizeSet = True
        self.channelQueueSize = channelQueueSize

    def requestMemSize (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-memsize').debug3Func(): logFunc('called. requested=%s', requested)
        self.memSizeRequested = requested
        self.memSizeSet = False

    def isMemSizeRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-memsize-requested').debug3Func(): logFunc('called. requested=%s', self.memSizeRequested)
        return self.memSizeRequested

    def getMemSize (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-memsize').debug3Func(): logFunc('called. self.memSizeSet=%s, self.memSize=%s', self.memSizeSet, self.memSize)
        if self.memSizeSet:
            return self.memSize
        return None

    def hasMemSize (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-memsize').debug3Func(): logFunc('called. self.memSizeSet=%s, self.memSize=%s', self.memSizeSet, self.memSize)
        if self.memSizeSet:
            return True
        return False

    def setMemSize (self, memSize):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-memsize').debug3Func(): logFunc('called. memSize=%s, old=%s', memSize, self.memSize)
        self.memSizeSet = True
        self.memSize = memSize


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.channelQueueSize = 0
        self.channelQueueSizeSet = False
        
        self.memSize = 0
        self.memSizeSet = False
        

    def _getSelfKeyPath (self, line
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("dpdk", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", "qtc-line"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("dispatcher", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", "qtc-line"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("system-defaults", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", "qtc-line"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(line);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("line", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", "qtc-line"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("content", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content", "qtc"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        line, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(line, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(line, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       line, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(line, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               line, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasChannelQueueSize():
            valChannelQueueSize = Value()
            if self.channelQueueSize is not None:
                valChannelQueueSize.setInt64(self.channelQueueSize)
            else:
                valChannelQueueSize.setEmpty()
            tagValueList.push(("channel-queue-size", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"), valChannelQueueSize)
        
        if self.hasMemSize():
            valMemSize = Value()
            if self.memSize is not None:
                valMemSize.setInt64(self.memSize)
            else:
                valMemSize.setEmpty()
            tagValueList.push(("mem-size", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"), valMemSize)
        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isChannelQueueSizeRequested():
            valChannelQueueSize = Value()
            valChannelQueueSize.setEmpty()
            tagValueList.push(("channel-queue-size", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"), valChannelQueueSize)
        
        if self.isMemSizeRequested():
            valMemSize = Value()
            valMemSize.setEmpty()
            tagValueList.push(("mem-size", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"), valMemSize)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isChannelQueueSizeRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "channel-queue-size") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-channelqueuesize').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "channelQueueSize", "channel-queue-size", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-channel-queue-size-bad-value').infoFunc(): logFunc('channelQueueSize not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setChannelQueueSize(tempVar)
            for logFunc in self._log('read-tag-values-channel-queue-size').debug3Func(): logFunc('read channelQueueSize. channelQueueSize=%s, tempValue=%s', self.channelQueueSize, tempValue.getType())
        
        if self.isMemSizeRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "mem-size") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-memsize').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "memSize", "mem-size", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-mem-size-bad-value').infoFunc(): logFunc('memSize not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setMemSize(tempVar)
            for logFunc in self._log('read-tag-values-mem-size').debug3Func(): logFunc('read memSize. memSize=%s, tempValue=%s', self.memSize, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
class BlinkyThresholdsMaapi(ThresholdsMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-thresholds")
        self.domain = None

        

        
        self.fileArchiveDurationWarningSecondsRequested = False
        self.fileArchiveDurationWarningSeconds = None
        self.fileArchiveDurationWarningSecondsSet = False
        
        self.pendingFileCountWarningRequested = False
        self.pendingFileCountWarning = None
        self.pendingFileCountWarningSet = False
        
        self.overallArchiveDurationWarningSecondsRequested = False
        self.overallArchiveDurationWarningSeconds = None
        self.overallArchiveDurationWarningSecondsSet = False
        
        self.pendingFileCountErrorRequested = False
        self.pendingFileCountError = None
        self.pendingFileCountErrorSet = False
        
        self.fileArchiveDurationErrorSecondsRequested = False
        self.fileArchiveDurationErrorSeconds = None
        self.fileArchiveDurationErrorSecondsSet = False
        
        self.overallArchiveDurationErrorSecondsRequested = False
        self.overallArchiveDurationErrorSeconds = None
        self.overallArchiveDurationErrorSecondsSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestFileArchiveDurationWarningSeconds(True)
        
        self.requestPendingFileCountWarning(True)
        
        self.requestOverallArchiveDurationWarningSeconds(True)
        
        self.requestPendingFileCountError(True)
        
        self.requestFileArchiveDurationErrorSeconds(True)
        
        self.requestOverallArchiveDurationErrorSeconds(True)
        
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestFileArchiveDurationWarningSeconds(True)
        
        self.requestPendingFileCountWarning(True)
        
        self.requestOverallArchiveDurationWarningSeconds(True)
        
        self.requestPendingFileCountError(True)
        
        self.requestFileArchiveDurationErrorSeconds(True)
        
        self.requestOverallArchiveDurationErrorSeconds(True)
        
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestFileArchiveDurationWarningSeconds(False)
        
        self.requestPendingFileCountWarning(False)
        
        self.requestOverallArchiveDurationWarningSeconds(False)
        
        self.requestPendingFileCountError(False)
        
        self.requestFileArchiveDurationErrorSeconds(False)
        
        self.requestOverallArchiveDurationErrorSeconds(False)
        
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestFileArchiveDurationWarningSeconds(False)
        
        self.requestPendingFileCountWarning(False)
        
        self.requestOverallArchiveDurationWarningSeconds(False)
        
        self.requestPendingFileCountError(False)
        
        self.requestFileArchiveDurationErrorSeconds(False)
        
        self.requestOverallArchiveDurationErrorSeconds(False)
        
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setFileArchiveDurationWarningSeconds(None)
        self.fileArchiveDurationWarningSecondsSet = False
        
        self.setPendingFileCountWarning(None)
        self.pendingFileCountWarningSet = False
        
        self.setOverallArchiveDurationWarningSeconds(None)
        self.overallArchiveDurationWarningSecondsSet = False
        
        self.setPendingFileCountError(None)
        self.pendingFileCountErrorSet = False
        
        self.setFileArchiveDurationErrorSeconds(None)
        self.fileArchiveDurationErrorSecondsSet = False
        
        self.setOverallArchiveDurationErrorSeconds(None)
        self.overallArchiveDurationErrorSecondsSet = False
        
        

    def write (self
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(trxContext)

    def read (self
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(
                                  True,
                                  trxContext)



    def requestFileArchiveDurationWarningSeconds (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-filearchivedurationwarningseconds').debug3Func(): logFunc('called. requested=%s', requested)
        self.fileArchiveDurationWarningSecondsRequested = requested
        self.fileArchiveDurationWarningSecondsSet = False

    def isFileArchiveDurationWarningSecondsRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-filearchivedurationwarningseconds-requested').debug3Func(): logFunc('called. requested=%s', self.fileArchiveDurationWarningSecondsRequested)
        return self.fileArchiveDurationWarningSecondsRequested

    def getFileArchiveDurationWarningSeconds (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-filearchivedurationwarningseconds').debug3Func(): logFunc('called. self.fileArchiveDurationWarningSecondsSet=%s, self.fileArchiveDurationWarningSeconds=%s', self.fileArchiveDurationWarningSecondsSet, self.fileArchiveDurationWarningSeconds)
        if self.fileArchiveDurationWarningSecondsSet:
            return self.fileArchiveDurationWarningSeconds
        return None

    def hasFileArchiveDurationWarningSeconds (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-filearchivedurationwarningseconds').debug3Func(): logFunc('called. self.fileArchiveDurationWarningSecondsSet=%s, self.fileArchiveDurationWarningSeconds=%s', self.fileArchiveDurationWarningSecondsSet, self.fileArchiveDurationWarningSeconds)
        if self.fileArchiveDurationWarningSecondsSet:
            return True
        return False

    def setFileArchiveDurationWarningSeconds (self, fileArchiveDurationWarningSeconds):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-filearchivedurationwarningseconds').debug3Func(): logFunc('called. fileArchiveDurationWarningSeconds=%s, old=%s', fileArchiveDurationWarningSeconds, self.fileArchiveDurationWarningSeconds)
        self.fileArchiveDurationWarningSecondsSet = True
        self.fileArchiveDurationWarningSeconds = fileArchiveDurationWarningSeconds

    def requestPendingFileCountWarning (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-pendingfilecountwarning').debug3Func(): logFunc('called. requested=%s', requested)
        self.pendingFileCountWarningRequested = requested
        self.pendingFileCountWarningSet = False

    def isPendingFileCountWarningRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-pendingfilecountwarning-requested').debug3Func(): logFunc('called. requested=%s', self.pendingFileCountWarningRequested)
        return self.pendingFileCountWarningRequested

    def getPendingFileCountWarning (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-pendingfilecountwarning').debug3Func(): logFunc('called. self.pendingFileCountWarningSet=%s, self.pendingFileCountWarning=%s', self.pendingFileCountWarningSet, self.pendingFileCountWarning)
        if self.pendingFileCountWarningSet:
            return self.pendingFileCountWarning
        return None

    def hasPendingFileCountWarning (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-pendingfilecountwarning').debug3Func(): logFunc('called. self.pendingFileCountWarningSet=%s, self.pendingFileCountWarning=%s', self.pendingFileCountWarningSet, self.pendingFileCountWarning)
        if self.pendingFileCountWarningSet:
            return True
        return False

    def setPendingFileCountWarning (self, pendingFileCountWarning):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-pendingfilecountwarning').debug3Func(): logFunc('called. pendingFileCountWarning=%s, old=%s', pendingFileCountWarning, self.pendingFileCountWarning)
        self.pendingFileCountWarningSet = True
        self.pendingFileCountWarning = pendingFileCountWarning

    def requestOverallArchiveDurationWarningSeconds (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-overallarchivedurationwarningseconds').debug3Func(): logFunc('called. requested=%s', requested)
        self.overallArchiveDurationWarningSecondsRequested = requested
        self.overallArchiveDurationWarningSecondsSet = False

    def isOverallArchiveDurationWarningSecondsRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-overallarchivedurationwarningseconds-requested').debug3Func(): logFunc('called. requested=%s', self.overallArchiveDurationWarningSecondsRequested)
        return self.overallArchiveDurationWarningSecondsRequested

    def getOverallArchiveDurationWarningSeconds (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-overallarchivedurationwarningseconds').debug3Func(): logFunc('called. self.overallArchiveDurationWarningSecondsSet=%s, self.overallArchiveDurationWarningSeconds=%s', self.overallArchiveDurationWarningSecondsSet, self.overallArchiveDurationWarningSeconds)
        if self.overallArchiveDurationWarningSecondsSet:
            return self.overallArchiveDurationWarningSeconds
        return None

    def hasOverallArchiveDurationWarningSeconds (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-overallarchivedurationwarningseconds').debug3Func(): logFunc('called. self.overallArchiveDurationWarningSecondsSet=%s, self.overallArchiveDurationWarningSeconds=%s', self.overallArchiveDurationWarningSecondsSet, self.overallArchiveDurationWarningSeconds)
        if self.overallArchiveDurationWarningSecondsSet:
            return True
        return False

    def setOverallArchiveDurationWarningSeconds (self, overallArchiveDurationWarningSeconds):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-overallarchivedurationwarningseconds').debug3Func(): logFunc('called. overallArchiveDurationWarningSeconds=%s, old=%s', overallArchiveDurationWarningSeconds, self.overallArchiveDurationWarningSeconds)
        self.overallArchiveDurationWarningSecondsSet = True
        self.overallArchiveDurationWarningSeconds = overallArchiveDurationWarningSeconds

    def requestPendingFileCountError (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-pendingfilecounterror').debug3Func(): logFunc('called. requested=%s', requested)
        self.pendingFileCountErrorRequested = requested
        self.pendingFileCountErrorSet = False

    def isPendingFileCountErrorRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-pendingfilecounterror-requested').debug3Func(): logFunc('called. requested=%s', self.pendingFileCountErrorRequested)
        return self.pendingFileCountErrorRequested

    def getPendingFileCountError (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-pendingfilecounterror').debug3Func(): logFunc('called. self.pendingFileCountErrorSet=%s, self.pendingFileCountError=%s', self.pendingFileCountErrorSet, self.pendingFileCountError)
        if self.pendingFileCountErrorSet:
            return self.pendingFileCountError
        return None

    def hasPendingFileCountError (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-pendingfilecounterror').debug3Func(): logFunc('called. self.pendingFileCountErrorSet=%s, self.pendingFileCountError=%s', self.pendingFileCountErrorSet, self.pendingFileCountError)
        if self.pendingFileCountErrorSet:
            return True
        return False

    def setPendingFileCountError (self, pendingFileCountError):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-pendingfilecounterror').debug3Func(): logFunc('called. pendingFileCountError=%s, old=%s', pendingFileCountError, self.pendingFileCountError)
        self.pendingFileCountErrorSet = True
        self.pendingFileCountError = pendingFileCountError

    def requestFileArchiveDurationErrorSeconds (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-filearchivedurationerrorseconds').debug3Func(): logFunc('called. requested=%s', requested)
        self.fileArchiveDurationErrorSecondsRequested = requested
        self.fileArchiveDurationErrorSecondsSet = False

    def isFileArchiveDurationErrorSecondsRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-filearchivedurationerrorseconds-requested').debug3Func(): logFunc('called. requested=%s', self.fileArchiveDurationErrorSecondsRequested)
        return self.fileArchiveDurationErrorSecondsRequested

    def getFileArchiveDurationErrorSeconds (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-filearchivedurationerrorseconds').debug3Func(): logFunc('called. self.fileArchiveDurationErrorSecondsSet=%s, self.fileArchiveDurationErrorSeconds=%s', self.fileArchiveDurationErrorSecondsSet, self.fileArchiveDurationErrorSeconds)
        if self.fileArchiveDurationErrorSecondsSet:
            return self.fileArchiveDurationErrorSeconds
        return None

    def hasFileArchiveDurationErrorSeconds (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-filearchivedurationerrorseconds').debug3Func(): logFunc('called. self.fileArchiveDurationErrorSecondsSet=%s, self.fileArchiveDurationErrorSeconds=%s', self.fileArchiveDurationErrorSecondsSet, self.fileArchiveDurationErrorSeconds)
        if self.fileArchiveDurationErrorSecondsSet:
            return True
        return False

    def setFileArchiveDurationErrorSeconds (self, fileArchiveDurationErrorSeconds):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-filearchivedurationerrorseconds').debug3Func(): logFunc('called. fileArchiveDurationErrorSeconds=%s, old=%s', fileArchiveDurationErrorSeconds, self.fileArchiveDurationErrorSeconds)
        self.fileArchiveDurationErrorSecondsSet = True
        self.fileArchiveDurationErrorSeconds = fileArchiveDurationErrorSeconds

    def requestOverallArchiveDurationErrorSeconds (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-overallarchivedurationerrorseconds').debug3Func(): logFunc('called. requested=%s', requested)
        self.overallArchiveDurationErrorSecondsRequested = requested
        self.overallArchiveDurationErrorSecondsSet = False

    def isOverallArchiveDurationErrorSecondsRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-overallarchivedurationerrorseconds-requested').debug3Func(): logFunc('called. requested=%s', self.overallArchiveDurationErrorSecondsRequested)
        return self.overallArchiveDurationErrorSecondsRequested

    def getOverallArchiveDurationErrorSeconds (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-overallarchivedurationerrorseconds').debug3Func(): logFunc('called. self.overallArchiveDurationErrorSecondsSet=%s, self.overallArchiveDurationErrorSeconds=%s', self.overallArchiveDurationErrorSecondsSet, self.overallArchiveDurationErrorSeconds)
        if self.overallArchiveDurationErrorSecondsSet:
            return self.overallArchiveDurationErrorSeconds
        return None

    def hasOverallArchiveDurationErrorSeconds (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-overallarchivedurationerrorseconds').debug3Func(): logFunc('called. self.overallArchiveDurationErrorSecondsSet=%s, self.overallArchiveDurationErrorSeconds=%s', self.overallArchiveDurationErrorSecondsSet, self.overallArchiveDurationErrorSeconds)
        if self.overallArchiveDurationErrorSecondsSet:
            return True
        return False

    def setOverallArchiveDurationErrorSeconds (self, overallArchiveDurationErrorSeconds):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-overallarchivedurationerrorseconds').debug3Func(): logFunc('called. overallArchiveDurationErrorSeconds=%s, old=%s', overallArchiveDurationErrorSeconds, self.overallArchiveDurationErrorSeconds)
        self.overallArchiveDurationErrorSecondsSet = True
        self.overallArchiveDurationErrorSeconds = overallArchiveDurationErrorSeconds


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.fileArchiveDurationWarningSeconds = 0
        self.fileArchiveDurationWarningSecondsSet = False
        
        self.pendingFileCountWarning = 0
        self.pendingFileCountWarningSet = False
        
        self.overallArchiveDurationWarningSeconds = 0
        self.overallArchiveDurationWarningSecondsSet = False
        
        self.pendingFileCountError = 0
        self.pendingFileCountErrorSet = False
        
        self.fileArchiveDurationErrorSeconds = 0
        self.fileArchiveDurationErrorSecondsSet = False
        
        self.overallArchiveDurationErrorSeconds = 0
        self.overallArchiveDurationErrorSecondsSet = False
        

    def _getSelfKeyPath (self
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("thresholds", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", "qt-log"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("log-archiving", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", "qt-log"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("housekeeper", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", "qt-log"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("system-defaults", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", "qt-log"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("log", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", "qt-log"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasFileArchiveDurationWarningSeconds():
            valFileArchiveDurationWarningSeconds = Value()
            if self.fileArchiveDurationWarningSeconds is not None:
                valFileArchiveDurationWarningSeconds.setInt64(self.fileArchiveDurationWarningSeconds)
            else:
                valFileArchiveDurationWarningSeconds.setEmpty()
            tagValueList.push(("file-archive-duration-warning-seconds", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"), valFileArchiveDurationWarningSeconds)
        
        if self.hasPendingFileCountWarning():
            valPendingFileCountWarning = Value()
            if self.pendingFileCountWarning is not None:
                valPendingFileCountWarning.setInt64(self.pendingFileCountWarning)
            else:
                valPendingFileCountWarning.setEmpty()
            tagValueList.push(("pending-file-count-warning", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"), valPendingFileCountWarning)
        
        if self.hasOverallArchiveDurationWarningSeconds():
            valOverallArchiveDurationWarningSeconds = Value()
            if self.overallArchiveDurationWarningSeconds is not None:
                valOverallArchiveDurationWarningSeconds.setInt64(self.overallArchiveDurationWarningSeconds)
            else:
                valOverallArchiveDurationWarningSeconds.setEmpty()
            tagValueList.push(("overall-archive-duration-warning-seconds", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"), valOverallArchiveDurationWarningSeconds)
        
        if self.hasPendingFileCountError():
            valPendingFileCountError = Value()
            if self.pendingFileCountError is not None:
                valPendingFileCountError.setInt64(self.pendingFileCountError)
            else:
                valPendingFileCountError.setEmpty()
            tagValueList.push(("pending-file-count-error", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"), valPendingFileCountError)
        
        if self.hasFileArchiveDurationErrorSeconds():
            valFileArchiveDurationErrorSeconds = Value()
            if self.fileArchiveDurationErrorSeconds is not None:
                valFileArchiveDurationErrorSeconds.setInt64(self.fileArchiveDurationErrorSeconds)
            else:
                valFileArchiveDurationErrorSeconds.setEmpty()
            tagValueList.push(("file-archive-duration-error-seconds", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"), valFileArchiveDurationErrorSeconds)
        
        if self.hasOverallArchiveDurationErrorSeconds():
            valOverallArchiveDurationErrorSeconds = Value()
            if self.overallArchiveDurationErrorSeconds is not None:
                valOverallArchiveDurationErrorSeconds.setInt64(self.overallArchiveDurationErrorSeconds)
            else:
                valOverallArchiveDurationErrorSeconds.setEmpty()
            tagValueList.push(("overall-archive-duration-error-seconds", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"), valOverallArchiveDurationErrorSeconds)
        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isFileArchiveDurationWarningSecondsRequested():
            valFileArchiveDurationWarningSeconds = Value()
            valFileArchiveDurationWarningSeconds.setEmpty()
            tagValueList.push(("file-archive-duration-warning-seconds", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"), valFileArchiveDurationWarningSeconds)
        
        if self.isPendingFileCountWarningRequested():
            valPendingFileCountWarning = Value()
            valPendingFileCountWarning.setEmpty()
            tagValueList.push(("pending-file-count-warning", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"), valPendingFileCountWarning)
        
        if self.isOverallArchiveDurationWarningSecondsRequested():
            valOverallArchiveDurationWarningSeconds = Value()
            valOverallArchiveDurationWarningSeconds.setEmpty()
            tagValueList.push(("overall-archive-duration-warning-seconds", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"), valOverallArchiveDurationWarningSeconds)
        
        if self.isPendingFileCountErrorRequested():
            valPendingFileCountError = Value()
            valPendingFileCountError.setEmpty()
            tagValueList.push(("pending-file-count-error", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"), valPendingFileCountError)
        
        if self.isFileArchiveDurationErrorSecondsRequested():
            valFileArchiveDurationErrorSeconds = Value()
            valFileArchiveDurationErrorSeconds.setEmpty()
            tagValueList.push(("file-archive-duration-error-seconds", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"), valFileArchiveDurationErrorSeconds)
        
        if self.isOverallArchiveDurationErrorSecondsRequested():
            valOverallArchiveDurationErrorSeconds = Value()
            valOverallArchiveDurationErrorSeconds.setEmpty()
            tagValueList.push(("overall-archive-duration-error-seconds", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"), valOverallArchiveDurationErrorSeconds)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isFileArchiveDurationWarningSecondsRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "file-archive-duration-warning-seconds") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-filearchivedurationwarningseconds').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "fileArchiveDurationWarningSeconds", "file-archive-duration-warning-seconds", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-file-archive-duration-warning-seconds-bad-value').infoFunc(): logFunc('fileArchiveDurationWarningSeconds not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setFileArchiveDurationWarningSeconds(tempVar)
            for logFunc in self._log('read-tag-values-file-archive-duration-warning-seconds').debug3Func(): logFunc('read fileArchiveDurationWarningSeconds. fileArchiveDurationWarningSeconds=%s, tempValue=%s', self.fileArchiveDurationWarningSeconds, tempValue.getType())
        
        if self.isPendingFileCountWarningRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "pending-file-count-warning") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-pendingfilecountwarning').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "pendingFileCountWarning", "pending-file-count-warning", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-pending-file-count-warning-bad-value').infoFunc(): logFunc('pendingFileCountWarning not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setPendingFileCountWarning(tempVar)
            for logFunc in self._log('read-tag-values-pending-file-count-warning').debug3Func(): logFunc('read pendingFileCountWarning. pendingFileCountWarning=%s, tempValue=%s', self.pendingFileCountWarning, tempValue.getType())
        
        if self.isOverallArchiveDurationWarningSecondsRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "overall-archive-duration-warning-seconds") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-overallarchivedurationwarningseconds').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "overallArchiveDurationWarningSeconds", "overall-archive-duration-warning-seconds", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-overall-archive-duration-warning-seconds-bad-value').infoFunc(): logFunc('overallArchiveDurationWarningSeconds not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setOverallArchiveDurationWarningSeconds(tempVar)
            for logFunc in self._log('read-tag-values-overall-archive-duration-warning-seconds').debug3Func(): logFunc('read overallArchiveDurationWarningSeconds. overallArchiveDurationWarningSeconds=%s, tempValue=%s', self.overallArchiveDurationWarningSeconds, tempValue.getType())
        
        if self.isPendingFileCountErrorRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "pending-file-count-error") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-pendingfilecounterror').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "pendingFileCountError", "pending-file-count-error", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-pending-file-count-error-bad-value').infoFunc(): logFunc('pendingFileCountError not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setPendingFileCountError(tempVar)
            for logFunc in self._log('read-tag-values-pending-file-count-error').debug3Func(): logFunc('read pendingFileCountError. pendingFileCountError=%s, tempValue=%s', self.pendingFileCountError, tempValue.getType())
        
        if self.isFileArchiveDurationErrorSecondsRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "file-archive-duration-error-seconds") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-filearchivedurationerrorseconds').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "fileArchiveDurationErrorSeconds", "file-archive-duration-error-seconds", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-file-archive-duration-error-seconds-bad-value').infoFunc(): logFunc('fileArchiveDurationErrorSeconds not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setFileArchiveDurationErrorSeconds(tempVar)
            for logFunc in self._log('read-tag-values-file-archive-duration-error-seconds').debug3Func(): logFunc('read fileArchiveDurationErrorSeconds. fileArchiveDurationErrorSeconds=%s, tempValue=%s', self.fileArchiveDurationErrorSeconds, tempValue.getType())
        
        if self.isOverallArchiveDurationErrorSecondsRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "overall-archive-duration-error-seconds") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-overallarchivedurationerrorseconds').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "overallArchiveDurationErrorSeconds", "overall-archive-duration-error-seconds", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-overall-archive-duration-error-seconds-bad-value').infoFunc(): logFunc('overallArchiveDurationErrorSeconds not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setOverallArchiveDurationErrorSeconds(tempVar)
            for logFunc in self._log('read-tag-values-overall-archive-duration-error-seconds').debug3Func(): logFunc('read overallArchiveDurationErrorSeconds. overallArchiveDurationErrorSeconds=%s, tempValue=%s', self.overallArchiveDurationErrorSeconds, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
class BlinkyRaidArrayMaapi(RaidArrayMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-raidArray")
        self.domain = None

        

        
        self.osDeviceRequested = False
        self.osDevice = None
        self.osDeviceSet = False
        
        self.implementationRequested = False
        self.implementation = None
        self.implementationSet = False
        
        self.raidTypeRequested = False
        self.raidType = None
        self.raidTypeSet = False
        
        self.nameRequested = False
        self.name = None
        self.nameSet = False
        
        self.autoInitRequested = False
        self.autoInit = None
        self.autoInitSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestOsDevice(True)
        
        self.requestImplementation(True)
        
        self.requestRaidType(True)
        
        self.requestName(True)
        
        self.requestAutoInit(True)
        
        
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestOsDevice(True)
        
        self.requestImplementation(True)
        
        self.requestRaidType(True)
        
        self.requestName(True)
        
        self.requestAutoInit(True)
        
        
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestOsDevice(False)
        
        self.requestImplementation(False)
        
        self.requestRaidType(False)
        
        self.requestName(False)
        
        self.requestAutoInit(False)
        
        
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestOsDevice(False)
        
        self.requestImplementation(False)
        
        self.requestRaidType(False)
        
        self.requestName(False)
        
        self.requestAutoInit(False)
        
        
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setOsDevice(None)
        self.osDeviceSet = False
        
        self.setImplementation(None)
        self.implementationSet = False
        
        self.setRaidType(None)
        self.raidTypeSet = False
        
        self.setName(None)
        self.nameSet = False
        
        self.setAutoInit(None)
        self.autoInitSet = False
        
        

    def write (self
              , disk
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(disk, trxContext)

    def read (self
              , disk
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(disk, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , disk
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(disk, 
                                  True,
                                  trxContext)



    def requestOsDevice (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-osdevice').debug3Func(): logFunc('called. requested=%s', requested)
        self.osDeviceRequested = requested
        self.osDeviceSet = False

    def isOsDeviceRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-osdevice-requested').debug3Func(): logFunc('called. requested=%s', self.osDeviceRequested)
        return self.osDeviceRequested

    def getOsDevice (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-osdevice').debug3Func(): logFunc('called. self.osDeviceSet=%s, self.osDevice=%s', self.osDeviceSet, self.osDevice)
        if self.osDeviceSet:
            return self.osDevice
        return None

    def hasOsDevice (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-osdevice').debug3Func(): logFunc('called. self.osDeviceSet=%s, self.osDevice=%s', self.osDeviceSet, self.osDevice)
        if self.osDeviceSet:
            return True
        return False

    def setOsDevice (self, osDevice):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-osdevice').debug3Func(): logFunc('called. osDevice=%s, old=%s', osDevice, self.osDevice)
        self.osDeviceSet = True
        self.osDevice = osDevice

    def requestImplementation (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-implementation').debug3Func(): logFunc('called. requested=%s', requested)
        self.implementationRequested = requested
        self.implementationSet = False

    def isImplementationRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-implementation-requested').debug3Func(): logFunc('called. requested=%s', self.implementationRequested)
        return self.implementationRequested

    def getImplementation (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-implementation').debug3Func(): logFunc('called. self.implementationSet=%s, self.implementation=%s', self.implementationSet, self.implementation)
        if self.implementationSet:
            return self.implementation
        return None

    def hasImplementation (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-implementation').debug3Func(): logFunc('called. self.implementationSet=%s, self.implementation=%s', self.implementationSet, self.implementation)
        if self.implementationSet:
            return True
        return False

    def setImplementation (self, implementation):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-implementation').debug3Func(): logFunc('called. implementation=%s, old=%s', implementation, self.implementation)
        self.implementationSet = True
        self.implementation = implementation

    def requestRaidType (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-raidtype').debug3Func(): logFunc('called. requested=%s', requested)
        self.raidTypeRequested = requested
        self.raidTypeSet = False

    def isRaidTypeRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-raidtype-requested').debug3Func(): logFunc('called. requested=%s', self.raidTypeRequested)
        return self.raidTypeRequested

    def getRaidType (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-raidtype').debug3Func(): logFunc('called. self.raidTypeSet=%s, self.raidType=%s', self.raidTypeSet, self.raidType)
        if self.raidTypeSet:
            return self.raidType
        return None

    def hasRaidType (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-raidtype').debug3Func(): logFunc('called. self.raidTypeSet=%s, self.raidType=%s', self.raidTypeSet, self.raidType)
        if self.raidTypeSet:
            return True
        return False

    def setRaidType (self, raidType):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-raidtype').debug3Func(): logFunc('called. raidType=%s, old=%s', raidType, self.raidType)
        self.raidTypeSet = True
        self.raidType = raidType

    def requestName (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-name').debug3Func(): logFunc('called. requested=%s', requested)
        self.nameRequested = requested
        self.nameSet = False

    def isNameRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-name-requested').debug3Func(): logFunc('called. requested=%s', self.nameRequested)
        return self.nameRequested

    def getName (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-name').debug3Func(): logFunc('called. self.nameSet=%s, self.name=%s', self.nameSet, self.name)
        if self.nameSet:
            return self.name
        return None

    def hasName (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-name').debug3Func(): logFunc('called. self.nameSet=%s, self.name=%s', self.nameSet, self.name)
        if self.nameSet:
            return True
        return False

    def setName (self, name):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-name').debug3Func(): logFunc('called. name=%s, old=%s', name, self.name)
        self.nameSet = True
        self.name = name

    def requestAutoInit (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-autoinit').debug3Func(): logFunc('called. requested=%s', requested)
        self.autoInitRequested = requested
        self.autoInitSet = False

    def isAutoInitRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-autoinit-requested').debug3Func(): logFunc('called. requested=%s', self.autoInitRequested)
        return self.autoInitRequested

    def getAutoInit (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-autoinit').debug3Func(): logFunc('called. self.autoInitSet=%s, self.autoInit=%s', self.autoInitSet, self.autoInit)
        if self.autoInitSet:
            return self.autoInit
        return None

    def hasAutoInit (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-autoinit').debug3Func(): logFunc('called. self.autoInitSet=%s, self.autoInit=%s', self.autoInitSet, self.autoInit)
        if self.autoInitSet:
            return True
        return False

    def setAutoInit (self, autoInit):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-autoinit').debug3Func(): logFunc('called. autoInit=%s, old=%s', autoInit, self.autoInit)
        self.autoInitSet = True
        self.autoInit = autoInit


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        

        
        self.osDevice = 0
        self.osDeviceSet = False
        
        self.implementation = 0
        self.implementationSet = False
        
        self.raidType = 0
        self.raidTypeSet = False
        
        self.name = 0
        self.nameSet = False
        
        self.autoInit = 0
        self.autoInitSet = False
        

    def _getSelfKeyPath (self, disk
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("raid-array", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk", "qt-strg-dsk"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("system-defaults", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk", "qt-strg-dsk"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(disk);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("disk", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk", "qt-strg-dsk"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("storage", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage", "qt-strg"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        disk, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(disk, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(disk, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       disk, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(disk, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               disk, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasOsDevice():
            valOsDevice = Value()
            if self.osDevice is not None:
                valOsDevice.setString(self.osDevice)
            else:
                valOsDevice.setEmpty()
            tagValueList.push(("os-device", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valOsDevice)
        
        if self.hasImplementation():
            valImplementation = Value()
            if self.implementation is not None:
                valImplementation.setEnum(self.implementation.getValue())
            else:
                valImplementation.setEmpty()
            tagValueList.push(("implementation", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valImplementation)
        
        if self.hasRaidType():
            valRaidType = Value()
            if self.raidType is not None:
                valRaidType.setEnum(self.raidType.getValue())
            else:
                valRaidType.setEmpty()
            tagValueList.push(("raid-type", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valRaidType)
        
        if self.hasName():
            valName = Value()
            if self.name is not None:
                valName.setString(self.name)
            else:
                valName.setEmpty()
            tagValueList.push(("name", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valName)
        
        if self.hasAutoInit():
            valAutoInit = Value()
            if self.autoInit is not None:
                valAutoInit.setBool(self.autoInit)
            else:
                valAutoInit.setEmpty()
            tagValueList.push(("auto-init", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valAutoInit)
        

        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isOsDeviceRequested():
            valOsDevice = Value()
            valOsDevice.setEmpty()
            tagValueList.push(("os-device", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valOsDevice)
        
        if self.isImplementationRequested():
            valImplementation = Value()
            valImplementation.setEmpty()
            tagValueList.push(("implementation", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valImplementation)
        
        if self.isRaidTypeRequested():
            valRaidType = Value()
            valRaidType.setEmpty()
            tagValueList.push(("raid-type", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valRaidType)
        
        if self.isNameRequested():
            valName = Value()
            valName.setEmpty()
            tagValueList.push(("name", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valName)
        
        if self.isAutoInitRequested():
            valAutoInit = Value()
            valAutoInit.setEmpty()
            tagValueList.push(("auto-init", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"), valAutoInit)
        

        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isOsDeviceRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "os-device") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-osdevice').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "osDevice", "os-device", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-os-device-bad-value').infoFunc(): logFunc('osDevice not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setOsDevice(tempVar)
            for logFunc in self._log('read-tag-values-os-device').debug3Func(): logFunc('read osDevice. osDevice=%s, tempValue=%s', self.osDevice, tempValue.getType())
        
        if self.isImplementationRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "implementation") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-implementation').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "implementation", "implementation", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asEnum()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-implementation-bad-value').infoFunc(): logFunc('implementation not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setImplementation(tempVar)
            for logFunc in self._log('read-tag-values-implementation').debug3Func(): logFunc('read implementation. implementation=%s, tempValue=%s', self.implementation, tempValue.getType())
        
        if self.isRaidTypeRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "raid-type") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-raidtype').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "raidType", "raid-type", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asEnum()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-raid-type-bad-value').infoFunc(): logFunc('raidType not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setRaidType(tempVar)
            for logFunc in self._log('read-tag-values-raid-type').debug3Func(): logFunc('read raidType. raidType=%s, tempValue=%s', self.raidType, tempValue.getType())
        
        if self.isNameRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "name") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-name').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "name", "name", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-name-bad-value').infoFunc(): logFunc('name not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setName(tempVar)
            for logFunc in self._log('read-tag-values-name').debug3Func(): logFunc('read name. name=%s, tempValue=%s', self.name, tempValue.getType())
        
        if self.isAutoInitRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "auto-init") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-autoinit').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "autoInit", "auto-init", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-storage-disk", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asBool()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-auto-init-bad-value').infoFunc(): logFunc('autoInit not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setAutoInit(tempVar)
            for logFunc in self._log('read-tag-values-auto-init').debug3Func(): logFunc('read autoInit. autoInit=%s, tempValue=%s', self.autoInit, tempValue.getType())
        

        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
Example #51
0
class BlinkyDeliveryMaapi(DeliveryMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-delivery")
        self.domain = None

        
        self.blockerObj = None
        

        
        self.maxActiveConnectionsRequested = False
        self.maxActiveConnections = None
        self.maxActiveConnectionsSet = False
        
        self.enabledRequested = False
        self.enabled = None
        self.enabledSet = False
        
        self.maxRedirectRateRequested = False
        self.maxRedirectRate = None
        self.maxRedirectRateSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestMaxActiveConnections(True)
        
        self.requestEnabled(True)
        
        self.requestMaxRedirectRate(True)
        
        
        
        if not self.blockerObj:
            self.blockerObj = self.newBlocker()
            self.blockerObj.requestConfigAndOper()
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestMaxActiveConnections(True)
        
        self.requestEnabled(True)
        
        self.requestMaxRedirectRate(True)
        
        
        
        if not self.blockerObj:
            self.blockerObj = self.newBlocker()
            self.blockerObj.requestConfig()
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestMaxActiveConnections(False)
        
        self.requestEnabled(False)
        
        self.requestMaxRedirectRate(False)
        
        
        
        if not self.blockerObj:
            self.blockerObj = self.newBlocker()
            self.blockerObj.requestOper()
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestMaxActiveConnections(False)
        
        self.requestEnabled(False)
        
        self.requestMaxRedirectRate(False)
        
        
        
        if not self.blockerObj:
            self.blockerObj = self.newBlocker()
            self.blockerObj.clearAllRequested()
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setMaxActiveConnections(None)
        self.maxActiveConnectionsSet = False
        
        self.setEnabled(None)
        self.enabledSet = False
        
        self.setMaxRedirectRate(None)
        self.maxRedirectRateSet = False
        
        
        if self.blockerObj:
            self.blockerObj.clearAllSet()
        

    def write (self
              , line
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(line, trxContext)

    def read (self
              , line
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(line, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , line
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(line, 
                                  True,
                                  trxContext)

    def newBlocker (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-blocker').debug3Func(): logFunc('called.')
        blocker = BlinkyBlockerMaapi(self._log)
        blocker.init(self.domain)
        return blocker

    def setBlockerObj (self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-blocker').debug3Func(): logFunc('called. obj=%s', obj)
        self.blockerObj = obj

    def getBlockerObj (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-blocker').debug3Func(): logFunc('called. self.blockerObj=%s', self.blockerObj)
        return self.blockerObj

    def hasBlocker (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-blocker').debug3Func(): logFunc('called. self.blockerObj=%s', self.blockerObj)
        if self.blockerObj:
            return True
        return False



    def requestMaxActiveConnections (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-maxactiveconnections').debug3Func(): logFunc('called. requested=%s', requested)
        self.maxActiveConnectionsRequested = requested
        self.maxActiveConnectionsSet = False

    def isMaxActiveConnectionsRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-maxactiveconnections-requested').debug3Func(): logFunc('called. requested=%s', self.maxActiveConnectionsRequested)
        return self.maxActiveConnectionsRequested

    def getMaxActiveConnections (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-maxactiveconnections').debug3Func(): logFunc('called. self.maxActiveConnectionsSet=%s, self.maxActiveConnections=%s', self.maxActiveConnectionsSet, self.maxActiveConnections)
        if self.maxActiveConnectionsSet:
            return self.maxActiveConnections
        return None

    def hasMaxActiveConnections (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-maxactiveconnections').debug3Func(): logFunc('called. self.maxActiveConnectionsSet=%s, self.maxActiveConnections=%s', self.maxActiveConnectionsSet, self.maxActiveConnections)
        if self.maxActiveConnectionsSet:
            return True
        return False

    def setMaxActiveConnections (self, maxActiveConnections):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-maxactiveconnections').debug3Func(): logFunc('called. maxActiveConnections=%s, old=%s', maxActiveConnections, self.maxActiveConnections)
        self.maxActiveConnectionsSet = True
        self.maxActiveConnections = maxActiveConnections

    def requestEnabled (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-enabled').debug3Func(): logFunc('called. requested=%s', requested)
        self.enabledRequested = requested
        self.enabledSet = False

    def isEnabledRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-enabled-requested').debug3Func(): logFunc('called. requested=%s', self.enabledRequested)
        return self.enabledRequested

    def getEnabled (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-enabled').debug3Func(): logFunc('called. self.enabledSet=%s, self.enabled=%s', self.enabledSet, self.enabled)
        if self.enabledSet:
            return self.enabled
        return None

    def hasEnabled (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-enabled').debug3Func(): logFunc('called. self.enabledSet=%s, self.enabled=%s', self.enabledSet, self.enabled)
        if self.enabledSet:
            return True
        return False

    def setEnabled (self, enabled):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-enabled').debug3Func(): logFunc('called. enabled=%s, old=%s', enabled, self.enabled)
        self.enabledSet = True
        self.enabled = enabled

    def requestMaxRedirectRate (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-maxredirectrate').debug3Func(): logFunc('called. requested=%s', requested)
        self.maxRedirectRateRequested = requested
        self.maxRedirectRateSet = False

    def isMaxRedirectRateRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-maxredirectrate-requested').debug3Func(): logFunc('called. requested=%s', self.maxRedirectRateRequested)
        return self.maxRedirectRateRequested

    def getMaxRedirectRate (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-maxredirectrate').debug3Func(): logFunc('called. self.maxRedirectRateSet=%s, self.maxRedirectRate=%s', self.maxRedirectRateSet, self.maxRedirectRate)
        if self.maxRedirectRateSet:
            return self.maxRedirectRate
        return None

    def hasMaxRedirectRate (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-maxredirectrate').debug3Func(): logFunc('called. self.maxRedirectRateSet=%s, self.maxRedirectRate=%s', self.maxRedirectRateSet, self.maxRedirectRate)
        if self.maxRedirectRateSet:
            return True
        return False

    def setMaxRedirectRate (self, maxRedirectRate):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-maxredirectrate').debug3Func(): logFunc('called. maxRedirectRate=%s, old=%s', maxRedirectRate, self.maxRedirectRate)
        self.maxRedirectRateSet = True
        self.maxRedirectRate = maxRedirectRate


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        
        if self.blockerObj:
            self.blockerObj._clearAllReadData()
        

        
        self.maxActiveConnections = 0
        self.maxActiveConnectionsSet = False
        
        self.enabled = 0
        self.enabledSet = False
        
        self.maxRedirectRate = 0
        self.maxRedirectRateSet = False
        

    def _getSelfKeyPath (self, line
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("delivery", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", "qtc-line"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("analyzer", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", "qtc-line"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("system-defaults", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", "qtc-line"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        ancestorVal = Value()
        ancestorVal.setString(line);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        xmlVal = Value()
        xmlVal.setXmlTag(("line", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", "qtc-line"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("content", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content", "qtc"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        line, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(line, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(line, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       line, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(line, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               line, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        
        if self.blockerObj:
            res = self.blockerObj._collectItemsToDelete(line, 
                                                                          
                                                                          itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('collect-items-to-delete-blocker-failed').errorFunc(): logFunc('blockerObj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError
        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasMaxActiveConnections():
            valMaxActiveConnections = Value()
            if self.maxActiveConnections is not None:
                valMaxActiveConnections.setInt64(self.maxActiveConnections)
            else:
                valMaxActiveConnections.setEmpty()
            tagValueList.push(("max-active-connections", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"), valMaxActiveConnections)
        
        if self.hasEnabled():
            valEnabled = Value()
            if self.enabled is not None:
                valEnabled.setBool(self.enabled)
            else:
                valEnabled.setEmpty()
            tagValueList.push(("enabled", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"), valEnabled)
        
        if self.hasMaxRedirectRate():
            valMaxRedirectRate = Value()
            if self.maxRedirectRate is not None:
                valMaxRedirectRate.setInt64(self.maxRedirectRate)
            else:
                valMaxRedirectRate.setEmpty()
            tagValueList.push(("max-redirect-rate", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"), valMaxRedirectRate)
        

        
        if self.blockerObj:
            valBegin = Value()
            (tag, ns, prefix) = ("blocker" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", "qtc-line")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.blockerObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-write-tag-values-blocker-failed').errorFunc(): logFunc('blockerObj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isMaxActiveConnectionsRequested():
            valMaxActiveConnections = Value()
            valMaxActiveConnections.setEmpty()
            tagValueList.push(("max-active-connections", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"), valMaxActiveConnections)
        
        if self.isEnabledRequested():
            valEnabled = Value()
            valEnabled.setEmpty()
            tagValueList.push(("enabled", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"), valEnabled)
        
        if self.isMaxRedirectRateRequested():
            valMaxRedirectRate = Value()
            valMaxRedirectRate.setEmpty()
            tagValueList.push(("max-redirect-rate", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"), valMaxRedirectRate)
        

        
        if self.blockerObj:
            valBegin = Value()
            (tag, ns, prefix) = ("blocker" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", "qtc-line")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.blockerObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-read-tag-values-blocker-failed').errorFunc(): logFunc('blockerObj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isMaxActiveConnectionsRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "max-active-connections") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-maxactiveconnections').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "maxActiveConnections", "max-active-connections", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-max-active-connections-bad-value').infoFunc(): logFunc('maxActiveConnections not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setMaxActiveConnections(tempVar)
            for logFunc in self._log('read-tag-values-max-active-connections').debug3Func(): logFunc('read maxActiveConnections. maxActiveConnections=%s, tempValue=%s', self.maxActiveConnections, tempValue.getType())
        
        if self.isEnabledRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "enabled") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-enabled').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "enabled", "enabled", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asBool()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-enabled-bad-value').infoFunc(): logFunc('enabled not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setEnabled(tempVar)
            for logFunc in self._log('read-tag-values-enabled').debug3Func(): logFunc('read enabled. enabled=%s, tempValue=%s', self.enabled, tempValue.getType())
        
        if self.isMaxRedirectRateRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "max-redirect-rate") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-maxredirectrate').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "maxRedirectRate", "max-redirect-rate", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-max-redirect-rate-bad-value').infoFunc(): logFunc('maxRedirectRate not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setMaxRedirectRate(tempVar)
            for logFunc in self._log('read-tag-values-max-redirect-rate').debug3Func(): logFunc('read maxRedirectRate. maxRedirectRate=%s, tempValue=%s', self.maxRedirectRate, tempValue.getType())
        

        
        if self.blockerObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "blocker") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log('reag-tag-values-unexpected-tag-begin').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                        "blocker", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", Value.kXmlBegin,
                                                                        tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
            
            res = self.blockerObj._readTagValues(tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('read-tag-values-blocker-failed').errorFunc(): logFunc('blockerObj._readTagValues() failed. tagValueList=%s', tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "blocker") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log('reag-tag-values-unexpected-tag-end').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                      "blocker", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-content-line", Value.kXmlEnd,
                                                                        tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
class BlinkyHousekeeperMaapi(HousekeeperMaapiBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-housekeeper")
        self.domain = None

        
        self.thresholdsObj = None
        
        self.logArchivingObj = None
        

        
        self.enabledRequested = False
        self.enabled = None
        self.enabledSet = False
        
        self.pollIntervalRequested = False
        self.pollInterval = None
        self.pollIntervalSet = False
        

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestEnabled(True)
        
        self.requestPollInterval(True)
        
        
        
        if not self.thresholdsObj:
            self.thresholdsObj = self.newThresholds()
            self.thresholdsObj.requestConfigAndOper()
        
        if not self.logArchivingObj:
            self.logArchivingObj = self.newLogArchiving()
            self.logArchivingObj.requestConfigAndOper()
        

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called, PARAMS')
        
        self.requestEnabled(True)
        
        self.requestPollInterval(True)
        
        
        
        if not self.thresholdsObj:
            self.thresholdsObj = self.newThresholds()
            self.thresholdsObj.requestConfig()
        
        if not self.logArchivingObj:
            self.logArchivingObj = self.newLogArchiving()
            self.logArchivingObj.requestConfig()
        

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called, PARAMS')
        
        self.requestEnabled(False)
        
        self.requestPollInterval(False)
        
        
        
        if not self.thresholdsObj:
            self.thresholdsObj = self.newThresholds()
            self.thresholdsObj.requestOper()
        
        if not self.logArchivingObj:
            self.logArchivingObj = self.newLogArchiving()
            self.logArchivingObj.requestOper()
        

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called, PARAMS')
        
        self.requestEnabled(False)
        
        self.requestPollInterval(False)
        
        
        
        if not self.thresholdsObj:
            self.thresholdsObj = self.newThresholds()
            self.thresholdsObj.clearAllRequested()
        
        if not self.logArchivingObj:
            self.logArchivingObj = self.newLogArchiving()
            self.logArchivingObj.clearAllRequested()
        

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        
        self.setEnabled(None)
        self.enabledSet = False
        
        self.setPollInterval(None)
        self.pollIntervalSet = False
        
        
        if self.thresholdsObj:
            self.thresholdsObj.clearAllSet()
        
        if self.logArchivingObj:
            self.logArchivingObj.clearAllSet()
        

    def write (self
              , trxContext=None
              ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(trxContext)

    def read (self
              
              , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(
                                  True,
                                  trxContext)

    def newThresholds (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-thresholds').debug3Func(): logFunc('called.')
        thresholds = BlinkyThresholdsMaapi(self._log)
        thresholds.init(self.domain)
        return thresholds

    def setThresholdsObj (self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-thresholds').debug3Func(): logFunc('called. obj=%s', obj)
        self.thresholdsObj = obj

    def getThresholdsObj (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-thresholds').debug3Func(): logFunc('called. self.thresholdsObj=%s', self.thresholdsObj)
        return self.thresholdsObj

    def hasThresholds (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-thresholds').debug3Func(): logFunc('called. self.thresholdsObj=%s', self.thresholdsObj)
        if self.thresholdsObj:
            return True
        return False

    def newLogArchiving (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-logarchiving').debug3Func(): logFunc('called.')
        logArchiving = BlinkyLogArchivingMaapi(self._log)
        logArchiving.init(self.domain)
        return logArchiving

    def setLogArchivingObj (self, obj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-logarchiving').debug3Func(): logFunc('called. obj=%s', obj)
        self.logArchivingObj = obj

    def getLogArchivingObj (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-logarchiving').debug3Func(): logFunc('called. self.logArchivingObj=%s', self.logArchivingObj)
        return self.logArchivingObj

    def hasLogArchiving (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-logarchiving').debug3Func(): logFunc('called. self.logArchivingObj=%s', self.logArchivingObj)
        if self.logArchivingObj:
            return True
        return False



    def requestEnabled (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-enabled').debug3Func(): logFunc('called. requested=%s', requested)
        self.enabledRequested = requested
        self.enabledSet = False

    def isEnabledRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-enabled-requested').debug3Func(): logFunc('called. requested=%s', self.enabledRequested)
        return self.enabledRequested

    def getEnabled (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-enabled').debug3Func(): logFunc('called. self.enabledSet=%s, self.enabled=%s', self.enabledSet, self.enabled)
        if self.enabledSet:
            return self.enabled
        return None

    def hasEnabled (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-enabled').debug3Func(): logFunc('called. self.enabledSet=%s, self.enabled=%s', self.enabledSet, self.enabled)
        if self.enabledSet:
            return True
        return False

    def setEnabled (self, enabled):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-enabled').debug3Func(): logFunc('called. enabled=%s, old=%s', enabled, self.enabled)
        self.enabledSet = True
        self.enabled = enabled

    def requestPollInterval (self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-pollinterval').debug3Func(): logFunc('called. requested=%s', requested)
        self.pollIntervalRequested = requested
        self.pollIntervalSet = False

    def isPollIntervalRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-pollinterval-requested').debug3Func(): logFunc('called. requested=%s', self.pollIntervalRequested)
        return self.pollIntervalRequested

    def getPollInterval (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-pollinterval').debug3Func(): logFunc('called. self.pollIntervalSet=%s, self.pollInterval=%s', self.pollIntervalSet, self.pollInterval)
        if self.pollIntervalSet:
            return self.pollInterval
        return None

    def hasPollInterval (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-pollinterval').debug3Func(): logFunc('called. self.pollIntervalSet=%s, self.pollInterval=%s', self.pollIntervalSet, self.pollInterval)
        if self.pollIntervalSet:
            return True
        return False

    def setPollInterval (self, pollInterval):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-pollinterval').debug3Func(): logFunc('called. pollInterval=%s, old=%s', pollInterval, self.pollInterval)
        self.pollIntervalSet = True
        self.pollInterval = pollInterval


    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')

        
        if self.thresholdsObj:
            self.thresholdsObj._clearAllReadData()
        
        if self.logArchivingObj:
            self.logArchivingObj._clearAllReadData()
        

        
        self.enabled = 0
        self.enabledSet = False
        
        self.pollInterval = 0
        self.pollIntervalSet = False
        

    def _getSelfKeyPath (self
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("housekeeper", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", "qt-log"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("system-defaults", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", "qt-log"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("log", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", "qt-log"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite (self, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-fill-read-tag-value-failed').errorFunc(): logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        
        if self.thresholdsObj:
            res = self.thresholdsObj._collectItemsToDelete(
                                                                          itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('collect-items-to-delete-thresholds-failed').errorFunc(): logFunc('thresholdsObj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError
        
        if self.logArchivingObj:
            res = self.logArchivingObj._collectItemsToDelete(
                                                                          itemsToDelete)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('collect-items-to-delete-log-archiving-failed').errorFunc(): logFunc('logArchivingObj._collectItemsToDelete() failed. PARAMS')
                return ReturnCodes.kGeneralError
        

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.hasEnabled():
            valEnabled = Value()
            if self.enabled is not None:
                valEnabled.setBool(self.enabled)
            else:
                valEnabled.setEmpty()
            tagValueList.push(("enabled", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"), valEnabled)
        
        if self.hasPollInterval():
            valPollInterval = Value()
            if self.pollInterval is not None:
                valPollInterval.setInt64(self.pollInterval)
            else:
                valPollInterval.setEmpty()
            tagValueList.push(("poll-interval", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"), valPollInterval)
        

        
        if self.thresholdsObj:
            valBegin = Value()
            (tag, ns, prefix) = ("thresholds" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", "qt-log")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.thresholdsObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-write-tag-values-thresholds-failed').errorFunc(): logFunc('thresholdsObj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        
        if self.logArchivingObj:
            valBegin = Value()
            (tag, ns, prefix) = ("log-archiving" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", "qt-log")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.logArchivingObj._fillWriteTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-write-tag-values-log-archiving-failed').errorFunc(): logFunc('logArchivingObj._fillWriteTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        
        if self.isEnabledRequested():
            valEnabled = Value()
            valEnabled.setEmpty()
            tagValueList.push(("enabled", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"), valEnabled)
        
        if self.isPollIntervalRequested():
            valPollInterval = Value()
            valPollInterval.setEmpty()
            tagValueList.push(("poll-interval", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"), valPollInterval)
        

        
        if self.thresholdsObj:
            valBegin = Value()
            (tag, ns, prefix) = ("thresholds" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", "qt-log")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.thresholdsObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-read-tag-values-thresholds-failed').errorFunc(): logFunc('thresholdsObj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        
        if self.logArchivingObj:
            valBegin = Value()
            (tag, ns, prefix) = ("log-archiving" , "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", "qt-log")
            valBegin.setXmlBegin((tag, ns, prefix))
            tagValueList.push((tag, ns), valBegin)

            tagValueListLen = tagValueList.getLen()

            res = self.logArchivingObj._fillReadTagValues(tagValueList)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('fill-read-tag-values-log-archiving-failed').errorFunc(): logFunc('logArchivingObj._fillReadTagValues() failed. PARAMS')
                return ReturnCodes.kGeneralError

            if tagValueList.getLen() == tagValueListLen:
                # descendant didn't add anything, no need to read it.
                tagValueList.pop()
            else:
                valEnd = Value()
                valEnd.setXmlEnd((tag, ns, prefix))
                tagValueList.push((tag, ns), valEnd)
        

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func(): logFunc('reading leaves. tagValueList=%s', tagValueList)
        
        if self.isEnabledRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "enabled") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-enabled').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "enabled", "enabled", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asBool()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-enabled-bad-value').infoFunc(): logFunc('enabled not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setEnabled(tempVar)
            for logFunc in self._log('read-tag-values-enabled').debug3Func(): logFunc('read enabled. enabled=%s, tempValue=%s', self.enabled, tempValue.getType())
        
        if self.isPollIntervalRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "poll-interval") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log"):
                for logFunc in self._log('reag-tag-values-unexpected-tag-leaf-pollinterval').errorFunc(): logFunc('got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                                                                                                 "pollInterval", "poll-interval", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asInt64()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log('read-tag-values-poll-interval-bad-value').infoFunc(): logFunc('pollInterval not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setPollInterval(tempVar)
            for logFunc in self._log('read-tag-values-poll-interval').debug3Func(): logFunc('read pollInterval. pollInterval=%s, tempValue=%s', self.pollInterval, tempValue.getType())
        

        
        if self.thresholdsObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "thresholds") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log('reag-tag-values-unexpected-tag-begin').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                        "thresholds", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", Value.kXmlBegin,
                                                                        tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
            
            res = self.thresholdsObj._readTagValues(tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('read-tag-values-thresholds-failed').errorFunc(): logFunc('thresholdsObj._readTagValues() failed. tagValueList=%s', tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "thresholds") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log('reag-tag-values-unexpected-tag-end').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                      "thresholds", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", Value.kXmlEnd,
                                                                        tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
        
        if self.logArchivingObj:
            ((tag, ns), valBegin) = tagValueList.popFront()
            if (tag != "log-archiving") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log") or \
                (valBegin.getType() != Value.kXmlBegin):
                for logFunc in self._log('reag-tag-values-unexpected-tag-begin').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                        "log-archiving", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", Value.kXmlBegin,
                                                                        tag, ns, valBegin.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
            
            res = self.logArchivingObj._readTagValues(tagValueList, readAllOrFail)
            if res != ReturnCodes.kOk:
                for logFunc in self._log('read-tag-values-log-archiving-failed').errorFunc(): logFunc('logArchivingObj._readTagValues() failed. tagValueList=%s', tagValueList)
                if readAllOrFail:
                    self._clearAllReadData()
                return ReturnCodes.kGeneralError

            ((tag, ns), valEnd) = tagValueList.popFront()
            if (tag != "log-archiving") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log") or \
                (valEnd.getType() != Value.kXmlEnd):
                for logFunc in self._log('reag-tag-values-unexpected-tag-end').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                      "log-archiving", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-log", Value.kXmlEnd,
                                                                        tag, ns, valEnd.getType())
                self._clearAllReadData()
                return ReturnCodes.kGeneralError
        

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail, tagValueList)
        return ReturnCodes.kOk
class BlinkyHostMaapiList(HostMaapiListBase):
    def __init__ (self, logger):
        self.myInitGuard = InitGuard()
        self._log=logger.createLogger("sys-blinky-oper-example","blinky-maapi-host")
        self.domain = None

        self.hosts = {}
        self.hostKeys = []

    def init (self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func(): logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def newHost (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('new-host').debug3Func(): logFunc('called.')
        host = BlinkyHostMaapi(self._log)
        host.init(self.domain)
        return host

    def setHostObj (self, key, hostObj):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-host-obj').debug3Func(): logFunc('called. key=%s, hostObj=%s', key, hostObj)
        if key not in self.hosts:
            self.hostKeys.append(key)
        self.hosts[str(key)] = hostObj

    def getHostObj (self, key):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-host-obj').debug3Func(): logFunc('called. key=%s', key)
        if str(key) in self.hosts.keys():
            for logFunc in self._log('get-host-obj-done').debug3Func(): logFunc('Done. found key=%s, obj=%s', key, self.hosts[str(key)])
            return self.hosts[str(key)]
        for logFunc in self._log('get-host-obj-missing').errorFunc(): logFunc('host %s not in hosts. existing items: %s', key, self.hosts.keys())
        return None

    def deleteHost (self, key):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('delete-host').debug3Func(): logFunc('called. key=%s', key)
        if str(key) not in self.hostKeys:
            for logFunc in self._log('delete-host-not-found').warningFunc(): logFunc('key=%s is missing from the hostKeys list', key)
            if str(key) in self.hosts.keys():
                # internal problem - list & dictionary are not synced
                for logFunc in self._log('delete-host-not-found-but-in-dict').errorFunc(): logFunc('hosts dictionary & hostKeys list are out-of-sync. key %s exists in dict but not in list', key)
            return ReturnCodes.kGeneralError
        if str(key) not in self.hosts.keys():
            # internal problem - list & dictionary are not synced
            for logFunc in self._log('delete-host-not-found-but-in-list').errorFunc(): logFunc('hosts dictionary & hostKeys list are out-of-sync. key %s exists in list but not in dict', key)
            return ReturnCodes.kGeneralError

        self.hostKeys.remove(str(key))
        del self.hosts[str(key)]

    def hasHostObj (self, key):
        self.myInitGuard.isInitOrCrash()
        has = False
        if str(key) in self.hosts.keys():
            if self.hosts[str(key)]:
                has = True
        for logFunc in self._log('has-host-done').debug3Func(): logFunc('done. key=%s exists=%s', key, has)
        return has

    def getListKeys (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-list-keys').debug3Func(): logFunc('called. keys=%s', [str(x) for x in self.hostKeys])
        return self.hostKeys

    def requestConfigAndOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func(): logFunc('called.')
        for host in self.hosts.values():
            host.requestConfigAndOper()

    def requestConfig (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func(): logFunc('called.')
        for host in self.hosts.values():
            host.requestConfig()

    def requestOper (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func(): logFunc('called.')
        for host in self.hosts.values():
            host.requestOper()

    def clearAllRequested (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func(): logFunc('called.')
        for host in self.hosts.values():
            host.clearAllRequested()

    def _clearAllReadData (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func(): logFunc('called')
        for host in self.hosts.values():
            if host:
                host._clearAllReadData()

    def clearAllSet (self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func(): logFunc('called, PARAMS')
        for key in self.hosts.keys():
            if self.hosts[key]:
                self.hosts[key].clearAllSet()
            else:
                self.hostKeys.remove(str(key))
                del self.hosts[str(key)]

    def _getSelfKeyPath (self, ipv4
                         
                         , junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func(): logFunc('called. PARAMS. junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()

        
        
        
        
        ancestorVal = Value()
        ancestorVal.setString(ipv4);
        keyPath.addKeyPathPrefix(ancestorVal)
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("ipv4", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system", "qt-sys"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("hosts", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system", "qt-sys"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("static", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system", "qt-sys"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("name-resolution", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system", "qt-sys"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("system", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system", "qt-sys"))
        keyPath.addKeyPathPrefix(xmlVal)
        
        
        
        xmlVal = Value()
        xmlVal.setXmlTag(("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)
        

        for logFunc in self._log('get-self-key-path-done').debug3Func(): logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def readListKeys (self
                      , ipv4
                      
                      , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-list-keys').debug3Func(): logFunc('called')

        # clear the old map
        self.hosts = {}
        self.hostKeys = []

        keyPath = self._getSelfKeyPath(ipv4, 
                                       
                                       None)

        xmlVal = Value()
        xmlVal.setXmlTag(("host", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system", "qt-sys"))
        keyPath.addKeyPathPostfix(xmlVal)

        keys = []

        res = self.domain.readMaapiKeys(keyPath, keys, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-list-keys-domain-failed').errorFunc(): logFunc('domain.readMaapiKeys() failed')
            return ReturnCodes.kGeneralError

        for key in keys:
            self.hostKeys.append(key.getCannonicalStr())
            self.hosts[key.getCannonicalStr()] = None

        return ReturnCodes.kOk

    def write (self
               , ipv4
               , trxContext=None
               ):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func(): logFunc('called, PARAMS')
        return self._internalWrite(ipv4, 
                                   trxContext)

    def read (self
              , ipv4
              
              , trxContext=None):
        for logFunc in self._log('read').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(ipv4, 
                                  False,
                                  trxContext)

    def readAllOrFail (self
                       , ipv4
                       
                       , trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func(): logFunc('called, PARAMS')
        return self._internalRead(ipv4, 
                                  True,
                                  trxContext)

    def _internalWrite (self, 
                        ipv4, 
                        
                        trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func(): logFunc('called.')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('internal-write-fill-write-tag-value-failed').errorFunc(): logFunc('_fillWriteTagValues() failed')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(ipv4, 
                                         
                                         itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-collect-items-to-delete-failed').errorFunc(): logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(ipv4, 
                                       
                                       None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc(): logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func(): logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead (self, 
                       ipv4, 
                       
                       readAllOrFail,
                       trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func(): logFunc('called. readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('internal-read-fill-read-tag-values-failed').errorFunc(): logFunc('_fillReadTagValues() failed')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(ipv4, 
                                       
                                       None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('internal-read-domain-failed').errorFunc(): logFunc('domain.readMaapi() failed.')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('internal-read-read-tag-values-failed').errorFunc(): logFunc('_readTagValues() failed.')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func(): logFunc('done. readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete (self,
                               ipv4, 
                               
                               itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func(): logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        for key in self.hosts.keys():
            if self.hosts[key]:
                res = self.hosts[key]._collectItemsToDelete(ipv4, 
                                                                     
                                                                     key,
                                                                     itemsToDelete)
                if res != ReturnCodes.kOk:
                    for logFunc in self._log('collect-items-to-delete-host-failed').errorFunc(): logFunc('hostObj._collectItemsToDelete() failed. key=%s. PARAMS', key)
                    return ReturnCodes.kGeneralError

            else:
                keyPath = self._getSelfKeyPath(ipv4, 
                                               
                                               None)
                xmlVal = Value()
                xmlVal.setXmlTag(("host", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system", "qt-sys"))
                keyPath.addKeyPathPostfix(xmlVal)
                valKey = Value()
                valKey.setString(key)
                keyPath.addKeyPathPostfix(valKey)

                itemsToDelete.append(keyPath)

        for logFunc in self._log('collect-items-to-delete-done').debug3Func(): logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        for key in self.hosts.keys():
            if self.hosts[key]:
                valBegin = Value()
                (tag, ns, prefix) = ("host", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system", "qt-sys")
                valBegin.setXmlBegin((tag, ns, prefix))
                tagValueList.push((tag, ns), valBegin)

                valKey = Value()
                valKey.setString(key)
                tagValueList.push(("hostname", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system"), valKey)

                tagValueListLen = tagValueList.getLen()

                res = self.hosts[key]._fillWriteTagValues(tagValueList)
                if res != ReturnCodes.kOk:
                    for logFunc in self._log('fill-write-tag-values-host-failed').errorFunc(): logFunc('host._fillWriteTagValues() failed. key=%s', key)
                    return ReturnCodes.kGeneralError

                if tagValueList.getLen() == tagValueListLen:
                    # descendant didn't add anything, no need to read it.
                    tagValueList.pop()
                    tagValueList.pop()
                else:
                    valEnd = Value()
                    valEnd.setXmlEnd((tag, ns, prefix))
                    tagValueList.push((tag, ns), valEnd)

        return ReturnCodes.kOk

    def _fillReadTagValues (self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func(): logFunc('called: tagValueList=%s', tagValueList)

        for key in self.hosts.keys():
            if self.hosts[key]:
                valBegin = Value()
                (tag, ns, prefix) = ("host", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system", "qt-sys")
                valBegin.setXmlBegin((tag, ns, prefix))
                tagValueList.push((tag, ns), valBegin)

                valKey = Value()
                valKey.setString(key)
                tagValueList.push(("hostname", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system"), valKey)

                tagValueListLen = tagValueList.getLen()

                res = self.hosts[key]._fillReadTagValues(tagValueList)
                if res != ReturnCodes.kOk:
                    for logFunc in self._log('fill-read-tag-values-host-failed').errorFunc(): logFunc('host._fillReadTagValues() failed. key=%s', key)
                    return ReturnCodes.kGeneralError

                if tagValueList.getLen() == tagValueListLen:
                    # descendant didn't add anything, no need to read it.
                    tagValueList.pop()
                    tagValueList.pop()
                else:
                    valEnd = Value()
                    valEnd.setXmlEnd((tag, ns, prefix))
                    tagValueList.push((tag, ns), valEnd)

        return ReturnCodes.kOk

    def _readTagValues (self, tagValueList, readAllOrFail):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func(): logFunc('called. tagValueList=%s, readAllOrFail=%s', tagValueList, readAllOrFail)

        res = ReturnCodes.kOk

        for key in self.hosts.keys():
            if self.hosts[key]:
                ((tag, ns), valBegin) = tagValueList.popFront()
                if (tag != "host") or \
                    (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system") or \
                    (valBegin.getType() != Value.kXmlBegin):
                    for logFunc in self._log('reag-tag-values-unexpected-tag-begin').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                            "host", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system", Value.kXmlBegin,
                                                                            tag, ns, valBegin.getType())
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError

                ((tag, ns), valKey) = tagValueList.popFront()
                if (tag != "hostname") or \
                    (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system"):
                    for logFunc in self._log('reag-tag-values-unexpected-tag-key').errorFunc(): logFunc('got unexpected tag-value for key. expected: (%s, %s), got: (%s, %s)',
                                                                          "hostname", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system", tag, ns)
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError

                key = valKey.asString()
                if res != ReturnCodes.kOk:
                    if readAllOrFail:
                        self._clearAllReadData()
                    return ReturnCodes.kGeneralError

                res = self.hosts[key]._readTagValues(tagValueList, readAllOrFail)
                if res != ReturnCodes.kOk:
                    for logFunc in self._log('read-tag-values-host-failed').errorFunc(): logFunc('host._readTagValues() failed. key=%s', key)
                    if readAllOrFail:
                        self._clearAllReadData()
                    return ReturnCodes.kGeneralError

                ((tag, ns), valEnd) = tagValueList.popFront()
                if (tag != "host") or \
                    (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system") or \
                    (valEnd.getType() != Value.kXmlEnd):
                    for logFunc in self._log('reag-tag-values-unexpected-tag-end').errorFunc(): logFunc('got unexpected tag-value. expected: (%s, %s, type=%s), got: (%s, %s, type=%s)',
                                                                          "host", "http://qwilt.com/ns/yang/device/tech/qwilt-tech-system", Value.kXmlEnd,
                                                                            tag, ns, valEnd.getType())
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError

        for logFunc in self._log('read-tag-values-done').debug3Func(): logFunc('done. tagValueList=%s, readAllOrFail=%s', tagValueList, readAllOrFail)
        return ReturnCodes.kOk
Example #54
0
class BlinkyCommandMaapi(CommandMaapiBase):
    def __init__(self, logger):
        self.myInitGuard = InitGuard()
        self._log = logger.createLogger("sys-blinky-oper-example",
                                        "blinky-maapi-command")
        self.domain = None

        self.executableRequested = False
        self.executable = None
        self.executableSet = False

        self.shellRequested = False
        self.shell = None
        self.shellSet = False

        self.extraArgsRequested = False
        self.extraArgs = None
        self.extraArgsSet = False

        self.argsRequested = False
        self.args = None
        self.argsSet = False

        self.valgrindRequested = False
        self.valgrind = None
        self.valgrindSet = False

    def init(self, domain):
        self.myInitGuard.crashIfInitDone()
        for logFunc in self._log('init').debug3Func():
            logFunc('called. domain=%s', domain)
        self.domain = domain
        self.myInitGuard.initDone()

    def requestConfigAndOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config-and-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestExecutable(True)

        self.requestShell(True)

        self.requestExtraArgs(True)

        self.requestArgs(True)

        self.requestValgrind(True)

    def requestConfig(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-config').debug3Func():
            logFunc('called, PARAMS')

        self.requestExecutable(True)

        self.requestShell(True)

        self.requestExtraArgs(True)

        self.requestArgs(True)

        self.requestValgrind(True)

    def requestOper(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-oper').debug3Func():
            logFunc('called, PARAMS')

        self.requestExecutable(False)

        self.requestShell(False)

        self.requestExtraArgs(False)

        self.requestArgs(False)

        self.requestValgrind(False)

    def clearAllRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-requested').debug3Func():
            logFunc('called, PARAMS')

        self.requestExecutable(False)

        self.requestShell(False)

        self.requestExtraArgs(False)

        self.requestArgs(False)

        self.requestValgrind(False)

    def clearAllSet(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-set').debug3Func():
            logFunc('called, PARAMS')

        self.setExecutable(None)
        self.executableSet = False

        self.setShell(None)
        self.shellSet = False

        self.setExtraArgs(None)
        self.extraArgsSet = False

        self.setArgs(None)
        self.argsSet = False

        self.setValgrind(None)
        self.valgrindSet = False

    def write(self, process, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('write').debug3Func():
            logFunc('called, PARAMS')
        return self._internalWrite(process, trxContext)

    def read(self, process, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(process, False, trxContext)

    def readAllOrFail(self, process, trxContext=None):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-all-or-fail').debug3Func():
            logFunc('called, PARAMS')
        return self._internalRead(process, True, trxContext)

    def requestExecutable(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-executable').debug3Func():
            logFunc('called. requested=%s', requested)
        self.executableRequested = requested
        self.executableSet = False

    def isExecutableRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-executable-requested').debug3Func():
            logFunc('called. requested=%s', self.executableRequested)
        return self.executableRequested

    def getExecutable(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-executable').debug3Func():
            logFunc('called. self.executableSet=%s, self.executable=%s',
                    self.executableSet, self.executable)
        if self.executableSet:
            return self.executable
        return None

    def hasExecutable(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-executable').debug3Func():
            logFunc('called. self.executableSet=%s, self.executable=%s',
                    self.executableSet, self.executable)
        if self.executableSet:
            return True
        return False

    def setExecutable(self, executable):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-executable').debug3Func():
            logFunc('called. executable=%s, old=%s', executable,
                    self.executable)
        self.executableSet = True
        self.executable = executable

    def requestShell(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-shell').debug3Func():
            logFunc('called. requested=%s', requested)
        self.shellRequested = requested
        self.shellSet = False

    def isShellRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-shell-requested').debug3Func():
            logFunc('called. requested=%s', self.shellRequested)
        return self.shellRequested

    def getShell(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-shell').debug3Func():
            logFunc('called. self.shellSet=%s, self.shell=%s', self.shellSet,
                    self.shell)
        if self.shellSet:
            return self.shell
        return None

    def hasShell(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-shell').debug3Func():
            logFunc('called. self.shellSet=%s, self.shell=%s', self.shellSet,
                    self.shell)
        if self.shellSet:
            return True
        return False

    def setShell(self, shell):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-shell').debug3Func():
            logFunc('called. shell=%s, old=%s', shell, self.shell)
        self.shellSet = True
        self.shell = shell

    def requestExtraArgs(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-extraargs').debug3Func():
            logFunc('called. requested=%s', requested)
        self.extraArgsRequested = requested
        self.extraArgsSet = False

    def isExtraArgsRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-extraargs-requested').debug3Func():
            logFunc('called. requested=%s', self.extraArgsRequested)
        return self.extraArgsRequested

    def getExtraArgs(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-extraargs').debug3Func():
            logFunc('called. self.extraArgsSet=%s, self.extraArgs=%s',
                    self.extraArgsSet, self.extraArgs)
        if self.extraArgsSet:
            return self.extraArgs
        return None

    def hasExtraArgs(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-extraargs').debug3Func():
            logFunc('called. self.extraArgsSet=%s, self.extraArgs=%s',
                    self.extraArgsSet, self.extraArgs)
        if self.extraArgsSet:
            return True
        return False

    def setExtraArgs(self, extraArgs):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-extraargs').debug3Func():
            logFunc('called. extraArgs=%s, old=%s', extraArgs, self.extraArgs)
        self.extraArgsSet = True
        self.extraArgs = extraArgs

    def requestArgs(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-args').debug3Func():
            logFunc('called. requested=%s', requested)
        self.argsRequested = requested
        self.argsSet = False

    def isArgsRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-args-requested').debug3Func():
            logFunc('called. requested=%s', self.argsRequested)
        return self.argsRequested

    def getArgs(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-args').debug3Func():
            logFunc('called. self.argsSet=%s, self.args=%s', self.argsSet,
                    self.args)
        if self.argsSet:
            return self.args
        return None

    def hasArgs(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-args').debug3Func():
            logFunc('called. self.argsSet=%s, self.args=%s', self.argsSet,
                    self.args)
        if self.argsSet:
            return True
        return False

    def setArgs(self, args):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-args').debug3Func():
            logFunc('called. args=%s, old=%s', args, self.args)
        self.argsSet = True
        self.args = args

    def requestValgrind(self, requested):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('request-valgrind').debug3Func():
            logFunc('called. requested=%s', requested)
        self.valgrindRequested = requested
        self.valgrindSet = False

    def isValgrindRequested(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('is-valgrind-requested').debug3Func():
            logFunc('called. requested=%s', self.valgrindRequested)
        return self.valgrindRequested

    def getValgrind(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('get-valgrind').debug3Func():
            logFunc('called. self.valgrindSet=%s, self.valgrind=%s',
                    self.valgrindSet, self.valgrind)
        if self.valgrindSet:
            return self.valgrind
        return None

    def hasValgrind(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('has-valgrind').debug3Func():
            logFunc('called. self.valgrindSet=%s, self.valgrind=%s',
                    self.valgrindSet, self.valgrind)
        if self.valgrindSet:
            return True
        return False

    def setValgrind(self, valgrind):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('set-valgrind').debug3Func():
            logFunc('called. valgrind=%s, old=%s', valgrind, self.valgrind)
        self.valgrindSet = True
        self.valgrind = valgrind

    def _clearAllReadData(self):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('clear-all-read-data').debug3Func():
            logFunc('called')

        self.executable = 0
        self.executableSet = False

        self.shell = 0
        self.shellSet = False

        self.extraArgs = 0
        self.extraArgsSet = False

        self.args = 0
        self.argsSet = False

        self.valgrind = 0
        self.valgrindSet = False

    def _getSelfKeyPath(self, process, junkForTemplate):
        for logFunc in self._log('get-self-key-path').debug3Func():
            logFunc('called. PARAMS, junkForTemplate=%s', junkForTemplate)
        keyPath = KeyPath()

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("command",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process",
             "qt-proc"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("execution",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process",
             "qt-proc"))
        keyPath.addKeyPathPrefix(xmlVal)

        ancestorVal = Value()
        ancestorVal.setString(process)
        keyPath.addKeyPathPrefix(ancestorVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("process",
             "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process",
             "qt-proc"))
        keyPath.addKeyPathPrefix(xmlVal)

        xmlVal = Value()
        xmlVal.setXmlTag(
            ("tech", "http://qwilt.com/ns/yang/device/tech/qwilt-tech", "qt"))
        keyPath.addKeyPathPrefix(xmlVal)

        for logFunc in self._log('get-self-key-path-done').debug3Func():
            logFunc('done. keyPath=%s. PARAMS', keyPath)
        return keyPath

    def _internalWrite(self, process, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-write').debug3Func():
            logFunc('called. PARAMS')

        tagValueList = TagValues()

        res = self._fillWriteTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-fill-write-tag-value-failed').errorFunc():
                logFunc('_fillWriteTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        itemsToDelete = []
        res = self._collectItemsToDelete(process, itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'write-collect-items-to-delete-failed').errorFunc():
                logFunc('_collectItemsToDelete() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(process, None)

        res = self.domain.writeMaapi(tagValueList, keyPath, trxContext,
                                     itemsToDelete)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('write-domain-failed').errorFunc():
                logFunc('domain.writeMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-write-done').debug3Func():
            logFunc('done. PARAMS')
        return ReturnCodes.kOk

    def _internalRead(self, process, readAllOrFail, trxContext):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('internal-read').debug3Func():
            logFunc('called. PARAMS, readAllOrFail=%s', readAllOrFail)

        if readAllOrFail:
            self._clearAllReadData()

        tagValueList = TagValues()

        res = self._fillReadTagValues(tagValueList)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-fill-read-tag-value-failed').errorFunc():
                logFunc('_fillReadTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        keyPath = self._getSelfKeyPath(process, None)

        res = self.domain.readMaapi(tagValueList, keyPath, trxContext)
        if res != ReturnCodes.kOk:
            for logFunc in self._log('read-domain-failed').errorFunc():
                logFunc('domain.readMaapi() failed. PARAMS')
            return ReturnCodes.kGeneralError

        res = self._readTagValues(tagValueList, readAllOrFail)
        if res != ReturnCodes.kOk:
            for logFunc in self._log(
                    'read-read-tag-values-failed').errorFunc():
                logFunc('_readTagValues() failed. PARAMS')
            return ReturnCodes.kGeneralError

        for logFunc in self._log('internal-read-done').debug3Func():
            logFunc('done. PARAMS, readAllOrFail=%s', readAllOrFail)
        return ReturnCodes.kOk

    def _collectItemsToDelete(self, process, itemsToDelete):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('collect-items-to-delete').debug3Func():
            logFunc('called: itemsToDelete=%s. PARAMS', itemsToDelete)

        for logFunc in self._log('collect-items-to-delete-done').debug3Func():
            logFunc('done: itemsToDelete=%s. PARAMS', itemsToDelete)
        return ReturnCodes.kOk

    def _fillWriteTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-write-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.hasExecutable():
            valExecutable = Value()
            if self.executable is not None:
                valExecutable.setString(self.executable)
            else:
                valExecutable.setEmpty()
            tagValueList.push(
                ("executable",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process"),
                valExecutable)

        if self.hasShell():
            valShell = Value()
            if self.shell is not None:
                valShell.setBool(self.shell)
            else:
                valShell.setEmpty()
            tagValueList.push(
                ("shell",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process"),
                valShell)

        if self.hasExtraArgs():
            valExtraArgs = Value()
            if self.extraArgs is not None:
                valExtraArgs.setString(self.extraArgs)
            else:
                valExtraArgs.setEmpty()
            tagValueList.push(
                ("extra-args",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process"),
                valExtraArgs)

        if self.hasArgs():
            valArgs = Value()
            if self.args is not None:
                valArgs.setString(self.args)
            else:
                valArgs.setEmpty()
            tagValueList.push(
                ("args",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process"),
                valArgs)

        if self.hasValgrind():
            valValgrind = Value()
            if self.valgrind is not None:
                valValgrind.setBool(self.valgrind)
            else:
                valValgrind.setEmpty()
            tagValueList.push(
                ("valgrind",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process"),
                valValgrind)

        return ReturnCodes.kOk

    def _fillReadTagValues(self, tagValueList):
        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('fill-read-tag-values').debug3Func():
            logFunc('called: tagValueList=%s', tagValueList)

        if self.isExecutableRequested():
            valExecutable = Value()
            valExecutable.setEmpty()
            tagValueList.push(
                ("executable",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process"),
                valExecutable)

        if self.isShellRequested():
            valShell = Value()
            valShell.setEmpty()
            tagValueList.push(
                ("shell",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process"),
                valShell)

        if self.isExtraArgsRequested():
            valExtraArgs = Value()
            valExtraArgs.setEmpty()
            tagValueList.push(
                ("extra-args",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process"),
                valExtraArgs)

        if self.isArgsRequested():
            valArgs = Value()
            valArgs.setEmpty()
            tagValueList.push(
                ("args",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process"),
                valArgs)

        if self.isValgrindRequested():
            valValgrind = Value()
            valValgrind.setEmpty()
            tagValueList.push(
                ("valgrind",
                 "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process"),
                valValgrind)

        return ReturnCodes.kOk

    def _readTagValues(self, tagValueList, readAllOrFail):
        __pychecker__ = 'maxlines=300'
        __pychecker__ = 'maxreturns=30'

        self.myInitGuard.isInitOrCrash()
        for logFunc in self._log('read-tag-values').debug3Func():
            logFunc('called. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)

        res = ReturnCodes.kOk

        for logFunc in self._log('read-tag-values-leaves').debug3Func():
            logFunc('reading leaves. tagValueList=%s', tagValueList)

        if self.isExecutableRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "executable") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-executable'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "executable", "executable",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-executable-bad-value').infoFunc():
                    logFunc('executable not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setExecutable(tempVar)
            for logFunc in self._log(
                    'read-tag-values-executable').debug3Func():
                logFunc('read executable. executable=%s, tempValue=%s',
                        self.executable, tempValue.getType())

        if self.isShellRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "shell") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-shell').errorFunc(
                        ):
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "shell", "shell",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asBool()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-shell-bad-value').infoFunc():
                    logFunc('shell not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setShell(tempVar)
            for logFunc in self._log('read-tag-values-shell').debug3Func():
                logFunc('read shell. shell=%s, tempValue=%s', self.shell,
                        tempValue.getType())

        if self.isExtraArgsRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "extra-args") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-extraargs'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "extraArgs", "extra-args",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-extra-args-bad-value').infoFunc():
                    logFunc('extraArgs not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setExtraArgs(tempVar)
            for logFunc in self._log(
                    'read-tag-values-extra-args').debug3Func():
                logFunc('read extraArgs. extraArgs=%s, tempValue=%s',
                        self.extraArgs, tempValue.getType())

        if self.isArgsRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "args") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-args').errorFunc(
                        ):
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "args", "args",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asString()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-args-bad-value').infoFunc():
                    logFunc('args not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setArgs(tempVar)
            for logFunc in self._log('read-tag-values-args').debug3Func():
                logFunc('read args. args=%s, tempValue=%s', self.args,
                        tempValue.getType())

        if self.isValgrindRequested():
            ((tag, ns), tempValue) = tagValueList.popFront()
            if (tag != "valgrind") or \
                (ns != "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process"):
                for logFunc in self._log(
                        'reag-tag-values-unexpected-tag-leaf-valgrind'
                ).errorFunc():
                    logFunc(
                        'got unexpected tag-value for leaf: %s. expected: (%s, %s), got: (%s, %s)',
                        "valgrind", "valgrind",
                        "http://qwilt.com/ns/yang/device/tech/qwilt-tech-process",
                        tag, ns)
                self._clearAllReadData()
                return ReturnCodes.kGeneralError

            tempVar = None
            tempVar = tempValue.asBool()
            if res != ReturnCodes.kOk or tempVar is None:
                for logFunc in self._log(
                        'read-tag-values-valgrind-bad-value').infoFunc():
                    logFunc('valgrind not read')
                if readAllOrFail:
                    self._clearAllReadData()
                    return ReturnCodes.kGeneralError
            if tempVar is not None:
                self.setValgrind(tempVar)
            for logFunc in self._log('read-tag-values-valgrind').debug3Func():
                logFunc('read valgrind. valgrind=%s, tempValue=%s',
                        self.valgrind, tempValue.getType())

        for logFunc in self._log('read-tag-values-done').debug3Func():
            logFunc('done. readAllOrFail=%s, tagValueList=%s', readAllOrFail,
                    tagValueList)
        return ReturnCodes.kOk