A plug-in architecture has been introduced in VZAgent 4.0.0. The core VZAgent components provide the base functionality common to all possible server management types and scenarios. Plug-in modules are extensions that provide additional functions that are specific to a particular server management area or technology. The examples of plug-in modules include Authentication Engine and Virtuozzo VE management. Other plug-ins may be developed in the near future by SWsoft or by third party developers.
In some cases plug-in modules inherit their functions from the base VZAgent components. For example, Virtuozzo plug-in inherits many of its interfaces and data types from the base interfaces and data types. The descendant objects extend the base objects by adding additional components such as API calls and parameters specific to the functionality that a plug-in module implements. In VZAgent XML API, not only the base types can be used in descendant calls but their subtypes as well, so you will have to use the correct type if you want to achieve a desired result.
What this means to you is that some of the API calls in your application will no longer be valid because the functionality has been moved to a plug-in module. Calls like that will have to be identified and will have to be revised. In some cases, only the minor changes will be needed, like renaming the call itself and changing a few parameters. In others, you will have to rework the call by making sure that the correct data types are used and that the parameters that use these types are properly populated.
When processing result sets, the inheritance issues must also be considered in certain cases. The reason is that based on the type of the information returned, different instances of the same element in an XML packet may use different subtypes of the same base type. For example, when retrieving the system event information, the data
element in the returned structure will contain the event or alert type-specific data. Depending on the type of the event or alert, the data type of the underlying event_data
element will be one of the descendants of event_dataType
. Since you might not know in advance the type of the event, you will have to determine the data type before you can parse the message and handle it properly. None of that existed in the VZAgent 3.0.x API.
The functional areas that will have to be revised in this respect are as follows: