)]}'
{"vitrage/evaluator/scenario_evaluator.py":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"82bc5ff72a5d4107f7c5f8053b4f5342ca330379","unresolved":false,"context_lines":[{"line_number":252,"context_line":"            (action_spec.type,"},{"line_number":253,"context_line":"             tuple(sorted(targets)),"},{"line_number":254,"context_line":"             tuple(sorted("},{"line_number":255,"context_line":"                 dict(recursive_keypairs(action_spec.properties)).items())))"},{"line_number":256,"context_line":"        )"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def _analyze_and_filter_actions(self, actions):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f91af0f_390d5f90","line":255,"range":{"start_line":255,"start_character":17,"end_line":255,"end_character":21},"updated":"2017-12-28 11:00:41.000000000","message":"why creating a dict can\u0027t you just sort the pairs ?","commit_id":"22358b79d6f836d2bdeb4bb5f05b3e482a130cb2"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"22a98313e1e7b05e55ba0b60d72b61e0c1a44794","unresolved":false,"context_lines":[{"line_number":252,"context_line":"            (action_spec.type,"},{"line_number":253,"context_line":"             tuple(sorted(targets)),"},{"line_number":254,"context_line":"             tuple(sorted("},{"line_number":255,"context_line":"                 dict(recursive_keypairs(action_spec.properties)).items())))"},{"line_number":256,"context_line":"        )"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def _analyze_and_filter_actions(self, actions):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f91af0f_10f37ba0","line":255,"range":{"start_line":255,"start_character":17,"end_line":255,"end_character":21},"in_reply_to":"9f91af0f_390d5f90","updated":"2017-12-31 07:59:38.000000000","message":"Done","commit_id":"22358b79d6f836d2bdeb4bb5f05b3e482a130cb2"}],"vitrage/evaluator/scenario_repository.py":[{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"5253bb45c95b70eb2f8078d531a031496f98134c","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from vitrage.evaluator.template_loading.template_loader import TemplateLoader"},{"line_number":28,"context_line":"from vitrage.evaluator.template_validation.content.template_content_validator \\"},{"line_number":29,"context_line":"    import content_validation"},{"line_number":30,"context_line":"from vitrage.evaluator.template_validation.content.v1.definitions_validator \\"},{"line_number":31,"context_line":"    import DefinitionsValidator as DefValidator"},{"line_number":32,"context_line":"from vitrage.evaluator.template_validation.template_syntax_validator import \\"},{"line_number":33,"context_line":"    def_template_syntax_validation"},{"line_number":34,"context_line":"from vitrage.evaluator.template_validation.template_syntax_validator import \\"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f91af0f_64700974","line":31,"range":{"start_line":30,"start_character":0,"end_line":31,"end_character":47},"updated":"2018-01-01 09:21:57.000000000","message":"Why is this version addressed specifically? can\u0027t this be under content_validation?","commit_id":"dc84531cf47333c9dcf49cb6c1a4eadeeb380e1f"}],"vitrage/evaluator/template_loading/scenario_loader.py":[{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"c9f538f0e0985b41a2f4042a40507357f164e977","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class ScenarioLoader(object):"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def __init__(self, template_version, name, entities, relationships):"},{"line_number":36,"context_line":"        self.name \u003d name"},{"line_number":37,"context_line":"        self._template_version \u003d template_version"},{"line_number":38,"context_line":"        self._template_entities \u003d entities"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_7300d135","line":35,"range":{"start_line":35,"start_character":23,"end_line":35,"end_character":39},"updated":"2017-12-31 16:16:34.000000000","message":"Name is not clear. since this is a manager class for the version, and not a version identifier. version_schema was suggested.","commit_id":"41818e4e065abd0a407e3694a76fa8fe458f25e7"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"f1cd325ef34f0ad5d9cee2d0c2deef929d4b8a44","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class ScenarioLoader(object):"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def __init__(self, template_version, name, entities, relationships):"},{"line_number":36,"context_line":"        self.name \u003d name"},{"line_number":37,"context_line":"        self._template_version \u003d template_version"},{"line_number":38,"context_line":"        self._template_entities \u003d entities"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_0e911c9a","line":35,"range":{"start_line":35,"start_character":23,"end_line":35,"end_character":39},"in_reply_to":"9f91af0f_7300d135","updated":"2017-12-31 17:07:32.000000000","message":"Done","commit_id":"41818e4e065abd0a407e3694a76fa8fe458f25e7"}],"vitrage/evaluator/template_schema_factory.py":[{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"5253bb45c95b70eb2f8078d531a031496f98134c","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    @classmethod"},{"line_number":40,"context_line":"    def register_template_schema(cls, version, template_schema):"},{"line_number":41,"context_line":"        cls._schemas[version] \u003d template_schema"},{"line_number":42,"context_line":"        LOG.debug(\u0027Registered template schema for version %s\u0027, version)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f91af0f_246a0180","line":42,"updated":"2018-01-01 09:21:57.000000000","message":"You can use a \"static initializer\" instead of calling graph.py\n@staticmethod\ndef init_template_schemas():\n    TemplateSchemaFactory.register_template_schema(\u00271\u0027, TemplateSchema1())\n    TemplateSchemaFactory.register_template_schema(\u00272\u0027, TemplateSchema2())\n\ninit_template_schemas()","commit_id":"dc84531cf47333c9dcf49cb6c1a4eadeeb380e1f"}],"vitrage/evaluator/template_schemas.py":[{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"5253bb45c95b70eb2f8078d531a031496f98134c","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class TemplateSchema1(object):"},{"line_number":45,"context_line":"    VALIDATORS_PATH \u003d \u0027vitrage.evaluator.template_validation.content.v1.\u0027"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def __init__(self):"},{"line_number":48,"context_line":"        self._validators \u003d {"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f91af0f_0491fd99","line":45,"range":{"start_line":45,"start_character":3,"end_line":45,"end_character":73},"updated":"2018-01-01 09:21:57.000000000","message":"This seems unused","commit_id":"dc84531cf47333c9dcf49cb6c1a4eadeeb380e1f"}],"vitrage/evaluator/template_validation/content/template_content_validator.py":[{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"08efe7ea6bd764051fb88e1b4933ec140a0ac373","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        if TemplateFields.ENTITIES in template_definitions:"},{"line_number":44,"context_line":"            entities \u003d template_definitions[TemplateFields.ENTITIES]"},{"line_number":45,"context_line":"            result \u003d def_validator.validate_entities_definition(entities,"},{"line_number":46,"context_line":"                                                                entities_index)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    # If there are duplicate definitions in several includes under the same"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf8cb3f7_d818e3d4","line":45,"range":{"start_line":45,"start_character":20,"end_line":45,"end_character":34},"updated":"2017-12-21 03:02:05.000000000","message":"Will raise an exception if \u0027def_validator\u0027 is None.","commit_id":"58acf8e25917fd3f8b872d046aadd42a2a46e385"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"d2a7f585a059e584948431059edfbd9fbfa23698","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        if TemplateFields.ENTITIES in template_definitions:"},{"line_number":44,"context_line":"            entities \u003d template_definitions[TemplateFields.ENTITIES]"},{"line_number":45,"context_line":"            result \u003d def_validator.validate_entities_definition(entities,"},{"line_number":46,"context_line":"                                                                entities_index)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    # If there are duplicate definitions in several includes under the same"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf8cb3f7_f2513b10","line":45,"range":{"start_line":45,"start_character":20,"end_line":45,"end_character":34},"in_reply_to":"bf8cb3f7_d818e3d4","updated":"2017-12-21 11:40:36.000000000","message":"Done.\nIf result.is_valid_config is true then def_validator is not supposed to be None, but you are right that I should check it.","commit_id":"58acf8e25917fd3f8b872d046aadd42a2a46e385"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"08efe7ea6bd764051fb88e1b4933ec140a0ac373","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    if result.is_valid_config and TemplateFields.INCLUDES in template:"},{"line_number":51,"context_line":"        template_includes \u003d template[TemplateFields.INCLUDES]"},{"line_number":52,"context_line":"        result \u003d \\"},{"line_number":53,"context_line":"            def_validator.validate_definitions_with_includes(template_includes,"},{"line_number":54,"context_line":"                                                             def_templates,"},{"line_number":55,"context_line":"                                                             entities_index)"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bf8cb3f7_780d178f","line":53,"range":{"start_line":53,"start_character":12,"end_line":53,"end_character":25},"updated":"2017-12-21 03:02:05.000000000","message":"same as above.","commit_id":"58acf8e25917fd3f8b872d046aadd42a2a46e385"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"c9f538f0e0985b41a2f4042a40507357f164e977","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    return result"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"def _get_template_version(template):"},{"line_number":90,"context_line":"    metadata \u003d template.get(TemplateFields.METADATA)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    if metadata is None:"},{"line_number":93,"context_line":"        LOG.error(\u0027%s status code: %s\u0027 % (status_msgs[62], 62))"},{"line_number":94,"context_line":"        return get_content_fault_result(62), None"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    version \u003d metadata.get(TemplateFields.VERSION,"},{"line_number":97,"context_line":"                           TemplateVersionFactory.DEFAULT_VERSION)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_93131567","line":94,"range":{"start_line":89,"start_character":0,"end_line":94,"end_character":49},"updated":"2017-12-31 16:16:34.000000000","message":"Previous impl was simpler, why use generate a schema object for (and return it here) just to validate the version, can just ask the factory if the version is supported.","commit_id":"41818e4e065abd0a407e3694a76fa8fe458f25e7"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"f1cd325ef34f0ad5d9cee2d0c2deef929d4b8a44","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    return result"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"def _get_template_version(template):"},{"line_number":90,"context_line":"    metadata \u003d template.get(TemplateFields.METADATA)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    if metadata is None:"},{"line_number":93,"context_line":"        LOG.error(\u0027%s status code: %s\u0027 % (status_msgs[62], 62))"},{"line_number":94,"context_line":"        return get_content_fault_result(62), None"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    version \u003d metadata.get(TemplateFields.VERSION,"},{"line_number":97,"context_line":"                           TemplateVersionFactory.DEFAULT_VERSION)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_4e972492","line":94,"range":{"start_line":89,"start_character":0,"end_line":94,"end_character":49},"in_reply_to":"9f91af0f_93131567","updated":"2017-12-31 17:07:32.000000000","message":"In order to validate the version, there is a need to:\n1. validate that there is a metadata section, if not return a fault_result\n2. get the version with a default\n3. check if the version is supported.\n\nThen, right after the validation succeeds, there is a need to call 1-2 again. It means calling the exact same code twice.","commit_id":"41818e4e065abd0a407e3694a76fa8fe458f25e7"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"c9f538f0e0985b41a2f4042a40507357f164e977","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        return get_content_fault_result(62), None"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    version \u003d metadata.get(TemplateFields.VERSION,"},{"line_number":97,"context_line":"                           TemplateVersionFactory.DEFAULT_VERSION)"},{"line_number":98,"context_line":"    template_version \u003d TemplateVersionFactory().template_version(version)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    if template_version:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_f335c1f8","line":97,"range":{"start_line":97,"start_character":27,"end_line":97,"end_character":65},"updated":"2017-12-31 16:16:34.000000000","message":"This default is specified twice (once here, and once in   TemplateVersionFactory.template_version)","commit_id":"41818e4e065abd0a407e3694a76fa8fe458f25e7"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"f1cd325ef34f0ad5d9cee2d0c2deef929d4b8a44","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        return get_content_fault_result(62), None"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    version \u003d metadata.get(TemplateFields.VERSION,"},{"line_number":97,"context_line":"                           TemplateVersionFactory.DEFAULT_VERSION)"},{"line_number":98,"context_line":"    template_version \u003d TemplateVersionFactory().template_version(version)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    if template_version:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_6e94688c","line":97,"range":{"start_line":97,"start_character":27,"end_line":97,"end_character":65},"in_reply_to":"9f91af0f_f335c1f8","updated":"2017-12-31 17:07:32.000000000","message":"Done","commit_id":"41818e4e065abd0a407e3694a76fa8fe458f25e7"}],"vitrage/tests/functional/base.py":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"5596bcaadd3a18fde45e2c6e51be8523182eeeb3","unresolved":false,"context_lines":[{"line_number":22,"context_line":"class TestFunctionalBase(TestEntityGraphUnitBase):"},{"line_number":23,"context_line":"    # noinspection PyPep8Naming"},{"line_number":24,"context_line":"    @classmethod"},{"line_number":25,"context_line":"    def setUpClass(cls):"},{"line_number":26,"context_line":"        init_template_versions()"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def _create_processor_with_graph(self, conf, processor\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf8cb3f7_a7c61a16","line":25,"range":{"start_line":25,"start_character":8,"end_line":25,"end_character":18},"updated":"2017-12-21 08:50:05.000000000","message":"you should call setUpClass super","commit_id":"58acf8e25917fd3f8b872d046aadd42a2a46e385"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"d2a7f585a059e584948431059edfbd9fbfa23698","unresolved":false,"context_lines":[{"line_number":22,"context_line":"class TestFunctionalBase(TestEntityGraphUnitBase):"},{"line_number":23,"context_line":"    # noinspection PyPep8Naming"},{"line_number":24,"context_line":"    @classmethod"},{"line_number":25,"context_line":"    def setUpClass(cls):"},{"line_number":26,"context_line":"        init_template_versions()"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def _create_processor_with_graph(self, conf, processor\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf8cb3f7_9256af06","line":25,"range":{"start_line":25,"start_character":8,"end_line":25,"end_character":18},"in_reply_to":"bf8cb3f7_a7c61a16","updated":"2017-12-21 11:40:36.000000000","message":"Done","commit_id":"58acf8e25917fd3f8b872d046aadd42a2a46e385"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"04a675387c2931ae74dd7beb6e44835b6c803cea","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    # noinspection PyPep8Naming"},{"line_number":24,"context_line":"    @classmethod"},{"line_number":25,"context_line":"    def setUpClass(cls):"},{"line_number":26,"context_line":"        super(TestEntityGraphUnitBase, cls).setUpClass()"},{"line_number":27,"context_line":"        init_template_versions()"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def _create_processor_with_graph(self, conf, processor\u003dNone):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf8cb3f7_2f73c017","line":26,"range":{"start_line":26,"start_character":14,"end_line":26,"end_character":37},"updated":"2017-12-21 11:23:32.000000000","message":"TestFunctionalBase","commit_id":"69120fdfd1f8f06e26c5c13f7eb8b37c16ed191a"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"d2a7f585a059e584948431059edfbd9fbfa23698","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    # noinspection PyPep8Naming"},{"line_number":24,"context_line":"    @classmethod"},{"line_number":25,"context_line":"    def setUpClass(cls):"},{"line_number":26,"context_line":"        super(TestEntityGraphUnitBase, cls).setUpClass()"},{"line_number":27,"context_line":"        init_template_versions()"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def _create_processor_with_graph(self, conf, processor\u003dNone):"}],"source_content_type":"text/x-python","patch_set":5,"id":"bf8cb3f7_b25bb32c","line":26,"range":{"start_line":26,"start_character":14,"end_line":26,"end_character":37},"in_reply_to":"bf8cb3f7_2f73c017","updated":"2017-12-21 11:40:36.000000000","message":"Done","commit_id":"69120fdfd1f8f06e26c5c13f7eb8b37c16ed191a"}],"vitrage/utils/dict.py":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"02b2cbb77d16aa074ec7e58f3f517cd0855869d0","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    lambda v: not isinstance(v, dict), \u0027{0} is an inner dictionary\u0027)"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def flatten_dict(d):"},{"line_number":22,"context_line":"    def get_items():"},{"line_number":23,"context_line":"        for key, value in d.items():"},{"line_number":24,"context_line":"            if isinstance(value, dict):"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf8cb3f7_b3d4e7be","line":21,"range":{"start_line":21,"start_character":4,"end_line":21,"end_character":16},"updated":"2017-12-25 14:08:17.000000000","message":"we already have this utility function\nhttps://github.com/openstack/vitrage/blob/master/vitrage/common/utils.py#L29","commit_id":"79c165acce2fd6e2cd2609b85f33f6be81d311a4"}],"vitrage_tempest_tests/tests/notifiers/test_mistral_notifier.py":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"3c978340c77d4d126cb00f3ec3b1ef840fc4e4d6","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            # the alarm should cause execution of the workflow"},{"line_number":86,"context_line":"            self._trigger_do_action(trigger_alarm)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"            # Wait for the alarm to be raised"},{"line_number":89,"context_line":"            self.assertTrue(wait_for_status("},{"line_number":90,"context_line":"                10,"},{"line_number":91,"context_line":"                self._check_num_vitrage_alarms,"},{"line_number":92,"context_line":"                num_alarms\u003dnum_alarms + 1))"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"            # Wait for the Mistral workflow execution"},{"line_number":95,"context_line":"            self.assertTrue(wait_for_status("},{"line_number":96,"context_line":"                20,"},{"line_number":97,"context_line":"                self._check_mistral_workflow_execution,"},{"line_number":98,"context_line":"                num_executions\u003dnum_executions + 1))"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        except Exception as e:"},{"line_number":101,"context_line":"            self._handle_exception(e)"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf8cb3f7_2e3150ed","line":98,"range":{"start_line":88,"start_character":11,"end_line":98,"end_character":51},"updated":"2017-12-25 14:56:47.000000000","message":"can you please add message description in case of failure\nbecause when the assert fails we get the error \"False is not True\" which is not very descriptive","commit_id":"79c165acce2fd6e2cd2609b85f33f6be81d311a4"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"82bc5ff72a5d4107f7c5f8053b4f5342ca330379","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            self._trigger_do_action(trigger_alarm)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"            # Wait for the alarm to be raised"},{"line_number":89,"context_line":"            self.assertTrue(wait_for_status("},{"line_number":90,"context_line":"                10,"},{"line_number":91,"context_line":"                self._check_num_vitrage_alarms,"},{"line_number":92,"context_line":"                num_alarms\u003dnum_alarms + 1))"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"            # Wait for the Mistral workflow execution"},{"line_number":95,"context_line":"            self.assertTrue(wait_for_status("}],"source_content_type":"text/x-python","patch_set":8,"id":"9f91af0f_19697b24","line":92,"range":{"start_line":89,"start_character":11,"end_line":92,"end_character":43},"updated":"2017-12-28 11:00:41.000000000","message":"also here add a message what failed","commit_id":"22358b79d6f836d2bdeb4bb5f05b3e482a130cb2"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"22a98313e1e7b05e55ba0b60d72b61e0c1a44794","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            self._trigger_do_action(trigger_alarm)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"            # Wait for the alarm to be raised"},{"line_number":89,"context_line":"            self.assertTrue(wait_for_status("},{"line_number":90,"context_line":"                10,"},{"line_number":91,"context_line":"                self._check_num_vitrage_alarms,"},{"line_number":92,"context_line":"                num_alarms\u003dnum_alarms + 1))"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"            # Wait for the Mistral workflow execution"},{"line_number":95,"context_line":"            self.assertTrue(wait_for_status("}],"source_content_type":"text/x-python","patch_set":8,"id":"9f91af0f_70f68792","line":92,"range":{"start_line":89,"start_character":11,"end_line":92,"end_character":43},"in_reply_to":"9f91af0f_19697b24","updated":"2017-12-31 07:59:38.000000000","message":"Done","commit_id":"22358b79d6f836d2bdeb4bb5f05b3e482a130cb2"}]}
