)]}'
{"devstack/gate_hook.sh":[{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"583292800eac5f426a650d2beda74698a4f7bdcf","unresolved":false,"context_lines":[{"line_number":37,"context_line":"[DEFAULT]"},{"line_number":38,"context_line":"notification_topics \u003d notifications,vitrage_notifications"},{"line_number":39,"context_line":"notification_driver \u003d messagingv2"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"[notifications]"},{"line_number":42,"context_line":"versioned_notifications_topics \u003d versioned_notifications,vitrage_notifications"},{"line_number":43,"context_line":"notification_driver \u003d messagingv2"}],"source_content_type":"text/x-sh","patch_set":2,"id":"3f79a3b5_ebcac741","line":40,"updated":"2018-12-11 10:03:42.000000000","message":"notify_on_state_change \u003d vm_state\nnotification_format \u003d versioned\nDo we want to change these default values?\n\n\nAlso, notice that under nova.conf:\n[default]\nnotify_on_state_change \u003d vm_and_task_state\n[notifications]\nversioned_notifications_topics \u003d versioned_notifications,vitrage_notifications\nnotification_driver \u003d messagingv2\nnotification_format \u003d versioned\nnotify_on_state_change \u003d vm_state","commit_id":"e6a1113ddffdbfe19375b68e00cc3d3dc014d3d8"}],"releasenotes/notes/nova-versioned-notifications-3c5ff450b9fe69f0.yaml":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"fd280c095d4f65fbc9f01f9c85fb3c85f2556811","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added support for Nova versioned notifications."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3f79a3b5_d0c5f65f","line":3,"updated":"2018-12-13 15:57:59.000000000","message":"Please, add new config option reference to the release notes","commit_id":"a96bc0642b896a673c640eec2c4935634d0e8080"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"baa1f2bc20719697d8ab0c2be4fa22f9e1fdfce6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Added support for Nova versioned notifications."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3f79a3b5_f0f6f25f","line":3,"in_reply_to":"3f79a3b5_d0c5f65f","updated":"2018-12-13 16:14:23.000000000","message":"Ok, although by default it should not be changed - the assumption is that Vitrage will use the Nova versioned notifications unless Nova itself is configured to use the legacy ones","commit_id":"a96bc0642b896a673c640eec2c4935634d0e8080"}],"vitrage/datasources/nova/instance/driver.py":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"8beb3635a610d9c5990cfbcf4d90ffa5824851c3","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    def __init__(self, conf):"},{"line_number":102,"context_line":"        super(InstanceDriver, self).__init__(conf)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    @classmethod"},{"line_number":105,"context_line":"    def extract_events(cls, instances):"},{"line_number":106,"context_line":"        events \u003d [instance.__dict__ for instance in instances]"},{"line_number":107,"context_line":"        for e in events:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_e2076f14","line":104,"range":{"start_line":104,"start_character":5,"end_line":104,"end_character":16},"updated":"2018-12-09 14:00:02.000000000","message":"why are u using the classmethod annotation if you are not using the cls parameter","commit_id":"c9e777ceee492f89f6fe89eb5d4f696f3971f9f7"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"6bb9fbf097b37e2ab75f38c7833d2962e3a545e7","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    def __init__(self, conf):"},{"line_number":102,"context_line":"        super(InstanceDriver, self).__init__(conf)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    @classmethod"},{"line_number":105,"context_line":"    def extract_events(cls, instances):"},{"line_number":106,"context_line":"        events \u003d [instance.__dict__ for instance in instances]"},{"line_number":107,"context_line":"        for e in events:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_6d07cb16","line":104,"range":{"start_line":104,"start_character":5,"end_line":104,"end_character":16},"in_reply_to":"3f79a3b5_e2076f14","updated":"2018-12-10 08:16:45.000000000","message":"Done","commit_id":"c9e777ceee492f89f6fe89eb5d4f696f3971f9f7"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"fd280c095d4f65fbc9f01f9c85fb3c85f2556811","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class InstanceDriver(NovaDriverBase):"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def __init__(self, conf):"},{"line_number":101,"context_line":"        super(InstanceDriver, self).__init__(conf)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    @staticmethod"},{"line_number":104,"context_line":"    def extract_events(instances):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_7000a2b1","line":101,"range":{"start_line":100,"start_character":4,"end_line":101,"end_character":50},"updated":"2018-12-13 15:57:59.000000000","message":"We can drop it because there is no additional login in the child class","commit_id":"a96bc0642b896a673c640eec2c4935634d0e8080"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"baa1f2bc20719697d8ab0c2be4fa22f9e1fdfce6","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"class InstanceDriver(NovaDriverBase):"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def __init__(self, conf):"},{"line_number":101,"context_line":"        super(InstanceDriver, self).__init__(conf)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    @staticmethod"},{"line_number":104,"context_line":"    def extract_events(instances):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_90f3fe6e","line":101,"range":{"start_line":100,"start_character":4,"end_line":101,"end_character":50},"in_reply_to":"3f79a3b5_7000a2b1","updated":"2018-12-13 16:14:23.000000000","message":"What do you mean?","commit_id":"a96bc0642b896a673c640eec2c4935634d0e8080"}],"vitrage/datasources/nova/instance/field_extractor.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"fd280c095d4f65fbc9f01f9c85fb3c85f2556811","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":"import abc"},{"line_number":15,"context_line":"from vitrage.datasources.transformer_base import extract_field_value"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class EventFieldExtractor(object):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_f014b2ed","line":15,"updated":"2018-12-13 15:57:59.000000000","message":"nit: it would be good to add a empty line before vitrage imports according to the pep8","commit_id":"a96bc0642b896a673c640eec2c4935634d0e8080"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"baa1f2bc20719697d8ab0c2be4fa22f9e1fdfce6","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":"import abc"},{"line_number":15,"context_line":"from vitrage.datasources.transformer_base import extract_field_value"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class EventFieldExtractor(object):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_508b26c6","line":15,"in_reply_to":"3f79a3b5_f014b2ed","updated":"2018-12-13 16:14:23.000000000","message":"Of course, I\u0027ll fix it","commit_id":"a96bc0642b896a673c640eec2c4935634d0e8080"}],"vitrage/datasources/nova/instance/transformer.py":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"8beb3635a610d9c5990cfbcf4d90ffa5824851c3","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    def get_vitrage_type(self):"},{"line_number":128,"context_line":"        return NOVA_INSTANCE_DATASOURCE"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def _get_field_extractor(self, event):"},{"line_number":131,"context_line":"        \"\"\"Return an object that extracts the field values from the event\"\"\""},{"line_number":132,"context_line":"        if tbase.is_update_event(event):"},{"line_number":133,"context_line":"            return self.versioned_notifications_extractor if \\"},{"line_number":134,"context_line":"                use_nova_versioned_notifications(self.conf) is True else \\"},{"line_number":135,"context_line":"                self.legacy_notifications_extractor"},{"line_number":136,"context_line":"        else:"},{"line_number":137,"context_line":"            return self.snapshot_extractor"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_4222e3a7","line":137,"range":{"start_line":130,"start_character":3,"end_line":137,"end_character":42},"updated":"2018-12-09 14:00:02.000000000","message":"I would use the plugin mechanism for choosing the extractor\ni.e using entry points in setup.cfg","commit_id":"c9e777ceee492f89f6fe89eb5d4f696f3971f9f7"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"6bb9fbf097b37e2ab75f38c7833d2962e3a545e7","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    def get_vitrage_type(self):"},{"line_number":128,"context_line":"        return NOVA_INSTANCE_DATASOURCE"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def _get_field_extractor(self, event):"},{"line_number":131,"context_line":"        \"\"\"Return an object that extracts the field values from the event\"\"\""},{"line_number":132,"context_line":"        if tbase.is_update_event(event):"},{"line_number":133,"context_line":"            return self.versioned_notifications_extractor if \\"},{"line_number":134,"context_line":"                use_nova_versioned_notifications(self.conf) is True else \\"},{"line_number":135,"context_line":"                self.legacy_notifications_extractor"},{"line_number":136,"context_line":"        else:"},{"line_number":137,"context_line":"            return self.snapshot_extractor"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_0d409732","line":137,"range":{"start_line":130,"start_character":3,"end_line":137,"end_character":42},"in_reply_to":"3f79a3b5_4222e3a7","updated":"2018-12-10 08:16:45.000000000","message":"Why?\n\nFirst, the Nova configuration may change over time, so it\u0027s not a matter of the installation. And second, there are three types of extractor:\n\n1. Nova versioned\n\n2. Nova legacy\n\n3. and Nova API - this is also a different format\n\nBefore my change, there were several if statements in the code to distinguish between cases 2 and 3.","commit_id":"c9e777ceee492f89f6fe89eb5d4f696f3971f9f7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9b8820aa329f1c0e55358d7ed9a62624dab61f35","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    # graph actions which need to refer them differently"},{"line_number":45,"context_line":"    GRAPH_ACTION_MAPPING \u003d {"},{"line_number":46,"context_line":"        \u0027compute.instance.delete.end\u0027: GraphAction.DELETE_ENTITY,"},{"line_number":47,"context_line":"        \u0027instance.delete.end\u0027: GraphAction.DELETE_ENTITY,"},{"line_number":48,"context_line":"    }"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def __init__(self, transformers, conf):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_ab912ff8","line":47,"updated":"2018-12-11 10:11:41.000000000","message":"FYI, there is instance.soft_delete.end notification as well.\n\nhttps://docs.openstack.org/nova/latest/reference/notifications.html#existing-versioned-notifications","commit_id":"e6a1113ddffdbfe19375b68e00cc3d3dc014d3d8"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"1b3e204fc54e99a36144e7fa03a5d8121dbf0216","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    # graph actions which need to refer them differently"},{"line_number":45,"context_line":"    GRAPH_ACTION_MAPPING \u003d {"},{"line_number":46,"context_line":"        \u0027compute.instance.delete.end\u0027: GraphAction.DELETE_ENTITY,"},{"line_number":47,"context_line":"        \u0027instance.delete.end\u0027: GraphAction.DELETE_ENTITY,"},{"line_number":48,"context_line":"    }"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def __init__(self, transformers, conf):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_137fff68","line":47,"in_reply_to":"3f79a3b5_151127fa","updated":"2018-12-13 11:55:10.000000000","message":"How much time can the instance remain in a soft delete state? if nova list no longer returns it, then maybe we should delete it from Vitrage at this stage.","commit_id":"e6a1113ddffdbfe19375b68e00cc3d3dc014d3d8"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"d3f6c28c56b72ba80b14e63ec604bcc899c7cb93","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    # graph actions which need to refer them differently"},{"line_number":45,"context_line":"    GRAPH_ACTION_MAPPING \u003d {"},{"line_number":46,"context_line":"        \u0027compute.instance.delete.end\u0027: GraphAction.DELETE_ENTITY,"},{"line_number":47,"context_line":"        \u0027instance.delete.end\u0027: GraphAction.DELETE_ENTITY,"},{"line_number":48,"context_line":"    }"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def __init__(self, transformers, conf):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_fc628bd9","line":47,"in_reply_to":"3f79a3b5_ab912ff8","updated":"2018-12-11 12:11:15.000000000","message":"Thanks.\n\nIn driver.py file you can see that Vitrage listens to the soft_delete notification as well. The purpose of the GRAPH_ACTION_MAPPING is to determine which notification should cause the deletion of the entity in Vitrage. Should we list both delete.end and soft_delete.end?","commit_id":"e6a1113ddffdbfe19375b68e00cc3d3dc014d3d8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ba1278bb496a37facf2ecf58b22a7a504dd779ae","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    # graph actions which need to refer them differently"},{"line_number":45,"context_line":"    GRAPH_ACTION_MAPPING \u003d {"},{"line_number":46,"context_line":"        \u0027compute.instance.delete.end\u0027: GraphAction.DELETE_ENTITY,"},{"line_number":47,"context_line":"        \u0027instance.delete.end\u0027: GraphAction.DELETE_ENTITY,"},{"line_number":48,"context_line":"    }"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def __init__(self, transformers, conf):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_151127fa","line":47,"in_reply_to":"3f79a3b5_fc628bd9","updated":"2018-12-13 10:23:02.000000000","message":"Thanks for the explanation. after soft_delete.end there could be a restore.start notification OR there could be a delete.start. So to know if an instance is really deleted it is enough to listen to delete.end.","commit_id":"e6a1113ddffdbfe19375b68e00cc3d3dc014d3d8"}],"vitrage/os_clients.py":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"8beb3635a610d9c5990cfbcf4d90ffa5824851c3","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                     \u0027legacy notifications will be used.\u0027"},{"line_number":37,"context_line":"                     \u0027This flag must be set to False if notification_format \u0027"},{"line_number":38,"context_line":"                     \u0027is set to \"unversioned\" in nova.conf\u0027,"},{"line_number":39,"context_line":"                required\u003dTrue),"},{"line_number":40,"context_line":"]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"_client_modules \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_221b276e","line":39,"range":{"start_line":39,"start_character":14,"end_line":39,"end_character":30},"updated":"2018-12-09 14:00:02.000000000","message":"if required is true it means that it must be written don\u0027t we want to use a default in case it is not written","commit_id":"c9e777ceee492f89f6fe89eb5d4f696f3971f9f7"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"6bb9fbf097b37e2ab75f38c7833d2962e3a545e7","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                     \u0027legacy notifications will be used.\u0027"},{"line_number":37,"context_line":"                     \u0027This flag must be set to False if notification_format \u0027"},{"line_number":38,"context_line":"                     \u0027is set to \"unversioned\" in nova.conf\u0027,"},{"line_number":39,"context_line":"                required\u003dTrue),"},{"line_number":40,"context_line":"]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"_client_modules \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_ad9de3b9","line":39,"range":{"start_line":39,"start_character":14,"end_line":39,"end_character":30},"in_reply_to":"3f79a3b5_221b276e","updated":"2018-12-10 08:16:45.000000000","message":"Done","commit_id":"c9e777ceee492f89f6fe89eb5d4f696f3971f9f7"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"8beb3635a610d9c5990cfbcf4d90ffa5824851c3","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        LOG.exception(\u0027Create Mistral client - Got Exception.\u0027)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"def use_nova_versioned_notifications(conf):"},{"line_number":183,"context_line":"    \"\"\"Check whether Nova versioned notifications should be used."},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    Nova versioned notifications are preferred. The legacy notifications"},{"line_number":186,"context_line":"    were deprecated in Rocky."},{"line_number":187,"context_line":"    \"\"\""},{"line_number":188,"context_line":"    return conf.use_nova_versioned_notifications"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_e230cfec","line":188,"range":{"start_line":182,"start_character":0,"end_line":188,"end_character":48},"updated":"2018-12-09 14:00:02.000000000","message":"I think its redundant to use this method its just like using conf with the attribute","commit_id":"c9e777ceee492f89f6fe89eb5d4f696f3971f9f7"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"6bb9fbf097b37e2ab75f38c7833d2962e3a545e7","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        LOG.exception(\u0027Create Mistral client - Got Exception.\u0027)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"def use_nova_versioned_notifications(conf):"},{"line_number":183,"context_line":"    \"\"\"Check whether Nova versioned notifications should be used."},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    Nova versioned notifications are preferred. The legacy notifications"},{"line_number":186,"context_line":"    were deprecated in Rocky."},{"line_number":187,"context_line":"    \"\"\""},{"line_number":188,"context_line":"    return conf.use_nova_versioned_notifications"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_cdcb7fa4","line":188,"range":{"start_line":182,"start_character":0,"end_line":188,"end_character":48},"in_reply_to":"3f79a3b5_e230cfec","updated":"2018-12-10 08:16:45.000000000","message":"Done","commit_id":"c9e777ceee492f89f6fe89eb5d4f696f3971f9f7"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"583292800eac5f426a650d2beda74698a4f7bdcf","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    cfg.StrOpt(\u0027heat_version\u0027, default\u003d\u00271\u0027, help\u003d\u0027Heat version\u0027),"},{"line_number":30,"context_line":"    cfg.StrOpt(\u0027mistral_version\u0027, default\u003d\u00272\u0027, help\u003d\u0027Mistral version\u0027),"},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027gnocchi_version\u0027, default\u003d\u00271\u0027, help\u003d\u0027Gnocchi version\u0027),"},{"line_number":32,"context_line":"    cfg.BoolOpt(\u0027use_nova_versioned_notifications\u0027,"},{"line_number":33,"context_line":"                default\u003dTrue,"},{"line_number":34,"context_line":"                help\u003d\u0027Indicates whether to use Nova versioned notifications.\u0027"},{"line_number":35,"context_line":"                     \u0027The default is True. If False, the deprecated Nova \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_2b619f3c","line":32,"range":{"start_line":32,"start_character":4,"end_line":32,"end_character":51},"updated":"2018-12-11 10:03:42.000000000","message":"maybe first set to False, to test that legacy support still works.","commit_id":"e6a1113ddffdbfe19375b68e00cc3d3dc014d3d8"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"04aff670b9f195936a31360f3af348652e8f326a","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    cfg.StrOpt(\u0027heat_version\u0027, default\u003d\u00271\u0027, help\u003d\u0027Heat version\u0027),"},{"line_number":30,"context_line":"    cfg.StrOpt(\u0027mistral_version\u0027, default\u003d\u00272\u0027, help\u003d\u0027Mistral version\u0027),"},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027gnocchi_version\u0027, default\u003d\u00271\u0027, help\u003d\u0027Gnocchi version\u0027),"},{"line_number":32,"context_line":"    cfg.BoolOpt(\u0027use_nova_versioned_notifications\u0027,"},{"line_number":33,"context_line":"                default\u003dTrue,"},{"line_number":34,"context_line":"                help\u003d\u0027Indicates whether to use Nova versioned notifications.\u0027"},{"line_number":35,"context_line":"                     \u0027The default is True. If False, the deprecated Nova \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_823dff8c","line":32,"range":{"start_line":32,"start_character":4,"end_line":32,"end_character":51},"in_reply_to":"3f79a3b5_2b619f3c","updated":"2018-12-13 09:22:56.000000000","message":"Done. The change now contains support for the versioned notifications, but the default is to use the legacy ones.\nI will change the default behaviour in another change.","commit_id":"e6a1113ddffdbfe19375b68e00cc3d3dc014d3d8"}],"vitrage/tests/unit/datasources/nova/test_instance_transformer_legacy_notifications.py":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"8beb3635a610d9c5990cfbcf4d90ffa5824851c3","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        self._test_update_event_transform(instance_events)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def test_create_placeholder_vertex(self):"},{"line_number":52,"context_line":"        self._test_create_placeholder_vertex()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_create_entity_key(self):"},{"line_number":55,"context_line":"        self._test_create_entity_key()"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def test_build_instance_key(self):"},{"line_number":58,"context_line":"        self._test_build_instance_key()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @classmethod"},{"line_number":61,"context_line":"    def _get_default_group_opts(cls):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_c23a73c3","line":58,"range":{"start_line":51,"start_character":4,"end_line":58,"end_character":39},"updated":"2018-12-09 14:00:02.000000000","message":"why not just use the base class method ?","commit_id":"c9e777ceee492f89f6fe89eb5d4f696f3971f9f7"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"6bb9fbf097b37e2ab75f38c7833d2962e3a545e7","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        self._test_update_event_transform(instance_events)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def test_create_placeholder_vertex(self):"},{"line_number":52,"context_line":"        self._test_create_placeholder_vertex()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_create_entity_key(self):"},{"line_number":55,"context_line":"        self._test_create_entity_key()"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def test_build_instance_key(self):"},{"line_number":58,"context_line":"        self._test_build_instance_key()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @classmethod"},{"line_number":61,"context_line":"    def _get_default_group_opts(cls):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_2d455313","line":58,"range":{"start_line":51,"start_character":4,"end_line":58,"end_character":39},"in_reply_to":"3f79a3b5_c23a73c3","updated":"2018-12-10 08:16:45.000000000","message":"The OPTS are different - I want to perform the same tests both with legacy notifications and with versioned notifications.\nThis class uses the legacy notifications and there is another test class for the versioned notifications. I could put all duplicate tests in one class with different opts, but I thought it would be more clear with separate classes","commit_id":"c9e777ceee492f89f6fe89eb5d4f696f3971f9f7"}],"vitrage/tests/unit/datasources/nova/test_instance_transformer_snapshot_events.py":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"8beb3635a610d9c5990cfbcf4d90ffa5824851c3","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        self.assertEqual(vertex_id, neighbor.edge.target_id)"},{"line_number":117,"context_line":"        self.assertEqual(EdgeLabel.CONTAINS, neighbor.edge.label)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    def test_create_placeholder_vertex(self):"},{"line_number":120,"context_line":"        self._test_create_placeholder_vertex()"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def test_create_entity_key(self):"},{"line_number":123,"context_line":"        self._test_create_entity_key()"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def test_build_instance_key(self):"},{"line_number":126,"context_line":"        self._test_build_instance_key()"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @classmethod"},{"line_number":129,"context_line":"    def _get_default_group_opts(cls):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_8240fb34","line":126,"range":{"start_line":119,"start_character":4,"end_line":126,"end_character":39},"updated":"2018-12-09 14:00:02.000000000","message":"same as before","commit_id":"c9e777ceee492f89f6fe89eb5d4f696f3971f9f7"}],"vitrage/tests/unit/datasources/nova/test_instance_transformer_versioned_notifications.py":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"8beb3635a610d9c5990cfbcf4d90ffa5824851c3","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        self._test_update_event_transform(instance_events)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def test_create_placeholder_vertex(self):"},{"line_number":52,"context_line":"        self._test_create_placeholder_vertex()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_create_entity_key(self):"},{"line_number":55,"context_line":"        self._test_create_entity_key()"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def test_build_instance_key(self):"},{"line_number":58,"context_line":"        self._test_build_instance_key()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @classmethod"},{"line_number":61,"context_line":"    def _get_default_group_opts(cls):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_a23bb7c3","line":58,"range":{"start_line":51,"start_character":4,"end_line":58,"end_character":39},"updated":"2018-12-09 14:00:02.000000000","message":"same as before","commit_id":"c9e777ceee492f89f6fe89eb5d4f696f3971f9f7"}]}
