Ejemplo n.º 1
0
    def deepConvertConfdHKeyPathToPyKeyPath (confdHKeyPathPtr, pyKeyPath):
        """
        This function performs a deep convertion of a confd_hkeypath object to a python KeyPath object.
        It reallocates all data memory, making the python KeyPath object its owner.
        pyKeyPath must be pre-constructed
        """
        for logFunc in pyconfdlib._log("deep-convert-confd-hkeypath-to-pykeypath").debug4Func(): logFunc("deepConvertConfdHKeyPathToPyKeyPath called. confdHKeyPathPtr=%s, pyKeyPath=%s", ConfdHKeyPathLow.ConfdHKeyPathToStr(confdHKeyPathPtr), pyKeyPath)
        if not pyKeyPath or not confdHKeyPathPtr:
            for logFunc in pyconfdlib._log("deep-convert-confd-value-to-pyvalue-invalid-args").errorFunc(): logFunc("deepConvertConfdValueToPyValue invalid args: confdHKeyPathPtr=%s, pyKeyPath=%s", ConfdHKeyPathLow.ConfdHKeyPathToStr(confdHKeyPathPtr), pyKeyPath)
            return ReturnCodes.kGeneralError
        confdKeyPathLen = pyconfdlib.dll.py_getHkeypathLen(confdHKeyPathPtr)
        for logFunc in pyconfdlib._log("deep-convert-confd-hkeypath-to-pykeypath-len").debug4Func(): logFunc("deepConvertConfdHKeyPathToPyKeyPath: confdKetPathLen=%d, confdHKeyPathPtr=%s, pyKeyPath=%s", confdKeyPathLen, ConfdHKeyPathLow.ConfdHKeyPathToStr(confdHKeyPathPtr), pyKeyPath)
        for i in range(confdKeyPathLen):
            level = []
            for j in range(pyconfdlib.MAXKEYLEN):
                confdValPtr = pyconfdlib.dll.py_getHkeypathValue(confdHKeyPathPtr, confdKeyPathLen-1-i, j, False)
                pyValue = Value()
                rc = ConfdValueLow.deepConvertConfdValueToPyValue(confdValPtr, pyValue)
                if rc != ReturnCodes.kOk:
                    for logFunc in pyconfdlib._log("deep-convert-confd-hkeypath-to-pykeypath-convert-keypath-failed").errorFunc(): logFunc("deepConvertConfdHKeyPathToPyKeyPath: deepConvertConfdValueToPyValue "\
                                                                                                             "failed: i=%d, j=%d, confdHKeyPathPtr=%s, pyKeyPath=%s, rc=%s", i, j, ConfdHKeyPathLow.ConfdHKeyPathToStr(confdHKeyPathPtr), pyKeyPath, str(rc))
                    return ReturnCodes.kGeneralError
                if pyValue.getType() == Value.kEmpty:
                    break
                level.append(pyValue)
            if level:
                #for logFunc in pyconfdlib._log("deep-convert-confd-hkeypath-to-pykeypath-appending").debug4Func(): logFunc("deepConvertConfdHKeyPathToPyKeyPath: appending level=%s", level)
                pyKeyPath._key.append(level)

        for logFunc in pyconfdlib._log("deep-convert-confd-hkeypath-to-pykeypath-done").debug4Func(): logFunc("deepConvertConfdHKeyPathToPyKeyPath done. confdHKeyPathPtr=%s, pyKeyPath=%s", ConfdHKeyPathLow.ConfdHKeyPathToStr(confdHKeyPathPtr), pyKeyPath)
        return ReturnCodes.kOk
Ejemplo n.º 2
0
    def deepConvertPyValueToConfdValue (pyValue, confdValuePtr, confdValIndex=0):
        """
        This function performs a deep convertion of a python Value object to a confd_value_t object.
        It reallocates data memory, making the confd_value_t object its owner.
        Note: When using this function the it is NOT mandatory for the python Value object to exist as long as the confd_value_t object exists
        Note 2: confd_free_value MUST be activated on the confd_value_t object filled by this function as it is the owner of allocated memory
        confdValuePtr must be pre-allocated
        """
        for logFunc in pyconfdlib._log("deep-convert-pyvalue-to-confd-value").debug4Func(): logFunc("deepConvertPyValueToConfdValue called. pyValue=%s, confdValuePtr=%s, confdValIndex=%d", pyValue, str(confdValuePtr), confdValIndex)
        if not pyValue or not confdValuePtr:
            for logFunc in pyconfdlib._log("deep-convert-pyvalue-to-confd-value-invalid-args").errorFunc(): logFunc("deepConvertPyValueToConfdValue invalid args: pyValue=%s, confdValuePtr=%s", pyValue, str(confdValuePtr))
            return ReturnCodes.kGeneralError

        type_ = pyValue.getType()

        if (type_ == Value.kString):
            pyconfdlib.dll.py_CONFD_SET_STR_DUP(confdValuePtr, confdValIndex, pyValue._value)
        elif (type_ == Value.kBuf):
            (buf, len_) = pyValue._value
            pyconfdlib.dll.py_CONFD_SET_BUF_DUP(confdValuePtr, confdValIndex, buf, len_)
        elif (type_ == Value.kBinary):
            pyconfdlib.dll.py_CONFD_SET_BINARY_DUP(confdValuePtr, confdValIndex, pyValue._value, len(pyValue._value))
        elif (type_ == Value.kOid):
            buf = pyValue._value
            arr = pyconfdlib.Int32ArrCreator(buf)
            pyconfdlib.dll.py_CONFD_SET_OID_DUP(confdValuePtr, confdValIndex, arr, len(buf))
        else:
            ConfdValueLow.shallowConvertPyValueToConfdValue(pyValue, confdValuePtr, confdValIndex)

        for logFunc in pyconfdlib._log("deep-convert-pyvalue-to-confd-value-done").debug4Func(): logFunc(
            "deepConvertPyValueToConfdValue done. pyValue=%s, confdValuePtr=%s, type=%d, confdValIndex=%d", 
            pyValue, ConfdValueLow.ConfdValueToStr(confdValuePtr), ConfdValueLow.getConfdValueType(confdValuePtr), confdValIndex)
        return ReturnCodes.kOk
Ejemplo n.º 3
0
def confd_notification_send_snmp (notificationCtx, notificationName, snmpVarbinds): 
    if not pyconfdlib.checkTypes({notificationName : str}):
        return pyconfdlib.CONFD_BAD_PYTHON_USAGE

    for logFunc in pyconfdlib._log("confd-send-snmp").debug3Func(): logFunc("called. notificationCtx=%s, notificationName=%s, snmpVarbinds=%s", notificationCtx, notificationName, snmpVarbinds)

    numOfVarbinds = snmpVarbinds.getLen()
    confdSnmpVarbindPtr = snmp_varbind.SnmpVarbindLow.allocSnmpVarbind(numOfVarbinds)
    res = snmp_varbind.SnmpVarbindLow.deepConvertPySnmpVarbindToConfdSnmpVarbind(snmpVarbinds, confdSnmpVarbindPtr)
    if res != ReturnCodes.kOk:
        for logFunc in pyconfdlib._log("confd-send-snmp-deep-convert-failed").errorFunc(): logFunc(
            "deepConvertPySnmpVarbindToConfdSnmpVarbind(snmpVarbind=%s, confdSnmpVarbindPtr=%s) res=%s",
            snmpVarbind, str(confdSnmpVarbindPtr), str(res))
        return ReturnCodes.kGeneralError

    for logFunc in pyconfdlib._log("confd-send-snmp-calling-library").debug3Func(): logFunc("calling library. notificationCtx=%s, notificationName=%s, snmpVarbinds=%s", notificationCtx, notificationName, snmpVarbinds)

    res = pyconfdlib.dll.py_confd_notification_send_snmp(notificationCtx, notificationName, confdSnmpVarbindPtr, numOfVarbinds)
    if res != pyconfdlib.CONFD_OK:
        for logFunc in pyconfdlib._log("confd-send-snmp-lib-failed").errorFunc(): logFunc("py_confd_notification_send_snmp() failed. res=%s", res)
        return ReturnCodes.kGeneralError

    for logFunc in pyconfdlib._log("confd-send-snmp-library-done").debug3Func(): logFunc("library done.")

    snmp_varbind.SnmpVarbindLow.deallocSnmpVarbind(confdSnmpVarbindPtr)

    return ReturnCodes.kOk
Ejemplo n.º 4
0
def maapi_set_values (sock, thandle, tagValues, keyPath):
    if not pyconfdlib.checkTypes({sock : socket.socket, thandle : int}):
        return pyconfdlib.CONFD_BAD_PYTHON_USAGE

    for logFunc in pyconfdlib._log("maapi-set-values").debug3Func(): logFunc("called. keyPath=%s, thandle=%s", keyPath, thandle)

    numOfValues = tagValues.getLen()
    confdTagValueTPtr = tag_values.TagValuesLow.allocConfdTagValues(numOfValues)
    res = tag_values.TagValuesLow.deepConvertPyTagValuesToConfdTagValues(tagValues, confdTagValueTPtr)
    if res != ReturnCodes.kOk:
        for logFunc in pyconfdlib._log("maapi-set-values-deep-convert-failed").errorFunc(): logFunc(
            "deepConvertPyTagValuesToConfdTagValues(tagValues=%s, confdTagValueTPtr=%s) res=%s",
            tagValues, str(confdTagValueTPtr), str(res))
        return ReturnCodes.kGeneralError

    for logFunc in pyconfdlib._log("maapi-set-values-calling-library").debug3Func(): logFunc("calling library. keyPath=%s", keyPath)

    res = pyconfdlib.dll.py_maapi_set_values(sock.fileno(), thandle, confdTagValueTPtr, numOfValues, keyPath.getCannonicalStr())
    if res != pyconfdlib.CONFD_OK:
        for logFunc in pyconfdlib._log("maapi-set-values-lib-failed").errorFunc(): logFunc("py_maapi_set_values() failed. res=%s", res)
        return ReturnCodes.kGeneralError

    for logFunc in pyconfdlib._log("maapi-set-values-library-done").debug3Func(): logFunc("library done. keyPath=%s. val=%s", keyPath, tag_values.TagValuesLow.ConfdTagValueToStr(confdTagValueTPtr, 0))

    tag_values.TagValuesLow.deallocConfdTagValue(confdTagValueTPtr)

    return ReturnCodes.kOk
Ejemplo n.º 5
0
 def getListKeys (self):
     for logFunc in pyconfdlib._log("get-list-keys").debug4Func(): logFunc("getListKeys called. self=%s", str(self))
     keys = []
     for level in self._key:
         if level:
             if not level[0].isXmlTag():
                 keys.append(copy.deepcopy(level[0]))
     for logFunc in pyconfdlib._log("get-list-keys-done").debug4Func(): logFunc("getListKeys done. self=%s, keys=%s", str(self), [str(key) for key in keys])
     return keys
Ejemplo n.º 6
0
 def copyPartial (self, other, lenToCopy):
     for logFunc in pyconfdlib._log("copy-partial").debug4Func(): logFunc("copyPartial called. self=%s, other=%s, lenToCopy=%d",
                                            str(self), str(other), lenToCopy)
     if other.getLen() < lenToCopy:
         for logFunc in pyconfdlib._log("copy-partial-too-short").errorFunc(): logFunc("copyPartial other keypath is too short. self=%s, other=%s, , otherLen=%d, lenToCopy=%d",
                                                         str(self), str(other), other.getLen(), lenToCopy)
     self._key = copy.deepcopy(other._key[:lenToCopy])
     for logFunc in pyconfdlib._log("copy-partial-done").debug4Func(): logFunc("copyPartial done. self=%s, other=%s, lenToCopy=%d",
                                                 str(self), str(other), lenToCopy)
Ejemplo n.º 7
0
 def joinKeyPath (self, keyPathToAdd):
     for logFunc in pyconfdlib._log("join-key-path").debug4Func(): logFunc("joinKeyPath called. self=%s, keyPathToAdd=%s", str(self), str(keyPathToAdd))
     if (self.getLen() + len(keyPathToAdd._key)) > pyconfdlib.MAXDEPTH:
         for logFunc in pyconfdlib._log("join-key-path-too-long").errorFunc(): logFunc("joinKeyPath: result is too long, cannot join keypath. self=%s, selfLen=%d, keyPathToAdd=%d", str(self), self.getLen(), str(keyPathToAdd), len(keyPathToAdd._key))
         return ReturnCodes.kGeneralError
     self._key.extend(copy.deepcopy(keyPathToAdd._key))
     for logFunc in pyconfdlib._log("join-key-path-done").debug4Func(): logFunc("joinKeyPath done. self=%s", self._key)
     for logFunc in pyconfdlib._log("join-key-path-done").debug4Func(): logFunc("joinKeyPath done. self=%s, keyPathToAdd=%s", str(self), str(keyPathToAdd))
     return ReturnCodes.kOk
Ejemplo n.º 8
0
 def getPrefix (self):
     for logFunc in pyconfdlib._log("get-prefix").debug4Func(): logFunc("called. self=%s", str(self))
     if self._key and self._key[0]:
         val = self._key[0][0]
         (tag, ns, prefix) = val.asXmlTag()
         if not prefix:
             for logFunc in pyconfdlib._log("get-prefix-as-xml-tag-failed").errorFunc(): logFunc("val.asXmlTag() returned None. val=%s, self=%s", str(val), str(self))
             return None
         for logFunc in pyconfdlib._log("get-prefix-done").debug4Func(): logFunc("done. self=%s, prefix=%s", str(self), prefix)
         return prefix
Ejemplo n.º 9
0
 def getNameSpaceId (self):
     for logFunc in pyconfdlib._log("get-namespace-id").debug4Func(): logFunc("getNameSpaceId called. self=%s", str(self))
     if self._key and self._key[0]:
         val = self._key[0][0]
         (tag, ns, prefix) = val.asXmlTag()
         if not ns:
             for logFunc in pyconfdlib._log("get-namespace-id-as-xml-tag-failed").errorFunc(): logFunc("val.asXmlTag() returned None. val=%s, self=%s", str(val), str(self))
             return None
         for logFunc in pyconfdlib._log("get-namespace-id-done").debug4Func(): logFunc("getNameSpaceId done. self=%s, ns=%s", str(self), ns)
         return ns
Ejemplo n.º 10
0
 def func2 (self, tctx, confdKeypathPtr, next):
     for logFunc in pyconfdlib._log("confd_register_data_cb-func2-called").debug2Func(): logFunc("confd_register_data_cb::func2() called: tctx=%s, confdKeypathPtr=%s, next=%s", tctx, confdKeypathPtr, next)
     pyKeyPath = key_path.KeyPath()
     ret = key_path.ConfdHKeyPathLow.deepConvertConfdHKeyPathToPyKeyPath(confdKeypathPtr, pyKeyPath)
     if ret != ReturnCodes.kOk:
         for logFunc in pyconfdlib._log("confd_register_data_cb-func2-failed-convert").errorFunc(): logFunc("confd_register_data_cb::func2() deepConvertConfdHKeyPathToPyKeyPath() failed: tctx=%s, confdKeypathPtr=%s, next=%s,ret=%s",
                                                                    tctx, confdKeypathPtr, next, ret)
         return pyconfdlib.CONFD_ERR
     ret=self.callBack(pyconfdlib.ConfdTransContext(tctx), self.callpoint, self.callBackData, pyKeyPath, next)
     pyconfdlib.checkTypes({ret : pyconfdlib.ConfdReturnCode})
     return ret.getValue()
Ejemplo n.º 11
0
 def addKeyPathPrefix (self, value):
     for logFunc in pyconfdlib._log("add-key-path-prefix").debug4Func(): logFunc("addKeyPathPrefix called. self=%s, value=%s", str(self), str(value))
     if self.getLen() == pyconfdlib.MAXDEPTH:
         for logFunc in pyconfdlib._log("add-key-path-prefix-too-long").errorFunc(): logFunc("addKeyPathPrefix: keypath is at max depth, cannot add a prefix. self=%s, value=%s", str(self), str(value))
         return ReturnCodes.kGeneralError
     if isinstance(value, list):
         self._key.insert(0, copy.deepcopy(value))
     else:
         self._key.insert(0, [copy.deepcopy(value)])
     for logFunc in pyconfdlib._log("add-key-path-prefix-done").debug4Func(): logFunc("addKeyPathPrefix done. self=%s, value=%s", str(self), str(value))
     return ReturnCodes.kOk
Ejemplo n.º 12
0
 def insertToKeyPathAt (self, value, pos):
     for logFunc in pyconfdlib._log("insert-to-key-path-at").debug4Func(): logFunc("insertToKeyPathAt called. self=%s, value=%s, pos=%s", str(self), str(value), str(pos))
     if self.getLen() == pyconfdlib.MAXDEPTH:
         for logFunc in pyconfdlib._log("add-key-path-postfix-too-long").errorFunc(): logFunc("addKeyPathPostfix: keypath is at max depth, cannot add a postfix. self=%s, value=%s", str(self), str(value))
         return ReturnCodes.kGeneralError
     if isinstance(value, list):
         self._key.insert(pos, copy.deepcopy(value))
     else:
         self._key.insert(pos, [copy.deepcopy(value)])
     for logFunc in pyconfdlib._log("insert-to-key-path-at-done").debug4Func(): logFunc("insertToKeyPathAt done. self=%s, value=%s, pos=%s", str(self), str(value), str(pos))
     return ReturnCodes.kOk
Ejemplo n.º 13
0
    def deepConvertPyValueToConfdValue(pyValue,
                                       confdValuePtr,
                                       confdValIndex=0):
        """
        This function performs a deep convertion of a python Value object to a confd_value_t object.
        It reallocates data memory, making the confd_value_t object its owner.
        Note: When using this function the it is NOT mandatory for the python Value object to exist as long as the confd_value_t object exists
        Note 2: confd_free_value MUST be activated on the confd_value_t object filled by this function as it is the owner of allocated memory
        confdValuePtr must be pre-allocated
        """
        for logFunc in pyconfdlib._log(
                "deep-convert-pyvalue-to-confd-value").debug4Func():
            logFunc(
                "deepConvertPyValueToConfdValue called. pyValue=%s, confdValuePtr=%s, confdValIndex=%d",
                pyValue, str(confdValuePtr), confdValIndex)
        if not pyValue or not confdValuePtr:
            for logFunc in pyconfdlib._log(
                    "deep-convert-pyvalue-to-confd-value-invalid-args"
            ).errorFunc():
                logFunc(
                    "deepConvertPyValueToConfdValue invalid args: pyValue=%s, confdValuePtr=%s",
                    pyValue, str(confdValuePtr))
            return ReturnCodes.kGeneralError

        type_ = pyValue.getType()

        if (type_ == Value.kString):
            pyconfdlib.dll.py_CONFD_SET_STR_DUP(confdValuePtr, confdValIndex,
                                                pyValue._value)
        elif (type_ == Value.kBuf):
            (buf, len_) = pyValue._value
            pyconfdlib.dll.py_CONFD_SET_BUF_DUP(confdValuePtr, confdValIndex,
                                                buf, len_)
        elif (type_ == Value.kBinary):
            pyconfdlib.dll.py_CONFD_SET_BINARY_DUP(confdValuePtr,
                                                   confdValIndex,
                                                   pyValue._value,
                                                   len(pyValue._value))
        elif (type_ == Value.kOid):
            buf = pyValue._value
            arr = pyconfdlib.Int32ArrCreator(buf)
            pyconfdlib.dll.py_CONFD_SET_OID_DUP(confdValuePtr, confdValIndex,
                                                arr, len(buf))
        else:
            ConfdValueLow.shallowConvertPyValueToConfdValue(
                pyValue, confdValuePtr, confdValIndex)

        for logFunc in pyconfdlib._log(
                "deep-convert-pyvalue-to-confd-value-done").debug4Func():
            logFunc(
                "deepConvertPyValueToConfdValue done. pyValue=%s, confdValuePtr=%s, type=%d, confdValIndex=%d",
                pyValue, ConfdValueLow.ConfdValueToStr(confdValuePtr),
                ConfdValueLow.getConfdValueType(confdValuePtr), confdValIndex)
        return ReturnCodes.kOk
Ejemplo n.º 14
0
 def func2 (self, userInfo, name, confdKeypathPtr, params, numParams):
     for logFunc in pyconfdlib._log("confd_register_data_cb-func2-called").debug2Func(): logFunc("confd_register_data_cb::func2() called: userInfo=%s, name=%s, confdKeypathPtr=%s, params=%s, numParams=%s",
                                                        userInfo, name, confdKeypathPtr, params, numParams)
     pyKeyPath = key_path.KeyPath()
     ret = key_path.ConfdHKeyPathLow.deepConvertConfdHKeyPathToPyKeyPath(confdKeypathPtr, pyKeyPath)
     if ret != ReturnCodes.kOk:
         for logFunc in pyconfdlib._log("confd_register_data_cb-func2-failed-convert").errorFunc(): logFunc("confd_register_data_cb::func2() deepConvertConfdHKeyPathToPyKeyPath() failed: userInfo=%s, name=%s, confdKeypathPtr=%s, params=%s, numParams=%s, ret=%s",
                                                            userInfo, name, confdKeypathPtr, params, numParams, ret)
         return pyconfdlib.CONFD_ERR
     ret=self.callBack(pyconfdlib.ConfdUserInfoCtx(userInfo), self.actionPoint, self.callBackData, name, pyKeyPath, params, numParams)
     pyconfdlib.checkTypes({ret : pyconfdlib.ConfdReturnCode})
     return ret.getValue()
Ejemplo n.º 15
0
    def getKeyPathPostfixFlattened (self, pathToRemove, leaveLowestKey):
        resKeyPath = KeyPath()
        for logFunc in pyconfdlib._log("get-key-path-postfix-flattened").debug4Func(): logFunc("getKeyPathPostfixFlattened called. self=%s, keyPathToRemove=%s, resKeyPath=%s, leaveLowestKey=%s",
                                                                 str(self), str(pathToRemove), str(resKeyPath), leaveLowestKey)
        for i, level in enumerate(self._key):
            if i < pathToRemove.getLen():
                continue
            if level[0].isXmlTag():
                resKeyPath._key.append(copy.deepcopy(level))

        for logFunc in pyconfdlib._log("get-key-path-postfix-flattened-done").debug4Func(): logFunc("getKeyPathPostfixFlattened done. self=%s, keyPathToRemove=%s, resKeyPath=%s, leaveLowestKey=%s",
                                                                      str(self), str(pathToRemove), str(resKeyPath), leaveLowestKey)
        return resKeyPath
Ejemplo n.º 16
0
    def isDescendantOf (self, other):
        for logFunc in pyconfdlib._log("is-descendant-of").debug4Func(): logFunc("isDescendantOf called. self=%s, other=%s", str(self), other)

        if self.getLen() >= other.getLen():
            for logFunc in pyconfdlib._log("is-descendant-of-too-short").debug4Func(): logFunc("isDescendantOf False. self too short. self=%s, other=%s", str(self), other)
            return False

        if self.isEqualLen(other, self.getLen()):
            for logFunc in pyconfdlib._log("is-descendant-of-true").debug4Func(): logFunc("isDescendantOf True. self=%s, other=%s", str(self), other)
            return True
            
        for logFunc in pyconfdlib._log("is-descendant-of-false").debug4Func(): logFunc("isDescendantOf False. isEqualLen() returned False. self=%s, other=%s", str(self), other)
        return False
Ejemplo n.º 17
0
 def validate(self, tctx, confdKeypathPtr, val):
     for logFunc in pyconfdlib._log("confd_register_range_valpoint_cb-validate-called").debug2Func(): logFunc("confd_register_range_valpoint_cb::validate() called: tctx=%s, confdKeypathPtr=%s, val=%s", tctx, confdKeypathPtr, val)
     pyKeyPath = key_path.KeyPath()
     ret = key_path.ConfdHKeyPathLow.deepConvertConfdHKeyPathToPyKeyPath(confdKeypathPtr, pyKeyPath)
     if ret != ReturnCodes.kOk:
         for logFunc in pyconfdlib._log("confd_register_range_valpoint_cb-validate-failed-convert").errorFunc(): logFunc("confd_register_range_valpoint_cb::validate() deepConvertConfdHKeyPathToPyKeyPath() failed: tctx=%s, confdKeypathPtr=%s, val=%s,ret=%s",
                                                                    tctx, confdKeypathPtr, val, ret)
         return pyconfdlib.CONFD_ERR
     valP=None
     if val:
         valP=ConfdValues(val)
     ret=self.callBack(pyconfdlib.ConfdTransContext(tctx), self.validationPoint, self.callBackData, pyKeyPath, valP)
     pyconfdlib.checkTypes({ret : pyconfdlib.ConfdReturnCode})
     return ret.getValue()
Ejemplo n.º 18
0
 def func1 (self, userInfo):
     for logFunc in pyconfdlib._log("confd_register_data_cb-func1-called").debug2Func(): logFunc("confd_register_data_cb::func1() called: userInfo=%s", userInfo)
     userInfoCtx = pyconfdlib.ConfdUserInfoCtx(userInfo)
     ret=self.callBack(userInfoCtx, self.actionPoint, self.callBackData)
     pyconfdlib.checkTypes({ret : pyconfdlib.ConfdReturnCode})
     userInfoCtx.freeOpaque()
     return ret.getValue()
Ejemplo n.º 19
0
def confd_data_reply_next_key(tctx, val, next):
    """
    values: a ConfdValues object, or None to signify no next key
    next: Value to supply as 'next' parameter in next callback invocation
    """

    if not pyconfdlib.checkTypes({tctx : pyconfdlib.ConfdTransContext}):
        return pyconfdlib.CONFD_BAD_PYTHON_USAGE

    if val == None:
        return pyconfdlib.dll.py_confd_data_reply_next_key(tctx.getCtypePtr(), None, -1, -1)
    else:
        if not pyconfdlib.checkTypes({val : value.Value, next : int}):
            return pyconfdlib.CONFD_BAD_PYTHON_USAGE

        confdValPtr = value.ConfdValueLow.allocConfdValue()
        res = value.ConfdValueLow.shallowConvertPyValueToConfdValue(val, confdValPtr)
        if res != ReturnCodes.kOk:
            for logFunc in pyconfdlib._log("confd-data-reply-next-key-convert-failed").errorFunc(): logFunc("shallowConvertPyValueToConfdValue(val=%s, confdValPtr=%s) res=%s", val, str(confdValPtr), str(res))
            return ReturnCodes.kGeneralError

        res = pyconfdlib.dll.py_confd_data_reply_next_key(tctx.getCtypePtr(), confdValPtr, 1, next)

        value.ConfdValueLow.deallocConfdValue(confdValPtr)

        return res
Ejemplo n.º 20
0
 def allocConfdTagValues(numOfValues):
     confdTagValuePtr = pyconfdlib.dll.py_allocConfdTagValues(numOfValues)
     for logFunc in pyconfdlib._log("alloc-confd-tag-value").debug4Func():
         logFunc(
             "allocConfdTagValue called. numOfValues=%d, confdTagValuePtr=%s",
             numOfValues, str(confdTagValuePtr))
     return confdTagValuePtr
Ejemplo n.º 21
0
 def allocSnmpVarbind(numOfSnmpVarbinds):
     snmpVarbindPtr = pyconfdlib.dll.py_allocSnmpVarbinds(numOfSnmpVarbinds)
     for logFunc in pyconfdlib._log("alloc-snmp-varbind").debug4Func():
         logFunc(
             "allocSnmpVarbind() called. numOfSnmpVarbinds=%d, snmpVarbindPtr=%s",
             numOfSnmpVarbinds, str(snmpVarbindPtr))
     return snmpVarbindPtr
Ejemplo n.º 22
0
 def getAt (self, position):
     #for logFunc in pyconfdlib._log("get-at").debug4Func(): logFunc("getAt called. self=%s, position=%d", str(self), position)
     if (self.getLen() < position) or \
         not len(self._key[position]):
         for logFunc in pyconfdlib._log("get-at-out-of-boundaries").errorFunc(): logFunc("getAt out-of-boundaries. self=%s, position=%d, len=%d", str(self), position, self.getLen())
         return None
     #for logFunc in pyconfdlib._log("get-at-done").debug4Func(): logFunc("getAt done. self=%s, position=%d, value=%s", str(self), position, str(self._key[position][0]))
     return copy.copy(self._key[position][0])
Ejemplo n.º 23
0
 def CONFD_GET_STR(self, index=0):
     self._raiseIfNullOrBadIndex(index)
     bufPtr=ctypes.c_char_p()
     pyconfdlib.dll.py_CONFD_GET_BUFPTR(self._myValuePtr, index, ctypes.byref(bufPtr))
     # Null-terminated string, ctypes does all the work by itself
     ret=bufPtr.value
     for logFunc in pyconfdlib._log("get-buf").debug4Func(): logFunc("ConfdValues.CONFD_GET_STR(index=%s) returning %s.",index, ret)
     return ret
Ejemplo n.º 24
0
 def CONFD_GET_BUF (self, index=0):
     self._raiseIfNullOrBadIndex(index)
     bufPtr=ctypes.pointer(ctypes.c_char())
     pyconfdlib.dll.py_CONFD_GET_BUFPTR(self._myValuePtr, index, ctypes.cast(ctypes.byref(bufPtr), ctypes.POINTER(ctypes.c_char_p)) )
     bufSize=pyconfdlib.Int64Type()
     pyconfdlib.dll.py_CONFD_GET_BUFSIZE(self._myValuePtr, index, ctypes.byref(bufSize))
     ret=bufPtr[:bufSize.value]
     for logFunc in pyconfdlib._log("get-buf").debug4Func(): logFunc("ConfdValues.CONFD_GET_BUF(index=%s) returning %s.",index, ret)
     return ret
Ejemplo n.º 25
0
 def asIPv6Prefix(self, index=0):
     self._raiseIfNullOrBadIndex(index)
     type_=self.getType()
     if (type_ == pyconfdlib.C_IPV6PREFIX):
         ret=str(self)
     else:
         errorMsg="ConfdValues::asIPv6Prefix() called, type is %s"
         for logFunc in pyconfdlib._log("as-ipv6-prefix-bad").errorFunc(): logFunc(errorMsg, type_)
         Captain().processFatal(errorMsg % type_)
     return ret
Ejemplo n.º 26
0
 def asBool (self, index=0):
     self._raiseIfNullOrBadIndex(index)
     type_=self.getType()
     if type_==pyconfdlib.C_BOOL:
         ret=self.CONFD_GET_BOOL(index)
     else:
         errorMsg="ConfdValues::asBool() called, type is %s"
         for logFunc in pyconfdlib._log("as-bool-bad").errorFunc(): logFunc(errorMsg, type_)
         a.infra.process.processFatal(errorMsg % type_)
     return ret
Ejemplo n.º 27
0
 def asBuf(self, index=0):
     self._raiseIfNullOrBadIndex(index)
     type_=self.getType()
     if (type_==pyconfdlib.C_BUF):
         ret=self.CONFD_GET_STR(index)
     else:
         errorMsg="ConfdValues::asBuf() called, type is %s"
         for logFunc in pyconfdlib._log("as-buf-bad").errorFunc(): logFunc(errorMsg, type_)
         Captain().processFatal(errorMsg % type_)
     return ret
Ejemplo n.º 28
0
 def asIPv6Prefix(self, index=0):
     self._raiseIfNullOrBadIndex(index)
     type_ = self.getType()
     if (type_ == pyconfdlib.C_IPV6PREFIX):
         ret = str(self)
     else:
         errorMsg = "ConfdValues::asIPv6Prefix() called, type is %s"
         for logFunc in pyconfdlib._log("as-ipv6-prefix-bad").errorFunc():
             logFunc(errorMsg, type_)
         Captain().processFatal(errorMsg % type_)
     return ret
Ejemplo n.º 29
0
 def asBool(self, index=0):
     self._raiseIfNullOrBadIndex(index)
     type_ = self.getType()
     if type_ == pyconfdlib.C_BOOL:
         ret = self.CONFD_GET_BOOL(index)
     else:
         errorMsg = "ConfdValues::asBool() called, type is %s"
         for logFunc in pyconfdlib._log("as-bool-bad").errorFunc():
             logFunc(errorMsg, type_)
         a.infra.process.processFatal(errorMsg % type_)
     return ret
Ejemplo n.º 30
0
 def asBuf(self, index=0):
     self._raiseIfNullOrBadIndex(index)
     type_ = self.getType()
     if (type_ == pyconfdlib.C_BUF):
         ret = self.CONFD_GET_STR(index)
     else:
         errorMsg = "ConfdValues::asBuf() called, type is %s"
         for logFunc in pyconfdlib._log("as-buf-bad").errorFunc():
             logFunc(errorMsg, type_)
         Captain().processFatal(errorMsg % type_)
     return ret
Ejemplo n.º 31
0
 def copyStaticPartUpToLowestList (self, other):
     for logFunc in pyconfdlib._log("copy-static-part-up-to-lowest-list").debug4Func(): logFunc("called. self=%s, other=%s",
                                                                  str(self), str(other))
     self._key = []
     startCopying = False
     for level in reversed(other._key):
         if level:
             if startCopying:
                 self._key.insert(0, copy.deepcopy(level))
             if not level[0].isXmlTag():
                 startCopying = True
                 
         """if level: 
             if level[0].isXmlTag():
                 if startCopying:
                     self._key.insert(0, copy.deepcopy(level))
             else:
                 startCopying = True"""
     for logFunc in pyconfdlib._log("copy-static-part-up-to-lowest-list-done").debug4Func(): logFunc("done. self=%s, other=%s",
                                                                       str(self), str(other))
Ejemplo n.º 32
0
 def CONFD_GET_STR(self, index=0):
     self._raiseIfNullOrBadIndex(index)
     bufPtr = ctypes.c_char_p()
     pyconfdlib.dll.py_CONFD_GET_BUFPTR(self._myValuePtr, index,
                                        ctypes.byref(bufPtr))
     # Null-terminated string, ctypes does all the work by itself
     ret = bufPtr.value
     for logFunc in pyconfdlib._log("get-buf").debug4Func():
         logFunc("ConfdValues.CONFD_GET_STR(index=%s) returning %s.", index,
                 ret)
     return ret
Ejemplo n.º 33
0
 def isTagEqual(self, keyDepth, ns, tag):
     """
     keyDepth : int
     ns : string or int
     tag: string or int
     """
     pyconfdlib.checkTypes({ns: [int, str], tag: [int, str]})
     for logFunc in pyconfdlib._log("is-tag-equal-called").debug3Func():
         logFunc("ConfdHkeypath.isTagEqual(): ns=%s, tag=%s", ns, tag)
     if isinstance(ns, str):
         ns = pyconfdlib.strToHash(ns)
     if isinstance(tag, str):
         tag = pyconfdlib.strToHash(tag)
     if (keyDepth > self.getLen()):
         for logFunc in pyconfdlib._log(
                 "is-tag-equal-too-short").debug3Func():
             logFunc(
                 "ConfdHkeypath.isTagEqual(): tag too short. self=%s, keyDepth=%s",
                 self, keyDepth)
         return False
     searchKey = self.getLen() - keyDepth - 1
     value = self.getValue(searchKey, 0)
     valueType = value.getType()
     valueNs = value.CONFD_GET_XMLTAG_NS()
     valueTag = value.CONFD_GET_XMLTAG()
     for logFunc in pyconfdlib._log("is-tag-equal-value").debug3Func():
         logFunc(
             "ConfdHkeypath.isTagEqual(): value: type=%s, ns=%s (%d), tag=%s (%d)",
             valueType, pyconfdlib.hashToStr(valueNs), valueNs,
             pyconfdlib.hashToStr(valueTag), valueTag)
     if valueType != pyconfdlib.C_XMLTAG:
         for logFunc in pyconfdlib._log(
                 "is-tag-equal-wrong-type").debug3Func():
             logFunc(
                 "ConfdHkeypath.isTagEqual(): wrong type. self=%s, value.getType()=%s",
                 self, valueType)
         return False
     if valueNs != ns:
         for logFunc in pyconfdlib._log(
                 "is-tag-equal-wrong-ns").debug3Func():
             logFunc(
                 "ConfdHkeypath.isTagEqual(): wrong ns. self=%s, value.ns()=%s, ns=%s",
                 self, valueNs, ns)
         return False
     if valueTag != tag:
         for logFunc in pyconfdlib._log(
                 "is-tag-equal-wrong-tag").debug3Func():
             logFunc(
                 "ConfdHkeypath.isTagEqual(): wrong tag. self=%s, value.tag=%s, tag=%s",
                 self, valueTag, tag)
         return False
     for logFunc in pyconfdlib._log("is-tag-equal-true").debug3Func():
         logFunc(
             "ConfdHkeypath.isTagEqual(): true. self=%s, keyDepth=%s, ns=%s, tag=%s",
             self, keyDepth, ns, tag)
     return True
Ejemplo n.º 34
0
    def deepConvertConfdTagValuesToPyTagValues(confdTagValuePtr, numOfValues,
                                               pyTagValues):
        """
        This function performs a deep convertion of an array of confd_tag_value_t objects to a python TagValues object.
        It reallocates data memory, making the python TagValues object its owner.
        Note: When using this function the it is NOT mandatory for the confd_tag_value_t object to exist as long as the python TagValues object exists
        pyTagValues must be pre-constructed
        """
        for logFunc in pyconfdlib._log(
                "deep-convert-confd-tag-values-to-py-tagvalues").debug4Func():
            logFunc(
                "deepConvertConfdTagValuesToPyTagValues called. pyTagValues=%s, numOfValues=%d, confdTagValuePtr=%s",
                str(pyTagValues), numOfValues, str(confdTagValuePtr))
        if not pyTagValues or not confdTagValuePtr:
            for logFunc in pyconfdlib._log(
                    "deep-convert-confd-tag-values-to-py-tagvalues-invalid-args"
            ).errorFunc():
                logFunc(
                    "deepConvertPyTagValuesToConfdTagValues invalid args: pyTagValues=%s, numOfValues=%d, confdTagValuePtr=%s",
                    pyTagValues, numOfValues, str(confdTagValuePtr))
            return ReturnCodes.kGeneralError

        confdTagVal = None
        for i in range(numOfValues):
            for logFunc in pyconfdlib._log(
                    "deep-convert-confd-tag-values-to-py-tagvalues-iteration"
            ).debug4Func():
                logFunc("iteration %d", i)
            confdVal = pyconfdlib.dll.py_getValPtrFromTagVal(
                confdTagValuePtr, i)
            pyValue = Value()
            rc = ConfdValueLow.deepConvertConfdValueToPyValue(
                confdVal, pyValue)
            if rc != ReturnCodes.kOk:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-tag-values-to-py-tagvalues-deep-convert-value-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue() failed. confdVal=%s, i=%d",
                        ConfdValueLow(ConfdValueToStr(confdVal), i))
                return ReturnCodes.kGeneralError
            tag = pyconfdlib.dll.py_getTagFromTagVal(confdTagValuePtr, i)
            tagStr = pyconfdlib.hashToStr(tag)
            ns = pyconfdlib.dll.py_getNSFromTagVal(confdTagValuePtr, i)
            nsStr = pyconfdlib.hashToStr(ns)
            for logFunc in pyconfdlib._log(
                    "deep-convert-confd-tag-values-to-py-tagvalues-adding"
            ).debug4Func():
                logFunc("adding tag-value %d. pyValue=%s, tagStr=%s, nsStr=%s",
                        i, pyValue, tagStr, nsStr)
            pyTagValues.push((tagStr, nsStr), pyValue)

        for logFunc in pyconfdlib._log(
                "deep-convert-confd-tag-values-to-py-tagvalues-done"
        ).debug4Func():
            logFunc(
                "deepConvertPyTagValuesToConfdTagValues done. pyTagValues=%s, numOfValues=%d, confdTagValuePtr=%s",
                pyTagValues, numOfValues, str(confdTagValuePtr))
        return ReturnCodes.kOk
Ejemplo n.º 35
0
 def CONFD_GET_BUF(self, index=0):
     self._raiseIfNullOrBadIndex(index)
     bufPtr = ctypes.pointer(ctypes.c_char())
     pyconfdlib.dll.py_CONFD_GET_BUFPTR(
         self._myValuePtr, index,
         ctypes.cast(ctypes.byref(bufPtr), ctypes.POINTER(ctypes.c_char_p)))
     bufSize = pyconfdlib.Int64Type()
     pyconfdlib.dll.py_CONFD_GET_BUFSIZE(self._myValuePtr, index,
                                         ctypes.byref(bufSize))
     ret = bufPtr[:bufSize.value]
     for logFunc in pyconfdlib._log("get-buf").debug4Func():
         logFunc("ConfdValues.CONFD_GET_BUF(index=%s) returning %s.", index,
                 ret)
     return ret
Ejemplo n.º 36
0
 def clone (self):
     """
     Returns a new instance with the same values as this instance.
     The new instance owns the wrapped confd_value_t struct.
     """
     # If we are wrapping a NULL pointer, create a similar object
     if not self._myValuePtr:
         newObject=ConfdValues(confdValueTPtr=pyconfdlib.ConfdValueTPtr(), numValues=self._mySize)
     else:
         newObject=ConfdValues(numValues=self._mySize)
         for i in range(0, self._mySize):
             pyconfdlib.dll.py_confd_value_dup_to(self._myValuePtr, i, newObject._myValuePtr, i)
     for logFunc in pyconfdlib._log("cloned-null").debug5Func(): logFunc("clone() done: self=%s, newObject=%s", self, newObject)
     return newObject
Ejemplo n.º 37
0
 def asString (self, index=0):
     self._raiseIfNullOrBadIndex(index)
     type_=self.getType()
     if (type_==pyconfdlib.C_STR) or (type_==pyconfdlib.C_BUF):
         ret=self.CONFD_GET_STR(index)
     elif (type_ == pyconfdlib.C_IPV4) or \
         (type_ == pyconfdlib.C_IPV6) or \
         (type_ == pyconfdlib.C_IPV4PREFIX) or \
         (type_ == pyconfdlib.C_IPV6PREFIX):
         ret=str(self)
     else:
         errorMsg="ConfdValues::asString() called, type is %s"
         for logFunc in pyconfdlib._log("as-string-bad").errorFunc(): logFunc(errorMsg, type_)
     return ret
Ejemplo n.º 38
0
    def getValue (self, keyIndex=0):
        self._fatalIfNull()
        val=pyconfdlib.dll.py_maapiCursorGetValue(self._myMaapiCursorTPtr, keyIndex)
        if not val:
            msg="MaapiCursor.getValue(): Got a NULL pointer for getValue(keyIndex=%s)" % keyIndex
            for logFunc in pyconfdlib._log("maapi-cursor-null").errorFunc(): logFunc(msg)
            return None
        pyValue = value.Value()
        res = value.ConfdValueLow.deepConvertConfdValueToPyValue(val, pyValue)
        if res != ReturnCodes.kOk:
            for logFunc in self._log("maapi-cursor-get-value-deep-convert-old").errorFunc():
                logFunc("deepConvertConfdValueToPyValue() failed. val=%s, res=%s", str(val), str(res))
            return None

        return pyValue
Ejemplo n.º 39
0
def confd_data_reply_tag_value_array(tctx, tagValues):
    """
    tagValues: a collection of tag values
    """

    if not pyconfdlib.checkTypes({tctx : pyconfdlib.ConfdTransContext, tagValues : tag_values.TagValues}):
        return pyconfdlib.CONFD_BAD_PYTHON_USAGE

    confdTagValueTPtr = tag_values.TagValuesLow.allocConfdTagValues(tagValues.getLen())
    res = tag_values.TagValuesLow.deepConvertPyTagValuesToConfdTagValues(tagValues, confdTagValueTPtr)
    if res != ReturnCodes.kOk:
        for logFunc in pyconfdlib._log("confd-data-reply-tag-value-array-deep-convert-failed").errorFunc(): logFunc(
            "deepConvertPyTagValuesToConfdTagValues(tagValues=%s, confdTagValueTPtr=%s) res=%s",
            tagValues, str(confdTagValueTPtr), str(res))
        return ReturnCodes.kGeneralError

    for logFunc in pyconfdlib._log("confd-data-reply-tag-value-array-deep-convert-succeeded").debug2Func(): logFunc(
        "deepConvertPyTagValuesToConfdTagValues(tagValues=%s, confdTagValueTPtr=%s, len=%d) succeeded",
        tagValues, str(confdTagValueTPtr), tagValues.getLen())
    res = pyconfdlib.dll.py_confd_data_reply_tag_value_array(tctx.getCtypePtr(), confdTagValueTPtr, tagValues.getLen())

    tag_values.TagValuesLow.deallocConfdTagValue(confdTagValueTPtr)

    return res
Ejemplo n.º 40
0
 def isEqualLen (self, other, compareLen):
     for logFunc in pyconfdlib._log("is-equal-len").debug4Func(): logFunc("isEqualLen called. self=%s, other=%s, len=%d", str(self), str(other), compareLen)
     if (self.getLen() < compareLen) or \
         (other.getLen() < compareLen):
         return False
     for i, level in enumerate(self._key):
         if i < compareLen:
             if len(level) != len(other._key[i]):
                 return False
             for j, val in enumerate(level):
                 if not val.isEqual(other._key[i][j]):
                     return False
         else:
             break
     return True
Ejemplo n.º 41
0
 def asString(self, index=0):
     self._raiseIfNullOrBadIndex(index)
     type_ = self.getType()
     if (type_ == pyconfdlib.C_STR) or (type_ == pyconfdlib.C_BUF):
         ret = self.CONFD_GET_STR(index)
     elif (type_ == pyconfdlib.C_IPV4) or \
         (type_ == pyconfdlib.C_IPV6) or \
         (type_ == pyconfdlib.C_IPV4PREFIX) or \
         (type_ == pyconfdlib.C_IPV6PREFIX):
         ret = str(self)
     else:
         errorMsg = "ConfdValues::asString() called, type is %s"
         for logFunc in pyconfdlib._log("as-string-bad").errorFunc():
             logFunc(errorMsg, type_)
     return ret
Ejemplo n.º 42
0
 def clone(self):
     """
     Returns a new instance with the same values as this instance.
     The new instance owns the wrapped confd_value_t struct.
     """
     # If we are wrapping a NULL pointer, create a similar object
     if not self._myValuePtr:
         newObject = ConfdValues(confdValueTPtr=pyconfdlib.ConfdValueTPtr(),
                                 numValues=self._mySize)
     else:
         newObject = ConfdValues(numValues=self._mySize)
         for i in range(0, self._mySize):
             pyconfdlib.dll.py_confd_value_dup_to(self._myValuePtr, i,
                                                  newObject._myValuePtr, i)
     for logFunc in pyconfdlib._log("cloned-null").debug5Func():
         logFunc("clone() done: self=%s, newObject=%s", self, newObject)
     return newObject
Ejemplo n.º 43
0
    def deepConvertPyTagValuesToConfdTagValues(pyTagValues, confdTagValuePtr):
        """
        This function performs a deep convertion of a python TagValues object to an array of confd_tag_value_t objects.
        It reallocates data memory, making the confd_tag_value_t object its owner.
        Note: When using this function the it is NOT mandatory for the python TagValues object to exist as long as the confd_tag_value_t object exists
        Note 2: confd_free_value MUST be activated on the confd_value_t object filled by this function as it is the owner of allocated memory
        confdTagValuePtr must be pre-allocated
        """
        for logFunc in pyconfdlib._log(
                "deep-convert-py-tagvalues-to-confd-tag-values").debug4Func():
            logFunc(
                "deepConvertPyTagValuesToConfdTagValues called. pyTagValues=%s, confdTagValuePtr=%s",
                str(pyTagValues), str(confdTagValuePtr))
        if not pyTagValues or not confdTagValuePtr:
            for logFunc in pyconfdlib._log(
                    "deep-convert-py-tagvalues-to-confd-tag-values-invalid-args"
            ).errorFunc():
                logFunc(
                    "deepConvertPyTagValuesToConfdTagValues invalid args: pyTagValues=%s, confdTagValuePtr=%s",
                    pyTagValues, str(confdTagValuePtr))
            return ReturnCodes.kGeneralError

        confdValPtr = None
        for (i, pyTV) in enumerate(pyTagValues._tagValues):
            (xmlTag, val) = pyTV
            (tag, ns) = xmlTag
            rc = pyconfdlib.dll.py_setTagToTagVal(confdTagValuePtr, i,
                                                  pyconfdlib.hashIfString(tag))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-set-tag-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_setTagToTagVal() failed: confdTagValuePtr=%s, pyTagValues=%s, i=%d, tag=%d, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdTagValuePtr),
                        pyTagValues, i, tag, str(rc))
                return ReturnCodes.kGeneralError
            rc = pyconfdlib.dll.py_setNSToTagVal(confdTagValuePtr, i,
                                                 pyconfdlib.hashIfString(ns))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-set-ns-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_setTagToTagVal() failed: confdTagValuePtr=%s, pyTagValues=%s, i=%d, ns=%d, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdTagValuePtr),
                        pyTagValues, i, ns, str(rc))
                return ReturnCodes.kGeneralError
            confdValPtr = pyconfdlib.dll.py_getValPtrFromTagVal(
                confdTagValuePtr, i)
            rc = ConfdValueLow.deepConvertPyValueToConfdValue(val, confdValPtr)
            if rc != ReturnCodes.kOk:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-deep-convert-value-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue deepConvertPyValueToConfdValue() failed: confdTagValuePtr=%s, pyTagValues=%s, i=%d, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdTagValuePtr),
                        pyTagValues, i, str(rc))
                return ReturnCodes.kGeneralError

        for logFunc in pyconfdlib._log(
                "deep-convert-py-tagvalues-to-confd-tag-values-done"
        ).debug4Func():
            logFunc(
                "deepConvertPyTagValuesToConfdTagValues done. pyTagValues=%s, confdTagValuePtr=%s",
                pyTagValues, str(confdTagValuePtr))
        return ReturnCodes.kOk
Ejemplo n.º 44
0
    def addKeyPathPostfix(self, value):
        for logFunc in pyconfdlib._log("add-key-path-postfix").debug4Func():
            logFunc("ConfdHkeypath.addKeyPathPostfix()(): old=%s, value=%s",
                    self, value)
        if (self._myHkeypathPtr):
            # move each value column one step backwards
            len_ = self.getLen()
            if (len_ + 1 < pyconfdlib.MAXDEPTH):
                temp = ConfdHkeypath()
                value.copyTo(temp.getValue(0, 0, False))
                temp.getValue(1, 0, False).CONFD_SET_NOEXISTS()
                temp.setLen(1)

                for i in range(len_):
                    for j in range(pyconfdlib.MAXKEYLEN):
                        for logFunc in pyconfdlib._log(
                                "add-key-path-postfix-moving").debug4Func():
                            logFunc(
                                "ConfdHkeypath.addKeyPathPostfix()(): moving value, i=%s, j=%s, v=%s",
                                i, j, self.getValue(i, j))
                        self.getValue(i,
                                      j).copyTo(temp.getValue(i + 1, j, False))
                        temp.getValue(i + 1, j + 1, False).CONFD_SET_NOEXISTS()
                        for logFunc in pyconfdlib._log(
                                "add-key-path-postfix-after-moving"
                        ).debug4Func():
                            logFunc(
                                "ConfdHkeypath.addKeyPathPostfix()(): after moving value, i=%s, j=%s, v=%s",
                                i, j, self.getValue(i, j))
                        if self.getValue(i, j +
                                         1).getType() == pyconfdlib.C_NOEXISTS:
                            break
                    temp.setLen(temp.getLen() + 1)
                self._free()
                # Own the pointer instead of temp
                self._myHkeypathPtr = temp._myHkeypathPtr
                temp._myHkeypathPtr = None
                self._myIsMine = True
            else:
                # Cant add another level - the path is too deep already
                for logFunc in pyconfdlib._log(
                        "add-key-path-postfix-too-deep").errorFunc():
                    logFunc(
                        "ConfdHkeypath.addKeyPathPostfix() - too deep - fatal. myKeyPath=%s, value=%s",
                        self._myHkeypathPtr, value)
                a.infra.process.processFatal(
                    "ConfdHkeypath.addKeyPathPostfix() - too deep - fatal. myKeyPath=%s, value=%s"
                    % (self._myHkeypathPtr, value))
        else:
            # create a new key path
            temp = self.__class__()
            value.copyTo(temp.getValue(0, 0, False))
            temp.getValue(1, 0, False).CONFD_SET_NOEXISTS()
            temp.setLen(1)
            # Own the pointer instead of temp
            self._myHkeypathPtr = temp._myHkeypathPtr
            temp._myHkeypathPtr = None
            self._myIsMine = True
            for logFunc in pyconfdlib._log(
                    "add-key-path-postfix-new-key-path").debug3Func():
                logFunc(
                    "ConfdHkeypath.addKeyPathPostfix() - new keyPath. myKeyPath=%s, value=%s",
                    self._myHkeypathPtr, value)
        for logFunc in pyconfdlib._log(
                "add-key-path-postfix-after").debug4Func():
            logFunc(
                "ConfdHkeypath.addKeyPathPostfix() - after. myKeyPath=%s, value=%s",
                self._myHkeypathPtr, value)
Ejemplo n.º 45
0
 def deallocSnmpVarbind(snmpVarbindPtr):
     for logFunc in pyconfdlib._log("dealloc-snmp-varbind").debug4Func():
         logFunc("py_deallocSnmpVarbinds called. snmpVarbindPtr=%s",
                 str(snmpVarbindPtr))
     pyconfdlib.dll.py_deallocSnmpVarbinds(snmpVarbindPtr)
Ejemplo n.º 46
0
    def deepConvertPySnmpVarbindToConfdSnmpVarbind(pySnmpVarbind,
                                                   confdSnmpVarbindPtr):
        """
        This function performs a deep convertion of a python SnmpVarbind object to an array of confd_snmp_varbind objects.
        It reallocates data memory, making the confd_snmp_varbind object its owner.
        Note: When using this function the it is NOT mandatory for the python SnmpVarbind object to exist as long as the confd_snmp_varbind object exists
        Note 2: confd_free_value MUST be activated on the confd_value_t object filled by this function as it is the owner of allocated memory
        confdTagValuePtr must be pre-allocated
        """
        for logFunc in pyconfdlib._log(
                "deep-convert-py-snmp-varbind-to-confd-snmp-varbinds"
        ).debug4Func():
            logFunc(
                "deepConvertPySnmpVarbindToConfdSnmpVarbind called. pySnmpVarbind=%s, confdSnmpVarbindPtr=%s",
                str(pySnmpVarbind), str(confdSnmpVarbindPtr))
        if not pySnmpVarbind or not confdSnmpVarbindPtr:
            for logFunc in pyconfdlib._log(
                    "deep-convert-py-snmp-varbinds-to-confd-snmp-varbinds-invalid-args"
            ).errorFunc():
                logFunc(
                    "deepConvertPySnmpVarbindToConfdSnmpVarbind invalid args: pySnmpVarbind=%s, confdSnmpVarbindPtr=%s",
                    pySnmpVarbind, str(confdSnmpVarbindPtr))
            return ReturnCodes.kGeneralError

        confdValPtr = None
        indexOffset = 0
        for (i, v) in enumerate(pySnmpVarbind._variables):
            (var, val) = v
            rc = pyconfdlib.dll.py_setSnmpVarbindVariable(
                confdSnmpVarbindPtr, i + indexOffset, var)
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-py-snmp-varbinds-to-confd-snmp-varbinds-set-variable-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertPySnmpVarbindToConfdSnmpVarbind py_setSnmpVarbindVariable() failed: pySnmpVarbind=%s, i=%d, indexOffset=%d, var=%d, rc=%s",
                        pySnmpVarbind, i, indexOffset, var, str(rc))
                return ReturnCodes.kGeneralError
            confdValPtr = pyconfdlib.dll.py_getValPtrFromSnmpVarbind(
                confdSnmpVarbindPtr, i + indexOffset)
            rc = ConfdValueLow.deepConvertPyValueToConfdValue(val, confdValPtr)
            if rc != ReturnCodes.kOk:
                for logFunc in pyconfdlib._log(
                        "deep-convert-py-snmp-varbinds-to-confd-snmp-varbinds-deep-convert-value-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertPySnmpVarbindToConfdSnmpVarbind deepConvertPyValueToConfdValue() failed: pySnmpVarbind=%s, i=%d, indexOffset=%d, val=%d, rc=%s",
                        pySnmpVarbind, i, indexOffset, val, str(rc))
                return ReturnCodes.kGeneralError

        indexOffset += len(pySnmpVarbind._variables)

        for (i, v) in enumerate(pySnmpVarbind._oids):
            (oid, val) = v
            oidArray = (pyconfdlib.Uint32Type * len(oid))()
            for index in range(len(oid)):
                oidArray[index] = oid[index]
            rc = pyconfdlib.dll.py_setSnmpVarbindOid(confdSnmpVarbindPtr,
                                                     i + indexOffset, oidArray,
                                                     len(oid))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-py-snmp-varbinds-to-confd-snmp-varbinds-set-oid-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertPySnmpVarbindToConfdSnmpVarbind py_setSnmpVarbindOid() failed: pySnmpVarbind=%s, i=%d, indexOffset=%d, oid=%d, rc=%s",
                        pySnmpVarbind, i, indexOffset, oid, str(rc))
                return ReturnCodes.kGeneralError
            confdValPtr = pyconfdlib.dll.py_getValPtrFromSnmpVarbind(
                confdSnmpVarbindPtr, i + indexOffset)
            rc = ConfdValueLow.deepConvertPyValueToConfdValue(val, confdValPtr)
            if rc != ReturnCodes.kOk:
                for logFunc in pyconfdlib._log(
                        "deep-convert-py-snmp-varbinds-to-confd-snmp-varbinds-deep-convert-value-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertPySnmpVarbindToConfdSnmpVarbind deepConvertPyValueToConfdValue() failed: pySnmpVarbind=%s, i=%d, indexOffset=%d, val=%d, rc=%s",
                        pySnmpVarbind, i, indexOffset, val, str(rc))
                return ReturnCodes.kGeneralError

        indexOffset += len(pySnmpVarbind._oids)

        for (i, v) in enumerate(pySnmpVarbind._colRows):
            ((column, oid), val) = v
            oidArray = (pyconfdlib.Uint32Type * len(oid))()
            for index in range(len(oid)):
                oidArray[index] = oid[index]
            rc = pyconfdlib.dll.py_setSnmpVarbindColRow(
                confdSnmpVarbindPtr, i + indexOffset, column, oidArray,
                len(oid))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-py-snmp-varbinds-to-confd-snmp-varbinds-set-col -row-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertPySnmpVarbindToConfdSnmpVarbind py_setSnmpVarbindColRow() failed: pySnmpVarbind=%s, i=%d, indexOffset=%d, oid=%d, rc=%s",
                        pySnmpVarbind, i, indexOffset, oid, str(rc))
                return ReturnCodes.kGeneralError
            confdValPtr = pyconfdlib.dll.py_getValPtrFromSnmpVarbind(
                confdSnmpVarbindPtr, i + indexOffset)
            rc = ConfdValueLow.deepConvertPyValueToConfdValue(val, confdValPtr)
            if rc != ReturnCodes.kOk:
                for logFunc in pyconfdlib._log(
                        "deep-convert-py-snmp-varbinds-to-confd-snmp-varbinds-deep-convert-value-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertPySnmpVarbindToConfdSnmpVarbind deepConvertPyValueToConfdValue() failed: pySnmpVarbind=%s, i=%d, indexOffset=%d, val=%d, rc=%s",
                        pySnmpVarbind, i, indexOffset, val, str(rc))
                return ReturnCodes.kGeneralError

        for logFunc in pyconfdlib._log(
                "deep-convert-py-snmp-varbinds-to-confd-snmp-varbinds-done"
        ).debug4Func():
            logFunc(
                "deepConvertPySnmpVarbindToConfdSnmpVarbind done. pySnmpVarbind=%s, confdSnmpVarbindPtr=%s",
                pySnmpVarbind, str(confdSnmpVarbindPtr))
        return ReturnCodes.kOk
Ejemplo n.º 47
0
 def deallocConfdValue(confdValuePtr):
     for logFunc in pyconfdlib._log("dealloc-confd-value").debug4Func():
         logFunc("deallocConfdValue called. confdValuePtr=%s",
                 str(confdValuePtr))
     pyconfdlib.dll.py_deallocConfdValue(confdValuePtr)
Ejemplo n.º 48
0
    def deepConvertConfdValueToPyValue(confdValuePtr,
                                       pyValue,
                                       confdValIndex=0):
        """
        This function performs a deep convertion of a confd_value_t object to a python Value object.
        It reallocates data memory, making the python Value object its owner.
        Note: When using this function the it is NOT mandatory for the confd_value_t object to exist as long as the python Value object exists
        pyValue must be pre-constructed
        """
        #for logFunc in pyconfdlib._log("deep-convert-confd-value-to-pyvalue").debug4Func(): logFunc("deepConvertConfdValueToPyValue called. confdValuePtr=%s, pyValue=%s, confdValIndex=%d", ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue, confdValIndex)
        if not pyValue or not confdValuePtr:
            for logFunc in pyconfdlib._log(
                    "deep-convert-confd-value-to-pyvalue-invalid-args"
            ).errorFunc():
                logFunc(
                    "deepConvertConfdValueToPyValue invalid args: confdValuePtr=%s, pyValue=%s",
                    ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue)
            return ReturnCodes.kGeneralError
        type_ = pyconfdlib.dll.py_getValueType(confdValuePtr, confdValIndex)
        value = None
        if type_ == pyconfdlib.C_NOEXISTS:
            pyValue.setType(Value.kEmpty)
            value = None
        elif type_ == pyconfdlib.C_STR:
            pyValue.setType(Value.kString)
            strPtr = pyconfdlib.CharPType()
            rc = pyconfdlib.dll.py_CONFD_GET_STR(confdValuePtr, confdValIndex,
                                                 pyconfdlib.byRef(strPtr))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-str-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_STR() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            value = strPtr.value[:]
        elif type_ == pyconfdlib.C_BUF:
            pyValue.setType(Value.kBuf)
            bufPtr = pyconfdlib.CharPType()
            rc = pyconfdlib.dll.py_CONFD_GET_BUFPTR(confdValuePtr,
                                                    confdValIndex,
                                                    pyconfdlib.byRef(bufPtr))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-bufptr-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_BUFPTR() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            bufLen = pyconfdlib.Int64Type()
            rc = pyconfdlib.dll.py_CONFD_GET_BUFSIZE(confdValuePtr,
                                                     confdValIndex,
                                                     pyconfdlib.byRef(bufLen))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-bufsize-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_BUFSIZW() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            value = (bufPtr.value[:bufLen.value], bufLen.value)
        elif type_ == pyconfdlib.C_INT8:
            pyValue.setType(Value.kInt8)
            tempVal = pyconfdlib.Int8Type()
            rc = pyconfdlib.dll.py_CONFD_GET_INT8(confdValuePtr, confdValIndex,
                                                  pyconfdlib.byRef(tempVal))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-int8-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_INT8() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            value = tempVal.value
        elif type_ == pyconfdlib.C_INT16:
            pyValue.setType(Value.kInt16)
            tempVal = pyconfdlib.Int16Type()
            rc = pyconfdlib.dll.py_CONFD_GET_INT16(confdValuePtr,
                                                   confdValIndex,
                                                   pyconfdlib.byRef(tempVal))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-int16-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_INT16() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            value = tempVal.value
        elif type_ == pyconfdlib.C_INT32:
            pyValue.setType(Value.kInt32)
            tempVal = pyconfdlib.Int32Type()
            rc = pyconfdlib.dll.py_CONFD_GET_INT32(confdValuePtr,
                                                   confdValIndex,
                                                   pyconfdlib.byRef(tempVal))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-int32-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_INT32() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            value = tempVal.value
        elif type_ == pyconfdlib.C_INT64:
            pyValue.setType(Value.kInt64)
            tempVal = pyconfdlib.Int64Type()
            rc = pyconfdlib.dll.py_CONFD_GET_INT64(confdValuePtr,
                                                   confdValIndex,
                                                   pyconfdlib.byRef(tempVal))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-int64-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_INT64() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            value = tempVal.value
        elif type_ == pyconfdlib.C_UINT8:
            pyValue.setType(Value.kUint8)
            tempVal = pyconfdlib.Uint8Type()
            rc = pyconfdlib.dll.py_CONFD_GET_UINT8(confdValuePtr,
                                                   confdValIndex,
                                                   pyconfdlib.byRef(tempVal))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-uint8-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_UINT8() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            value = tempVal.value
        elif type_ == pyconfdlib.C_UINT16:
            pyValue.setType(Value.kUint16)
            tempVal = pyconfdlib.Uint16Type()
            rc = pyconfdlib.dll.py_CONFD_GET_UINT16(confdValuePtr,
                                                    confdValIndex,
                                                    pyconfdlib.byRef(tempVal))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-uint16-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_UINT16() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            value = tempVal.value
        elif type_ == pyconfdlib.C_UINT32:
            pyValue.setType(Value.kUint32)
            tempVal = pyconfdlib.Uint32Type()
            rc = pyconfdlib.dll.py_CONFD_GET_UINT32(confdValuePtr,
                                                    confdValIndex,
                                                    pyconfdlib.byRef(tempVal))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-uint32-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_UINT32() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            value = tempVal.value
        elif type_ == pyconfdlib.C_UINT64:
            pyValue.setType(Value.kUint64)
            tempVal = pyconfdlib.Uint64Type()
            rc = pyconfdlib.dll.py_CONFD_GET_UINT64(confdValuePtr,
                                                    confdValIndex,
                                                    pyconfdlib.byRef(tempVal))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-uint64-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_UINT64() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            value = tempVal.value
        elif type_ == pyconfdlib.C_BOOL:
            pyValue.setType(Value.kBool)
            tempVal = pyconfdlib.Int64Type()
            rc = pyconfdlib.dll.py_CONFD_GET_BOOL(confdValuePtr, confdValIndex,
                                                  pyconfdlib.byRef(tempVal))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-bool-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_BOOL() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            if tempVal.value == 0:
                value = False
            else:
                value = True
        elif type_ == pyconfdlib.C_ENUM_HASH:
            pyValue.setType(Value.kEnum)
            tempVal = pyconfdlib.Int64Type()
            rc = pyconfdlib.dll.py_CONFD_GET_ENUM_HASH(
                confdValuePtr, confdValIndex, pyconfdlib.byRef(tempVal))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-enum-hash-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_ENUM_HASH() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            value = tempVal.value
        elif type_ == pyconfdlib.C_BINARY:
            pyValue.setType(Value.kBinary)
            bufLen = pyconfdlib.Int64Type()
            rc = pyconfdlib.dll.py_CONFD_GET_BINARY_SIZE(
                confdValuePtr, confdValIndex, pyconfdlib.byRef(bufLen))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-binary-size-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_BINARY_SIZE() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            buf = pyconfdlib.createStringBuffer(bufLen.value + 1)
            rc = pyconfdlib.dll.py_CONFD_GET_BINARY_PTR_DUP(
                confdValuePtr, confdValIndex, bufLen.value, buf)
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-binary-ptr-dup-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_BINARY_PTR_DUP() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            for logFunc in pyconfdlib._log(
                    "deep-convert-confd-value-to-pyvalue-get-binary-succeeded"
            ).debug2Func():
                logFunc(
                    "deepConvertConfdValueToPyValue py_CONFD_BINARY...(): bufLen=%s, confdValuePtr=%s, pyValue=%s, rc=%s, len(buf.raw[:bufLen.value]=%d)",
                    bufLen.value, ConfdValueLow.ConfdValueToStr(confdValuePtr),
                    pyValue, str(rc), len(buf.raw[:bufLen.value]))
            value = buf.raw[:bufLen.value]
        elif type_ == pyconfdlib.C_OID:
            pyValue.setType(Value.kOid)
            oidPtr = pyconfdlib.CharPType()
            rc = pyconfdlib.dll.py_CONFD_GET_OIDPTR(confdValuePtr,
                                                    confdValIndex,
                                                    pyconfdlib.byRef(oidPtr))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-oidptr-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_OIDPTR() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            oidLen = pyconfdlib.Int64Type()
            rc = pyconfdlib.dll.py_CONFD_GET_OIDSIZE(confdValuePtr,
                                                     confdValIndex,
                                                     pyconfdlib.byRef(oidLen))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-oidsize-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_OIDSIZE() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            value = (oidPtr.value[:oidLen.value], oidLen.value)
        elif type_ == pyconfdlib.C_IPV4:
            pyValue.setType(Value.kIPv4)
            tempVal = pyconfdlib.Uint32Type()
            rc = pyconfdlib.dll.py_CONFD_GET_IPV4(confdValuePtr, confdValIndex,
                                                  pyconfdlib.byRef(tempVal))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-ipv4-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_IPV4() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            value = tempVal.value
        elif type_ == pyconfdlib.C_IPV6:
            pyValue.setType(Value.kIPv6)
            bufPtr = buf = pyconfdlib.createStringBuffer(16)
            rc = pyconfdlib.dll.py_CONFD_GET_IPV6(confdValuePtr, confdValIndex,
                                                  bufPtr)
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-ipv6-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_IPV6() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            value = bufPtr.raw
        elif type_ == pyconfdlib.C_IPV4PREFIX:
            pyValue.setType(Value.kIPv4Prefix)
            tempAddr = pyconfdlib.Uint32Type()
            tempPrefixLen = pyconfdlib.Uint8Type()
            rc = pyconfdlib.dll.py_CONFD_GET_IPV4_PREFIX(
                confdValuePtr, confdValIndex, pyconfdlib.byRef(tempAddr),
                pyconfdlib.byRef(tempPrefixLen))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-ipv4-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_IPV4() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            value = (tempAddr.value, tempPrefixLen.value)
        elif type_ == pyconfdlib.C_IPV6PREFIX:
            pyValue.setType(Value.kIPv6Prefix)
            bufPtr = buf = pyconfdlib.createStringBuffer(16)
            tempPrefixLen = pyconfdlib.Uint8Type()
            rc = pyconfdlib.dll.py_CONFD_GET_IPV6_PREFIX(
                confdValuePtr, confdValIndex, bufPtr,
                pyconfdlib.byRef(tempPrefixLen))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-ipv6-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_IPV6_PREFIX() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            value = (bufPtr.raw, tempPrefixLen.value)
        elif type_ == pyconfdlib.C_XMLTAG:
            pyValue.setType(Value.kXmlTag)
            tag = pyconfdlib.Int64Type()
            ns = pyconfdlib.Int64Type()
            rc = pyconfdlib.dll.py_CONFD_GET_XMLTAG(confdValuePtr,
                                                    confdValIndex,
                                                    pyconfdlib.byRef(tag))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-xmltag-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_XMLTAG() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            rc = pyconfdlib.dll.py_CONFD_GET_XMLTAG_NS(confdValuePtr,
                                                       confdValIndex,
                                                       pyconfdlib.byRef(ns))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-xmltag-ns-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_XMLTAG_NS() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            tagStr = pyconfdlib.hashToStr(tag.value)
            nsStr = pyconfdlib.hashToStr(ns.value)
            prefix = pyconfdlib.nsToPrefix(ns.value)
            value = (tagStr, nsStr, prefix)
        elif type_ == pyconfdlib.C_XMLBEGIN:
            pyValue.setType(Value.kXmlBegin)
            tag = pyconfdlib.Int64Type()
            ns = pyconfdlib.Int64Type()
            rc = pyconfdlib.dll.py_CONFD_GET_XMLBEGIN(confdValuePtr,
                                                      confdValIndex,
                                                      pyconfdlib.byRef(tag))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-xmlbegin-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_XMLBEGIN() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            rc = pyconfdlib.dll.py_CONFD_GET_XMLBEGIN_NS(
                confdValuePtr, confdValIndex, pyconfdlib.byRef(ns))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-xmlbegin-ns-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_XMLBEGIN_NS() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            tagStr = pyconfdlib.hashToStr(tag.value)
            nsStr = pyconfdlib.hashToStr(ns.value)
            prefix = pyconfdlib.nsToPrefix(ns.value)
            value = (tagStr, nsStr, prefix)
        elif type_ == pyconfdlib.C_XMLEND:
            pyValue.setType(Value.kXmlEnd)
            tag = pyconfdlib.Int64Type()
            ns = pyconfdlib.Int64Type()
            rc = pyconfdlib.dll.py_CONFD_GET_XMLEND(confdValuePtr,
                                                    confdValIndex,
                                                    pyconfdlib.byRef(tag))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-xmlend-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_XMLEND() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            rc = pyconfdlib.dll.py_CONFD_GET_XMLEND_NS(confdValuePtr,
                                                       confdValIndex,
                                                       pyconfdlib.byRef(ns))
            if rc != pyconfdlib.CONFD_OK:
                for logFunc in pyconfdlib._log(
                        "deep-convert-confd-value-to-pyvalue-get-xmlend-ns-failed"
                ).errorFunc():
                    logFunc(
                        "deepConvertConfdValueToPyValue py_CONFD_GET_XMLEND_NS() failed: confdValuePtr=%s, pyValue=%s, rc=%s",
                        ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                        str(rc))
                return ReturnCodes.kGeneralError
            tagStr = pyconfdlib.hashToStr(tag.value)
            nsStr = pyconfdlib.hashToStr(ns.value)
            prefix = pyconfdlib.nsToPrefix(ns.value)
            value = (tagStr, nsStr, prefix)
        else:
            for logFunc in pyconfdlib._log(
                    "deep-convert-confd-value-to-pyvalue-unsupported-type"
            ).errorFunc():
                logFunc(
                    "deepConvertConfdValueToPyValue unsupported type: %s. confdValuePtr=%s, pyValue=%s, confdValIndex=%d",
                    str(type_), ConfdValueLow.ConfdValueToStr(confdValuePtr),
                    pyValue, confdValIndex)
            return ReturnCodes.kGeneralError

        pyValue.setValue(value)
        for logFunc in pyconfdlib._log(
                "deep-convert-confd-value-to-pyvalue-done").debug4Func():
            logFunc(
                "deepConvertConfdValueToPyValue done. confdValuePtr=%s, pyValue=%s, confdValIndex=%d",
                ConfdValueLow.ConfdValueToStr(confdValuePtr), pyValue,
                confdValIndex)
        return ReturnCodes.kOk
Ejemplo n.º 49
0
    def shallowConvertPyValueToConfdValue(pyValue,
                                          confdValuePtr,
                                          confdValIndex=0):
        """
        This function performs a shallow convertion of a python Value object to a confd_value_t object.
        It does not reallocate data memory, merely sets the confd_value_t members to point to it.
        confdValuePtr must be pre-allocated
        Note: When using this function the it is MANDATORY for the python Value object to exist as long as the confd_value_t object exists
        Note 2: DO NOT!!! activate confd_free_value on the confd_value_t object filled by this function as it is not responsible for any allocated memory
        """
        for logFunc in pyconfdlib._log(
                "shallow-convert-pyvalue-to-confd-value").debug3Func():
            logFunc(
                "shallowConvertPyValueToConfdValue called. pyValue=%s, confdValuePtr=%s, confdValIndex=%d",
                pyValue, str(confdValuePtr), confdValIndex)
        if not pyValue or not confdValuePtr:
            for logFunc in pyconfdlib._log(
                    "shallow-convert-pyvalue-to-confd-value-invalid-args"
            ).errorFunc():
                logFunc(
                    "shallowConvertPyValueToConfdValue invalid args: pyValue=%s, confdValuePtr=%s",
                    pyValue, str(confdValuePtr))
            return ReturnCodes.kGeneralError

        type_ = pyValue.getType()

        if (type_ == Value.kEmpty):
            pyconfdlib.dll.py_CONFD_SET_NOEXISTS(confdValuePtr, confdValIndex)
        elif (type_ == Value.kString):
            pyconfdlib.dll.py_CONFD_SET_STR(confdValuePtr, confdValIndex,
                                            pyValue._value)
        elif (type_ == Value.kBuf):
            (buf, len_) = pyValue._value
            pyconfdlib.dll.py_CONFD_SET_BUF(confdValuePtr, confdValIndex, buf,
                                            len_)
        elif (type_ == Value.kInt8):
            pyconfdlib.dll.py_CONFD_SET_INT8(confdValuePtr, confdValIndex,
                                             pyValue._value)
        elif (type_ == Value.kInt16):
            pyconfdlib.dll.py_CONFD_SET_INT16(confdValuePtr, confdValIndex,
                                              pyValue._value)
        elif (type_ == Value.kInt32):
            pyconfdlib.dll.py_CONFD_SET_INT32(confdValuePtr, confdValIndex,
                                              pyValue._value)
        elif (type_ == Value.kInt64):
            pyconfdlib.dll.py_CONFD_SET_INT64(confdValuePtr, confdValIndex,
                                              pyValue._value)
        elif (type_ == Value.kUint8):
            pyconfdlib.dll.py_CONFD_SET_UINT8(confdValuePtr, confdValIndex,
                                              pyValue._value)
        elif (type_ == Value.kUint16):
            pyconfdlib.dll.py_CONFD_SET_UINT16(confdValuePtr, confdValIndex,
                                               pyValue._value)
        elif (type_ == Value.kUint32):
            pyconfdlib.dll.py_CONFD_SET_UINT32(confdValuePtr, confdValIndex,
                                               pyValue._value)
        elif (type_ == Value.kUint64):
            pyconfdlib.dll.py_CONFD_SET_UINT64(confdValuePtr, confdValIndex,
                                               pyValue._value)
        elif (type_ == Value.kBool):
            boolVal = 0
            if pyValue._value:
                boolVal = 1
            pyconfdlib.dll.py_CONFD_SET_BOOL(confdValuePtr, confdValIndex,
                                             boolVal)
        elif (type_ == Value.kEnum):
            pyconfdlib.dll.py_CONFD_SET_ENUM_HASH(confdValuePtr, confdValIndex,
                                                  pyValue._value)
        elif (type_ == Value.kBinary):
            buf = pyValue._value
            pyconfdlib.dll.py_CONFD_SET_BINARY(confdValuePtr, confdValIndex,
                                               buf, len(buf))
        elif (type_ == Value.kIPv4):
            pyconfdlib.dll.py_CONFD_SET_IPV4(confdValuePtr, confdValIndex,
                                             pyValue._value)
        elif (type_ == Value.kIPv6):
            pyconfdlib.dll.py_CONFD_SET_IPV6(confdValuePtr, confdValIndex,
                                             pyValue._value)
        elif (type_ == Value.kIPv4Prefix):
            (address, len_) = pyValue._value
            pyconfdlib.dll.py_CONFD_SET_IPV4_PREFIX(confdValuePtr,
                                                    confdValIndex, address,
                                                    len_)
        elif (type_ == Value.kIPv6Prefix):
            (address, len_) = pyValue._value
            pyconfdlib.dll.py_CONFD_SET_IPV6_PREFIX(confdValuePtr,
                                                    confdValIndex, address,
                                                    len_)
        elif (type_ == Value.kXmlTag):
            (tag, ns, prefix) = pyValue._value
            hashedTag = pyconfdlib.hashIfString(tag)
            hashedNs = pyconfdlib.hashIfString(ns)
            pyconfdlib.dll.py_CONFD_SET_XMLTAG(confdValuePtr, confdValIndex,
                                               hashedTag, hashedNs)
        elif (type_ == Value.kXmlBegin):
            (tag, ns, prefix) = pyValue._value
            hashedTag = pyconfdlib.hashIfString(tag)
            hashedNs = pyconfdlib.hashIfString(ns)
            pyconfdlib.dll.py_CONFD_SET_XMLBEGIN(confdValuePtr, confdValIndex,
                                                 hashedTag, hashedNs)
        elif (type_ == Value.kXmlEnd):
            (tag, ns, prefix) = pyValue._value
            hashedTag = pyconfdlib.hashIfString(tag)
            hashedNs = pyconfdlib.hashIfString(ns)
            pyconfdlib.dll.py_CONFD_SET_XMLEND(confdValuePtr, confdValIndex,
                                               hashedTag, hashedNs)
        elif (type_ == Value.kOid):
            (buf, len_) = pyValue._value
            pyconfdlib.dll.py_CONFD_SET_OID(confdValuePtr, confdValIndex, buf,
                                            len_)
        else:
            for logFunc in pyconfdlib._log(
                    "shallow-convert-pyvalue-to-confd-value-unsupported-type"
            ).errorFunc():
                logFunc(
                    "shallowConvertPyValueToConfdValue unsupported type: %s. pyValue=%s, confdValuePtr=%s, confdValIndex=%d",
                    type_, pyValue, str(confdValuePtr), confdValIndex)
            return ReturnCodes.kGeneralError

        for logFunc in pyconfdlib._log(
                "shallow-convert-pyvalue-to-confd-value-done").debug3Func():
            logFunc(
                "shallowConvertPyValueToConfdValue done. pyValue=%s, confdValuePtr=%s, type=%d, confdValIndex=%d",
                pyValue, ConfdValueLow.ConfdValueToStr(confdValuePtr),
                ConfdValueLow.getConfdValueType(confdValuePtr), confdValIndex)
        return ReturnCodes.kOk