Package Products :: Package ZenModel :: Module zenmib :: Class ZenMib |
[hide private]
[frames] | no frames]

# Class ZenMib

source code

                  object --+
                           |
    ZenUtils.CmdBase.CmdBase --+
                               |
    ZenUtils.ZenDaemon.ZenDaemon --+
                                   |
          ZenUtils.ZCmdBase.ZCmdBase --+
                                       |
                                      ZenMib

Wrapper around the smidump utilities used to convert MIB definitions into python code which is in turn loaded into the DMD tree.

Instance Methods | [hide private]
makeMibFileObj(self, fileName) Scan the MIB file to determine what MIBs are defined in the file and what their dependencies are. | source code
MibFile |
populateDependencyMap(self, importFileNames, depFileNames) Populates the self.mibToMibFile instance object with data. | source code
list of strings |
getDependencyFileNames(self, mibFileObj) smidump needs to know the list of dependent files for a MIB file in order to properly resolve external references. | source code
savePythonCode(self, pythonCode, fileName) Stores the smidump-generated Python code to a file. | source code
list |
generatePythonFromMib(self, fileName, dependencyFileNames, mibNamesInFile) Use the smidump program to convert a MIB into Python code. | source code
evalPythonToMibs(self, pythonCode, name) Evaluate the code and return an array of MIB dictionaries. | source code
evalAddSavedPythonCode(self) Read the file named in the command-line option, evaluate it, and add it to our list of MIBs. | source code
getDmdMibDict(self, dmdMibDict, mibOrganizer) Populate a dictionary containing the MIB definitions that have been loaded into the DMD Mibs directory | source code
int |
addMibEntries(self, leafType, pythonMib, mibModule) Add the different MIB leaves (ie nodes, notifications) into the DMD. | source code
boolean |
loadMibFile(self, mibFileObj, dmdMibDict) Attempt to load the MIB definitions in fileName into DMD | source code
commit(self, message) | source code
loadPythonMibs(self, pythonMibs) Walk through the MIB dictionaries and add the MIBs to the DMD. | source code
set |
getAllMibDepFileNames(self) Use command line parameters to create a list of files containing MIB definitions that will be used as a reference list for the files being loaded into the DMD | source code
list |
getMibsToImport(self) Uses command-line parameters to create a list of files containing MIB definitions that are to be loaded into the DMD | source code
main(self) Main loop of the program | source code
buildOptions(self) Command-line options | source code
Inherited from `ZenUtils.ZCmdBase.ZCmdBase`: `__init__`, `closeAll`, `closedb`, `findDevice`, `getConnection`, `getContext`, `getDataRoot`, `getDmdObj`, `login`, `logout`, `opendb`, `sigTerm`, `syncdb`, `zodbConnect` Inherited from `ZenUtils.ZenDaemon.ZenDaemon`: `becomeDaemon`, `becomeWatchdog`, `changeUser`, `convertSocketOption`, `logname`, `niceDoggie`, `openPrivilegedPort`, `setupLogging`, `sighandler_USR1`, `watchdogCycleTime`, `watchdogMaxRestartTime`, `watchdogStartTimeout`, `writePidFile` Inherited from `ZenUtils.ZenDaemon.ZenDaemon` (private): `_sigUSR1_called` Inherited from `ZenUtils.CmdBase.CmdBase`: `buildParser`, `checkLogpath`, `generate_configs`, `generate_xml_configs`, `generate_xml_table`, `getConfigFileDefaults`, `getGlobalConfigFileDefaults`, `getParamatersFromConfig`, `loadConfigFile`, `parseOptions`, `pretty_print_config_comment`, `validateConfigFile`

Class Variables | [hide private]
Inherited from `ZenUtils.ZenDaemon.ZenDaemon`: `pidfile` Inherited from `ZenUtils.CmdBase.CmdBase`: `doesLogging`

Method Details | [hide private]

### makeMibFileObj(self, fileName) | source code
    Scan the MIB file to determine what MIBs are defined in the file and
    what their dependencies are.

    @param fileName: MIB fileName
    @type fileName: string
    @return: dependencyDict, indexDict
        dependencyDict - a dictionary that associates MIB definitions
            found in fileName with their dependencies
        indexDict - a dictionary that associates MIB definitions with their
            ordinal position within fileName}
    @rtype:
        dependencyDict = {mibName: [string list of MIB definition names
            that mibName is dependant on]}
        indexDict = {mibname: number}

### populateDependencyMap(self, importFileNames, depFileNames) | source code
Populates the self.mibToMibFile instance object with data. Exit the program if we're missing any files. Parameters: `importFileNames` (list of strings) - fully qualified file names of MIB files to import `depFileNames` (list of strings) - fully qualified file names of all MIB files Returns: MibFile mibFileObjects of files to import

### getDependencyFileNames(self, mibFileObj) | source code
smidump needs to know the list of dependent files for a MIB file in order to properly resolve external references. Parameters: `mibFileObj` (MibFile) - MibFile object Returns: list of strings list of dependency fileNames

### generatePythonFromMib(self, fileName, dependencyFileNames, mibNamesInFile) | source code
Use the smidump program to convert a MIB into Python code. One major caveat: smidump by default only outputs the last MIB definition in a file. For that matter, it always outputs the last MIB definition in a file whether it is requested or not. Therefore, if there are multiple MIB definitions in a file, all but the last must be explicitly named on the command line. If you name the last, it will come out twice. We don't want that. OK, so we need to determine if there are multiple MIB definitions in fileName and then add all but the last to the command line. That works except the resulting python code will create a dictionary for each MIB definition, all of them named MIB. Executing the code is equivalent to running a=1; a=2; a=3. You only wind up with a=3. Therefore, we separate each dictionary definition into its own string and return a list of strings so each one can be executed individually. Parameters: `fileName` (string) - name of the file containing MIB definitions `dependencyFileNames` (list of strings) - list of fileNames that fileName is dependent on `mibNamesInFile` (list of strings) - names of MIB definitions in file Returns: list list of dictionaries. Each dictionary containing the contents of a MIB definition. [ {'mibName': MIB data} ]

### getDmdMibDict(self, dmdMibDict, mibOrganizer) | source code
    Populate a dictionary containing the MIB definitions that have been
    loaded into the DMD Mibs directory

    @param dmdMibDict: maps a MIB definition to the path where
            it is located with in the DMD.
        Format:
            {'mibName': 'DMD path where mibName is stored'}
        Example: MIB-Dell-10892 is located in the DMD tree at
            Mibs/SITE/Dell, Directory entry is
            {'MIB-Dell-10892': '/SITE/Dell'] }
    @param mibOrganizer: the DMD directory to be searched
    @type mibOrganizer: MibOrganizer

### addMibEntries(self, leafType, pythonMib, mibModule) | source code
Add the different MIB leaves (ie nodes, notifications) into the DMD. Parameters: `leafType` (string) `mibModule` (class) `pythonMib` (dictionary) Returns: int number of leaves added

### loadMibFile(self, mibFileObj, dmdMibDict) | source code
Attempt to load the MIB definitions in fileName into DMD Parameters: `fileName` (string) - name of the MIB file to be loaded Returns: boolean whether the MIB load was successful or not

### getAllMibDepFileNames(self) | source code
Use command line parameters to create a list of files containing MIB definitions that will be used as a reference list for the files being loaded into the DMD Returns: set set of file names

### getMibsToImport(self) | source code
Uses command-line parameters to create a list of files containing MIB definitions that are to be loaded into the DMD Returns: list list of file names that are to be loaded into the DMD

### buildOptions(self) | source code
Command-line options Overrides: ZenUtils.CmdBase.CmdBase.buildOptions