Beispiel #1
0
    def genDefVal(self, data, classmode=False):  # XXX should be fixed, see pysnmp.py
        defval = data[0]

        if isinstance(defval, (int, long)):  # number
            val = str(defval)

        elif self.isHex(defval):  # hex
            val = 'hexValue="' + defval[1:-2] + '"'  # not working for Integer baseTypes

        elif self.isBinary(defval):  # binary
            binval = defval[1:-2]
            hexval = binval and hex(int(binval, 2))[2:] or ''
            val = 'hexValue="' + hexval + '"'

        elif isinstance(defval, list):  # bits list
            val = defval

        elif defval[0] == defval[-1] and defval[0] == '"':  # quoted strimg
            val = dorepr(defval[1:-1])

        else:  # symbol (oid as defval) or name for enumeration member
            if defval in self._out or defval in self._importMap:
                val = defval + '.getName()'
            else:
                val = dorepr(defval)

        return val
Beispiel #2
0
    def genDefVal(self,
                  data,
                  classmode=False):  # XXX should be fixed, see pysnmp.py
        defval = data[0]

        if isinstance(defval, (int, long)):  # number
            val = str(defval)

        elif self.isHex(defval):  # hex
            val = 'hexValue="' + defval[
                1:-2] + '"'  # not working for Integer baseTypes

        elif self.isBinary(defval):  # binary
            binval = defval[1:-2]
            hexval = binval and hex(int(binval, 2))[2:] or ''
            val = 'hexValue="' + hexval + '"'

        elif isinstance(defval, list):  # bits list
            val = defval

        elif defval[0] == defval[-1] and defval[0] == '"':  # quoted strimg
            val = dorepr(defval[1:-1])

        else:  # symbol (oid as defval) or name for enumeration member
            if defval in self._out or defval in self._importMap:
                val = defval + '.getName()'
            else:
                val = dorepr(defval)

        return val
Beispiel #3
0
    def genRevisions(self, data, classmode=False):
        times = self.genTime([x[0] for x in data[0]])
        times = [dorepr(x) for x in times]

        revisions = '.setRevisions((%s,))' % ', '.join(times)

        descriptions = '.setRevisionsDescriptions((%s,))' % ', '.join(
            [dorepr(self.textFilter('description', x[1][1])) for x in data[0]])

        return revisions, descriptions
Beispiel #4
0
 def genLastUpdated(self, data, classmode=False):
     text = data[0]
     return '.setLastUpdated(' + dorepr(text) + ')'
Beispiel #5
0
 def genDescription(self, data, classmode=False):
     text = data[0]
     return '.setDescription(' + dorepr(text) + ')'
Beispiel #6
0
    def genDefVal(self, data, classmode=False, objname=None):
        if not data:
            return ''

        if not objname:
            return data

        defval = data[0]
        defvalType = self.getBaseType(objname, self.moduleName[0])

        if isinstance(defval, (int, long)):  # number
            val = str(defval)

        elif self.isHex(defval):  # hex
            if defvalType[0][0] in ('Integer32',
                                    'Integer'):  # common bug in MIBs
                val = str(int(defval[1:-2], 16))
            else:
                val = 'hexValue="' + defval[1:-2] + '"'

        elif self.isBinary(defval):  # binary
            binval = defval[1:-2]
            if defvalType[0][0] in ('Integer32',
                                    'Integer'):  # common bug in MIBs
                val = str(int(binval or '0', 2))
            else:
                hexval = binval and hex(int(binval, 2))[2:] or ''
                val = 'hexValue="' + hexval + '"'

        elif defval[0] == defval[-1] and defval[0] == '"':  # quoted string
            if defval[1:-1] == '' and defvalType != 'OctetString':  # common bug
                # a warning should be here
                return False  # we will set no default value

            val = dorepr(defval[1:-1])

        else:  # symbol (oid as defval) or name for enumeration member
            if (defvalType[0][0] == 'ObjectIdentifier'
                    and (defval in self.symbolTable[self.moduleName[0]]
                         or defval in self._importMap)):  # oid
                module = self._importMap.get(defval, self.moduleName[0])

                try:
                    val = str(
                        self.genNumericOid(
                            self.symbolTable[module][defval]['oid']))
                except:
                    # or no module if it will be borrowed later
                    raise error.PySmiSemanticError(
                        'no symbol "%s" in module "%s"' % (defval, module))

            # enumeration
            elif defvalType[0][0] in ('Integer32', 'Integer') and \
                    isinstance(defvalType[1], list) and defval in dict(defvalType[1]):
                val = dorepr(defval)

            elif defvalType[0][0] == 'Bits':
                defvalBits = []
                bits = dict(defvalType[1])

                for bit in defval:
                    bitValue = bits.get(bit, None)
                    if bitValue is not None:
                        defvalBits.append((bit, bitValue))
                    else:
                        raise error.PySmiSemanticError(
                            'no such bit as "%s" for symbol "%s"' %
                            (bit, objname))

                return self.genBits([defvalBits])[1]

            else:
                raise error.PySmiSemanticError(
                    'unknown type "%s" for defval "%s" of symbol "%s"' %
                    (defvalType, defval, objname))

        return '.clone(' + val + ')'
Beispiel #7
0
 def genDisplayHint(self, data, classmode=False):
     return self.indent + 'displayHint = ' + dorepr(data[0]) + '\n'
Beispiel #8
0
 def genContactInfo(self, data, classmode=False):
     text = data[0]
     return '.setContactInfo(' + dorepr(text) + ')'
Beispiel #9
0
 def genStatus(self, data, classmode=False):
     text = data[0]
     return classmode and self.indent + 'status = ' + dorepr(
         text) + '\n' or '.setStatus(' + dorepr(text) + ')'
Beispiel #10
0
 def genReference(self, data, classmode=False):
     text = self.textFilter('reference', data[0])
     return classmode and self.indent + 'reference = ' + dorepr(
         text) + '\n' or '.setReference(' + dorepr(text) + ')'
Beispiel #11
0
 def genDescription(self, data, classmode=False):
     text = self.textFilter('description', data[0])
     return classmode and self.indent + 'description = ' + dorepr(
         text) + '\n' or '.setDescription(' + dorepr(text) + ')'
Beispiel #12
0
 def genContactInfo(self, data, classmode=False):
     text = self.textFilter('contact-info', data[0])
     return '.setContactInfo(' + dorepr(text) + ')'
Beispiel #13
0
 def genUnits(self, data, classmode=False):
     text = data[0]
     return '.setUnits(' + dorepr(self.textFilter('units', text)) + ')'
Beispiel #14
0
 def genOrganization(self, data, classmode=False):
     text = self.textFilter('organization', data[0])
     return '.setOrganization(' + dorepr(text) + ')'
Beispiel #15
0
 def genRevisions(self, data, classmode=False):
     times = self.genTime([x[0] for x in data[0]])
     return '.setRevisions((%s,))' % ', '.join([dorepr(x) for x in times])
Beispiel #16
0
 def genOrganization(self, data, classmode=False):
     text = data[0]
     return '.setOrganization(' + dorepr(text) + ')'
Beispiel #17
0
 def genUnits(self, data, classmode=False):
     text = data[0]
     return '.setUnits(' + dorepr(text) + ')'
Beispiel #18
0
 def genProductRelease(self, data, classmode=False):
     text = data[0]
     return classmode and self.indent + 'productRelease = ' + dorepr(
         text) + '\n' or '.setProductRelease(' + dorepr(text) + ')'