2 Defining the Plug-in
It contains the following sections:
Introduction to Defining the Plug-in
As a plug-in developer, you are responsible for the following steps within the plug-in definition process:
- 
                           
Define the plug-in identifier (ID).
For more information, see Defining the Plug-in ID.
 - 
                           
Define the plug-in version.
For more information, see Defining the Plug-in Version.
 - 
                           
Create the plug-in definition files:
- 
                                 
Create the plugin.xml file.
The plugin.xml file provides the metadata describing the plug-in.
For more information, see Creating the plugin.xml File.
 - 
                                 
Create the plugin_registry.xml file.
The plugin_registry.xml file provides the metadata required by the Management Agent to which the plug-in will be deployed.
For more information, see Creating the plugin_registry.xml File.
 
 - 
                                 
 - 
                           
Package the plug-in definition files in the plug-in staging directory (plugin_stage):
- 
                                 
plugin_stage/plugin.xml - 
                                 
plugin_stage/agent/plugin_registry.xml 
For more information, see Validating, Packaging, and Deploying the Plug-in.
 - 
                                 
 - 
                           
Validate the plug-in definition files.
For more information, see Validating Plug-in Definition Files
 
About Plug-in Metadata
A basic plug-in requires metadata for the plug-in itself, including information such as the name and version that is used by Oracle Management Service and Management Agents, definition of a metric indicating whether the monitored target is up, and definition of the frequency at which metric data should be collected.
Defining the Plug-in ID
- 
                              
Vendor ID (8 chars). For example:
test - 
                              
Plug-in Tag (4 chars). For example:
xkeyNote:
- 
                                       
The Vendor ID, Product ID, and Plug-in Tag must not begin with a number or include any special characters. All these parts must contain alphanumeric characters only.
 - 
                                       
The Plug-in Tag must begin with a lower-case x and cannot exceed 4 characters. All characters must be lower case.
 - 
                                       
If you are planning to define more than one plug-in, then make sure that the Plug-in Tag for each plug-in is distinct and unique.
 - 
                                       
If you want to maintain the previous names of existing plug-ins, then you must use the
AgentSideCompatibilityelement. Otherwise, plug-in validation will fail. For information about plug-in validation, see Validating, Packaging, and Deploying the Plug-in. For information about theAgentSideCompatibilityelement, see Table 2-1. 
 - 
                                       
 
The Plug-in ID created from the previous example would be:
test.switch.xkey
Note:
The plug-in ID must be unique across Enterprise Manager.
Defining the Plug-in Version
Each plug-in must be assigned a version. The plug-in versioning syntax is as follows:
a.b.c.d.e
- 
                              
a.b= The version of the Enterprise Manager Extensibility Development Kit (EDK) used for development (13.1, 13.2, and so on). - 
                              
c= The developer-assigned plug-in version. This value must be incremented with each plug-in release on the same Enterprise Manager release. - 
                              
d= Indicates whether the plug-in is a beta version or a production version. 0 indicates beta and 1 or later indicates production. - 
                              
e= For future use. The default value is 0. 
Putting it all together, the following example shows the first version of a plug-in created for Enterprise Manager 13c:
13.1.1.1.0
Note:
Oracle recommends that you update the plug-in version incrementally as you create and deploy each iteration of your plug-in. For example, 13.1.1.1.0, 13.1.2.1.0, 13.1.3.1.0, and so on.
Creating Plug-in Definition Files
The following two metadata files are required for all plug-ins deployed to Enterprise Manager.
- 
                           
                           
This file is used during plug-in deployment. It contains properties that identify the plug-in, such as name and version, and declares the set of target types that will be added to Enterprise Manager.
 - 
                           
                           
This file declares those components included in the plug-in that are to be deployed to the Management Agent.
 
Creating the plugin.xml File
The plugin.xml file provides the metadata describing the plug-in.
The following sections describe the required and some of the optional tags that you can include in the plugin.xml file.
This example provides a sample plugin.xml for a plug-in.
<?xml version = '1.0' encoding = 'UTF-8'?>
<Plugin xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.oracle.com/EnterpriseGridControl/plugin_
metadata plugin_metadata.xsd"
        xmlns="http://www.oracle.com/EnterpriseGridControl/plugin_metadata">
 <PluginId vendorId="test" productId="demo" pluginTag="xkey"/>
  <PluginVersion value="13.1.1.1.0"/>
  <ShortDescription>Test plugin for the Test Demo Plug-in.</ShortDescription>
  <Readme><![CDATA[Brief details about the Test Demo plug-in]]></Readme>
  <!--
  <AgentSideCompatibility>
     <Version>Previous_Version</Version>
  </AgentSideCompatibility>
  -->
  <TargetTypeList>
    <TargetType name="test_demo_xkey" isIncluded="TRUE">
       <VersionSupport>
        <SupportedVersion supportLevel="Basic" minVersion="9.2.0.1"
                          maxVersion="9.8.0.0.0"/>
      </VersionSupport>
    </TargetType>
  </TargetTypeList>
  <PluginDependencies>
   <DependentPlugin pluginDependencyType="RunTime">
    <DepPluginId vendorId="test" productId="switch" pluginTag="xyz1"/>
    <BaseVersion version="11.2.0.1.0"/>
   </DependentPlugin>
   <DependentPlugin pluginDependencyType="RunTime">
    <DepPluginId vendorId="test" productId="switch" pluginTag="xyz2"/>
    <BaseVersion version="11.2.0.1.0"></BaseVersion>
   </DependentPlugin>  </PluginDependencies>
  <PluginAttributes Type="MP" Category="Databases"/>
</Plugin>
Overview of plugin.xml Elements
Table 2-1 describes the key elements included within the plugin.xml files.
Table 2-1 Key Elements Within the plugin.xml File
| Element | Required | Description | 
|---|---|---|
| 
                                           
  | 
                                       
                                           Y  | 
                                       
                                           The root element for the file.  | 
                                    
| 
                                           
  | 
                                       
                                           Y  | 
                                       
                                           The unique identifier assigned to the plug-in. For more information, see Defining the Plug-in ID.  | 
                                    
| 
                                           
  | 
                                       
                                           Y  | 
                                       
                                           The plug-in version. For more information, see Defining the Plug-in Version.  | 
                                    
| 
                                           
  | 
                                       
                                           N  | 
                                       
                                           The operating system (OS) ID for the Oracle Management Service to which the plug-in will be deployed. Usually, this element is set to 2000 (generic). For more information, see Certifying Plug-ins.  | 
                                    
| 
                                           
  | 
                                       
                                           Y  | 
                                       
                                           Provides information about the plug-in that is displayed on the Plug-ins page of the Enterprise Manager console. To access the Plug-ins page, from the Setup menu, select Extensibility, then Self Update, and then Plug-ins.  | 
                                    
| 
                                           
  | 
                                       
                                           N  | 
                                       
                                           Defines plug-in attributes such as plug-in type, display name, category, and so on. The default Plug-in Type for metadata plug-ins is “MP". The default Category is “Others". Valid Type values: 
 Valid Category values: 
  | 
                                    
| 
                                           
  | 
                                       
                                           N  | 
                                       
                                           Contains one or more  For information about the target type metadata file, see Creating the Target Type Metadata File. Each   | 
                                    
| 
                                           
  | 
                                       
                                           N  | 
                                       
                                           Describes any dependencies that exist for the plug-in. Dependencies can be described as the following: 
  | 
                                    
| 
                                           
  | 
                                       
                                           N  | 
                                       
                                           Identifies the previous plug-in versions with which the current plug-in is compatible. By specifying this element, you indicate explicitly that the previous plug-in metadata on the Management Agent side is compatible with the new version of plug-in metadata on the OMS side. That is, after upgrading the previous plug-in, you can upload data to the new version on OMS without breaking any features, such as metrics, thresholds or configuration collections. If you have a previous version of a plug-in that is not compatible with the new version of the plug-in, then you can use this element to list the compatible versions only. For example, if version 12.1.0.2.0 is not compatible with 13.1.1.1.0 (new plug-in version), then you can list 12.1.0.3.0 and 12.1.0.4.0 to indicate that only 12.1.0.3.0 and 12.1.0.4.0 plug-ins are compatible with the new 13.1.1.1.0 plug-in.  | 
                                    
Certifying Plug-ins
Note:
All metadata plug-ins must be generic on the OMS side and are implicitly certified on all platforms. However, the plug-in can specify the OS certification for the Management Agent.
Because Enterprise Manager is released on a number of OS platforms, you must consider how your plug-in will behave on different OS platforms. The plugin.xml file contains elements and attributes that support a certification mechanism.
In cases, where the plug-in is applicable to only a subset of OS platforms, you can use the tags defined in Table 2-2. If you do not specify any information in the <Certification> section, the plug-in is assumed certified on all platforms. 
                           
Table 2-2 Certification Tags
| Tag | Description | 
|---|---|
| 
                                           
  | 
                                       
                                           Specifies the plug-in component. Valid values: 
  | 
                                    
| 
                                           
  | 
                                       
                                           Specifies the ARU ID for the OS or platform. Valid values: 
  | 
                                    
The following example indicates that the plug-in is designed to work on Linux 32 and Linux 64 platforms only. If you do not specify a certified port, then by default your plug-in is certified on all operating systems and platforms. But if you specify at least one PortARUId element, then that component is certified on those specified platforms only. 
                           
Note:
The Management Agent and Discovery components must have the same value
Example: Certifying Generic Plug-ins
<Certification>
  <Component type="Agent">
        <CertifiedPorts>
              <PortARUId value="46" />
              <PortARUId value="226" />
        </CertifiedPorts>
  </Component>
  <Component type="Discovery">
        <CertifiedPorts>
              <PortARUId value="46" />
              <PortARUId value="226" />
        </CertifiedPorts>
  </Component>
</Certification>
  Creating the plugin_registry.xml File
The plugin_registry.xml file provides the metadata required by the Management Agent that the plug-in will be deployed to. It is packaged in the /agent directory within the plug-in archive and is deployed to the Management Agent that will monitor a target.
The following example provides a sample plugin_registry.xml file. The TargetTypes element contains a reference to the target type metadata file location in the plug-in archive. The location is relative to the plugin_stage directory root, that is, starting from the Management Agent subdirectory or the same location where the plugin_registry.xml file is located.
                        
Similarly, the TargetCollections element contains a reference to the plug-in's default collection metadata file, which is also packaged with the plug-in. 
                        
Example: Sample plugin_registry.xml File
<?xml version="1.0"?>
<PlugIn ID="test.demo.xkey" Description="Demo Sample Host Plugin" Version="13.1.1.1.0" HotPluggable="false"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.oracle.com/EnterpriseGridControl/plugin plugin.xsd">
  <TargetTypes>
        <FileLocation>metadata/test_switch_key.xml</FileLocation>  </TargetTypes>
  <TargetCollections>
       <FileLocation>default_collection/test_switch_key_collection.xml</FileLocation>
  </TargetCollections>
  <PlugInLibrary>
    <FileLocation>archives/em-as-fmw-fetchlet.jar</FileLocation>
    <FetchletRegistration>
      <Fetchlet ID="DMS" ExecutionClass="oracle.sysman.as.fetchlets.DMSFetchlet" Version="" Description="" Adapter=""/>
    </FetchletRegistration>
    <AdditionalClassPath>
      <FileLocation>archives/dms.jar</FileLocation>
    </AdditionalClassPath>
  </PlugInLibrary>
</PlugIn>
Overview of plugin_registry.xml Elements
Table 2-3 describes the key elements included within the file.
Table 2-3 Key Elements Within the plugin_registry.xml File
| Element | Required | Description | 
|---|---|---|
| 
                                           
  | 
                                       
                                           Y  | 
                                       
                                           The root element for the file. It includes the following attributes: 
  | 
                                    
| 
                                           
  | 
                                       
                                           N  | 
                                       
                                           Contains one or more  For information about target type files, see Creating the Target Type Metadata File.  | 
                                    
| 
                                           
  | 
                                       
                                           N  | 
                                       
                                           Contains one or more  For information about this file, see Creating the Default Collection File.  | 
                                    
| 
                                           
  | 
                                       
                                           N  | 
                                       
                                           Lists the different types of artifacts (fetchlets, receivelets, and so on) packaged in the plug-in. The  
  | 
                                    
| 
                                           
  | 
                                       
                                           N  | 
                                       
                                           Specifies additional JAR files to be loaded by the plug-in that are shared by all the plug-in libraries  | 
                                    
Validating Plug-in Definition Files
To verify that your plugin.xml and plugin_registry.xml files are defined correctly, enter the following command from the /bin directory of the EDK:
empdk validate_plugin -stage_dir plugin_stage
In the preceding command, plugin_stage represents the plug-in staging directory.
For information about the EDK, see About the Extensibility Development Kit (EDK) and for more information about the empdk command and its usage, see Validating the Plug-in.
                     
Adding Log Viewer Support to Your Plug-in
You can enable log files for your deployed plug-in to be viewable with Enterprise Manager's Log Viewer. To access this component, from the Enterprise Manager Enterprise menu, select Monitoring, then Logs.
Follow these steps to enable this feature:
The following example provides an example of a log viewer registration file.
Example: Sample Log Viewer Registration File
<LogMgmtUITargetConfig TARGET_TYPE="%your targe type%"> <LogViewerImpl CLASS_NAME="oracle.sysman.emas.model.logmgmt.MASLogViewer"/> <VersionProperties VALID_VERSIONS="11" MIN_META_VER="11.00000"VERSION_ CATEGORY_PROP_WILDCARD_CHAR="*"/> </LogMgmtUITargetConfig>
Defining Plug-ins for Upgrade
During plug-in development, if you are planning a subsequent version of your plug-in, you must ensure that the plug-in can be upgraded, that is, you can deploy a new version without having to remove an older version of the plug-in.
To ensure that your plug-in can be upgraded:
Deprecating a Plug-in
To mark your plug-in for deprecation, add the following line to your plugin.xml file:
<Deprecated />
For example:
<?xml version = '1.0' encoding = 'UTF-8'?>
<Plugin xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.oracle.com/EnterpriseGridControl/plugin_        metadata plugin_metadata.xsd"
        xmlns="http://www.oracle.com/EnterpriseGridControl/plugin_metadata">
  <PluginId vendorId="test" productId="demo" pluginTag="xkey"/>
  <PluginVersion value="12.1.0.1.0"/>
  <Deprecated/>
  <ShortDescription>Test plugin for the Test Demo Plug-in.</ShortDescription>
  <Readme><![CDATA[Brief details about the Test Demo plug-in]]></Readme>
  .
  .
  .
Note:
When a plug-in is marked as deprecated, it continues to provide the same level of support until it is obsolete in the next major release.