Update service monitor to transition from ifmap to rabbitmq

Registered by Rudra Rugge

Service monitor implementation prior to 2.1 release relies on IFMAP messages to receive configuration data. The plan going forward is to use rabbitmq for receiving configuration objects. Combination of receiving messages on rabbit and storing a local cache of configuration objects helps improve the performance as requests to API server for any reads are eliminated. The cache is populated on startup by reading directly from the configuration database. All configuration changes after the startup are received using AMPQ from rabbitmq messaging server.

The main changes for as part of this blueprint:

1. Dependency tracker implemented for the python configuration daemons is being used in service monitor. Dependency tracker was implemented as part of the device manager implementation.

2. Direct read from cassandra on startup. All the configuration objects are read directly from the cassandra database and stored in the local cache (dependency tracker).

3. Move to rabbitmq for receiving updates from API server. Service monitor will not receive messages from IFMAP server but will subscribe to rabbit for receiving any updates to the configuration. The updates received are stored in the dependency tracker as well. We use the VncKombuClient with the following parameters:
- rabbit server and port information
- rabbit username and password
- q_name as svc_mon.hostname
- callback function to handle messages
- logging function

4. Provisioning of service monitor now requires rabbit_host and rabbit_port to be configured in /etc/contrail/contrail-svc-monitor.conf. This configuration should match the rabbit configuration in /etc/contrail/contrail-api.conf

Blueprint information

Status:
Complete
Approver:
None
Priority:
High
Drafter:
Rudra Rugge
Direction:
Approved
Assignee:
Rudra Rugge
Definition:
Approved
Series goal:
Accepted for trunk
Implementation:
Implemented
Milestone target:
None
Started by
Rudra Rugge
Completed by
Rudra Rugge

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.