)]}'
{"vitrage/datasources/static/__init__.py":[{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"afa8eb0c606cafe3b9077157139b8c3936adee60","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from oslo_config import cfg"},{"line_number":16,"context_line":"from vitrage.common.constants import UpdateMethod"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"STATIC_DATASOURCE \u003d \u0027static_datasource\u0027"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"OPTS \u003d ["},{"line_number":21,"context_line":"    cfg.StrOpt(\u0027transformer\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_54c7e811","line":18,"updated":"2016-11-15 12:53:27.000000000","message":"it should be only \u0027static\u0027","commit_id":"d7ec9e21448b937373cd404a776370c833d45bec"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"4112d07eed13461aeb6b82b3b98b11dc25576244","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from oslo_config import cfg"},{"line_number":16,"context_line":"from vitrage.common.constants import UpdateMethod"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"STATIC_DATASOURCE \u003d \u0027static_datasource\u0027"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"OPTS \u003d ["},{"line_number":21,"context_line":"    cfg.StrOpt(\u0027transformer\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_a472c77a","line":18,"in_reply_to":"7a77a97e_54c7e811","updated":"2016-11-15 13:49:27.000000000","message":"Done","commit_id":"d7ec9e21448b937373cd404a776370c833d45bec"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"afa8eb0c606cafe3b9077157139b8c3936adee60","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"OPTS \u003d ["},{"line_number":21,"context_line":"    cfg.StrOpt(\u0027transformer\u0027,"},{"line_number":22,"context_line":"               default\u003d\u0027vitrage.datasources.static_datasource.transformer.\u0027"},{"line_number":23,"context_line":"                       \u0027StaticTransformer\u0027,"},{"line_number":24,"context_line":"               help\u003d\u0027Static transformer class path\u0027,"},{"line_number":25,"context_line":"               required\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_14fd703a","line":22,"updated":"2016-11-15 12:53:27.000000000","message":"needs to be: \u0027vitrage.datasources.static.transformer.\u0027","commit_id":"d7ec9e21448b937373cd404a776370c833d45bec"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"4112d07eed13461aeb6b82b3b98b11dc25576244","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"OPTS \u003d ["},{"line_number":21,"context_line":"    cfg.StrOpt(\u0027transformer\u0027,"},{"line_number":22,"context_line":"               default\u003d\u0027vitrage.datasources.static_datasource.transformer.\u0027"},{"line_number":23,"context_line":"                       \u0027StaticTransformer\u0027,"},{"line_number":24,"context_line":"               help\u003d\u0027Static transformer class path\u0027,"},{"line_number":25,"context_line":"               required\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_c46fc390","line":22,"in_reply_to":"7a77a97e_14fd703a","updated":"2016-11-15 13:49:27.000000000","message":"Done","commit_id":"d7ec9e21448b937373cd404a776370c833d45bec"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"afa8eb0c606cafe3b9077157139b8c3936adee60","unresolved":false,"context_lines":[{"line_number":24,"context_line":"               help\u003d\u0027Static transformer class path\u0027,"},{"line_number":25,"context_line":"               required\u003dTrue),"},{"line_number":26,"context_line":"    cfg.StrOpt(\u0027driver\u0027,"},{"line_number":27,"context_line":"               default\u003d\u0027vitrage.datasources.static_datasource.driver.\u0027"},{"line_number":28,"context_line":"                       \u0027StaticDriver\u0027,"},{"line_number":29,"context_line":"               help\u003d\u0027Static driver class path\u0027,"},{"line_number":30,"context_line":"               required\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_34fa6c43","line":27,"range":{"start_line":27,"start_character":24,"end_line":27,"end_character":69},"updated":"2016-11-15 12:53:27.000000000","message":"needs to be: \u0027vitrage.datasources.static.driver.\u0027","commit_id":"d7ec9e21448b937373cd404a776370c833d45bec"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"4112d07eed13461aeb6b82b3b98b11dc25576244","unresolved":false,"context_lines":[{"line_number":24,"context_line":"               help\u003d\u0027Static transformer class path\u0027,"},{"line_number":25,"context_line":"               required\u003dTrue),"},{"line_number":26,"context_line":"    cfg.StrOpt(\u0027driver\u0027,"},{"line_number":27,"context_line":"               default\u003d\u0027vitrage.datasources.static_datasource.driver.\u0027"},{"line_number":28,"context_line":"                       \u0027StaticDriver\u0027,"},{"line_number":29,"context_line":"               help\u003d\u0027Static driver class path\u0027,"},{"line_number":30,"context_line":"               required\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_046a9b80","line":27,"range":{"start_line":27,"start_character":24,"end_line":27,"end_character":69},"in_reply_to":"7a77a97e_34fa6c43","updated":"2016-11-15 13:49:27.000000000","message":"Done","commit_id":"d7ec9e21448b937373cd404a776370c833d45bec"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"990243f68effa37d4338e7fd882b1684039c5423","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    # NOTE: This folder is already used by static_physical datasource. Legacy"},{"line_number":43,"context_line":"    # configuration files will NOT be converted automatically. But user will"},{"line_number":44,"context_line":"    # receive deprecation warnings."},{"line_number":45,"context_line":"    cfg.StrOpt(\u0027directory\u0027, default\u003d\u0027/etc/vitrage/static_datasources\u0027,"},{"line_number":46,"context_line":"               help\u003d\u0027static data sources configuration directory\u0027)"},{"line_number":47,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_77a4e356","line":45,"range":{"start_line":45,"start_character":50,"end_line":45,"end_character":67},"updated":"2016-11-15 14:09:11.000000000","message":"Here it should stay \u0027static_datasources\u0027","commit_id":"d7ec9e21448b937373cd404a776370c833d45bec"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"d4760d214bb13745a78f0b214c68f3f7227e65fe","unresolved":false,"context_lines":[{"line_number":30,"context_line":"               required\u003dTrue),"},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027update_method\u0027,"},{"line_number":32,"context_line":"               default\u003dUpdateMethod.PULL,"},{"line_number":33,"context_line":"               help\u003d\u0027None: updates only via Vitrage periodic snapshots.\u0027"},{"line_number":34,"context_line":"                    \u0027Pull: updates periodically.\u0027"},{"line_number":35,"context_line":"                    \u0027Push: updates by getting notifications from the\u0027"},{"line_number":36,"context_line":"                    \u0027 datasource itself.\u0027,"},{"line_number":37,"context_line":"               required\u003dTrue),"},{"line_number":38,"context_line":"    cfg.IntOpt(\u0027changes_interval\u0027,"},{"line_number":39,"context_line":"               default\u003d30,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_9a4b662b","line":36,"range":{"start_line":33,"start_character":20,"end_line":36,"end_character":41},"updated":"2016-11-15 14:33:06.000000000","message":"This is a general comment. I think you should leave only the Pull part of it, the others are not relevant for the static datasource","commit_id":"965cc921e846127bb97d608dd61cf5d5c8a36831"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"d4760d214bb13745a78f0b214c68f3f7227e65fe","unresolved":false,"context_lines":[{"line_number":39,"context_line":"               default\u003d30,"},{"line_number":40,"context_line":"               help\u003d\u0027interval in seconds between checking changes in the\u0027"},{"line_number":41,"context_line":"                    \u0027static configuration files\u0027),"},{"line_number":42,"context_line":"    # NOTE: This folder is already used by static_physical datasource. Legacy"},{"line_number":43,"context_line":"    # configuration files will NOT be converted automatically. But user will"},{"line_number":44,"context_line":"    # receive deprecation warnings."},{"line_number":45,"context_line":"    cfg.StrOpt(\u0027directory\u0027, default\u003d\u0027/etc/vitrage/statics\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_ba6f4291","line":42,"range":{"start_line":42,"start_character":6,"end_line":42,"end_character":69},"updated":"2016-11-15 14:33:06.000000000","message":"static_physical datasource is using /etc/vitrage/static_physical, not /etc/vitrage/static","commit_id":"965cc921e846127bb97d608dd61cf5d5c8a36831"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"698abf181012761ca4a81bad1e15d514adc38c8b","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    # NOTE: This folder is already used by static_physical datasource. Legacy"},{"line_number":43,"context_line":"    # configuration files will NOT be converted automatically. But user will"},{"line_number":44,"context_line":"    # receive deprecation warnings."},{"line_number":45,"context_line":"    cfg.StrOpt(\u0027directory\u0027, default\u003d\u0027/etc/vitrage/static_datasources\u0027,"},{"line_number":46,"context_line":"               help\u003d\u0027static data sources configuration directory\u0027)"},{"line_number":47,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a77a97e_dee1329c","line":45,"range":{"start_line":45,"start_character":50,"end_line":45,"end_character":68},"updated":"2016-11-16 06:20:02.000000000","message":"I\u0027m not sure I understand. Are you planning to place the files of both static and static_physical under the same folder? I assumed there will be two folders: static and static_physical","commit_id":"f1b272fa5bb7a94805e0172dac9b7d7ac3f41f75"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"37205bbb07c48987e05821be691a833f356e3221","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    # NOTE: This folder is already used by static_physical datasource. Legacy"},{"line_number":43,"context_line":"    # configuration files will NOT be converted automatically. But user will"},{"line_number":44,"context_line":"    # receive deprecation warnings."},{"line_number":45,"context_line":"    cfg.StrOpt(\u0027directory\u0027, default\u003d\u0027/etc/vitrage/static_datasources\u0027,"},{"line_number":46,"context_line":"               help\u003d\u0027static data sources configuration directory\u0027)"},{"line_number":47,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a77a97e_a7be7b62","line":45,"range":{"start_line":45,"start_character":50,"end_line":45,"end_character":68},"in_reply_to":"7a77a97e_940dd940","updated":"2016-11-20 14:30:21.000000000","message":"Sounds good.\nThe new static datasource will use the deprecated static_physical datasource, or will it the new static datasource will do both inside?","commit_id":"f1b272fa5bb7a94805e0172dac9b7d7ac3f41f75"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"36d841c59a1c1d6c4acfbe23f0828330dac61d63","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    # NOTE: This folder is already used by static_physical datasource. Legacy"},{"line_number":43,"context_line":"    # configuration files will NOT be converted automatically. But user will"},{"line_number":44,"context_line":"    # receive deprecation warnings."},{"line_number":45,"context_line":"    cfg.StrOpt(\u0027directory\u0027, default\u003d\u0027/etc/vitrage/static_datasources\u0027,"},{"line_number":46,"context_line":"               help\u003d\u0027static data sources configuration directory\u0027)"},{"line_number":47,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a77a97e_d0024409","line":45,"range":{"start_line":45,"start_character":50,"end_line":45,"end_character":68},"in_reply_to":"7a77a97e_a7be7b62","updated":"2016-11-21 09:13:50.000000000","message":"Yes for first question. Not understanding the second. Mind explaining in detail?","commit_id":"f1b272fa5bb7a94805e0172dac9b7d7ac3f41f75"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"22fc895919ba46859e18ad82a2c64de520172ca0","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    # NOTE: This folder is already used by static_physical datasource. Legacy"},{"line_number":43,"context_line":"    # configuration files will NOT be converted automatically. But user will"},{"line_number":44,"context_line":"    # receive deprecation warnings."},{"line_number":45,"context_line":"    cfg.StrOpt(\u0027directory\u0027, default\u003d\u0027/etc/vitrage/static_datasources\u0027,"},{"line_number":46,"context_line":"               help\u003d\u0027static data sources configuration directory\u0027)"},{"line_number":47,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a77a97e_940dd940","line":45,"range":{"start_line":45,"start_character":50,"end_line":45,"end_character":68},"in_reply_to":"7a77a97e_dee1329c","updated":"2016-11-16 07:43:57.000000000","message":"The legacy `static_physical` datasource has already occupied the folder `static_datasources`. Renaming it to `static_physical_datasources` might cause more compatibility issue.\n\nSo my plan is to patch the `static_physical` module to ignore new format and the new `static` module can handle both format.","commit_id":"f1b272fa5bb7a94805e0172dac9b7d7ac3f41f75"}],"vitrage/datasources/static/transformer.py":[{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"afa8eb0c606cafe3b9077157139b8c3936adee60","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            neighbors.append(Neighbor(vertex, edge))"},{"line_number":99,"context_line":"        return neighbors"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    @staticmethod"},{"line_number":102,"context_line":"    def _extract_metadata(entity_event):"},{"line_number":103,"context_line":"        metadata \u003d {VProps.NAME: entity_event[VProps.NAME]}"},{"line_number":104,"context_line":"        return metadata"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_efe49d0e","line":104,"range":{"start_line":101,"start_character":1,"end_line":104,"end_character":23},"updated":"2016-11-15 12:53:27.000000000","message":"I am not sure that you need this here","commit_id":"d7ec9e21448b937373cd404a776370c833d45bec"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"4112d07eed13461aeb6b82b3b98b11dc25576244","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            neighbors.append(Neighbor(vertex, edge))"},{"line_number":99,"context_line":"        return neighbors"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    @staticmethod"},{"line_number":102,"context_line":"    def _extract_metadata(entity_event):"},{"line_number":103,"context_line":"        metadata \u003d {VProps.NAME: entity_event[VProps.NAME]}"},{"line_number":104,"context_line":"        return metadata"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_24d3173a","line":104,"range":{"start_line":101,"start_character":1,"end_line":104,"end_character":23},"in_reply_to":"7a77a97e_efe49d0e","updated":"2016-11-15 13:49:27.000000000","message":"Done","commit_id":"d7ec9e21448b937373cd404a776370c833d45bec"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"d4760d214bb13745a78f0b214c68f3f7227e65fe","unresolved":false,"context_lines":[{"line_number":31,"context_line":"class StaticTransformer(ResourceTransformerBase):"},{"line_number":32,"context_line":"    \"\"\"The Transformer class understands the specific entity details"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    It outputs a tuple with the following details:"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    a. Neighbor vertex with it\u0027s partial data so vitrage will know to where"},{"line_number":37,"context_line":"       to connect the edge."}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_ba790232","line":34,"range":{"start_line":34,"start_character":4,"end_line":34,"end_character":50},"updated":"2016-11-15 14:33:06.000000000","message":"It outputs a vertex + neighbours + edges between them","commit_id":"965cc921e846127bb97d608dd61cf5d5c8a36831"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"909e2c80d05e80d8f8951cfb61ca74e4cd4763ed","unresolved":false,"context_lines":[{"line_number":31,"context_line":"class StaticTransformer(ResourceTransformerBase):"},{"line_number":32,"context_line":"    \"\"\"The Transformer class understands the specific entity details"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    It outputs a tuple with the following details:"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    a. Neighbor vertex with it\u0027s partial data so vitrage will know to where"},{"line_number":37,"context_line":"       to connect the edge."}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_f8c7e90f","line":34,"range":{"start_line":34,"start_character":4,"end_line":34,"end_character":50},"in_reply_to":"7a77a97e_ba790232","updated":"2016-11-16 02:47:57.000000000","message":"Removed since this is a general description. I will cherry-pick the changes to skeleton instead","commit_id":"965cc921e846127bb97d608dd61cf5d5c8a36831"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"d4760d214bb13745a78f0b214c68f3f7227e65fe","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    def __init__(self, transformers, conf):"},{"line_number":43,"context_line":"        super(StaticTransformer, self).__init__(transformers, conf)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    # The following methods must be implemented in a transformer class"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def _create_snapshot_entity_vertex(self, entity_event):"},{"line_number":48,"context_line":"        return self._create_vertex(entity_event)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_faee1aeb","line":45,"range":{"start_line":45,"start_character":0,"end_line":45,"end_character":70},"updated":"2016-11-15 14:33:06.000000000","message":"You can remove this comment","commit_id":"965cc921e846127bb97d608dd61cf5d5c8a36831"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"909e2c80d05e80d8f8951cfb61ca74e4cd4763ed","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    def __init__(self, transformers, conf):"},{"line_number":43,"context_line":"        super(StaticTransformer, self).__init__(transformers, conf)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    # The following methods must be implemented in a transformer class"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def _create_snapshot_entity_vertex(self, entity_event):"},{"line_number":48,"context_line":"        return self._create_vertex(entity_event)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_38d241d3","line":45,"range":{"start_line":45,"start_character":0,"end_line":45,"end_character":70},"in_reply_to":"7a77a97e_faee1aeb","updated":"2016-11-16 02:47:57.000000000","message":"Done","commit_id":"965cc921e846127bb97d608dd61cf5d5c8a36831"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"d4760d214bb13745a78f0b214c68f3f7227e65fe","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        neighbors_detail \u003d entity_event.get(self.QUERY_RESULT, [])"},{"line_number":91,"context_line":"        for vertex in neighbors_detail:"},{"line_number":92,"context_line":"            edge \u003d graph_utils.create_edge("},{"line_number":93,"context_line":"                source_id\u003dself._create_entity_key(entity_event),"},{"line_number":94,"context_line":"                target_id\u003dvertex.vertex_id,"},{"line_number":95,"context_line":"                relationship_type\u003dEdgeLabel.ON)"},{"line_number":96,"context_line":"            neighbors.append(Neighbor(vertex, edge))"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_fa4b7aae","line":93,"range":{"start_line":93,"start_character":26,"end_line":93,"end_character":63},"updated":"2016-11-15 14:33:06.000000000","message":"This will work in case the neighbour is also static, but it\u0027s problematic if the neighbour comes from a different datasource like nova. Each datasource may define the entity key in its own format. I think the current static_physical datasource is trying to locate the specific transformer, and then to ask it to generate the entity key","commit_id":"965cc921e846127bb97d608dd61cf5d5c8a36831"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"909e2c80d05e80d8f8951cfb61ca74e4cd4763ed","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        neighbors_detail \u003d entity_event.get(self.QUERY_RESULT, [])"},{"line_number":91,"context_line":"        for vertex in neighbors_detail:"},{"line_number":92,"context_line":"            edge \u003d graph_utils.create_edge("},{"line_number":93,"context_line":"                source_id\u003dself._create_entity_key(entity_event),"},{"line_number":94,"context_line":"                target_id\u003dvertex.vertex_id,"},{"line_number":95,"context_line":"                relationship_type\u003dEdgeLabel.ON)"},{"line_number":96,"context_line":"            neighbors.append(Neighbor(vertex, edge))"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_18674526","line":93,"range":{"start_line":93,"start_character":26,"end_line":93,"end_character":63},"in_reply_to":"7a77a97e_fa4b7aae","updated":"2016-11-16 02:47:57.000000000","message":"Removed from skeleton. I\u0027ll revisit it in further patch sets.","commit_id":"965cc921e846127bb97d608dd61cf5d5c8a36831"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"d4760d214bb13745a78f0b214c68f3f7227e65fe","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            edge \u003d graph_utils.create_edge("},{"line_number":93,"context_line":"                source_id\u003dself._create_entity_key(entity_event),"},{"line_number":94,"context_line":"                target_id\u003dvertex.vertex_id,"},{"line_number":95,"context_line":"                relationship_type\u003dEdgeLabel.ON)"},{"line_number":96,"context_line":"            neighbors.append(Neighbor(vertex, edge))"},{"line_number":97,"context_line":"        return neighbors"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_faeffaad","line":95,"range":{"start_line":95,"start_character":16,"end_line":95,"end_character":47},"updated":"2016-11-15 14:33:06.000000000","message":"relationship_type should be taken from the yaml definition","commit_id":"965cc921e846127bb97d608dd61cf5d5c8a36831"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"909e2c80d05e80d8f8951cfb61ca74e4cd4763ed","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            edge \u003d graph_utils.create_edge("},{"line_number":93,"context_line":"                source_id\u003dself._create_entity_key(entity_event),"},{"line_number":94,"context_line":"                target_id\u003dvertex.vertex_id,"},{"line_number":95,"context_line":"                relationship_type\u003dEdgeLabel.ON)"},{"line_number":96,"context_line":"            neighbors.append(Neighbor(vertex, edge))"},{"line_number":97,"context_line":"        return neighbors"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_5871bddf","line":95,"range":{"start_line":95,"start_character":16,"end_line":95,"end_character":47},"in_reply_to":"7a77a97e_faeffaad","updated":"2016-11-16 02:47:57.000000000","message":"Sure","commit_id":"965cc921e846127bb97d608dd61cf5d5c8a36831"}],"vitrage/tests/unit/datasources/static/test_static_driver.py":[{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"afa8eb0c606cafe3b9077157139b8c3936adee60","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                   default\u003dutils.get_resources_dir() + \u0027/static_datasources\u0027)"},{"line_number":45,"context_line":"    ]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    CHANGES_OPTS \u003d ["},{"line_number":48,"context_line":"        cfg.StrOpt(\u0027transformer\u0027,"},{"line_number":49,"context_line":"                   default\u003d\u0027vitrage.datasources.static.transformer.\u0027"},{"line_number":50,"context_line":"                           \u0027StaticTransformer\u0027),"},{"line_number":51,"context_line":"        cfg.StrOpt(\u0027driver\u0027,"},{"line_number":52,"context_line":"                   default\u003d\u0027vitrage.datasources.static.driver.\u0027"},{"line_number":53,"context_line":"                           \u0027StaticDriver\u0027),"},{"line_number":54,"context_line":"        cfg.IntOpt(\u0027changes_interval\u0027,"},{"line_number":55,"context_line":"                   default\u003d30,"},{"line_number":56,"context_line":"                   min\u003d30,"},{"line_number":57,"context_line":"                   help\u003d\u0027interval between checking changes in the static \u0027"},{"line_number":58,"context_line":"                        \u0027plugin\u0027),"},{"line_number":59,"context_line":"        cfg.StrOpt(\u0027directory\u0027,"},{"line_number":60,"context_line":"                   default\u003dutils.get_resources_dir() +"},{"line_number":61,"context_line":"                   \u0027/static_datasources/changes_datasources\u0027),"},{"line_number":62,"context_line":"    ]"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    # noinspection PyAttributeOutsideInit,PyPep8Naming"},{"line_number":65,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_2fabf575","line":62,"range":{"start_line":47,"start_character":0,"end_line":62,"end_character":5},"updated":"2016-11-15 12:53:27.000000000","message":"don\u0027t need it here. It is the same as OPTS","commit_id":"d7ec9e21448b937373cd404a776370c833d45bec"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"f13a0fac8f5f9fe912512304763b17c91eec821b","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                   default\u003dutils.get_resources_dir() + \u0027/static_datasources\u0027)"},{"line_number":45,"context_line":"    ]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    CHANGES_OPTS \u003d ["},{"line_number":48,"context_line":"        cfg.StrOpt(\u0027transformer\u0027,"},{"line_number":49,"context_line":"                   default\u003d\u0027vitrage.datasources.static.transformer.\u0027"},{"line_number":50,"context_line":"                           \u0027StaticTransformer\u0027),"},{"line_number":51,"context_line":"        cfg.StrOpt(\u0027driver\u0027,"},{"line_number":52,"context_line":"                   default\u003d\u0027vitrage.datasources.static.driver.\u0027"},{"line_number":53,"context_line":"                           \u0027StaticDriver\u0027),"},{"line_number":54,"context_line":"        cfg.IntOpt(\u0027changes_interval\u0027,"},{"line_number":55,"context_line":"                   default\u003d30,"},{"line_number":56,"context_line":"                   min\u003d30,"},{"line_number":57,"context_line":"                   help\u003d\u0027interval between checking changes in the static \u0027"},{"line_number":58,"context_line":"                        \u0027plugin\u0027),"},{"line_number":59,"context_line":"        cfg.StrOpt(\u0027directory\u0027,"},{"line_number":60,"context_line":"                   default\u003dutils.get_resources_dir() +"},{"line_number":61,"context_line":"                   \u0027/static_datasources/changes_datasources\u0027),"},{"line_number":62,"context_line":"    ]"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    # noinspection PyAttributeOutsideInit,PyPep8Naming"},{"line_number":65,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_7725c3a9","line":62,"range":{"start_line":47,"start_character":0,"end_line":62,"end_character":5},"in_reply_to":"7a77a97e_2fabf575","updated":"2016-11-15 13:56:21.000000000","message":"I thought it was for testing `get_changes` method. Though not implemented yet, it is in scope of the new static datasource. So I kept it.\n\nDid I misunderstand the implementation in static_physical datasource?","commit_id":"d7ec9e21448b937373cd404a776370c833d45bec"},{"author":{"_account_id":19122,"name":"Alexey Weyl","email":"aloshaweyl@gmail.com","username":"alexey_weyl"},"change_message_id":"990243f68effa37d4338e7fd882b1684039c5423","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                   default\u003dutils.get_resources_dir() + \u0027/static_datasources\u0027)"},{"line_number":45,"context_line":"    ]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    CHANGES_OPTS \u003d ["},{"line_number":48,"context_line":"        cfg.StrOpt(\u0027transformer\u0027,"},{"line_number":49,"context_line":"                   default\u003d\u0027vitrage.datasources.static.transformer.\u0027"},{"line_number":50,"context_line":"                           \u0027StaticTransformer\u0027),"},{"line_number":51,"context_line":"        cfg.StrOpt(\u0027driver\u0027,"},{"line_number":52,"context_line":"                   default\u003d\u0027vitrage.datasources.static.driver.\u0027"},{"line_number":53,"context_line":"                           \u0027StaticDriver\u0027),"},{"line_number":54,"context_line":"        cfg.IntOpt(\u0027changes_interval\u0027,"},{"line_number":55,"context_line":"                   default\u003d30,"},{"line_number":56,"context_line":"                   min\u003d30,"},{"line_number":57,"context_line":"                   help\u003d\u0027interval between checking changes in the static \u0027"},{"line_number":58,"context_line":"                        \u0027plugin\u0027),"},{"line_number":59,"context_line":"        cfg.StrOpt(\u0027directory\u0027,"},{"line_number":60,"context_line":"                   default\u003dutils.get_resources_dir() +"},{"line_number":61,"context_line":"                   \u0027/static_datasources/changes_datasources\u0027),"},{"line_number":62,"context_line":"    ]"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    # noinspection PyAttributeOutsideInit,PyPep8Naming"},{"line_number":65,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a77a97e_f79c736b","line":62,"range":{"start_line":47,"start_character":0,"end_line":62,"end_character":5},"in_reply_to":"7a77a97e_7725c3a9","updated":"2016-11-15 14:09:11.000000000","message":"You are quite correct. I just saw that OPTS and CHANGES_OPTS are the same. But now that I look more closely I can see that the directory parameter is different.","commit_id":"d7ec9e21448b937373cd404a776370c833d45bec"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"d4760d214bb13745a78f0b214c68f3f7227e65fe","unresolved":false,"context_lines":[{"line_number":39,"context_line":"                   default\u003d30,"},{"line_number":40,"context_line":"                   min\u003d30,"},{"line_number":41,"context_line":"                   help\u003d\u0027interval between checking changes in the \u0027"},{"line_number":42,"context_line":"                        \u0027configuration files of the physical topology plugin\u0027),"},{"line_number":43,"context_line":"        cfg.StrOpt(\u0027directory\u0027,"},{"line_number":44,"context_line":"                   default\u003dutils.get_resources_dir() + \u0027/static_datasources\u0027)"},{"line_number":45,"context_line":"    ]"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_fae29a9e","line":42,"range":{"start_line":42,"start_character":52,"end_line":42,"end_character":76},"updated":"2016-11-15 14:33:06.000000000","message":"change to \"static datasource\"","commit_id":"965cc921e846127bb97d608dd61cf5d5c8a36831"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"909e2c80d05e80d8f8951cfb61ca74e4cd4763ed","unresolved":false,"context_lines":[{"line_number":39,"context_line":"                   default\u003d30,"},{"line_number":40,"context_line":"                   min\u003d30,"},{"line_number":41,"context_line":"                   help\u003d\u0027interval between checking changes in the \u0027"},{"line_number":42,"context_line":"                        \u0027configuration files of the physical topology plugin\u0027),"},{"line_number":43,"context_line":"        cfg.StrOpt(\u0027directory\u0027,"},{"line_number":44,"context_line":"                   default\u003dutils.get_resources_dir() + \u0027/static_datasources\u0027)"},{"line_number":45,"context_line":"    ]"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_583ffdd5","line":42,"range":{"start_line":42,"start_character":52,"end_line":42,"end_character":76},"in_reply_to":"7a77a97e_fae29a9e","updated":"2016-11-16 02:47:57.000000000","message":"Done","commit_id":"965cc921e846127bb97d608dd61cf5d5c8a36831"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"d4760d214bb13745a78f0b214c68f3f7227e65fe","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                   default\u003d30,"},{"line_number":56,"context_line":"                   min\u003d30,"},{"line_number":57,"context_line":"                   help\u003d\u0027interval between checking changes in the static \u0027"},{"line_number":58,"context_line":"                        \u0027plugin\u0027),"},{"line_number":59,"context_line":"        cfg.StrOpt(\u0027directory\u0027,"},{"line_number":60,"context_line":"                   default\u003dutils.get_resources_dir() +"},{"line_number":61,"context_line":"                   \u0027/static_datasources/changes_datasources\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_dafcfe40","line":58,"range":{"start_line":58,"start_character":25,"end_line":58,"end_character":31},"updated":"2016-11-15 14:33:06.000000000","message":"change to \"datasource\" (plugin was the old terminology)","commit_id":"965cc921e846127bb97d608dd61cf5d5c8a36831"},{"author":{"_account_id":21414,"name":"Yujun Zhang","email":"zhang.yujunz@zte.com.cn","username":"yujunz"},"change_message_id":"909e2c80d05e80d8f8951cfb61ca74e4cd4763ed","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                   default\u003d30,"},{"line_number":56,"context_line":"                   min\u003d30,"},{"line_number":57,"context_line":"                   help\u003d\u0027interval between checking changes in the static \u0027"},{"line_number":58,"context_line":"                        \u0027plugin\u0027),"},{"line_number":59,"context_line":"        cfg.StrOpt(\u0027directory\u0027,"},{"line_number":60,"context_line":"                   default\u003dutils.get_resources_dir() +"},{"line_number":61,"context_line":"                   \u0027/static_datasources/changes_datasources\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_982195b7","line":58,"range":{"start_line":58,"start_character":25,"end_line":58,"end_character":31},"in_reply_to":"7a77a97e_dafcfe40","updated":"2016-11-16 02:47:57.000000000","message":"Done","commit_id":"965cc921e846127bb97d608dd61cf5d5c8a36831"}]}
