This invention generally relates to the management of complex systems and specifically to reducing the manual labor involved in writing the configuration code to allow the system to be managed.
Prior code generation systems generate parts of the software management system. For example, SNMP toolkits ship with code generators to generate the stubs that the SNMP agent will call. Persistence systems generate a persistence layer automatically (for example, the JAXB toolkit). However, these prior art systems do not automatically generate all software layers at once.
The invention automates generation of configuration code so developers can focus on the implementation instead of the infrastructure needed to build the framework required for system management. This solution generates all the layers at once—leaving only the implementation of the configuration ‘listeners’ to react to changes in the configuration. In one embodiment, the input to the code generation is an SNMP MIB. The output is a layer to connect the SNMP agent code (generated by the SNMP agent toolkit) to the config API, a complete config API that notifies config listeners, and the input to the JAXB persistence API (e.g., an XML schema). The only code the developer now has to write is the configuration listeners, which will react to configuration changes and update the RNSA systems appropriately. One advantage of this solution over previous solutions is its completeness.
One embodiment of the present invention includes a method that generates configuration code using an SNMP MIB, comprising generating a first configuration layer based on an XML MIB derived from the SNMP MIB, wherein the first configuration layer is configured to provide an SNMP Agent with access to a second configuration layer, generating the second configuration layer for a configuration table based on the XML MIB comprising methods for managing the configuration table. The second configuration layer is configured to receive a configuration request containing configuration information representing a change to the configuration table from the SNMP Agent, call a first configuration listener method from a configuration listener layer, receive a first status code from the configuration listener layer. If the status code indicates a success, the method further includes saving the configuration information with a JAXB layer and calling a second configuration listener method to persist the change.
A more complete understanding of the present invention and the advantages thereof may be acquired by referring to the following description, taken in conjunction with the accompanying drawings in which like reference indicates like features and wherein:
Preferred embodiments of the invention are illustrated in the FIGURES, like numerals being used to refer to like and corresponding parts of the various drawings.
The following applications are hereby fully incorporated by reference herein in their entirety: U.S. application Ser. No. 10/683,317, filed Oct. 10, 2003 entitled “SYSTEM AND METHOD FOR PROVIDING ACCESS CONTROL,” by Richard MacKinnon, Kelly Looney, and Eric White; U.S. Provisional Application No. 60/551,698, filed Mar. 10, 2004 entitled “SYSTEM AND METHOD FOR BEHAVIOR-BASED FIREWALL MODELING,” by Patrick Turley which converted into U.S. application Ser. No. 11/076,719, filed Mar. 10, 2005 entitled “SYSTEM AND METHOD FOR BEHAVIOR-BASED FIREWALL MODELING,” by Richard MacKinnon, Kelly Looney, and Eric White; U.S. Provisional Application No. 60/551,754, filed Mar. 10, 2004 entitled “SYSTEM AND METHOD FOR COMPREHENSIVE CODE GENERATION FOR SYSTEM MANAGEMENT,” by Keith Johnston which converted into U.S. application Ser. No. 11/078,223, filed Mar. 10, 2005 entitled “SYSTEM AND METHOD FOR COMPREHENSIVE CODE GENERATION FOR SYSTEM MANAGEMENT,” by Keith Johnston; U.S. Provisional Application No. 60/551,703, filed Mar. 10, 2004 entitled “SYSTEM AND METHOD FOR PROVIDING A CENTRALIZED DESCRIPTION/CONFIGURATION OF CLIENT DEVICES ON A NETWORK ACCESS GATEWAY,” by Patrick Turley and Keith Johnston; U.S. Provisional Application No. 60/551,702, filed Mar. 10, 2004 entitled “SYSTEM AND METHOD FOR ACCESS SCOPE CONTROL (“WALLED GARDENS”) FOR CLIENTS OF A NETWORK ACCESS GATEWAY,” by Patrick Turley, Keith Johnston, and Steven D. Tonnesen which converted into U.S. application Ser. No. 11/076,591, filed Mar. 10, 2005 entitled “METHOD AND SYSTEM FOR CONTROLLING NETWORK ACCESS,” by Patrick Turley, Keith Johnston, and Steven D. Tonnesen; U.S. Provisional Application No. 60/551,699, filed Mar. 10, 2004 entitled “SYSTEM AND METHOD FOR DYNAMIC BANDWIDTH CONTROL,” by Patrick Turley, et al.; U.S. Provisional Application No. 60/551,697, filed Mar. 10, 2004 entitled “SYSTEM AND METHOD FOR DETECTION OF ABERRANT NETWORK BEHAVIOR BY CLIENTS OF A NETWORK ACCESS GATEWAY,” by Steven D. Tonnesen which converted into U.S. application Ser. No. 11/076,652, filed Mar. 10, 2005 entitled “SYSTEM AND METHOD FOR DETECTION OF ABERRANT NETWORK BEHAVIOR BY CLIENTS OF A NETWORK ACCESS GATEWAY,” by Steven D. Tonnesen; U.S. Provisional Application No. 60/551,705, filed Mar. 10, 2004 entitled “SYSTEM AND METHOD FOR DOUBLE-CAPTURE/DOUBLE-REDIRECT TO A DIFFERENT LOCATION,” by Keith Johnston, et al. which converted into U.S. application Ser. No. 11/076,646, filed Mar. 10, 2005 entitled “SYSTEM AND METHOD FOR DOUBLE-CAPTURE/DOUBLE-REDIRECT TO A DIFFERENT LOCATION,” by Keith Johnston, et al.; U.S. Provisional Application No. 60/551,704, filed Mar. 10, 2004 entitled “SYSTEM AND METHOD FOR NETWORK MANAGEMENT XML ARCHITECTURAL ABSTRACTION,” by Keith Johnston and Mario Garcia which converted into U.S. application Ser. No. 11/076,672, filed Mar. 10, 2005 entitled “SYSTEM AND METHOD FOR NETWORK MANAGEMENT XML ARCHITECTURAL ABSTRACTION,” by Keith Johnston and Mario Garcia; and U.S. Provisional Application No. 60/660,408, filed Mar. 10, 2005 entitled “SYSTEM AND METHOD FOR PROVIDING A CENTRALIZED DESCRIPTION!CONFIGURATION OF CLIENT DEVICES ON A NETWORK ACCESS GATEWORK,” by Patrick Turley, et al.
The XML version of the MIB contains metadata about the configuration variables in the system. According to one embodiment, the XML MIB is generated by a tool called library access SMI (libsmi), which is a library that allows management applications to access SMI MIB module definitions. The XML schema for the MIB can be generated as described in U.S. Provisional Application No. 60/551,704, filed Mar. 10, 2004 entitled “SYSTEM AND METHOD FOR NETWORK MANAGEMENT XML ARCHITECTURAL ABSTRACTION,” by Keith Johnston and Mario Garcia, U.S. application Ser. No. 11/076,672, filed Mar. 10, 2005 entitled “SYSTEM AND METHOD FOR NETWORK MANAGEMENT XML ARCHITECTURAL ABSTRACTION,” by Keith Johnston and Mario Garcia. The JAXB persistence classes are generated by the JAXB implementation provided by Sun Microsystems (Sun Microsystems is a trademark of Sun Microsystems, Inc. of Santa Clara, Calif.). The JAXB tool binds an XML schema to a representation in JAVA code.
The config API 112 provides a high-level abstraction (e.g., language specific, such as JAVA) of the MIB table and group objects. The table and group classes, as described in conjunction with
SNMP code 110 is also generated from the XML MIB. According to one embodiment, the SNMP code 110 can be generated using the iReasoning SNMP Agent Builder by iReasoning, Inc. of Reno, Nev. The SNMP code 110 can be the iReasoning SNMP agent extended to support the classes of the Config API in response to table and group operation.
Thus, the code generator to generate very specific code for the SNMP agent and the JAXB schema. According to one embodiment, the metadata comes from the MIB, so the constraints on the data are limited to SNMP constraints. The metadata contained in the XML includes the data type of the field, including several predefined types (RSN-specific types): string, integer, and enumerated types are the most common data types. These are mapped to XMLSchema types supported by JAXB. Additionally, methods to convert between the SNMP agent and the config API use the data type information to convert between these two layers. Code in the config API layer is also generated to validate constraints on the data. For example, if a field is an IP address, the code in the config layer can ensure that the value passed in is a valid IP address.
Using code generation allows the addition of new features relatively quickly. For example, a two phase commit mechanism can be used in the config listeners. When a configuration change comes in through SNMP—first a “preSet” method can be called in the config listener. If that method does not return an error, then the “set” method can be called. However, by the time the set method is called, the value has been persisted in the JAXB layer. If an error occurs in the set method, then the code generated config API can restore the original value and persist it. Another example where the code generation can be useful is in logging. When any configuration change is made in the system, a log message is written. The code that generates the log message is all generated by the code generator. Another example of a feature that can be added through code generation is a test to see if the value being set actually changed. This check in the config API can be code generated for every value and every table. If no value changed—then the config listener is not called.
The remaining layers are classes that are all automatically code generated according to the invention. The iReasoning SNMP code 204 is, for example, generated by an iReasoning-provided tool. The config API is generated by the RSN code generator. The JAXB layer 206 is generated from an XML schema, which itself is generated by the RSN code generator. One of skill in the art can appreciate that other automated mechanisms can be used to generate these remaining layers of code (and that other classes of code can be automatically generated).
For each table in the XML MIB, a subclass of ConfigTable is generated. These derived classes are named <Class>ConfigTable where <Class> is the name of the table in the XML MIB. One example of a subclass <Class>ConfigTable is illustrated at 402. They contain methods for managing table rows. Specifically, they provide methods for adding, deleting, and updating table rows.
Similarly, for each group in the XML MIB, a subclass of ConfigGroup is generated. These derived classes are named <Class>ConfigGroup (represented at 404) where <Class> is the name of the group in the XML MIB. They contain methods for managing group entries. Specifically, they provide methods for setting the values of group properties.
By using the data structures described above, the API provides an abstraction that hides the details of the underlying implementation. The API can be extended to other schemas such as JMX.
The implementation classes for the methods, according to one embodiment, are not code generated and are user written. This is where the framework user inserts domain specific code to react to configuration changes. Each of these methods returns a status code determining whether the operation succeeds or fails. If the operation fails, the framework undoes any changes and the original values are retained. If the operation succeeds, the data is persisted to the configuration XML file. Thus these methods provide a way for the framework user to “veto” any configuration changes.
I<Class>ConfigListener (represented at 504) is a code generated interface that defines method for monitoring changes to a configuration group where <Class> is the name of the group in the XML MIB. Since each config group has different properties, these interfaces define methods of the following form:
As with table listeners above, the implementation classes for the methods are user coded and return the appropriate status code.
This application claims the benefit under 35 USC 119(e) of U.S. Provisional Patent application No. 60/551,754, entitled “System and Method for Comprehensive Code Generation for System Management,” filed Mar. 10, 2004, which is hereby fully incorporated by reference herein. This application is related to U.S. patent application Ser. No. 10/683,317, filed Oct. 10, 2003 entitled “System and Method for Providing Access Control,” by Richard MacKinnon, Kelly Looney, and Eric White, U.S. Provisional Patent Application No. 60/551,704, entitled “System and Method for Network Management XML Architectural Abstraction,” by Keith Johnston and Mario Garcia, filed Mar. 10, 2004 and U.S. patent application Ser. No. 11/076,672, entitled “System and Method for Network Management XML Architectural Abstraction” by Keith Johnston and Mario Garcia filed Mar. 10, 2005, each of which is hereby fully incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
5673393 | Marshall et al. | Sep 1997 | A |
5706427 | Tabuki | Jan 1998 | A |
5748901 | Afek et al. | May 1998 | A |
5878231 | Baehr et al. | Mar 1999 | A |
5896499 | McKelvey | Apr 1999 | A |
5901148 | Bowen et al. | May 1999 | A |
5936542 | Kleinrock et al. | Aug 1999 | A |
5953506 | Kalra et al. | Sep 1999 | A |
5987134 | Shin et al. | Nov 1999 | A |
5996013 | Delp et al. | Nov 1999 | A |
6085241 | Otis | Jul 2000 | A |
6088451 | He et al. | Jul 2000 | A |
6092200 | Muniyappa et al. | Jul 2000 | A |
6108782 | Fletcher et al. | Aug 2000 | A |
6130892 | Short et al. | Oct 2000 | A |
6131116 | Riggins et al. | Oct 2000 | A |
6157953 | Chang et al. | Dec 2000 | A |
6173331 | Shimonishi | Jan 2001 | B1 |
6176883 | Holloway et al. | Jan 2001 | B1 |
6185567 | Ratnaraj et al. | Feb 2001 | B1 |
6194992 | Short et al. | Feb 2001 | B1 |
6205552 | Fudge | Mar 2001 | B1 |
6212558 | Antur et al. | Apr 2001 | B1 |
6233607 | Taylor et al. | May 2001 | B1 |
6243815 | Antur et al. | Jun 2001 | B1 |
6275693 | Lin et al. | Aug 2001 | B1 |
6295294 | Odlyzko | Sep 2001 | B1 |
6321339 | French et al. | Nov 2001 | B1 |
6324648 | Grantges, Jr. | Nov 2001 | B1 |
6336133 | Morris et al. | Jan 2002 | B1 |
6404743 | Meandzija | Jun 2002 | B1 |
6421319 | Iwasaki | Jul 2002 | B1 |
6463474 | Fuh et al. | Oct 2002 | B1 |
6473793 | Dillon et al. | Oct 2002 | B1 |
6473801 | Basel | Oct 2002 | B1 |
6477143 | Ginossar | Nov 2002 | B1 |
6502131 | Vaid et al. | Dec 2002 | B1 |
6516417 | Pegrum et al. | Feb 2003 | B1 |
6535879 | Behera | Mar 2003 | B1 |
6539431 | Sitaraman et al. | Mar 2003 | B1 |
6636894 | Short et al. | Oct 2003 | B1 |
6678733 | Brown et al. | Jan 2004 | B1 |
6708212 | Porras et al. | Mar 2004 | B2 |
6732179 | Brown et al. | May 2004 | B1 |
6735691 | Capps et al. | May 2004 | B1 |
6757740 | Parekh et al. | Jun 2004 | B1 |
6785252 | Zimmerman et al. | Aug 2004 | B1 |
6789110 | Short et al. | Sep 2004 | B1 |
6804783 | Wesinger et al. | Oct 2004 | B1 |
6823385 | McKinnon et al. | Nov 2004 | B2 |
6917622 | McKinnon et al. | Jul 2005 | B2 |
7013331 | Das | Mar 2006 | B2 |
7120934 | Ishikawa | Oct 2006 | B2 |
7143283 | Chen et al. | Nov 2006 | B1 |
7146639 | Bartal et al. | Dec 2006 | B2 |
7181017 | Nagel et al. | Feb 2007 | B1 |
7185368 | Copeland, III | Feb 2007 | B2 |
7266754 | Shah et al. | Sep 2007 | B2 |
7272646 | Cooper et al. | Sep 2007 | B2 |
7324947 | Jordan et al. | Jan 2008 | B2 |
7325042 | Soscia et al. | Jan 2008 | B1 |
7406530 | Brown et al. | Jul 2008 | B2 |
7420956 | Karaoguz et al. | Sep 2008 | B2 |
20010038639 | McKinnon et al. | Nov 2001 | A1 |
20010038640 | McKinnon et al. | Nov 2001 | A1 |
20010038645 | McKinnon et al. | Nov 2001 | A1 |
20010039576 | Kanada | Nov 2001 | A1 |
20010039582 | McKinnon et al. | Nov 2001 | A1 |
20020013844 | Garrett et al. | Jan 2002 | A1 |
20020021665 | Bhagavath et al. | Feb 2002 | A1 |
20020023160 | Garrett et al. | Feb 2002 | A1 |
20020029260 | Dobbins et al. | Mar 2002 | A1 |
20020035699 | Crosbie | Mar 2002 | A1 |
20020042883 | Roux et al. | Apr 2002 | A1 |
20020046264 | Dillon et al. | Apr 2002 | A1 |
20020052950 | Pillai et al. | May 2002 | A1 |
20020055968 | Wishoff et al. | May 2002 | A1 |
20020059408 | Pattabhiraman et al. | May 2002 | A1 |
20020075844 | Hagen | Jun 2002 | A1 |
20020085719 | Crosbie | Jul 2002 | A1 |
20020087713 | Cunningham | Jul 2002 | A1 |
20020091944 | Anderson et al. | Jul 2002 | A1 |
20020112183 | Baird, III et al. | Aug 2002 | A1 |
20020112186 | Ford et al. | Aug 2002 | A1 |
20020120741 | Webb et al. | Aug 2002 | A1 |
20020123335 | Luna et al. | Sep 2002 | A1 |
20020124078 | Conrad | Sep 2002 | A1 |
20020124103 | Maruyama et al. | Sep 2002 | A1 |
20020129143 | McKinnon, III et al. | Sep 2002 | A1 |
20020131404 | Mehta et al. | Sep 2002 | A1 |
20020133581 | Schwartz et al. | Sep 2002 | A1 |
20020133589 | Gubbi et al. | Sep 2002 | A1 |
20020136226 | Christoffel et al. | Sep 2002 | A1 |
20020138762 | Horne | Sep 2002 | A1 |
20020138763 | Delany et al. | Sep 2002 | A1 |
20020143964 | Guo et al. | Oct 2002 | A1 |
20020152284 | Cambray et al. | Oct 2002 | A1 |
20020162030 | Brezak et al. | Oct 2002 | A1 |
20020164952 | Singhai et al. | Nov 2002 | A1 |
20020165990 | Singhai et al. | Nov 2002 | A1 |
20020169867 | Mann et al. | Nov 2002 | A1 |
20020174227 | Hartsell et al. | Nov 2002 | A1 |
20020178282 | Mysore et al. | Nov 2002 | A1 |
20020199007 | Clayton et al. | Dec 2002 | A1 |
20030041104 | Wingard et al. | Feb 2003 | A1 |
20030043846 | Purpura et al. | Mar 2003 | A1 |
20030055994 | Herrmann et al. | Mar 2003 | A1 |
20030061506 | Cooper et al. | Mar 2003 | A1 |
20030069956 | Gieseke et al. | Apr 2003 | A1 |
20030070170 | Lennon | Apr 2003 | A1 |
20030078784 | Jordan et al. | Apr 2003 | A1 |
20030087629 | Juitt et al. | May 2003 | A1 |
20030126608 | Safadi et al. | Jul 2003 | A1 |
20030135753 | Batra et al. | Jul 2003 | A1 |
20030149751 | Bellinger et al. | Aug 2003 | A1 |
20030154399 | Zuk et al. | Aug 2003 | A1 |
20030159072 | Bellinger et al. | Aug 2003 | A1 |
20030163603 | Fry et al. | Aug 2003 | A1 |
20030177477 | Fuchs | Sep 2003 | A1 |
20030212800 | Jones et al. | Nov 2003 | A1 |
20030217126 | Polcha et al. | Nov 2003 | A1 |
20040015719 | Lee et al. | Jan 2004 | A1 |
20040047356 | Bauer | Mar 2004 | A1 |
20040049586 | Ocepek et al. | Mar 2004 | A1 |
20040064836 | Ludvig et al. | Apr 2004 | A1 |
20040073941 | Ludvig et al. | Apr 2004 | A1 |
20040085906 | Ohtani et al. | May 2004 | A1 |
20040093513 | Cantrell et al. | May 2004 | A1 |
20040103426 | Ludvig et al. | May 2004 | A1 |
20040122956 | Myers et al. | Jun 2004 | A1 |
20040172557 | Nakae et al. | Sep 2004 | A1 |
20040179822 | Tsumagari et al. | Sep 2004 | A1 |
20040181816 | Kim et al. | Sep 2004 | A1 |
20040199635 | Ta et al. | Oct 2004 | A1 |
20040210633 | Brown et al. | Oct 2004 | A1 |
20040268234 | Sampathkumar et al. | Dec 2004 | A1 |
20050044422 | Cantrell et al. | Feb 2005 | A1 |
20050091303 | Suzuki | Apr 2005 | A1 |
20050149721 | Lu et al. | Jul 2005 | A1 |
20050193103 | Drabik | Sep 2005 | A1 |
20050195854 | Agmon et al. | Sep 2005 | A1 |
20050204168 | Johnston et al. | Sep 2005 | A1 |
20060168229 | Shim et al. | Jul 2006 | A1 |
20060173992 | Weber et al. | Aug 2006 | A1 |
20060184618 | Kurup et al. | Aug 2006 | A1 |
20070073718 | Ramer et al. | Mar 2007 | A1 |
20070186113 | Cuberson et al. | Aug 2007 | A1 |
20070208936 | Ramos Robles | Sep 2007 | A1 |
20070268878 | Clements | Nov 2007 | A1 |
20080066096 | Wollmershauser et al. | Mar 2008 | A1 |
20080120661 | Ludvig et al. | May 2008 | A1 |
20080147840 | Roelens et al. | Jun 2008 | A1 |
20080276305 | Chan et al. | Nov 2008 | A1 |
Number | Date | Country |
---|---|---|
0587522 | Jan 2000 | EP |
WO 0177787 | Oct 2001 | WO |
WO 0209458 | Jan 2002 | WO |
WO 0223825 | Mar 2002 | WO |
WO 0241587 | May 2002 | WO |
WO 02077820 | Oct 2002 | WO |
WO 03021890 | Mar 2003 | WO |
WO 03098461 | May 2003 | WO |
Number | Date | Country | |
---|---|---|---|
20050204031 A1 | Sep 2005 | US |
Number | Date | Country | |
---|---|---|---|
60551754 | Mar 2004 | US |