Committing a configuration for the system does not mean the components are configured. The information needs to pass through additional phases that depend on other JUNOS processes and on the data component. These parts behave independenly of the management component, and thus coordination is needed which can affect the externally visible functionality of the management component.
Messages are logged as the configuration is loaded in these phases, so that the effects of the configuration might not appear immediately. Logging is done through syslog at the external facility and at the informational level. The MONITUBE
log tag is used so that messages from this system can easily be filtered for viewing. Additionally, configuring traceoptions enables supplementary debug and informational logging to the configured trace file.
The management component needs to parse, validate and load the configuration hierarchy introduced in Configuring the IPTV Monitor. This is triggered by a configured change, and the data component might not be available and connected at the time. To cope with this challenge, the management component stores a record of the configuration actions to achieve its end goal of sending accurate configuration to the data component.
The management component finds the monitube extension-service
configuration and checks it for validity; at that time, it stores the existing and deleted monitored-networks
configurations with an action of changed
or deleted
. It performs the same actions with the configured mirrors. The code that performs these actions is in the functions parse_monitors()
and parse_mirrors()
,in the file monitube-mgmt_config
.c.
These records of configuration changes are maintained in a list until the data component is available to receive the information. This may already be the case (likely) if the data component is not in the process of starting for the first time. Nonetheless, at this point the management component processes the list of each configuration change or delete record, and sends this information along with the pertinent action in a message to the data component. The code that updates the list is in the functions update_monitor()
and update_mirror()
,in the file monitube-mgmt_config
.c.
changed
or deleted
. The code that receives the configuration is in the functions update_monitor()
and update_mirror()
,in the file monitube-data_config
.c.When a configuration is added, it affects only the stored configuration state applied to new sessions. However, changes and deletions can cause the known flows' state information in the lookup table to become stale.
The configuration manager removes flow entries from destinations that are no longer monitored or mirrored. Changes in the configuration can simply be applied to the flows' state, but the MDI statistics state is reset.
The code that removes flow entries is in the functions clear_monitors_configuration()
in the file monitube-data_config
.c. In the same file, delete_monitor()
removes a single monitor, and delete_mirror()
a single mirror, whereas the clear()
functions remove all monitors or all mirrors. delete_address()
removes a single prefix (address) configured for a monitor.