Cisco Evolved Programmable Network Manager

The Message Bus Probe can be configured to obtain events from Cisco Evolved Programmable Network Manager.

The following configuration files are supplied with the probe for the integration:
  • message_bus_cisco_epnm.props
  • message_bus_cisco_epnm.rules
  • message_bus_cisco_epnm_parser_config.json
  • ciscoEpnmTransport.properties
To enable the Message Bus Probe to resynchronize with Cisco Evolved Programmable Network Manager, use the following steps:
  1. Configure the probe properties in the message_bus_cisco_epnm.props file.
    Host                             : 'CISCO_EPNM_HOSTNAME'
    Port                             : 443
    Username                         : 'CISCO_EPNM_USERNAME'
    Password                         : 'CISCO_EPNM_PASSWORD'
    Cookie                           : 'JSESSIONID'
    EnableSSL                        : 'true'
    KeyStore                         : 'PATH_TO/YOUR_KEYSTORE_FILE.jks'
    KeyStorePassword                 : 'YOUR_KEYSTORE_PASSWORD'
    
    MessageLog                       : '$OMNIHOME/log/message_bus_cisco_epnm.log'
    RulesFile                        : '$OMNIHOME/probes/<arch>/message_bus_cisco_epnm.rules' 
    PropsFile                        : '$OMNIHOME/probes/<arch>/message_bus_cisco_epnm.props'
    TransportFile                    : '$OMNIHOME/java/conf/ciscoEpnmTransport.properties'
    TransportType                    : 'WebSocket'
    TransformerFile                  : '$OMNIHOME/probes/<arch>/cisco_epnm_parser_config.json'
    
    RecordData                       : 'alm.system-update-time,com.iteratorId'
    DataBackupFile                   : '$OMNIHOME/probes/<arch>/ciscoEpnmPartialRsync.bak'
    ResyncBatchSize                  : 100
    
    InitialResync                    : 'true'
    ResyncInterval                   : 300 

    Update the properties with the values appropriate for your system.

    Note: Resync batch size can be set on the EMS to a specific value. You cannot overwrite settings on the EMS related to resync batch size by using ResyncBatchSize. The value set for ResyncBatchSize should match the resync batch size set on the EMS.
  2. Configure the transport properties in the ciscoEpnmTransport.properties file and make sure only the correct resyncRequestURI is uncommented. The default will retrieve alarms in batch filtered by severity.
    # Constructs the HTTP request which will be sent after the OAuth
    # access token request. 
    # A successful login request will return a HTTP Session Cookie JSESSIONID, which will be
    # stored in memory and pass to subsequent HTTP requests (configured using Cookie property 
    # of Message Bus probe).  
    loginRequestURI=/restconf/data/v1/cisco-customer:customer
    loginRequestMethod=GET
    #loginRequestContent
    #loginRequestHeaders=
    
    # Constructs the HTTP request which will be sent periodically.
    # The interval is configured by the ResyncInterval probe property.
     
    # Retrieve alarms based on system-update-time during resynchronization.
    # ++alm.system-update-time++ will be replaced by RecordData.alm.system-update-time in DataBackupFile during runtime.
    #resyncRequestURI=/restconf/data/v1/cisco-rtm:alarm?system-update-time=++alm.system-update-time++
     
    # Retrieve alarms in batch filtered by severity and a specific date and time
    # .startIndex is a start index of the data to be retrieved.
    # .maxCount is maximum number of objects to be retrieved.
    # ++ResyncBatchSize++ will be replaced by ResyncBatchSize which is defined in message_bus_cisco_epnm.props.
    # ++{0,0,++ResyncBatchSize++}++ is representing ++{start,stop,step}++.
    # .startIndex is derived by adding start and step for each request during runtime. The stop is set to 0 and not applicable.
    #resyncRequestURI=/restconf/data/v1/cisco-rtm:alarm?.startIndex=++{0,0,++ResyncBatchSize++}++&perceived-severity=major,minor,critical&system-update-time=2021-11-16%2006:21:15.268
    
    # Retrieve alarms in batch based on iteratorId during resynchronization.
    # ++com.iteratorId++ will be replaced by RecordData.com.iteratorId in DataBackupFile during runtime.
    # .startIndex is a start index of the data to be retrieved.
    # .maxCount is maximum number of objects to be retrieved.
    # ++ResyncBatchSize++ will be replaced by ResyncBatchSize which is defined in message_bus_cisco_epnm.props.
    # ++{0,0,++ResyncBatchSize++}++ is representing ++{start,stop,step}++.
    # .startIndex is derived by adding start and step for each request during runtime. The stop is set to 0 and not applicable.
    #resyncRequestURI=/restconf/data/v1/cisco-rtm:alarm?iteratorId=++com.iteratorId++&.startIndex=++{0,0,++ResyncBatchSize++}++&.maxCount=++ResyncBatchSize++
    
    # Retrieve alarms in batch filtered by severity
    # .startIndex is a start index of the data to be retrieved.
    # .maxCount is maximum number of objects to be retrieved.
    # ++ResyncBatchSize++ will be replaced by ResyncBatchSize which is defined in message_bus_cisco_epnm.props.
    # ++{0,0,++ResyncBatchSize++}++ is representing ++{start,stop,step}++.
    # .startIndex is derived by adding start and step for each request during runtime. The stop is set to 0 and not applicable.
    resyncRequestURI=/restconf/data/v1/cisco-rtm:alarm?.startIndex=++{0,0,++ResyncBatchSize++}++&perceived-severity=major,minor,critical&.maxCount=++ResyncBatchSize++
     
    resyncRequestMethod=GET
    #resyncRequestContent=
    #resyncRequestHeaders=
     
    Live events will arrive via websocket, by default this is disabled.  Customer can enable it by uncomment the following URI:
    # Specifies the path on the websocket server to connect.
    #webSocketURI=/restconf/streams/v1/alarm.json
    
    Note:
    1. So that resync can work, in the ciscoEpnmTransport.properties file you must set the following property:

      keepTokens=/com.response-message/com.header/com.lastIndex

      This ensures that the token com.lastIndex is kept between HTTP requests.

    2. The following entry:

      loginRequestURI=/restconf/data/v1/cisco-customer:customer

      is important in the EMS setting which requires the login details, and the probe needs the return cookie value from this call to be able to access the EMS.

    3. The configuration for live alarms is through the following property: webSocketURI=/restconf/streams/v1/alarm.json

      By default it is disabled in the ciscoEpnmTransport.properties file. To enable able it, uncomment following line:

      #webSocketURI=/restconf/streams/v1/alarm.json

      You should configure the parser for live alarm according to your EMS setup if live alarms are not using the same JSON structure.

  3. A successful login request will return an HTTP Session Cookie JSESSIONID which will be stored in memory and passed to subsequent HTTP requests. This is configured using the Cookie property of the Message Bus Probe.

    Make sure the cookie setting is correct. For example, there might be settings on the EMS which could specify a cookie name other than JSESSIONID, in which case you will need to modify the value for Cookie property in probe’s .props file accordingly. If the EMS has disabled authentication, then the login request URI and the Cookie property in the probe’s .props file can be commented out.

  4. The following entry has been added to the message_bus_cisco_epnm_parser_config.json file to parse live data from websocket:
    {
        "endpoint": "/restconf/streams/v1/alarm.json",
        "name": "Alarms",
        "config": {
          "dataToRecord": [ ],
          "messagePayload": "json.push\\.push-change-update",
          "messageHeader": "json.push\\.push-change-update",
          "jsonNestedPayload": "",
          "jsonNestedHeader": "",
          "messageDepth": 10
        }
      },