We contentedly announce the release of: vitrage 4.2.0: The OpenStack RCA Service This release is part of the stein release series. The source is available from: https://git.openstack.org/cgit/openstack/vitrage Download the package from: https://tarballs.openstack.org/vitrage/ For more details, please see below. 4.2.0 ^^^^^ New Features ************ * Datasource "end messages" previously used to notify the processor that get_all finished successfully. Are no longer used and are removed. Upgrade Notes ************* * Default Cinder API version is changed to v3. It's fully compatible with API v2. If you need to use Cinder API v2 you need to cinder_version='2' in the Vitrage configuration file. Deprecation Notes ***************** * Config option "initialization_interval" is deprecated and no longer used, due to the removal of datasource "end messages". * Config option "initialization_max_retries" is deprecated and no longer used, due to the removal of datasource "end messages". Changes in vitrage 4.1.0..4.2.0 ------------------------------- 9c09b0e bugfix - added None check b4a441b improve logging of events enqueued 45b54f5 remove redundant str() in logging and other 12bac36 Database read write in bulk 98e1fdf Fixes in the templates code ca66ef5 Small bug fix - remove not existing constant usage 552cad2 Remove end messages c7860c0 no need to create list 72ce36b Support templates with parameters in v3. a1d8290 Replace datasource variable with constant 2250840 add python 3.7 unit test job 7df96e1 fix minor spelling mistakes c779f67 Use Cinder API v3 by default 1aa1b08 optimize aodh/ceilometer/kubernetes datasource Diffstat (except docs and test files) ------------------------------------- .zuul.yaml | 1 + .../template_validation_status_code.rst | 10 +- .../cinder-default-version-9dfcb941996e32ab.yaml | 6 + .../remove_end_messages-e92e7b41a52c61cf.yaml | 9 + vitrage/api/controllers/v1/resource.py | 2 +- vitrage/api/controllers/v1/template.py | 2 +- vitrage/api/controllers/v1/webhook.py | 3 +- vitrage/api_handler/apis/event.py | 4 +- vitrage/api_handler/apis/rca.py | 2 +- vitrage/api_handler/apis/resource.py | 10 +- vitrage/api_handler/apis/template.py | 4 +- vitrage/api_handler/apis/topology.py | 2 +- vitrage/api_handler/apis/webhook.py | 7 +- vitrage/common/constants.py | 1 - vitrage/common/policies/rca.py | 2 +- vitrage/common/utils.py | 8 +- vitrage/datasources/alarm_driver_base.py | 2 +- vitrage/datasources/aodh/properties.py | 1 + vitrage/datasources/aodh/transformer.py | 2 +- vitrage/datasources/ceilometer/properties.py | 1 + vitrage/datasources/ceilometer/transformer.py | 2 +- vitrage/datasources/cinder/volume/properties.py | 10 ++ vitrage/datasources/cinder/volume/transformer.py | 54 +++--- .../datasources/collectd/collectd_vitrage/readme | 6 +- vitrage/datasources/collectd/driver.py | 2 +- vitrage/datasources/doctor/driver.py | 4 +- vitrage/datasources/driver_base.py | 18 +- vitrage/datasources/heat/stack/properties.py | 28 ++++ vitrage/datasources/heat/stack/transformer.py | 33 ++-- vitrage/datasources/kubernetes/properties.py | 6 - vitrage/datasources/kubernetes/transformer.py | 2 + vitrage/datasources/nagios/parser.py | 4 +- vitrage/datasources/neutron/network/transformer.py | 30 ++-- vitrage/datasources/neutron/port/driver.py | 8 +- vitrage/datasources/neutron/port/transformer.py | 42 +++-- vitrage/datasources/neutron/properties.py | 39 +++++ vitrage/datasources/nova/host/transformer.py | 8 +- vitrage/datasources/nova/instance/transformer.py | 2 +- vitrage/datasources/nova/properties.py | 25 +++ vitrage/datasources/nova/zone/transformer.py | 13 +- vitrage/datasources/prometheus/driver.py | 4 +- vitrage/datasources/prometheus/transformer.py | 2 +- vitrage/datasources/transformer_base.py | 31 +--- vitrage/datasources/zabbix/auxiliary/readme | 2 +- vitrage/entity_graph/consistency/__init__.py | 6 + .../consistency/consistency_enforcer.py | 18 +- vitrage/entity_graph/driver_exec.py | 9 +- vitrage/entity_graph/graph_init.py | 10 +- vitrage/entity_graph/graph_persistency.py | 11 +- vitrage/entity_graph/processor/notifier.py | 12 +- vitrage/entity_graph/processor/processor.py | 7 +- vitrage/entity_graph/processor/processor_utils.py | 4 +- vitrage/entity_graph/workers.py | 3 +- vitrage/evaluator/__init__.py | 6 +- vitrage/evaluator/actions/action_executor.py | 40 ++++- vitrage/evaluator/actions/notifier.py | 6 +- vitrage/evaluator/scenario_evaluator.py | 184 +++++++++++---------- vitrage/evaluator/scenario_repository.py | 4 +- .../evaluator/template_db/template_repository.py | 12 +- .../template_functions/function_resolver.py | 90 +++++----- .../evaluator/template_functions/v2/__init__.py | 21 ++- .../evaluator/template_functions/v2/functions.py | 43 ++--- .../evaluator/template_loading/scenario_loader.py | 4 +- vitrage/evaluator/template_schemas.py | 5 +- vitrage/evaluator/template_validation/__init__.py | 2 +- vitrage/evaluator/template_validation/base.py | 2 +- .../content/template_content_validator.py | 3 +- .../content/template_content_validator_v3.py | 14 +- .../content/v1/definitions_validator.py | 2 +- .../content/v1/get_param_validator.py | 22 ++- .../content/v2/get_param_validator.py | 22 ++- .../content/v2/metadata_validator.py | 2 +- .../template_validation/status_messages.py | 6 +- .../template_syntax_validator_v3.py | 10 ++ vitrage/graph/algo_driver/networkx_algorithm.py | 2 +- vitrage/graph/algo_driver/sub_graph_matching.py | 6 +- vitrage/graph/driver/elements.py | 5 +- vitrage/graph/driver/networkx_graph.py | 8 +- .../jaccard_correlation/alarm_data_accumulator.py | 4 +- .../plugins/jaccard_correlation/alarm_processor.py | 2 +- .../notifier/plugins/mistral/mistral_notifier.py | 5 +- vitrage/notifier/plugins/nova/nova_notifier.py | 6 +- vitrage/opts.py | 2 +- vitrage/os_clients.py | 2 +- vitrage/snmp_parsing/service.py | 4 +- vitrage/storage/__init__.py | 4 +- vitrage/storage/base.py | 2 +- vitrage/storage/history_facade.py | 6 +- vitrage/storage/impl_sqlalchemy.py | 39 ++++- .../functional/api_handler/test_templates_v2.py | 67 ++++++++ .../functional/api_handler/test_templates_v3.py | 60 +++++++ .../entity_graph/consistency/test_consistency.py | 23 +-- .../graph_persistor/test_graph_persistor.py | 4 +- .../functional/evaluator/test_action_executor.py | 47 +++--- .../evaluator/test_scenario_evaluator.py | 39 ++--- .../parameters/v2_with_extra_param_def.yaml | 43 +++++ .../parameters/v2_with_missing_param_def.yaml | 37 +++++ .../templates/parameters/v2_with_params.yaml | 41 +++++ .../templates/parameters/v2_without_params.yaml | 32 ++++ .../parameters/v3_with_extra_param_def.yaml | 30 ++++ .../parameters/v3_with_missing_param_def.yaml | 24 +++ .../templates/parameters/v3_with_params.yaml | 28 ++++ .../templates/parameters/with_extra_param_def.yaml | 43 ----- .../parameters/with_missing_param_def.yaml | 37 ----- .../templates/parameters/with_params.yaml | 41 ----- .../templates/parameters/without_params.yaml | 32 ---- .../kubernetes/test_kubernetes_transformer.py | 2 +- .../unit/datasources/static/test_static_driver.py | 4 +- .../content/v1/test_parameters_validator.py | 6 +- .../content/v2/test_parameters_validator.py | 87 ++++++---- .../test_template_syntax_validator.py | 2 +- 116 files changed, 1211 insertions(+), 797 deletions(-)