congress.cfg_validator.agent.agent module

Agent is the main entry point for the configuration validator agent.

The agent is executed on the different nodes of the cloud and sends back configuration values and metadata to the configuration validator datasource driver.

class congress.cfg_validator.agent.agent.Config(path, template, service_name)

Bases: object

Encapsulates a configuration file and its meta-data.

Attributes:
ivar path

Path to the configuration on the local file system.

ivar template

A Template object to use for parsing the configuration.

ivar data

The normalized Namespace loaded by oslo-config, contains the parsed values.

ivar hash

Hash of the configuration file, salted with the hostname and the template hash

ivar service_name

The associated service name

get_info()

Information on the configuration file.

Returns

a quadruple made of: * the hash of the template, * the path to the file, * the content * the service name.

parse(host)

Parses the config at the path given. Updates data and hash.

host: the name of the host where the config is. Used for building a unique hash.

static sanitize_config(conf)

Sanitizes some cfg.ConfigOpts values, given its options meta-data.

Parameters

conf – A cfg.ConfigOpts object, pre-loaded with its options meta-data and with its configurations values.

class congress.cfg_validator.agent.agent.ConfigManager(host, services_files)

Bases: object

Manages the services configuration files on a node and their meta-data.

Attributes:
ivar host

A hostname.

ivar configs

A dict mapping config hashes to their associated Config object.

ivar templates

A dict mapping template hashes to their associated Template object.

ivar namespaces

A dict mapping namespace hashes to their associated Namespace object.

add_template(template_path)

Adds a new template (loads it from path).

Parameters

template_path – a valid path to the template file.

get_template_by_path(template_path)

Given a path finds the corresponding template if it is registered

Parameters

template_path – the path of the searched template

Returns

None or the template

register_config(config_path, template_path, service_name)

Register a configuration file and its associated template.

Template and config are actually parsed and loaded.

Parameters
  • config_path – a valid path to the config file.

  • template_path – a valid path to the template file.

register_service(service_name, files)

Register all configs for an identified service.

Inaccessible files are ignored and files registration pursues.

Parameters
  • service_name – The name of the service

  • files – A dict, mapping a configuration path to its associated template path

class congress.cfg_validator.agent.agent.Namespace(name)

Bases: object

Encapsulates a namespace, as defined by oslo-config-generator.

It contains the actual meta-data of the options. The data is loaded from the service source code, by means of oslo-config-generator.

Attributes:

name: The name, as used by oslo-config-generator. data: The meta-data of the configuration options. hash: Hash of the namespace.

get_info()

Information on the namespace

Returns

a tuple containing * data: the content of the namespace * name: the name of the namespace

static load(name)

Loads a namespace from disk

Parameters

name – the name of namespace to load.

Returns

a fully configured namespace.

class congress.cfg_validator.agent.agent.Template(path, output_file)

Bases: object

Describes a template, as defined by oslo-config-generator.

Attributes:
ivar name

The name, as used by oslo-config-generator.

ivar path

The path to the template configuration file, as defined by oslo-config-generator, on the local file system.

ivar output_file

The default output path for this template.

ivar namespaces

A set of Namespace objects, which make up this template.

get_info()

Info on the template

Returns

a quadruple made of: * path: the path to the template path * name: the name of the template * output_fle: * namespaces: an array of namespace hashes.

static load(template_path)

Loads a template configuration file

Parameters

template_path – path to the template

Returns

a fully configured Template object.

class congress.cfg_validator.agent.agent.ValidatorAgentEndpoint(conf=None)

Bases: object

Validator Agent.

It is used as an RPC endpoint.

Attributes:

config_manager: ConfigManager object. driver_api: RPC client to communicate with the driver.

get_config(context, **kwargs)

“Sends back a config

Parameters
  • context – the RPC context

  • hash – the hash of the config to send

Returns

the config or None if not found

get_namespace(context, **kwargs)

“Sends back a namespace

Parameters
  • context – the RPC context

  • hash – the hash of the namespace to send

Returns

the namespace or None if not found

get_template(context, **kwargs)

“Sends back a template

Parameters
  • context – the RPC context

  • hash – the hash of the template to send

Returns

the template or None if not found

publish_configs_hashes(context, **kwargs)

“Sends back all configuration hashes

publish_templates_hashes(context, **kwargs)

“Sends back all template hashes

congress.cfg_validator.agent.agent.main()

Agent entry point