Define a tailored Scoper for each CDM

https://blueprints.launchpad.net/watcher/+spec/cdm-scoping

Problem description

Storage cluster data model was introduced in Pike cycle. Since the model is different from compute data model, current single CDM scoper does not work for the model.

Use Cases

As a Watcher user, I want to restrict scope of storage cluster data model.

Proposed change

  • Add _audit_scope instance attribute to the BaseClusterDataModelCollector and initialize when instantiated.

  • Remove audit_scope_handler from the current BaseStrategy and move it within the BaseClusterDataModelCollector.

  • Add audit_scope argument to CollectorManager’s get_cluster_model_collector method.

  • Change compute_model method to use Collector’s audit_scope_handler.

  • Change original DefaultScope.

    • get_scoped_model simply returns cluster_model.

    • For representing multi data model for JSON shema, we change DEFAULT_SCHEMA as the following:

      DEFAULT_SCHEMA = {
          "$schema": "http://json-schema.org/draft-04/schema#",
          "type": "object",
          "properties": {
              "compute": {
                  # current JSON schema moved to NovaClusterDataModelCollector
                  # retrieved from NovaClusterDataModelCollector
              },
              "storage": {
                  # retrieved from CinderClusterDatamodelCollector
              },
              .......
          }
      }
      

      Properties are dynamically retrieved from collector plugins.

    • Update validate method in AuditTemplatePostType in accordance with the above change.

  • Rename the DefaultScope as ComputeScope and override the audit_scope_handler property in the Compute Collector.

  • Change audit template help message in python-watcherclient.

Alternatives

None

Data model impact

None

REST API impact

Scope JSON schema definition for the audit template POST data from the request body will be changed in accordance with DEFAULT_SCHEMA change.

Security impact

None

Notifications impact

None

Other end user impact

End user defines audit scope in each audit template by specifying yaml or json file with –scope option. The file format will be changed according to JSON schema change.

Performance Impact

None

Other deployer impact

None

Developer impact

None

Implementation

Assignee(s)

Primary assignee:

<nakamura-h>

Other contributors:

<None>

Work Items

  • Add or remove audit_scope and audit_scope_handler from/to base classes.

  • Change original DefaultScope.

  • Change Compute Collector to use ComputeScope instead of DefaultScope.

  • Change python-watcherclient.

Dependencies

None

Testing

Unit test will be updated.

Documentation Impact

None, but it is preferable to adding more.