Processing of Device Change Notifications Overview
All the device change notifications are processed by the following EJB:
net.juniper.jmp.cm.notification.inventory.device.cmp.CMDeviceChangeNotificationMDB
The method handleDeviceChange() is called passing a result of type DeviceChangeDiffResult, which provides the following parts of information:
Device ID—The ID of the device in the notification
Notification Meta Data—The type of update—whether the configuration has been modified out-of-band or using Connectivity Servcices Director.
DiffResults—A map containing the changed configuration from different configuration parameters on the CLI. The map contains the following keys:
Configuration
hardware-inventory
interface-inventory
software-inventory
license-inventory
system-information
logical-interface-inventory
configuration-version
Device ID—The ID of the device in the notification
Changed XPath List—The changed XPath list can be retrieved by querying getChangedXpathList() on result object.
For Service Recovery, Connectivity Services Director examines notifications that will match following criteria:
Type of update is OutOfBand.
DiffResults for “configuration” is not empty.
Changed XPath list is from the interested XPath list for services supported in Connectivity Services Director. For the Connectivity Services Director application, an interested XPath list is maintained. If the changed XPath list contains any XPath from the interested XPath list, the configuration difference is processed.
XPaths of Relevance to Connectivity Services Director
All the XPaths are not processed for service recovery. Instead, an interested or relevant XPath list is maintained for Connectivity Services Director. If the changed XPath list contains any of the following XPath attributes, the configuration differential-set is processed to determine the impacted service because of an update to service settings.
/configuration/routing-instances/instance /configuration/firewall/family/vpls /configuration/firewall/family/ccc /configuration/firewall/policer/ /configuration/interfaces/interface /configuration/interfaces/interface/unit /configuration/policy-options/ /configuration/protocol/l2circuit /configuration/protocol/local-switching
Processing of XPath Notifications for Out-of-Band Configuration Changes
A network managed by Connectivity Services Director has three repositories of information about the configuration of a network device—the configuration stored on the device itself, the device configuration record maintained by Junos Space, and the Build mode configuration maintained by Connectivity Services Director. When the configuration contained in all three repositories match, the device configuration state is shown as In Sync in Connectivity Services Director. When the repositories do not match, the configuration state is shown as Out of Sync. A common cause for this state is out-of-band configuration changes—that is, configuration changes made to a device outside of Connectivity Services Director.
When a device state is Out of Sync, you cannot deploy configuration changes on the device in Deploy mode. Use the Resynchronize Device Configuration task to resynchronize the three configuration repositories and change the device configuration state back to In Sync.
This section describes the different scenarios for out-of-band configuration change on the device and the approach to determine the service impacted by the change. Any XPath change list and configuration differences can belong to any of the following categories:
Change to the existing endpoint on the service
Missing or new endpoint on the service
Endpoint for the new service
Deleted endpoint for the existing service
The following list of attributes is used to identify neighbor service elements:
When serviceType is ServiceTypesEnum.ELINEMARTINI
vcID lsName lsEndName/LsEndIf: deviceID
When serviceType is ServiceTypesEnum.ELINEKOMPELLA
routeTarget
When serviceType is ServiceTypesEnum.VPLS
vplsID routeTarget hubRouteTarget spokeRouteTarget
When serviceType is ServiceTypesEnum.L3VPN
routeTarget hubRouteTarget spokeRouteTarget