template not operator support
Change-Id: Ifbeb468eb7eb79fbf950690b69d78095ed7051e1
This commit is contained in:
parent
fbc6d35cf2
commit
f6b3826f8a
105
specs/pike/template-not-operator-support.rst
Normal file
105
specs/pike/template-not-operator-support.rst
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
..
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||||
|
License.
|
||||||
|
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
=============================
|
||||||
|
Template not operator Support
|
||||||
|
=============================
|
||||||
|
|
||||||
|
We would like the templates language to support the "not" operator in addition
|
||||||
|
to "and" and "or" operators.
|
||||||
|
|
||||||
|
Problem description
|
||||||
|
===================
|
||||||
|
|
||||||
|
Today the templates language support the "and" and "or" operators, but this is
|
||||||
|
not enough.
|
||||||
|
Many scenarios can't be described by those two operators, and thus we would
|
||||||
|
like to add a support for the "not" operator.
|
||||||
|
|
||||||
|
Proposed change
|
||||||
|
===============
|
||||||
|
|
||||||
|
Remark: positive vertex = vertex that has an edge with "is_deleted"=False property.
|
||||||
|
negative vertex = the opposite of positive vertex. Meaning that the
|
||||||
|
vertex has only edges with "is_deleted"=True property.
|
||||||
|
|
||||||
|
The following changes needs to be done to support the "not" operator.
|
||||||
|
|
||||||
|
1. In the template validation. Check that the "Not" operator can appear only
|
||||||
|
in the following way:
|
||||||
|
|
||||||
|
"Not" operator can appear before edges.
|
||||||
|
|
||||||
|
2. Scenario Evaluator:
|
||||||
|
|
||||||
|
check if "not" operator appears on an element, and add a property named
|
||||||
|
"negative_condition" on it, and updated it's "is_delete" property to True.
|
||||||
|
|
||||||
|
3. Networkx Algorithm:
|
||||||
|
|
||||||
|
In the subgraph_matching method. If the match is not a "negative condition"
|
||||||
|
then perform regular subgraph_matching.
|
||||||
|
Otherwise, if the match is a "negative condition" then perform
|
||||||
|
subgraph_matching on a negative edges.
|
||||||
|
|
||||||
|
|
||||||
|
Performance/Scalability Impacts
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
The performance of the subgraph matching algorithm is a bit slower due to
|
||||||
|
the steps above.
|
||||||
|
|
||||||
|
|
||||||
|
Other deployer impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Developer impact
|
||||||
|
----------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Primary assignee:
|
||||||
|
alexey_weyl <alexey.weyl@nokia.com>
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
----------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Future lifecycle
|
||||||
|
================
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Testing
|
||||||
|
=======
|
||||||
|
|
||||||
|
Added tests that are checking different uses of the "not" operator.
|
||||||
|
|
||||||
|
Documentation Impact
|
||||||
|
====================
|
||||||
|
|
||||||
|
Added documentation in Vitrage:
|
||||||
|
https://github.com/openstack/vitrage/blob/master/doc/source/not_operator_support.rst
|
||||||
|
|
||||||
|
References
|
||||||
|
==========
|
||||||
|
|
||||||
|
None
|
Loading…
Reference in New Issue
Block a user