Skip Headers
Oracle® Communications Network Integrity Optical TMF814 CORBA Cartridge Guide
Release 7.1

E23711-01
Go to Documentation Home
Home
Go to Book List
Book List
Go to Table of Contents
Contents
Go to Feedback page
Contact Us

Go to previous page
Previous
PDF · Mobi · ePub

10 Design Studio Extension

This chapter contains examples and explanations on how to extend certain aspects of the Oracle Communications Network Integrity Optical TMF814 CORBA cartridge. See Network Integrity Developer Guide for more information. See Network Integrity Concepts for guidelines and best practices for extending cartridges.

The following examples are explained in this section:

Initializing a Custom Object Request Broker

This example explains how you can initialize a custom object request broker (ORB) instead of using the default ORB provided by the Network Integrity Cartridge for CORBA (CORBA cartridge).

To initialize a custom ORB:

  1. Open Oracle Communications Design Studio in the Design perspective.

  2. Create a new discovery action that re-uses the CORBA Abstract Discovery action.

  3. Add a Custom CORBA Property Initializer discovery processor after the CORBA Property Initializer processor.

    This processor overrides org.omg.CORBA.ORBClass, org.omg.CORBA.ORBSingletonClass, and any additional parameters specific to ORB implementation from the CORBAProperties JavaBean.

  4. Add a new Custom ORB Manager processor to perform custom lookup.

  5. (Optional) Disable NamingContextExt lookup.

    This operation may set the Naming Service Connection Flag to false, causing custom lookup to fail.

Extending the Discover TMF814 Action to Collect Vendor-Specific Information

This example explains how to model vendor-specific information. No new common object request broker architecture (CORBA) calls are required to the server because this data is already collected. In this example, managementIP of a managed element (ME) is used as the desired vendor-specific information.

  1. Open Design Studio in the Design perspective.

  2. Create a new cartridge project named TMF814SampleVendorExtension.

  3. Create a new discovery action named TMF814 Sample Vendor Extension action.

  4. Extend the new discovery action with the Discover TMF814 action.

  5. Create a Data Dictionary in the project named TMF814SampleVendorExtension.

  6. Add the following to the TMF814SampleVendorExtension Data Dictionary:

    • customTMF814MEGeneric dynamic specification with the tmf814MEGeneric base type and the Physical Device Specification type

    • managementIP characteristic

  7. Create a model collection in the project by adding all specifications from tmf814Generic. Add the newly created customTMF814MEGeneric specification from the Data Dictionary.

  8. Create a new discovery processor named Custom Device Modeler and insert it after the TMF814 Device Modeler processor. Specify physical device and managed element as input parameters to the processor.

  9. In the Custom Device Modeler processor, add code to populate physical device with managementIP, as shown in the following example:

    //Get ME form request
    ManagedElement_T me = request.getManagedElement();
    PhysicalDevice dev = request.getPhysicalDevice();
     
    //Create CustomTMF814MEGeneric spec isntance
    CustomTMF814MEGeneric customDevice = new CustomTMF814MEGeneric(dev);
     
    //TMFAdditionalInfoHelper is helper calls bundled with this cartridgeString managementIP = TMFAdditionalInfoHelper.getAdditionalInfo (me.additionalInfo, "managementIP");    customDevice.setManagementIP(managementIP);
    
  10. Build, deploy, and test your cartridge.

    Your new Custom Device Modeler processor is included and is run by the Discover TMF814 action, as shown in Figure 10-1.

    Figure 10-1 Custom Device Modeler Processor Workflow

    Description of Figure 10-1 follows
    Description of "Figure 10-1 Custom Device Modeler Processor Workflow"

Collecting Vendor-Specific Details for CTPs

This example explains how to model vendor-specific details about connection termination points (CTPs). CTP collection is handled differently from other objects because both the collecting and the modeling are handled by the same processor. In this example, vendorState of a CTP is used as the sought vendor-specific information.

  1. Open Design Studio in the Design perspective.

  2. Create a new cartridge project named TMF814SampleVendorExtension.

  3. Create a new discovery action named TMF814 Sample Vendor Extension action.

  4. Extend the new discovery action with the Discover TMF814 action.

  5. Create a Data Dictionary in the project named TMF814SampleVendorExtension.

  6. Open the TMF814_Model project.

  7. Click the tmf814Generic Data Dictionary.

    The Data Dictionary specifications are displayed.

  8. Copy the tmf814TPInterfaceGeneric specification to the Data Dictionary in the TMF814SampleVendorExtension project.

  9. Rename the copied specification to customTMF814TPInterfaceGeneric.

  10. Add the vendorState characteristic (element) to the customTMF814TPInterfaceGeneric specification.

  11. Create a model collection in the project.

  12. Add the customTMF814TPInterfaceGeneric specification to the model collection.

  13. Associate the model collection to the TMF814 Sample Vendor Extension action.

  14. Change to the Java perspective.

  15. In the TMF814SampleVendorExtension project, add a class that implements the oracle.communications.integrity.tmf814discovery.model.ctp.CTPModelCustomizer interface, as shown in the following example:

    /**
    * This is a CTP model customizer.
    */
     
    package com.vendor.ctp;
    import oracle.communications.integrity.tmf814discovery.model.ctp.CTPModelCustomizer;
    import oracle.communications.integrity.tmf814discovery.model.ocimtree.LogicalTree;
    import oracle.communications.inventory.api.entity.DeviceInterface;
    import org.tmforum.mtnm.terminationPoint.TerminationPoint_T;
     
    public class CTPModelCustomizerImpl implements CTPModelCustomizer {
     
      /**
      * Overriding customize method.
      * @param inter, modeled DeviceInterface
      * @param tp, TerminationPoint_T tmf object
      * @param tree
      */
     
      public void customize(DeviceInterface inter, TerminationPoint_T tp,  LogicalTree<Object> tree) {
        //1. Get vendor data from termination point.
        //2. Create new specification
        //3. Set vendor specific data to Information Model data.
      }
    }
     
    
  16. Switch back to the Design Studio perspective.

  17. Register the CTPModelCustomizerImpl class:

    1. Add a new processor to the TMF814 Sample Vendor Extension action. This processor should be added after TMF814 Property Customizer. Name the processor Vendor Property Customizer.

    2. For the Vendor Property Customizer processor, set the following context parameters:

      • Input: tmf814Properties(oracle.communications.integrity.tmf814discovery.beans.TMF814Properties)

      • Output: tmf814Properties(oracle.communications.integrity.tmf814discovery.beans.TMF814Properties)

    3. Create a Java implementation for the Vendor Property Customizer processor by adding code similar to the following example to the processor implementation:

      import oracle.communications.integrity.scanCartridges.sdk.ProcessorException;
      import oracle.communications.integrity.scanCartridges.sdk.context.DiscoveryProcessorContext;
      import oracle.communications.integrity.tmf814discovery.beans.TMF814Properties;
       
      public class VendorPropertyCustomizerProcessorImpl implements VendorPropertyCustomizerProcessorInterface {
       
        @Override
        public VendorPropertyCustomizerProcessorResponse invoke(
        DiscoveryProcessorContext context,
        VendorPropertyCustomizerProcessorRequest request) throws ProcessorException {
          //Get properties from request
          TMF814Properties prop = request.getTmf814Properties();
          //Set fully qualified name of above CTP customizer implementation class.
          prop.setCtpModelCustomizerImplClass("com.vendor.ctp.CT PModelCustomizerImpl");
          //Create processor response and set the prop to the response
          VendorPropertyCustomizerProcessorResponse response = new        VendorPropertyCustomizerProcessorResponse();
          response.setTmf814Properties(prop);
          return response;
        }
      }
       
      
  18. Save and close all files.

  19. Build, deploy, and test your cartridge.

Adding New Managers

To add a new manager:

  1. Open Design Studio in the Design perspective.

  2. Create a new processor named My Manager Initializer and insert it after the TMF814 Session Manager processor.

  3. Double-click on the new My Manager Initializer processor.

    The Processor Properties pane opens.

  4. Click the Context Parameters tab and specify the following input parameter:

    • sessionManager(oracle.communications.integrity.tmf814discovery.session.SessionManager)

  5. In the Output Parameters list, add all the managers that are initialized by the processor.

  6. Add the necessary logic to initialize the managers in the generated MyManagerInitilizerImpl class invoke() method.

    The following example shows the logic to initialize a new manager named My Manager:

    oracle.communications.integrity.tmf814discovery.session.SessionManager sessionManager = request.getSessionManager();
     
    //This method in sessionManager tries to create a manager identified by //specified manager name using currently active Ems Session.
     
    org.omg.CORBA.Object obj = sessionManager.getManager("My_Manager_Name");
     
    //Narrow the generic CORBA object to specific type. 
    My_Manager myManaer = My_Manager_IHelper.narrow(obj);
     
    
  7. Add all the managers to the response object of the invoke() method.

    All the processors following the TMF814 Manager Initializer processor can make use of the newly initialized managers.

    Note:

    If the new managers are used to collect new objects, you should design corresponding collector, discoverer, and modeler processors.

    If you wish to record the results, the discoverer processor needs to extend the TMF814 Device Recorded Initializer and TMF814 Device Recorder Persister processors. The postProcess() method needs to be run after each object is fetched. Update the writeRecord() method Java class for any new objects.

Creating a Custom Equipment Reconciliation Cartridge

You can create a custom equipment reconciliation cartridge that discovers your TMF814 equipment and reconciles it with your inventory system.

To create a custom equipment reconciliation cartridge:

  1. Open Design Studio in the Design perspective.

  2. Create a new cartridge project.

  3. Build a discovery action that extends either the Discover TMF814 action or Discover Abstract TMF814 action.

  4. Build an import action to import your inventory data into Network Integrity.

  5. Build a discrepancy detection action to compare your discovered TMF814 equipment data with your imported inventory equipment data.

  6. Build a discrepancy resolution action to correct discrepancies between your discovered TMF814 equipment data and your imported inventory equipment data.

  7. Build, deploy, and test your cartridge.

See MIB-II UIM Integration Cartridge Guide for more information if you use the MIB-II UIM Integration cartridge and you use Oracle Communications Unified Inventory Management (UIM) as your inventory system.

Creating a Custom Circuit Reconciliation Cartridge

You can create a custom circuit reconciliation cartridge that discovers your TMF814 circuit data and reconciles it with your inventory system.

Some element management systems (EMSs) and network management systems (NMSs) use a device model where the connection termination point (CTP) circuit name is assigned to the userLabel attribute. The following example requires that the EMS or NMS device model use the userLabel attribute of a CTP to hold the circuit name.

To create a custom circuit reconciliation cartridge:

  1. Open Design Studio in the Design perspective.

  2. Create a new cartridge project.

  3. Build an import action that does the following:

    • Retrieves physical devices

    • Retrieves logical devices

    • Maps circuit channel assignments by setting the userLabel attribute of the channel subinterface to the circuit name

  4. Build a discrepancy detection action.

  5. (Optional) Extend the discrepancy detection action to allow Network Integrity to search and group the discrepancy results by doing the following:

    1. Extend the initializer processor to register a filter against the device interface.

    2. Extend the action to run the filter when a discrepancy is detected against an interface. Populate either the Priority or Owner field with the corresponding circuit name.

      Tip:

      In the event of an attribute mismatch discrepancy, obtain the circuit name from the compareEntity entity.

      In the event of a missing or extra entity, obtain the circuit name from the childTargetEntity entity.

    This action obtains the circuit name and adds it to either the Owner or Priority field in the Network Integrity UI, allowing you to search for and sort by the circuit name.

  6. Build a reconciliation action to handle circuit discrepancies.

    Note:

    A channel assignment discrepancy may exist due to an incorrect userLabel attribute on the subinterface, or an extra or missing entity on the subinterface.

    If the circuit exists in the network but is missing from the inventory system, the discrepancy detection action returns multiple discrepancies. The reconciliation action may need to perform additional operations to correct a missing circuit.

  7. Build, deploy, and test your cartridge.

Customizing the JKLM Value Calculation

You can customize the JKLM value calculation used to model collected cross-connect data.

To customize the JKLM value calculation:

  1. Open Design Studio in the Design perspective.

  2. Build a discovery action that extends the Discover TMF814 action.

  3. Create a new processor called XCModelCustomizer and insert it after the TMF814 Property Customizer processor.

  4. Double-click the XCModelCustomizer processor.

    The Processor Properties pane opens.

  5. Configure the new processor to have the following input parameter:

    • tmf814Properties(oracle.communications.integrity.tmf814discovery.beans.TMF814Properties)

  6. Develop a new MyXCCustomizer.java Java class by implementing the oracle.communications.integrity.tmf814discovery.model.xc.XCModelCustomizer class with the customize() method.

  7. Develop the customize() method of the MyXCCustomizer.java class to customize the JKLM values for each cross-connect type.

  8. Develop the invoke() method of the MyXCCustomizer.java class to set the new class in the setXCModelCustomizerImplClass class, as shown in the following example:

    request.getTmf814Properties().setXCModelCustomizerImplClass("MyXCCustomizer")
     
    
  9. Build, deploy and test your cartridge.

    The XCModelCustomizer processor is run by the Discover TMF814 action in the order shown by Figure 10-2. All the processors following the XCModelCustomizer processor can make use of the newly initialized managers.

Figure 10-2 Customized JKLM Value Calculation Processors Workflow

Description of Figure 10-2 follows
Description of "Figure 10-2 Customized JKLM Value Calculation Processors Workflow"

Adding New CORBA API Calls

This example explains how arbitrary TMF814 objects that are not collected by default by the Optical TMF814 CORBA cartridge can be collection and modeled.

This example shows collection and modeling of GTP_T object, this is the general approach for any object.

To add new CORBA API calls:

  1. Open Design Studio in the Design perspective.

  2. Create a new cartridge project that includes a new discovery action with name Discover Custom TMF814 Objects.

  3. Extend the new discovery action with the Discover TMF814 action.

  4. Create a new discovery processor named TMF814 GTP Collector and insert it before the TMF814 Device Persister processor.

  5. Configure the TMF814 GTP Collector processor to have the following input parameters:

    • managedElement(org.tmforum.mtnm.managedElement.ManagedElement_T)

    • sessionManager(oracle.communications.integrity.tmf814discovery.session.SessionManager)

    • tmf814Properties(oracle.communications.integrity.tmf814discovery.beans.TMF814Properties)

  6. Configure the TMF814 GTP Collector processor to have the following output parameters:

    • gtpIterable(oracle.communications.integrity.tmf814discovery.collection.

      TMF814DiscoveryIterable< org.tmforum.mtnm.terminationPoint.GTP_T >)

  7. Create the TMF814GTPCollectorProcessorImpl java class to resemble the following example:

    import oracle.communications.integrity.scanCartridges.sdk.ProcessorException;
    import oracle.communications.integrity.scanCartridges.sdk.context.DiscoveryProcessorContext;
    import oracle.communications.integrity.tmf814discovery.beans.CustomProperties;
    import oracle.communications.integrity.tmf814discovery.beans.TMF814Properties;
    import oracle.communications.integrity.tmf814discovery.collection.TMF814DiscoveryIterable;
    import oracle.communications.integrity.tmf814discovery.discoverers.DiscovererRequest;
    import oracle.communications.integrity.tmf814discovery.discoverers.factory.Type;
    import oracle.communications.integrity.tmf814discovery.session.SessionManager;
    import oracle.communications.sce.integrity.sdk.processor.ProcessorFinalizer;
     
    import org.tmforum.mtnm.globaldefs.NameAndStringValue_T;
    import org.tmforum.mtnm.terminationPoint.GTP_T;
     
    import com.oracle.tmf814discovery.discoverers.GTPDiscoverer;
     
    public class TMF814GTPCollectorProcessorImpl implements
    TMF814GTPCollectorProcessorInterface, ProcessorFinalizer {
      private GTPDiscoverer discoverer;
     
      @Override
      public TMF814GTPCollectorProcessorResponse invoke(DiscoveryProcessorContext context, TMF814GTPCollectorProcessorRequest request) throws ProcessorException {
     
        //Get SessionManager from request
        SessionManager mgr = request.getSessionManager();
        NameAndStringValue_T[] meName = request.getManagedElement().name;
        TMF814Properties prop = request.getTmf814Properties();
     
        //Create GTPDiscoverer, this has the API calls to get GTP objects from Ems sytem.  
        discoverer =  new GTPDiscoverer(meName, prop, mgr);
     
        DiscovererRequest req= new DiscovererRequest(request.getTmf814Properties(), new CustomProperties());
        TMF814DiscoveryIterable<GTP_T> gtpIterable = new TMF814DiscoveryIterable<GTP_T>(Type.OTHER,req,  discoverer);
     
        //Create iterable for GTP and set to resposne
        TMF814GTPCollectorProcessorResponse res = new TMF814GTPCollectorProcessorResponse();
        res.setGtpIterable(gtpIterable);
        return res;
      }
      @Override
      public void close(boolean arg0) {
        if(discoverer != null){
          discoverer.destroy();
        }
      }
    }
     
    package com.oracle.tmf814discovery.discoverers;
     
    import java.util.Arrays;
    import java.util.Collections;
    import java.util.List;
    import java.util.logging.Level;
    import java.util.logging.Logger;
     
    import oracle.communications.integrity.scanCartridges.sdk.ProcessorException;
    import oracle.communications.integrity.tmf814discovery.beans.TMF814Properties;
    import oracle.communications.integrity.tmf814discovery.discoverers.TMF814Discoverer;
    import oracle.communications.integrity.tmf814discovery.session.SessionManager;
     
    import org.tmforum.mtnm.globaldefs.NameAndStringValue_T;
    import org.tmforum.mtnm.globaldefs.ProcessingFailureException;
    import org.tmforum.mtnm.managedElementManager.ManagedElementMgr_I;
    import org.tmforum.mtnm.terminationPoint.GTP_T;
    import org.tmforum.mtnm.terminationPoint.GTPiterator_I;
    import org.tmforum.mtnm.terminationPoint.GTPiterator_IHolder;
    import org.tmforum.mtnm.terminationPoint.GTPlist_THolder;
     
    public class GTPDiscoverer implements TMF814Discoverer<GTP_T>{
      protected static final Logger logger = Logger.getLogger(GTPDiscoverer.class.getName());
     
      private int fetchSize;
      private boolean isInitialTMFOperInvoked = false;
      private TMF814Properties tmf814Properties;
      private boolean isEOD = false; //Is End Of Discovery reached.
     
      private NameAndStringValue_T[] meName = null; //parent ME name
      private GTPiterator_I gtpIter = null;
      private ManagedElementMgr_I meMgr;
     
      public GTPDiscoverer(NameAndStringValue_T[] meName, TMF814Properties prop, SessionManager sessionMgr) throws ProcessorException {
        this.tmf814Properties = prop;
        this.meName = meName; 
        this.meMgr = sessionMgr.getManagedElementMgr();
        this.fetchSize = 1000;
      }
     
      /**
      *Every time the discover() method is called, certain number of objects
      *are called. Number of object to return is up the implementation. 
      *Empty iterator is returned indicating that there are no objects
      *to discover/retrieve further.
      */
     
      @Override
      public java.util.Iterator<GTP_T> discover(){
        if(isEOD){
          return Collections.<GTP_T>emptyList().iterator();   
        }
     
        List<GTP_T> result;
        if(! isInitialTMFOperInvoked ) {
          //Initialize GTP iteraror  
          result = fetchInitialElements();
          isInitialTMFOperInvoked = true;
        }else{
          //Once GTP iteraror is initialized, fetchMoreElements is called by the iterable. 
          result = fetchMoreElements();
        }
        if(result.isEmpty() || (getFetchSize() >  result.size()) ){
          isEOD= true;
          destroy();
        }
        return result.iterator();
      }
     
      private int getFetchSize() {
        return fetchSize;
      }
     
      public List<GTP_T> fetchInitialElements() {
        GTPlist_THolder gtpListHolder = new GTPlist_THolder();
        GTPiterator_IHolder gtpIterHolder = new GTPiterator_IHolder();
        try {
          meMgr.getAllGTPs(meName, new short[]{}, 2000, gtpListHolder, gtpIterHolder);
          gtpIter = gtpIterHolder.value;
          if ( gtpListHolder.value != null) {
            return Arrays.<GTP_T>asList(gtpListHolder.value);
          }
        } catch (Exception e) {
          logger.log(Level.SEVERE, "getAllGTP: Error while getting initial gtps", e);
        }
        return Collections.<GTP_T>emptyList();
      }
     
      public List<GTP_T> fetchMoreElements() {
        if(gtpIter != null){
          GTPlist_THolder gtpListHolder = new GTPlist_THolder();
          try {
            gtpIter.next_n(2000, gtpListHolder);
          } catch (ProcessingFailureException e) {
            logger.log(Level.SEVERE, "getAllGTP(next_n): Error while getting more gtps", e);
          }
          if(gtpListHolder.value != null && gtpListHolder.value.length > 0){
            return Arrays.<GTP_T>asList(gtpListHolder.value);
          }
        }
        return Collections.<GTP_T>emptyList();
      }
     
      @Override
      public void destroy() {
        if (gtpIter != null) {
          try{
            gtpIter.destroy();
          }catch (ProcessingFailureException e) {
            logger.log(Level.INFO, "exception while closing gtp iterator", e);
          }
          gtpIter = null;
        }
      }
    }
    
  8. Create a For Each processor after the TMF814 GTP Collector processor.

  9. Specify the following values for the For Each processor:

    • In the Select Collection Name field, enter gtpIterable.

    • In the Variable Name field, enter gtp.

  10. Within the For Each processor, create a processor named TMF814 GTP Modeler. The TMF814 GTP Modeler processor is responsible for modeling each input GTP_T as an Oracle Communications Information Model object and adding it to the result.

  11. Configure the TMF814 GTP Modeler processor to have the following input parameters:

    • gtp(org.tmforum.mtnm.terminationPoint.GTP_T)

  12. Configure the TMF814 GTP Modeler processor to have the following output parameters:

    • Modeled Information Model representation of gtp.

  13. Design the TMF814 GTP Modeler processor to find the correct Information Model mapping object for the TMF814 GTP object and add to the result.

  14. Build, deploy, and test your cartridge.

    The TMF814 GTP Collector and TMF814 GTP Modeler processors are run by the Discover Custom TMF814 action in the order shown by Figure 10-3.

Figure 10-3 New CORBA API Calls Processor Workflow

Description of Figure 10-3 follows
Description of "Figure 10-3 New CORBA API Calls Processor Workflow"

Collecting and Modeling Protection Role Information

You can extend the Optical TMF814 CORBA cartridge to collect protection role information on cross-connect segments. The protection role status can be made available to other cartridges and follow-on actions.

Because there are no known APIs to obtain protection data from devices, this scenario assumes that the protection role information is avaible from another source of data, such as in a CVS file.

To collect protection role data on cross-connect segments:

  1. Open Design Studio in the Design perspective.

  2. Build a discovery action that extends the Discover TMF814 action.

  3. Create a new processor called XCModelCustomizer and insert it after the TMF814 Property Customizer processor.

  4. Double-click the new processor.

    The Processor Properties pane opens.

  5. Configure the new processor to have the following input parameter:

    • tmf814Properties(oracle.communications.integrity.tmf814discovery.beans.TMF814Properties)

  6. Develop a new MyXCCustomizer.java Java class by implementing the oracle.communications.integrity.tmf814discovery.model.xc.XCModelCustomizer class with the customize() method.

  7. Develop the customize() method of the MyXCCustomizer.java class to populate the protection role for each cross-connect segment, as shown in the example below:

    import oracle.communications.integrity.tmf814discovery.model.xc.XCModelCustomizer;
    import oracle.communications.inventory.api.entity.InvGroupRef;
    import oracle.communications.inventory.api.entity.InventoryGroup;
    import oracle.communications.inventory.api.entity.Pipe;
     
    import org.tmforum.mtnm.subnetworkConnection.CrossConnect_T;
     
    public class MyXCCustomizer implements XCModelCustomizer {
      public static final String PROTECTIONROLE = "protectionRole";
      @Override
      public InventoryGroup customize(CrossConnect_T xc, InventoryGroup ccGroup) {
        Set<InvGroupRef>  segmentRelSet = ccGroup.getMembers();
        for(InvGroupRef ref : segmentRelSet){
          Pipe pipe = ref.getPipe();
        //Get protection information for this segment from a data source. 
          String prorectionRole = /*Get it from external source*/
          pipe.getCharacteristicMap().get(PROTECTIONROLE).setValue(prorectionRole);
        }
        return ccGroup;
      }
     
    }
     
    
  8. Develop the invoke() method of the MyXCCustomizer.java class to set the new class in the setXCModelCustomizerImplClass class, as in the following example:

    request.getTmf814Properties().setXCModelCustomizerImplClass("MyXCCustomizer")
     
    
  9. Build, deploy and test your cartridge.

    The XCModelCustomizer processor is run by the Discover TMF814 action. All the processors following the XCModelCustomizer processor can make use of the information.

Discovering Custom Device or Result Group Names

You may want to customize the way discovered devices and result groups are named to match how they are named in your inventory system.

To customize how discovered devices and result groups are named:

  1. Open Design Studio in the Design perspective.

  2. Create a new cartridge project.

  3. Create a new discovery action that extends the Discover TMF814 action.

  4. Create a new processor and insert it after the TMF814 Property Initializer processor.

  5. Set the new processor to use tmfNameToDeviceMap, the output from the TMF814 Property Initializer processor, as its input.

  6. Map each device or result group to tmfNameToDeviceMap, as in the following example:

    nameToNativeEmsMap1.addMapping(tmf814_Name, custom_Name)
     
    

    Where tmf814_Name is the ManagedElement tuple value of ManagedElement_T.name and custome_Name is the custom name of the device.

  7. Build, deploy and test your cartridge.