)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"850418f59a01958d9b4e65b5a4807dabffa3ae0a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Dima Kuznetsov \u003cdima.kuznetsov@toganetworks.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-06-21 17:03:41 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Introduce virtual port types"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Up until now we were ignoring all ports that were not bound to a"},{"line_number":10,"context_line":"specific chassis. This patch will cache all FIP floating ports locally,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5f201791_f5f23906","line":7,"updated":"2017-06-22 08:20:28.000000000","message":"Maybe call them unbounded-ports instead will describe them better? \n(As virtual can be-interpreted in may ways..)","commit_id":"0d76e942a5944ae247739318f7198694978e26e7"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"262e6914f3154e9a4ca1c7124c836e77f210c18f","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Up until now we were ignoring all ports that were not bound to a"},{"line_number":10,"context_line":"specific chassis. This patch will cache all FIP floating ports locally,"},{"line_number":11,"context_line":"to avoid expensive lookup in DNAT app."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ifb0d45b746f1aec64528ea23376d16edaf253af6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5f201791_04d109ce","line":12,"updated":"2017-06-22 05:37:30.000000000","message":"Should be linked to some launchpad bug/bp","commit_id":"0d76e942a5944ae247739318f7198694978e26e7"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"0cc7243e9ac21535e613ea4da2820d964f982666","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Up until now we were ignoring all ports that were not bound to a"},{"line_number":10,"context_line":"specific chassis. This patch will cache all FIP floating ports locally,"},{"line_number":11,"context_line":"to avoid expensive lookup in DNAT app."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ifb0d45b746f1aec64528ea23376d16edaf253af6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5f201791_e52d42fe","line":12,"in_reply_to":"5f201791_04d109ce","updated":"2017-06-28 07:32:07.000000000","message":"Is it currenly done in the scope of DNAT bug. Reference will be added.","commit_id":"0d76e942a5944ae247739318f7198694978e26e7"}],"doc/source/specs/virtual_lports.rst":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ae75b63c2eec01da070520d56e4c5909c8e8efe6","unresolved":false,"context_lines":[{"line_number":33,"context_line":"* All ports bound to a local chassis are local"},{"line_number":34,"context_line":"* All ports bound to any other chassis are remote"},{"line_number":35,"context_line":"* All other ports are virtual"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"References"},{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f201791_4aeef522","line":36,"updated":"2017-06-21 19:10:22.000000000","message":"I would like to press home on a point: In this proposition, you suggest to ignore lport\u0027s ofport status, and ignore whether a port has already been bound or not. Am I right?","commit_id":"0d76e942a5944ae247739318f7198694978e26e7"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"0cc7243e9ac21535e613ea4da2820d964f982666","unresolved":false,"context_lines":[{"line_number":33,"context_line":"* All ports bound to a local chassis are local"},{"line_number":34,"context_line":"* All ports bound to any other chassis are remote"},{"line_number":35,"context_line":"* All other ports are virtual"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"References"},{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f201791_c53c8694","line":36,"in_reply_to":"5f201791_4aeef522","updated":"2017-06-28 07:32:07.000000000","message":"Yes, I think we should treat it local based on the binding profile (that is translated to chassis).","commit_id":"0d76e942a5944ae247739318f7198694978e26e7"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"262e6914f3154e9a4ca1c7124c836e77f210c18f","unresolved":false,"context_lines":[{"line_number":34,"context_line":"* All ports bound to any other chassis are remote"},{"line_number":35,"context_line":"* All other ports are virtual"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"References"},{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f201791_84fd193c","line":37,"updated":"2017-06-22 05:37:30.000000000","message":"What is the impact on API/DB models?","commit_id":"0d76e942a5944ae247739318f7198694978e26e7"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"0cc7243e9ac21535e613ea4da2820d964f982666","unresolved":false,"context_lines":[{"line_number":34,"context_line":"* All ports bound to any other chassis are remote"},{"line_number":35,"context_line":"* All other ports are virtual"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"References"},{"line_number":39,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5f201791_65dff268","line":37,"in_reply_to":"5f201791_84fd193c","updated":"2017-06-28 07:32:07.000000000","message":"None, this is controller-side only, the way he views his port objects.","commit_id":"0d76e942a5944ae247739318f7198694978e26e7"}],"dragonflow/controller/df_local_controller.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ae75b63c2eec01da070520d56e4c5909c8e8efe6","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"# Whitelist the port types we want to be cached"},{"line_number":47,"context_line":"_CACHED_VIRTUAL_PORT_TYPES \u003d ("},{"line_number":48,"context_line":"    n_const.DEVICE_OWNER_FLOATINGIP,"},{"line_number":49,"context_line":")"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_6a3771b2","line":48,"updated":"2017-06-21 19:10:22.000000000","message":"Shouldn\u0027t the owner of trunk ports also be here?","commit_id":"0d76e942a5944ae247739318f7198694978e26e7"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"0cc7243e9ac21535e613ea4da2820d964f982666","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"# Whitelist the port types we want to be cached"},{"line_number":47,"context_line":"_CACHED_VIRTUAL_PORT_TYPES \u003d ("},{"line_number":48,"context_line":"    n_const.DEVICE_OWNER_FLOATINGIP,"},{"line_number":49,"context_line":")"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_a5e50ade","line":48,"in_reply_to":"5f201791_249ac513","updated":"2017-06-28 07:32:07.000000000","message":"We can treat it as either. At the moment it is assigned a chassis and becomes local somewhere.\n\nThe problem with it is that once the trunk port moves, its subports\u0027 chassis is not updated.","commit_id":"0d76e942a5944ae247739318f7198694978e26e7"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"262e6914f3154e9a4ca1c7124c836e77f210c18f","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"# Whitelist the port types we want to be cached"},{"line_number":47,"context_line":"_CACHED_VIRTUAL_PORT_TYPES \u003d ("},{"line_number":48,"context_line":"    n_const.DEVICE_OWNER_FLOATINGIP,"},{"line_number":49,"context_line":")"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_249ac513","line":48,"in_reply_to":"5f201791_6a3771b2","updated":"2017-06-22 05:37:30.000000000","message":"I think trunk port is on specific chassis, isn\u0027t it?","commit_id":"0d76e942a5944ae247739318f7198694978e26e7"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"7402f9146c5b6400ad14d9daa5ab222c933ceaa3","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"# Whitelist the port types we want to be cached"},{"line_number":47,"context_line":"_CACHED_VIRTUAL_PORT_TYPES \u003d ("},{"line_number":48,"context_line":"    n_const.DEVICE_OWNER_FLOATINGIP,"},{"line_number":49,"context_line":")"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_66437843","line":48,"in_reply_to":"5f201791_a5e50ade","updated":"2017-06-28 10:25:01.000000000","message":"Trunk port is assigned a chassis as a work-around. It should \u0027inherit\u0027 the chassis from the parent port.\n\nOn second though, let\u0027s treat trunk ports separately.","commit_id":"0d76e942a5944ae247739318f7198694978e26e7"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"5277a434934cdd60b8fe7068851495e2b20098bd","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            lport.ofport \u003d self.vswitch_api.get_vtp_ofport("},{"line_number":221,"context_line":"                    lswitch.network_type)"},{"line_number":222,"context_line":"        elif ("},{"line_number":223,"context_line":"            lport.is_virtual and"},{"line_number":224,"context_line":"            lport.device_owner not in _CACHED_VIRTUAL_PORT_TYPES"},{"line_number":225,"context_line":"        ):"},{"line_number":226,"context_line":"            # Virtual port is of not relevant type, discard it"},{"line_number":227,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f201791_86f454f2","line":224,"range":{"start_line":223,"start_character":0,"end_line":224,"end_character":64},"updated":"2017-06-28 08:48:59.000000000","message":"Maybe break this out into two (nested) conditions? (This will help in my next request, too)","commit_id":"e9c050aa461e7ade162c821b3b6400dc997b9d50"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"5277a434934cdd60b8fe7068851495e2b20098bd","unresolved":false,"context_lines":[{"line_number":224,"context_line":"            lport.device_owner not in _CACHED_VIRTUAL_PORT_TYPES"},{"line_number":225,"context_line":"        ):"},{"line_number":226,"context_line":"            # Virtual port is of not relevant type, discard it"},{"line_number":227,"context_line":"            return"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        if not lport.is_virtual and not lport.ofport:"},{"line_number":230,"context_line":"            # The tunnel port online event will update the remote logical"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f201791_a6f19003","line":227,"updated":"2017-06-28 08:48:59.000000000","message":"Maybe add an else clause with exception?","commit_id":"e9c050aa461e7ade162c821b3b6400dc997b9d50"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"dbe56cd4d8f163601314a344005d684933104b9f","unresolved":false,"context_lines":[{"line_number":224,"context_line":"            lport.device_owner not in _CACHED_VIRTUAL_PORT_TYPES"},{"line_number":225,"context_line":"        ):"},{"line_number":226,"context_line":"            # Virtual port is of not relevant type, discard it"},{"line_number":227,"context_line":"            return"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        if not lport.is_virtual and not lport.ofport:"},{"line_number":230,"context_line":"            # The tunnel port online event will update the remote logical"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f1d235d_541e6870","line":227,"in_reply_to":"3f1d235d_a3f9644e","updated":"2017-07-03 13:03:32.000000000","message":"I\u0027ve revised the code in a way that it cannot happen, see latest ps","commit_id":"e9c050aa461e7ade162c821b3b6400dc997b9d50"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"b370c50e6867145b340da650ec0a5105ad81dc57","unresolved":false,"context_lines":[{"line_number":224,"context_line":"            lport.device_owner not in _CACHED_VIRTUAL_PORT_TYPES"},{"line_number":225,"context_line":"        ):"},{"line_number":226,"context_line":"            # Virtual port is of not relevant type, discard it"},{"line_number":227,"context_line":"            return"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        if not lport.is_virtual and not lport.ofport:"},{"line_number":230,"context_line":"            # The tunnel port online event will update the remote logical"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f201791_bd33de13","line":227,"in_reply_to":"5f201791_a6f19003","updated":"2017-06-28 09:56:54.000000000","message":"Why an exception?","commit_id":"e9c050aa461e7ade162c821b3b6400dc997b9d50"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"b5a18922e0d7b000f85a8cfb6a5392959b130340","unresolved":false,"context_lines":[{"line_number":224,"context_line":"            lport.device_owner not in _CACHED_VIRTUAL_PORT_TYPES"},{"line_number":225,"context_line":"        ):"},{"line_number":226,"context_line":"            # Virtual port is of not relevant type, discard it"},{"line_number":227,"context_line":"            return"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        if not lport.is_virtual and not lport.ofport:"},{"line_number":230,"context_line":"            # The tunnel port online event will update the remote logical"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f1d235d_a3f9644e","line":227,"in_reply_to":"5f201791_bd33de13","updated":"2017-06-29 08:08:45.000000000","message":"I figured we want a big red warning when a port is neither local, remote, or virtual. I think that would point to a bug considering how local/remote/virtual ports are defined.","commit_id":"e9c050aa461e7ade162c821b3b6400dc997b9d50"}],"dragonflow/db/models/l2.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"4c007e3ee33bc274470799f136bc880584f8de97","unresolved":false,"context_lines":[{"line_number":165,"context_line":"            not self.is_local and"},{"line_number":166,"context_line":"            not self.is_virtual and"},{"line_number":167,"context_line":"            self.chassis is not None and"},{"line_number":168,"context_line":"            self.chassis.id !\u003d df_const.DRAGONFLOW_VIRTUAL_PORT"},{"line_number":169,"context_line":"        )"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def __str__(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f231b9d_94beb2d2","line":168,"range":{"start_line":168,"start_character":0,"end_line":168,"end_character":63},"updated":"2017-06-19 12:28:19.000000000","message":"This looks like it should be in is_virtual","commit_id":"50c4a03ac902aa4d09cd8e19b986ee769f0d853f"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"38c748098a9f60905d8ddb0c0677afdf7c1c82d5","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"@mf.register_model"},{"line_number":99,"context_line":"@mf.construct_nb_db_model(events\u003d{"},{"line_number":100,"context_line":"    EVENT_LOCAL_CREATED, EVENT_REMOTE_CREATED, EVENT_VIRTUAL_CREATED,"},{"line_number":101,"context_line":"    EVENT_LOCAL_UPDATED, EVENT_REMOTE_UPDATED, EVENT_VIRTUAL_UPDATED,"},{"line_number":102,"context_line":"    EVENT_LOCAL_DELETED, EVENT_REMOTE_DELETED, EVENT_VIRTUAL_DELETED,"},{"line_number":103,"context_line":"}, indexes\u003d{"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_a350060c","line":100,"updated":"2017-06-22 08:42:36.000000000","message":"Why we need different event\u0027s for : remote , virtual and local? couldn\u0027t we deiced the type of the port according to the object chassis?","commit_id":"0d76e942a5944ae247739318f7198694978e26e7"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"0cc7243e9ac21535e613ea4da2820d964f982666","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"@mf.register_model"},{"line_number":99,"context_line":"@mf.construct_nb_db_model(events\u003d{"},{"line_number":100,"context_line":"    EVENT_LOCAL_CREATED, EVENT_REMOTE_CREATED, EVENT_VIRTUAL_CREATED,"},{"line_number":101,"context_line":"    EVENT_LOCAL_UPDATED, EVENT_REMOTE_UPDATED, EVENT_VIRTUAL_UPDATED,"},{"line_number":102,"context_line":"    EVENT_LOCAL_DELETED, EVENT_REMOTE_DELETED, EVENT_VIRTUAL_DELETED,"},{"line_number":103,"context_line":"}, indexes\u003d{"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_05715e44","line":100,"in_reply_to":"5f201791_a350060c","updated":"2017-06-28 07:32:07.000000000","message":"It\u0027s for convenience, a consumer can register for a more specific event and avoid checking the type itself.","commit_id":"0d76e942a5944ae247739318f7198694978e26e7"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"850418f59a01958d9b4e65b5a4807dabffa3ae0a","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        return self.chassis is None"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    @property"},{"line_number":162,"context_line":"    def is_remote(self):"},{"line_number":163,"context_line":"        return not self.is_local and self.chassis is not None"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def __str__(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_dd176345","line":162,"range":{"start_line":162,"start_character":11,"end_line":162,"end_character":12},"updated":"2017-06-22 08:20:28.000000000","message":"Maybe change from property to function?\n\nIt\u0027s confuse me in the controller (df_local_controller.py:217) that you need to check if it\u0027s \nport is local - but look\u0027s like you already know if it\u0027s remote (you don\u0027t really know it  - but it\u0027s look-like because that\u0027s hide behind the property.. )","commit_id":"0d76e942a5944ae247739318f7198694978e26e7"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"0cc7243e9ac21535e613ea4da2820d964f982666","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        return self.chassis is None"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    @property"},{"line_number":162,"context_line":"    def is_remote(self):"},{"line_number":163,"context_line":"        return not self.is_local and self.chassis is not None"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def __str__(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_859a0e5f","line":162,"range":{"start_line":162,"start_character":11,"end_line":162,"end_character":12},"in_reply_to":"5f201791_dd176345","updated":"2017-06-28 07:32:07.000000000","message":"It is aligned with .is_local attribute.\n\nIt has no side-effect and does not take a parameter, I think a property fits well here.","commit_id":"0d76e942a5944ae247739318f7198694978e26e7"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"5277a434934cdd60b8fe7068851495e2b20098bd","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    @property"},{"line_number":157,"context_line":"    def is_remote(self):"},{"line_number":158,"context_line":"        return not self.is_local and self.chassis is not None"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def __str__(self):"},{"line_number":161,"context_line":"        data \u003d {}"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f201791_c6d80c54","line":158,"range":{"start_line":158,"start_character":24,"end_line":158,"end_character":32},"updated":"2017-06-28 08:48:59.000000000","message":"I\u0027m not too happy with this test, i.e. that we rely on is_local being set.","commit_id":"e9c050aa461e7ade162c821b3b6400dc997b9d50"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"dbe56cd4d8f163601314a344005d684933104b9f","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    @property"},{"line_number":157,"context_line":"    def is_remote(self):"},{"line_number":158,"context_line":"        return not self.is_local and self.chassis is not None"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def __str__(self):"},{"line_number":161,"context_line":"        data \u003d {}"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f1d235d_f40e9439","line":158,"range":{"start_line":158,"start_character":24,"end_line":158,"end_character":32},"in_reply_to":"3f1d235d_c3e340a4","updated":"2017-07-03 13:03:32.000000000","message":"Done","commit_id":"e9c050aa461e7ade162c821b3b6400dc997b9d50"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"b5a18922e0d7b000f85a8cfb6a5392959b130340","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    @property"},{"line_number":157,"context_line":"    def is_remote(self):"},{"line_number":158,"context_line":"        return not self.is_local and self.chassis is not None"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def __str__(self):"},{"line_number":161,"context_line":"        data \u003d {}"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f1d235d_c3e340a4","line":158,"range":{"start_line":158,"start_character":24,"end_line":158,"end_character":32},"in_reply_to":"5f201791_bd4e3e94","updated":"2017-06-29 08:08:45.000000000","message":"It is, via cfg.CONF.host. So this sounds like a plan :)","commit_id":"e9c050aa461e7ade162c821b3b6400dc997b9d50"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"b370c50e6867145b340da650ec0a5105ad81dc57","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    @property"},{"line_number":157,"context_line":"    def is_remote(self):"},{"line_number":158,"context_line":"        return not self.is_local and self.chassis is not None"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def __str__(self):"},{"line_number":161,"context_line":"        data \u003d {}"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f201791_bd4e3e94","line":158,"range":{"start_line":158,"start_character":24,"end_line":158,"end_character":32},"in_reply_to":"5f201791_c6d80c54","updated":"2017-06-28 09:56:54.000000000","message":"We can make current chassis name globally accessible, then we won\u0027t have to set it at all.","commit_id":"e9c050aa461e7ade162c821b3b6400dc997b9d50"}],"dragonflow/neutron/ml2/mech_driver.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ae75b63c2eec01da070520d56e4c5909c8e8efe6","unresolved":false,"context_lines":[{"line_number":474,"context_line":"        chassis, remote_vtep \u003d self._get_chassis_and_remote_vtep(port)"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"        lport \u003d neutron_l2.logical_port_from_neutron_port(port)"},{"line_number":477,"context_line":"        if chassis is not None:"},{"line_number":478,"context_line":"            lport.chassis \u003d chassis"},{"line_number":479,"context_line":"        lport.remote_vtep \u003d remote_vtep"},{"line_number":480,"context_line":"        self.nb_api.create(lport)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_eaf821c5","line":477,"range":{"start_line":477,"start_character":0,"end_line":477,"end_character":31},"updated":"2017-06-21 19:10:22.000000000","message":"Why was this added?","commit_id":"0d76e942a5944ae247739318f7198694978e26e7"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"0cc7243e9ac21535e613ea4da2820d964f982666","unresolved":false,"context_lines":[{"line_number":474,"context_line":"        chassis, remote_vtep \u003d self._get_chassis_and_remote_vtep(port)"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"        lport \u003d neutron_l2.logical_port_from_neutron_port(port)"},{"line_number":477,"context_line":"        if chassis is not None:"},{"line_number":478,"context_line":"            lport.chassis \u003d chassis"},{"line_number":479,"context_line":"        lport.remote_vtep \u003d remote_vtep"},{"line_number":480,"context_line":"        self.nb_api.create(lport)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_4592b658","line":477,"range":{"start_line":477,"start_character":0,"end_line":477,"end_character":31},"in_reply_to":"5f201791_eaf821c5","updated":"2017-06-28 07:32:07.000000000","message":"It\u0027s not, removing.","commit_id":"0d76e942a5944ae247739318f7198694978e26e7"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ae75b63c2eec01da070520d56e4c5909c8e8efe6","unresolved":false,"context_lines":[{"line_number":532,"context_line":"        chassis, remote_vtep \u003d self._get_chassis_and_remote_vtep(updated_port)"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"        lport \u003d neutron_l2.logical_port_from_neutron_port(updated_port)"},{"line_number":535,"context_line":"        if chassis is not None:"},{"line_number":536,"context_line":"            lport.chassis \u003d chassis"},{"line_number":537,"context_line":"        lport.remote_vtep \u003d remote_vtep"},{"line_number":538,"context_line":"        self.nb_api.update(lport)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_2a285932","line":535,"range":{"start_line":535,"start_character":0,"end_line":535,"end_character":31},"updated":"2017-06-21 19:10:22.000000000","message":"Same here","commit_id":"0d76e942a5944ae247739318f7198694978e26e7"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"0cc7243e9ac21535e613ea4da2820d964f982666","unresolved":false,"context_lines":[{"line_number":532,"context_line":"        chassis, remote_vtep \u003d self._get_chassis_and_remote_vtep(updated_port)"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"        lport \u003d neutron_l2.logical_port_from_neutron_port(updated_port)"},{"line_number":535,"context_line":"        if chassis is not None:"},{"line_number":536,"context_line":"            lport.chassis \u003d chassis"},{"line_number":537,"context_line":"        lport.remote_vtep \u003d remote_vtep"},{"line_number":538,"context_line":"        self.nb_api.update(lport)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_a582aafe","line":535,"range":{"start_line":535,"start_character":0,"end_line":535,"end_character":31},"in_reply_to":"5f201791_2a285932","updated":"2017-06-28 07:32:07.000000000","message":"Same here","commit_id":"0d76e942a5944ae247739318f7198694978e26e7"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"84013f34567c516fbf42c00ec2fae9060e25c788","unresolved":false,"context_lines":[{"line_number":494,"context_line":"            if subnet_id:"},{"line_number":495,"context_line":"                break"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"        owner \u003d port[\u0027device_owner\u0027]"},{"line_number":498,"context_line":"        return owner \u003d\u003d n_const.DEVICE_OWNER_DHCP and subnet_id is None"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"    @lock_db.wrap_db_lock(lock_db.RESOURCE_ML2_NETWORK_OR_PORT)"},{"line_number":501,"context_line":"    def update_port_postcommit(self, context):"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f1d235d_5c50bc5d","line":498,"range":{"start_line":497,"start_character":0,"end_line":498,"end_character":71},"updated":"2017-07-04 05:43:21.000000000","message":"this seems to be a bit unrelated to the current patch","commit_id":"b372c21f428aacb5f5cd2c5d6924979b930657d9"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"af9d4d35bede39e679c92139ac5e8038a028fc08","unresolved":false,"context_lines":[{"line_number":494,"context_line":"            if subnet_id:"},{"line_number":495,"context_line":"                break"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"        owner \u003d port[\u0027device_owner\u0027]"},{"line_number":498,"context_line":"        return owner \u003d\u003d n_const.DEVICE_OWNER_DHCP and subnet_id is None"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"    @lock_db.wrap_db_lock(lock_db.RESOURCE_ML2_NETWORK_OR_PORT)"},{"line_number":501,"context_line":"    def update_port_postcommit(self, context):"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f1d235d_b27377b1","line":498,"range":{"start_line":497,"start_character":0,"end_line":498,"end_character":71},"in_reply_to":"3f1d235d_5c50bc5d","updated":"2017-07-04 06:47:24.000000000","message":"It is, please not that this patch drops usage of DRAGONFLOW_VIRTUAL_PORT as host id so only real chassis will appear. Thus we have to check the owner in case of DHCP ports.","commit_id":"b372c21f428aacb5f5cd2c5d6924979b930657d9"}],"dragonflow/tests/unit/test_mech_driver.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"ae75b63c2eec01da070520d56e4c5909c8e8efe6","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                           network[\u0027revision_number\u0027])"},{"line_number":145,"context_line":"        lswitch.version \u003d new_network[\u0027revision_number\u0027]"},{"line_number":146,"context_line":"        # Once for lswitch"},{"line_number":147,"context_line":"        self.assertEqual(1, self.nb_api.update.call_count)"},{"line_number":148,"context_line":"        self.nb_api.update.assert_called_with(lswitch)"},{"line_number":149,"context_line":"        self.nb_api.update.reset_mock()"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_4abdd5b5","line":147,"range":{"start_line":147,"start_character":25,"end_line":147,"end_character":26},"updated":"2017-06-21 19:10:22.000000000","message":"It might be just that it\u0027s very late, but why did this happen?","commit_id":"0d76e942a5944ae247739318f7198694978e26e7"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"0cc7243e9ac21535e613ea4da2820d964f982666","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                           network[\u0027revision_number\u0027])"},{"line_number":145,"context_line":"        lswitch.version \u003d new_network[\u0027revision_number\u0027]"},{"line_number":146,"context_line":"        # Once for lswitch"},{"line_number":147,"context_line":"        self.assertEqual(1, self.nb_api.update.call_count)"},{"line_number":148,"context_line":"        self.nb_api.update.assert_called_with(lswitch)"},{"line_number":149,"context_line":"        self.nb_api.update.reset_mock()"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_e50782c9","line":147,"range":{"start_line":147,"start_character":25,"end_line":147,"end_character":26},"in_reply_to":"5f201791_4abdd5b5","updated":"2017-06-28 07:32:07.000000000","message":"Because dhcp port was previously bound to a host, which triggered an update.","commit_id":"0d76e942a5944ae247739318f7198694978e26e7"}]}
