)]}'
{"vitrage/evaluator/__init__.py":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"236af212d94233f887500d927c3fffff7e71fec1","unresolved":false,"context_lines":[{"line_number":21,"context_line":"               default\u003d\u0027/etc/vitrage/templates\u0027,"},{"line_number":22,"context_line":"               help\u003d\u0027A path for the templates used by the evaluator\u0027"},{"line_number":23,"context_line":"               ),"},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027equivalences_dir\u0027,"},{"line_number":25,"context_line":"               default\u003d\u0027/etc/vitrage/equivalences\u0027,"},{"line_number":26,"context_line":"               help\u003d\u0027A path for entity equivalences used by the evaluator\u0027"},{"line_number":27,"context_line":"               )"},{"line_number":28,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_13f9847f","line":27,"range":{"start_line":24,"start_character":0,"end_line":27,"end_character":16},"updated":"2017-05-28 06:50:43.000000000","message":"I\u0027m afraid that people looking at the templates will miss the equivalence definitions and won\u0027t get the full picture. \nHow about putting the equivalences in the same directory with the templates, or changing the default directory to /etc/vitrage/templates/equivalences?","commit_id":"b7add4b8a0cc25b51cfaf2c71d1626de32abd9f5"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"c95e06b78eb1218343b051e85789468783b84d1a","unresolved":false,"context_lines":[{"line_number":21,"context_line":"               default\u003d\u0027/etc/vitrage/templates\u0027,"},{"line_number":22,"context_line":"               help\u003d\u0027A path for the templates used by the evaluator\u0027"},{"line_number":23,"context_line":"               ),"},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027equivalences_dir\u0027,"},{"line_number":25,"context_line":"               default\u003d\u0027/etc/vitrage/equivalences\u0027,"},{"line_number":26,"context_line":"               help\u003d\u0027A path for entity equivalences used by the evaluator\u0027"},{"line_number":27,"context_line":"               )"},{"line_number":28,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_a74ba985","line":27,"range":{"start_line":24,"start_character":0,"end_line":27,"end_character":16},"in_reply_to":"df140735_073db5ba","updated":"2017-05-29 07:28:07.000000000","message":"So how about having:\n- templates\n  \u003call templates here\u003e\n  - equivalences\n    \u003call equivalences here\u003e\n\nIn many cases the equivalences folder may be empty or won\u0027t exist, so having templates/scenario would be strange. \nAnd maybe you can keep the scenario repository as is, and just change the default equivalence_dir to be under /etc/vitrage/templates/equivalences. And make sure the folder is ignored when reading all templates under /etc/vitrage/templates.","commit_id":"b7add4b8a0cc25b51cfaf2c71d1626de32abd9f5"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"a82c9ac0952a5f338ef6e8458e0a208f50b66673","unresolved":false,"context_lines":[{"line_number":21,"context_line":"               default\u003d\u0027/etc/vitrage/templates\u0027,"},{"line_number":22,"context_line":"               help\u003d\u0027A path for the templates used by the evaluator\u0027"},{"line_number":23,"context_line":"               ),"},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027equivalences_dir\u0027,"},{"line_number":25,"context_line":"               default\u003d\u0027/etc/vitrage/equivalences\u0027,"},{"line_number":26,"context_line":"               help\u003d\u0027A path for entity equivalences used by the evaluator\u0027"},{"line_number":27,"context_line":"               )"},{"line_number":28,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_073db5ba","line":27,"range":{"start_line":24,"start_character":0,"end_line":27,"end_character":16},"in_reply_to":"df140735_13f9847f","updated":"2017-05-29 07:09:25.000000000","message":"We can, but it may require refactoring on scenario_repository.\n\nIt seems it will try to load all files in the folder as templates https://github.com/openstack/vitrage/blob/master/vitrage/evaluator/scenario_repository.py#L98\n\nWhat about a folder structure like \n\n- templates\n  - scenarios\n  - equivalences\n\nSo we can limit scenario_repository to load from scenario folder only.","commit_id":"b7add4b8a0cc25b51cfaf2c71d1626de32abd9f5"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"393f128ca8dee1fce3148f088a7442c12967059e","unresolved":false,"context_lines":[{"line_number":21,"context_line":"               default\u003d\u0027/etc/vitrage/templates\u0027,"},{"line_number":22,"context_line":"               help\u003d\u0027A path for the templates used by the evaluator\u0027"},{"line_number":23,"context_line":"               ),"},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027equivalences_dir\u0027,"},{"line_number":25,"context_line":"               default\u003d\u0027/etc/vitrage/equivalences\u0027,"},{"line_number":26,"context_line":"               help\u003d\u0027A path for entity equivalences used by the evaluator\u0027"},{"line_number":27,"context_line":"               )"},{"line_number":28,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_30ab4b1e","line":27,"range":{"start_line":24,"start_character":0,"end_line":27,"end_character":16},"in_reply_to":"df140735_a74ba985","updated":"2017-05-29 13:18:49.000000000","message":"Good for me.","commit_id":"b7add4b8a0cc25b51cfaf2c71d1626de32abd9f5"}],"vitrage/evaluator/equivalence_data.py":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"236af212d94233f887500d927c3fffff7e71fec1","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def __init__(self, equivalence_def):"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"        self.name \u003d equivalence_def[EFields.METADATA][EFields.NAME]"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"        self.equivalences \u003d self._build_equivalences("},{"line_number":27,"context_line":"            equivalence_def[EFields.EQUIVALENCES])"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    @property"},{"line_number":30,"context_line":"    def equivalences(self):"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_53349c4a","line":27,"range":{"start_line":24,"start_character":0,"end_line":27,"end_character":50},"updated":"2017-05-28 06:50:43.000000000","message":"I think you should add try/catch","commit_id":"b7add4b8a0cc25b51cfaf2c71d1626de32abd9f5"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"a82c9ac0952a5f338ef6e8458e0a208f50b66673","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def __init__(self, equivalence_def):"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"        self.name \u003d equivalence_def[EFields.METADATA][EFields.NAME]"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"        self.equivalences \u003d self._build_equivalences("},{"line_number":27,"context_line":"            equivalence_def[EFields.EQUIVALENCES])"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    @property"},{"line_number":30,"context_line":"    def equivalences(self):"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_8788a571","line":27,"range":{"start_line":24,"start_character":0,"end_line":27,"end_character":50},"in_reply_to":"df140735_53349c4a","updated":"2017-05-29 07:09:25.000000000","message":"Then it comes the question, how do we plan to handle the exceptions? \n\nAccept the valid equivalences and ignore the invalid one? Or abort the initialization (current behavior)?","commit_id":"b7add4b8a0cc25b51cfaf2c71d1626de32abd9f5"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"c95e06b78eb1218343b051e85789468783b84d1a","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def __init__(self, equivalence_def):"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"        self.name \u003d equivalence_def[EFields.METADATA][EFields.NAME]"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"        self.equivalences \u003d self._build_equivalences("},{"line_number":27,"context_line":"            equivalence_def[EFields.EQUIVALENCES])"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    @property"},{"line_number":30,"context_line":"    def equivalences(self):"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_a713a9b8","line":27,"range":{"start_line":24,"start_character":0,"end_line":27,"end_character":50},"in_reply_to":"df140735_8788a571","updated":"2017-05-29 07:28:07.000000000","message":"I prefer to use the valid equivalences, but agree also to ignore all of them. Just please make sure you don\u0027t abort the \"regular\" templates loading, because it is possible that most of them are not affected by the equivalences at all. \nWe should add equivalence validation to the template validation code, but of course this should not be part of the current change.","commit_id":"b7add4b8a0cc25b51cfaf2c71d1626de32abd9f5"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"393f128ca8dee1fce3148f088a7442c12967059e","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def __init__(self, equivalence_def):"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"        self.name \u003d equivalence_def[EFields.METADATA][EFields.NAME]"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"        self.equivalences \u003d self._build_equivalences("},{"line_number":27,"context_line":"            equivalence_def[EFields.EQUIVALENCES])"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    @property"},{"line_number":30,"context_line":"    def equivalences(self):"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_707663db","line":27,"range":{"start_line":24,"start_character":0,"end_line":27,"end_character":50},"in_reply_to":"df140735_a713a9b8","updated":"2017-05-29 13:18:49.000000000","message":"I agree. What is the right place to keep tracking of such TODO items? I might be a bit busy for the OPNFV summit recently and not able to handle it right away.","commit_id":"b7add4b8a0cc25b51cfaf2c71d1626de32abd9f5"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"236af212d94233f887500d927c3fffff7e71fec1","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @equivalences.setter"},{"line_number":34,"context_line":"    def equivalences(self, equivalences):"},{"line_number":35,"context_line":"        self._equivalences \u003d equivalences"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    @staticmethod"},{"line_number":38,"context_line":"    def _build_equivalences(equivalence_defs):"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_f33a9032","line":35,"range":{"start_line":35,"start_character":0,"end_line":35,"end_character":41},"updated":"2017-05-28 06:50:43.000000000","message":"Why do we have this function in addition to the __init__, where you build the equivalences out of equivalence_def?","commit_id":"b7add4b8a0cc25b51cfaf2c71d1626de32abd9f5"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"c95e06b78eb1218343b051e85789468783b84d1a","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @equivalences.setter"},{"line_number":34,"context_line":"    def equivalences(self, equivalences):"},{"line_number":35,"context_line":"        self._equivalences \u003d equivalences"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    @staticmethod"},{"line_number":38,"context_line":"    def _build_equivalences(equivalence_defs):"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_a77849f8","line":35,"range":{"start_line":35,"start_character":0,"end_line":35,"end_character":41},"in_reply_to":"df140735_67cb51a5","updated":"2017-05-29 07:28:07.000000000","message":"Actually, I\u0027m not so familiar with this code either. Try to see if you call this function from your code. If not, it can be dropped.","commit_id":"b7add4b8a0cc25b51cfaf2c71d1626de32abd9f5"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"a82c9ac0952a5f338ef6e8458e0a208f50b66673","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @equivalences.setter"},{"line_number":34,"context_line":"    def equivalences(self, equivalences):"},{"line_number":35,"context_line":"        self._equivalences \u003d equivalences"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    @staticmethod"},{"line_number":38,"context_line":"    def _build_equivalences(equivalence_defs):"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_67cb51a5","line":35,"range":{"start_line":35,"start_character":0,"end_line":35,"end_character":41},"in_reply_to":"df140735_f33a9032","updated":"2017-05-29 07:09:25.000000000","message":"I was following the implementation of scenario_repository and didn\u0027t think too much about it.\n\nIs it possible to assign templates directly to the scenario repository?\n\nhttps://github.com/openstack/vitrage/blob/master/vitrage/evaluator/scenario_repository.py#L48","commit_id":"b7add4b8a0cc25b51cfaf2c71d1626de32abd9f5"}],"vitrage/evaluator/equivalence_fields.py":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"236af212d94233f887500d927c3fffff7e71fec1","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from vitrage.common.constants import TemplateTopologyFields"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class EquivalenceFields(TemplateTopologyFields):"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    EQUIVALENCES \u003d \u0027equivalences\u0027"},{"line_number":21,"context_line":"    EQUIVALENCE \u003d \u0027equivalence\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_d34e6cc0","line":18,"range":{"start_line":18,"start_character":6,"end_line":18,"end_character":23},"updated":"2017-05-28 06:50:43.000000000","message":"Why not put it under common/constants.py?","commit_id":"b7add4b8a0cc25b51cfaf2c71d1626de32abd9f5"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"c95e06b78eb1218343b051e85789468783b84d1a","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from vitrage.common.constants import TemplateTopologyFields"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class EquivalenceFields(TemplateTopologyFields):"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    EQUIVALENCES \u003d \u0027equivalences\u0027"},{"line_number":21,"context_line":"    EQUIVALENCE \u003d \u0027equivalence\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_a761693c","line":18,"range":{"start_line":18,"start_character":6,"end_line":18,"end_character":23},"in_reply_to":"df140735_27a2f99b","updated":"2017-05-29 07:28:07.000000000","message":"Ok, makes sense. I would put them together with the templates fields, or even in the same file that loads them (if it\u0027s a single file). But it\u0027s not very important, you can leave it this way.","commit_id":"b7add4b8a0cc25b51cfaf2c71d1626de32abd9f5"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"2fb72668ea634397112db1656368281d013cb89c","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from vitrage.common.constants import TemplateTopologyFields"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class EquivalenceFields(TemplateTopologyFields):"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    EQUIVALENCES \u003d \u0027equivalences\u0027"},{"line_number":21,"context_line":"    EQUIVALENCE \u003d \u0027equivalence\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_27a2f99b","line":18,"range":{"start_line":18,"start_character":6,"end_line":18,"end_character":23},"in_reply_to":"df140735_873b059b","updated":"2017-05-29 07:11:29.000000000","message":"Besides, if these constants are used only in evaluator. Putting them in a global level constant.py may not be a good idea.","commit_id":"b7add4b8a0cc25b51cfaf2c71d1626de32abd9f5"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"5a6bad397d4183ccc6c650f50df87773eacc3998","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from vitrage.common.constants import TemplateTopologyFields"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class EquivalenceFields(TemplateTopologyFields):"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    EQUIVALENCES \u003d \u0027equivalences\u0027"},{"line_number":21,"context_line":"    EQUIVALENCE \u003d \u0027equivalence\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_dbd0a7cc","line":18,"range":{"start_line":18,"start_character":6,"end_line":18,"end_character":23},"in_reply_to":"df140735_a761693c","updated":"2017-05-30 00:37:29.000000000","message":"Done","commit_id":"b7add4b8a0cc25b51cfaf2c71d1626de32abd9f5"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"a82c9ac0952a5f338ef6e8458e0a208f50b66673","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from vitrage.common.constants import TemplateTopologyFields"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class EquivalenceFields(TemplateTopologyFields):"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    EQUIVALENCES \u003d \u0027equivalences\u0027"},{"line_number":21,"context_line":"    EQUIVALENCE \u003d \u0027equivalence\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"df140735_873b059b","line":18,"range":{"start_line":18,"start_character":6,"end_line":18,"end_character":23},"in_reply_to":"df140735_d34e6cc0","updated":"2017-05-29 07:09:25.000000000","message":"I was following the implementation of template_fields...\n\nhttps://github.com/openstack/vitrage/blob/master/vitrage/evaluator/template_fields.py","commit_id":"b7add4b8a0cc25b51cfaf2c71d1626de32abd9f5"}],"vitrage/tests/resources/equivalences/basic.yaml":[{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"d4b6a978d9ecdba68a37dde787954164f149ae61","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    - entity:"},{"line_number":6,"context_line":"       category: ALARM"},{"line_number":7,"context_line":"       type: nagios"},{"line_number":8,"context_line":"       name: host_problem"},{"line_number":9,"context_line":"    - entity:"},{"line_number":10,"context_line":"       category: ALARM"},{"line_number":11,"context_line":"       type: zabbix"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"1f013ff3_6271fee0","line":8,"range":{"start_line":8,"start_character":13,"end_line":8,"end_character":25},"updated":"2017-05-15 08:32:10.000000000","message":"please call it nagios_host_problem","commit_id":"4ea35509a67d480e168c6b98b2ff0bfa019ad2a2"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"0de1c9df6c9252f6d00143634ca4d3948adb2769","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    - entity:"},{"line_number":6,"context_line":"       category: ALARM"},{"line_number":7,"context_line":"       type: nagios"},{"line_number":8,"context_line":"       name: host_problem"},{"line_number":9,"context_line":"    - entity:"},{"line_number":10,"context_line":"       category: ALARM"},{"line_number":11,"context_line":"       type: zabbix"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"1f013ff3_64b2e9e8","line":8,"range":{"start_line":8,"start_character":13,"end_line":8,"end_character":25},"in_reply_to":"1f013ff3_6271fee0","updated":"2017-05-17 05:42:20.000000000","message":"Unlike template_id, the entity property is under namespace(context) of datasource type, isn\u0027t it?","commit_id":"4ea35509a67d480e168c6b98b2ff0bfa019ad2a2"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"e2551271de8b6ac7c4e5a138e712ce80f9bdd9e6","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    - entity:"},{"line_number":6,"context_line":"       category: ALARM"},{"line_number":7,"context_line":"       type: nagios"},{"line_number":8,"context_line":"       name: host_problem"},{"line_number":9,"context_line":"    - entity:"},{"line_number":10,"context_line":"       category: ALARM"},{"line_number":11,"context_line":"       type: zabbix"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"ff0f0b1f_1e77343d","line":8,"range":{"start_line":8,"start_character":13,"end_line":8,"end_character":25},"in_reply_to":"1f013ff3_64b2e9e8","updated":"2017-05-18 04:46:32.000000000","message":"yes it is, but I wanted to see that the test are working fine with different names as well.","commit_id":"4ea35509a67d480e168c6b98b2ff0bfa019ad2a2"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"d3914d1c10fd5ccadc602d17a4fc7a1fa1e6d2bc","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    - entity:"},{"line_number":6,"context_line":"       category: ALARM"},{"line_number":7,"context_line":"       type: nagios"},{"line_number":8,"context_line":"       name: host_problem"},{"line_number":9,"context_line":"    - entity:"},{"line_number":10,"context_line":"       category: ALARM"},{"line_number":11,"context_line":"       type: zabbix"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"ff0f0b1f_74a9afdd","line":8,"range":{"start_line":8,"start_character":13,"end_line":8,"end_character":25},"in_reply_to":"ff0f0b1f_1e77343d","updated":"2017-05-18 06:04:53.000000000","message":"Done","commit_id":"4ea35509a67d480e168c6b98b2ff0bfa019ad2a2"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"d4b6a978d9ecdba68a37dde787954164f149ae61","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    - entity:"},{"line_number":10,"context_line":"       category: ALARM"},{"line_number":11,"context_line":"       type: zabbix"},{"line_number":12,"context_line":"       name: host_problem"},{"line_number":13,"context_line":"    - entity:"},{"line_number":14,"context_line":"       category: ALARM"},{"line_number":15,"context_line":"       type: vitrage"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"1f013ff3_427602db","line":12,"range":{"start_line":12,"start_character":13,"end_line":12,"end_character":25},"updated":"2017-05-15 08:32:10.000000000","message":"please call it zabbix_host_problem","commit_id":"4ea35509a67d480e168c6b98b2ff0bfa019ad2a2"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"d4b6a978d9ecdba68a37dde787954164f149ae61","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    - entity:"},{"line_number":14,"context_line":"       category: ALARM"},{"line_number":15,"context_line":"       type: vitrage"},{"line_number":16,"context_line":"       name: host_problem"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"1f013ff3_a2502634","line":16,"range":{"start_line":16,"start_character":13,"end_line":16,"end_character":25},"updated":"2017-05-15 08:32:10.000000000","message":"please call it vitrage_host_problem","commit_id":"4ea35509a67d480e168c6b98b2ff0bfa019ad2a2"}],"vitrage/tests/unit/evaluator/test_equivalence_data.py":[{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"d4b6a978d9ecdba68a37dde787954164f149ae61","unresolved":false,"context_lines":[{"line_number":35,"context_line":"            frozenset(["},{"line_number":36,"context_line":"                frozenset([(\u0027category\u0027, \u0027ALARM\u0027),"},{"line_number":37,"context_line":"                           (\u0027type\u0027, \u0027nagios\u0027),"},{"line_number":38,"context_line":"                           (\u0027name\u0027, \u0027host_problem\u0027)]),"},{"line_number":39,"context_line":"                frozenset([(\u0027category\u0027, \u0027ALARM\u0027),"},{"line_number":40,"context_line":"                           (\u0027type\u0027, \u0027zabbix\u0027),"},{"line_number":41,"context_line":"                           (\u0027name\u0027, \u0027host_problem\u0027)]),"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f013ff3_c230d20a","line":38,"range":{"start_line":38,"start_character":37,"end_line":38,"end_character":49},"updated":"2017-05-15 08:32:10.000000000","message":"change to nagios_host_problem","commit_id":"4ea35509a67d480e168c6b98b2ff0bfa019ad2a2"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"d4b6a978d9ecdba68a37dde787954164f149ae61","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                           (\u0027name\u0027, \u0027host_problem\u0027)]),"},{"line_number":39,"context_line":"                frozenset([(\u0027category\u0027, \u0027ALARM\u0027),"},{"line_number":40,"context_line":"                           (\u0027type\u0027, \u0027zabbix\u0027),"},{"line_number":41,"context_line":"                           (\u0027name\u0027, \u0027host_problem\u0027)]),"},{"line_number":42,"context_line":"                frozenset([(\u0027category\u0027, \u0027ALARM\u0027),"},{"line_number":43,"context_line":"                           (\u0027type\u0027, \u0027vitrage\u0027),"},{"line_number":44,"context_line":"                           (\u0027name\u0027, \u0027host_problem\u0027)])"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f013ff3_823acae4","line":41,"range":{"start_line":41,"start_character":36,"end_line":41,"end_character":50},"updated":"2017-05-15 08:32:10.000000000","message":"change to zabbix_host_problem","commit_id":"4ea35509a67d480e168c6b98b2ff0bfa019ad2a2"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"d4b6a978d9ecdba68a37dde787954164f149ae61","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                           (\u0027name\u0027, \u0027host_problem\u0027)]),"},{"line_number":42,"context_line":"                frozenset([(\u0027category\u0027, \u0027ALARM\u0027),"},{"line_number":43,"context_line":"                           (\u0027type\u0027, \u0027vitrage\u0027),"},{"line_number":44,"context_line":"                           (\u0027name\u0027, \u0027host_problem\u0027)])"},{"line_number":45,"context_line":"            ]),"},{"line_number":46,"context_line":"        ]"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1f013ff3_4224c2c6","line":44,"range":{"start_line":44,"start_character":37,"end_line":44,"end_character":49},"updated":"2017-05-15 08:32:10.000000000","message":"change to vitrage_host_problem","commit_id":"4ea35509a67d480e168c6b98b2ff0bfa019ad2a2"}]}
