)]}'
{"neutron/common/constants.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"831cd18bd2d172b3a747de87fa524bb9c6a68d23","unresolved":false,"context_lines":[{"line_number":166,"context_line":"PORT_BINDING_STATUSES \u003d (PORT_BINDING_STATUS_ACTIVE,"},{"line_number":167,"context_line":"                         PORT_BINDING_STATUS_INACTIVE)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"VALID_FLOATINGIP_STATUS \u003d (lib_constants.FLOATINGIP_STATUS_ACTIVE,"},{"line_number":170,"context_line":"                           lib_constants.FLOATINGIP_STATUS_DOWN,"},{"line_number":171,"context_line":"                           lib_constants.FLOATINGIP_STATUS_ERROR)"},{"line_number":172,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1f1a1f67_d06e8bc7","line":169,"range":{"start_line":169,"start_character":0,"end_line":169,"end_character":23},"updated":"2017-07-19 08:55:55.000000000","message":"nit: this variable could be defined in neutron-lib, as well as the single status variables.","commit_id":"ade7d6bdc35430c025fee3604ac1284664f28224"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9ae5aeca4838bfce727c78245b14a4bf8738fb3f","unresolved":false,"context_lines":[{"line_number":166,"context_line":"PORT_BINDING_STATUSES \u003d (PORT_BINDING_STATUS_ACTIVE,"},{"line_number":167,"context_line":"                         PORT_BINDING_STATUS_INACTIVE)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"VALID_FLOATINGIP_STATUS \u003d (lib_constants.FLOATINGIP_STATUS_ACTIVE,"},{"line_number":170,"context_line":"                           lib_constants.FLOATINGIP_STATUS_DOWN,"},{"line_number":171,"context_line":"                           lib_constants.FLOATINGIP_STATUS_ERROR)"},{"line_number":172,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1f1a1f67_6f7115a8","line":169,"range":{"start_line":169,"start_character":0,"end_line":169,"end_character":23},"in_reply_to":"1f1a1f67_0f1bc172","updated":"2017-07-19 09:26:59.000000000","message":"I mean FLOATINGIP_STATUS_DOWN, ERROR and ACTIVE are in neutron-lib.\n\nVALID_FLOATINGIP_STATUS could be in neutron-lib too. But, this is a nit. It\u0027s ok like this :)","commit_id":"ade7d6bdc35430c025fee3604ac1284664f28224"},{"author":{"_account_id":17491,"name":"Lujin Luo","email":"luo.lujin@jp.fujitsu.com","username":"Lujin"},"change_message_id":"975d0558dc6a3344aa868e712bfdcdf8ca663e8f","unresolved":false,"context_lines":[{"line_number":166,"context_line":"PORT_BINDING_STATUSES \u003d (PORT_BINDING_STATUS_ACTIVE,"},{"line_number":167,"context_line":"                         PORT_BINDING_STATUS_INACTIVE)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"VALID_FLOATINGIP_STATUS \u003d (lib_constants.FLOATINGIP_STATUS_ACTIVE,"},{"line_number":170,"context_line":"                           lib_constants.FLOATINGIP_STATUS_DOWN,"},{"line_number":171,"context_line":"                           lib_constants.FLOATINGIP_STATUS_ERROR)"},{"line_number":172,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1f1a1f67_0f1bc172","line":169,"range":{"start_line":169,"start_character":0,"end_line":169,"end_character":23},"in_reply_to":"1f1a1f67_d06e8bc7","updated":"2017-07-19 09:24:35.000000000","message":"hi, sorry but which \"single status variables\" are you referring to here?","commit_id":"ade7d6bdc35430c025fee3604ac1284664f28224"}],"neutron/objects/router.py":[{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"00d797c8aa5c7f9a9a4ab1ed17eeac08a8642d3e","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        \u0027last_known_router_id\u0027: common_types.UUIDField(nullable\u003dTrue),"},{"line_number":138,"context_line":"        \u0027status\u0027: common_types.FloatingIPStatusEnumField(nullable\u003dTrue),"},{"line_number":139,"context_line":"    }"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    @classmethod"},{"line_number":142,"context_line":"    def modify_fields_from_db(cls, db_obj):"},{"line_number":143,"context_line":"        result \u003d super(FloatingIP, cls).modify_fields_from_db(db_obj)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f1d235d_b6a939de","line":140,"updated":"2017-07-11 22:43:00.000000000","message":"foreign_keys \u003d {\u0027Port\u0027: {\u0027floating_port_id\u0027: \u0027id\u0027},\n                \u0027Port\u0027: {\u0027fixed_port_id\u0027: \u0027id\u0027},\n                 \u0027Router\u0027: {\u0027router_id\u0027: \u0027id\u0027}}","commit_id":"b380a88cbbef146c93bfec600e580e00ae7b515f"},{"author":{"_account_id":17491,"name":"Lujin Luo","email":"luo.lujin@jp.fujitsu.com","username":"Lujin"},"change_message_id":"e0e0bc6a7c487216ebd854f14bf60e7943210280","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        \u0027last_known_router_id\u0027: common_types.UUIDField(nullable\u003dTrue),"},{"line_number":138,"context_line":"        \u0027status\u0027: common_types.FloatingIPStatusEnumField(nullable\u003dTrue),"},{"line_number":139,"context_line":"    }"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    @classmethod"},{"line_number":142,"context_line":"    def modify_fields_from_db(cls, db_obj):"},{"line_number":143,"context_line":"        result \u003d super(FloatingIP, cls).modify_fields_from_db(db_obj)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f1d235d_f55b2484","line":140,"in_reply_to":"3f1d235d_b6a939de","updated":"2017-07-12 02:29:28.000000000","message":"Hi, thanks for the review. But i do not think we should add foreign_keys here. In the case where we need foreign_keys, we are calling this object as the synthetic field of the called objects here. However, in this case, neither of Port nor Router is using FloatingIP as synthetic field. \nI found the cause of the foreign key violation happens when we are testing the update of fields, so by disabling the update of these fields, we no longer see the failure.","commit_id":"b380a88cbbef146c93bfec600e580e00ae7b515f"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"8728868a9b6cf77fa279010aae52c11638a6e11b","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    db_model \u003d l3.FloatingIP"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    fields \u003d {"},{"line_number":147,"context_line":"        \u0027id\u0027: common_types.UUIDField(),"},{"line_number":148,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_ce7a3487","line":145,"updated":"2017-07-12 18:53:16.000000000","message":"There is a unique constraint https://github.com/openstack/neutron/blob/6dee4c5942684128f2df4eb6b1a1f0ec978c7224/neutron/db/models/l3.py#L101 so we can use the following here:\n\nunique_keys \u003d [\u0027floating_network_id\u0027, \u0027fixed_port_id\u0027, \u0027fixed_ip_address\u0027]","commit_id":"0c630af26b90477af0d2cc2899a167e8c670a1ec"},{"author":{"_account_id":17491,"name":"Lujin Luo","email":"luo.lujin@jp.fujitsu.com","username":"Lujin"},"change_message_id":"e9cd1bd57b0e7265940c0311abe6ccb6acebdd09","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    db_model \u003d l3.FloatingIP"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    fields \u003d {"},{"line_number":147,"context_line":"        \u0027id\u0027: common_types.UUIDField(),"},{"line_number":148,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_2f39ddd5","line":145,"in_reply_to":"1f1a1f67_101d2373","updated":"2017-07-19 09:24:43.000000000","message":"yes, by default OVO inherits the unique_keys from db models, but i do not see any usage of specifying unique_keys \u003d [[\u0027floating_network_id\u0027, \u0027fixed_port_id\u0027, \u0027fixed_ip_address\u0027]] explicitly here. Would you mind elaborating a bit?","commit_id":"0c630af26b90477af0d2cc2899a167e8c670a1ec"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"3074477855e11264d39e49351a7bfa1d9d95d753","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    db_model \u003d l3.FloatingIP"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    fields \u003d {"},{"line_number":147,"context_line":"        \u0027id\u0027: common_types.UUIDField(),"},{"line_number":148,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_4e7f7265","line":145,"in_reply_to":"1f1a1f67_2f39ddd5","updated":"2017-07-19 14:05:11.000000000","message":"I was wrong here.. I said the following on Patch set 3\n\nPatch Set 3: -Code-Review\n(1 comment)\nOh I see the difference now.. my mistake. It\u0027s either id or the list from unique constraint. ignore my previous comments.\n\nTo clarify, there is no need to specify the unique keys here, the object is able to determine them from reading the constraints in the model.","commit_id":"0c630af26b90477af0d2cc2899a167e8c670a1ec"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9791fbe8b10052d1de90c7d1be24bd176b758542","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    db_model \u003d l3.FloatingIP"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    fields \u003d {"},{"line_number":147,"context_line":"        \u0027id\u0027: common_types.UUIDField(),"},{"line_number":148,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_101d2373","line":145,"in_reply_to":"1f1a1f67_8e455c1a","updated":"2017-07-19 08:51:10.000000000","message":"+1","commit_id":"0c630af26b90477af0d2cc2899a167e8c670a1ec"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"4f4c1080b85c8d5c57599b2d11ecc3ece917ac04","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    db_model \u003d l3.FloatingIP"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    fields \u003d {"},{"line_number":147,"context_line":"        \u0027id\u0027: common_types.UUIDField(),"},{"line_number":148,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_8e455c1a","line":145,"in_reply_to":"1f1a1f67_ce7a3487","updated":"2017-07-12 19:03:46.000000000","message":"should be list of lists, unique_keys \u003d [[\u0027floating_network_id\u0027, \u0027fixed_port_id\u0027, \u0027fixed_ip_address\u0027]]\n\nThis is supposed to be detected by the base_obj but the unique_keys by default contains id.\n\nwithout specifying unique_keys:\n(Pdb) router.FloatingIP.unique_keys\n[[\u0027id\u0027], [\u0027floating_network_id\u0027, \u0027fixed_ip_address\u0027, \u0027fixed_port_id\u0027]\n\nwith specifying unique_keys:\n(Pdb) router.FloatingIP.unique_keys\n[[\u0027floating_network_id\u0027, \u0027fixed_port_id\u0027, \u0027fixed_ip_address\u0027]]","commit_id":"0c630af26b90477af0d2cc2899a167e8c670a1ec"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"d5b3ed7caf3d1710fc14b12724f631951343d2b3","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    }"},{"line_number":158,"context_line":"    fields_no_update \u003d [\u0027project_id\u0027, \u0027floating_ip_address\u0027,"},{"line_number":159,"context_line":"                        \u0027floating_network_id\u0027, \u0027floating_port_id\u0027,"},{"line_number":160,"context_line":"                        \u0027fixed_port_id\u0027, \u0027router_id\u0027]"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    @classmethod"},{"line_number":163,"context_line":"    def modify_fields_from_db(cls, db_obj):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_c8191189","line":160,"range":{"start_line":160,"start_character":24,"end_line":160,"end_character":39},"updated":"2017-07-12 15:45:29.000000000","message":"hm, shouldn\u0027t we be able to change fixed_port_id? isn\u0027t it the whole idea behind a floating ip, that it roams between fixed ports?","commit_id":"0c630af26b90477af0d2cc2899a167e8c670a1ec"},{"author":{"_account_id":17491,"name":"Lujin Luo","email":"luo.lujin@jp.fujitsu.com","username":"Lujin"},"change_message_id":"072d2c8f2633520bf4f80abf3c31929c8b6e531b","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    }"},{"line_number":158,"context_line":"    fields_no_update \u003d [\u0027project_id\u0027, \u0027floating_ip_address\u0027,"},{"line_number":159,"context_line":"                        \u0027floating_network_id\u0027, \u0027floating_port_id\u0027,"},{"line_number":160,"context_line":"                        \u0027fixed_port_id\u0027, \u0027router_id\u0027]"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    @classmethod"},{"line_number":163,"context_line":"    def modify_fields_from_db(cls, db_obj):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_adb3474d","line":160,"range":{"start_line":160,"start_character":24,"end_line":160,"end_character":39},"in_reply_to":"1f1a1f67_087000a5","updated":"2017-07-14 02:13:44.000000000","message":"I looked into router-port. Actually I have done the same as router-port in (https://review.openstack.org/#/c/481972/3/neutron/tests/unit/objects/test_router.py).\n\nI also looked into self.update_obj_fields() and get_random_db_fields(). It seems to me that they are two different code paths. The reason that we did not see foreignkey violation in router-port is that both router_id and port_id are primary_keys and get filtered by get_updatable_fields() in objects/base.py, thus the only left key-value pair in self._get_random_update_fields() is port_type. \n\nHowever, in floaingip\u0027s case, fixed_port_id and router_id remained in get_random_db_fields() since neither of them belongs to cls.fields_no_update, foreign key error is triggered.","commit_id":"0c630af26b90477af0d2cc2899a167e8c670a1ec"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db99cb0fb581b90b6e98ee2de45a1f8fd48cee26","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    }"},{"line_number":158,"context_line":"    fields_no_update \u003d [\u0027project_id\u0027, \u0027floating_ip_address\u0027,"},{"line_number":159,"context_line":"                        \u0027floating_network_id\u0027, \u0027floating_port_id\u0027,"},{"line_number":160,"context_line":"                        \u0027fixed_port_id\u0027, \u0027router_id\u0027]"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    @classmethod"},{"line_number":163,"context_line":"    def modify_fields_from_db(cls, db_obj):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_087000a5","line":160,"range":{"start_line":160,"start_character":24,"end_line":160,"end_character":39},"in_reply_to":"1f1a1f67_806640ed","updated":"2017-07-13 14:20:01.000000000","message":"You may need to do smth like for router-port: http://git.openstack.org/cgit/openstack/neutron/tree/neutron/tests/unit/objects/test_router.py#n66","commit_id":"0c630af26b90477af0d2cc2899a167e8c670a1ec"},{"author":{"_account_id":17491,"name":"Lujin Luo","email":"luo.lujin@jp.fujitsu.com","username":"Lujin"},"change_message_id":"272ab9f3260e8f75993274ca43ebd59939b60514","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    }"},{"line_number":158,"context_line":"    fields_no_update \u003d [\u0027project_id\u0027, \u0027floating_ip_address\u0027,"},{"line_number":159,"context_line":"                        \u0027floating_network_id\u0027, \u0027floating_port_id\u0027,"},{"line_number":160,"context_line":"                        \u0027fixed_port_id\u0027, \u0027router_id\u0027]"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    @classmethod"},{"line_number":163,"context_line":"    def modify_fields_from_db(cls, db_obj):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_d168daf5","line":160,"range":{"start_line":160,"start_character":24,"end_line":160,"end_character":39},"in_reply_to":"1f1a1f67_adb3474d","updated":"2017-07-19 01:44:17.000000000","message":"I think it is fine that we keep both fixed_port_id and router_id as no_update here, since the update test of them has been done in \u003chttps://review.openstack.org/#/c/481972/3/neutron/tests/unit/objects/test_router.py\u003e. There is no need to test them again.","commit_id":"0c630af26b90477af0d2cc2899a167e8c670a1ec"},{"author":{"_account_id":20378,"name":"Trevor McCasland","email":"TM2086@att.com","username":"twm2016"},"change_message_id":"8728868a9b6cf77fa279010aae52c11638a6e11b","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    }"},{"line_number":158,"context_line":"    fields_no_update \u003d [\u0027project_id\u0027, \u0027floating_ip_address\u0027,"},{"line_number":159,"context_line":"                        \u0027floating_network_id\u0027, \u0027floating_port_id\u0027,"},{"line_number":160,"context_line":"                        \u0027fixed_port_id\u0027, \u0027router_id\u0027]"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    @classmethod"},{"line_number":163,"context_line":"    def modify_fields_from_db(cls, db_obj):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_8e267cb7","line":160,"range":{"start_line":160,"start_character":24,"end_line":160,"end_character":39},"in_reply_to":"1f1a1f67_c8191189","updated":"2017-07-12 18:53:16.000000000","message":"Yeah it does seem weird to me. Looking at the api def it only shows port_id being updatable.. how does (fixed|floating)_port_id relate to it?","commit_id":"0c630af26b90477af0d2cc2899a167e8c670a1ec"},{"author":{"_account_id":17491,"name":"Lujin Luo","email":"luo.lujin@jp.fujitsu.com","username":"Lujin"},"change_message_id":"d0a94421ca033621e007e912f30e528fbb95995c","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    }"},{"line_number":158,"context_line":"    fields_no_update \u003d [\u0027project_id\u0027, \u0027floating_ip_address\u0027,"},{"line_number":159,"context_line":"                        \u0027floating_network_id\u0027, \u0027floating_port_id\u0027,"},{"line_number":160,"context_line":"                        \u0027fixed_port_id\u0027, \u0027router_id\u0027]"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    @classmethod"},{"line_number":163,"context_line":"    def modify_fields_from_db(cls, db_obj):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_806640ed","line":160,"range":{"start_line":160,"start_character":24,"end_line":160,"end_character":39},"in_reply_to":"1f1a1f67_c8191189","updated":"2017-07-13 02:26:47.000000000","message":"yes, we should be able to change both fixed_port_id and router_id. But in current neutron.tests.unit.objects.test_router.FloatingIPDbObjectTestCase.test_update_objects (https://github.com/openstack/neutron/blob/master/neutron/tests/unit/objects/test_base.py#L1845) self._get_random_update_fields() only generates random UUIDs of router and fixed_ip, not the db obj themselves. Thus we will see \noslo_db.exception.DBReferenceError: (sqlite3.IntegrityError) FOREIGN KEY constraint failed [SQL: u\u0027UPDATE floatingips SET project_id\u003d?, floating_ip_address\u003d?, floating_network_id\u003d?, floating_port_id\u003d?, fixed_port_id\u003d?, fixed_ip_address\u003d?, router_id\u003d?, last_known_router_id\u003d?, status\u003d? WHERE floatingips.id \u003d ?\u0027] [parameters: (u\u0027082f1ab417\u0027, \u002710.81.171.5\u0027, \u00277290820a-186b-43d5-bdb6-b06390d62f96\u0027, \u002796a2689b-f31d-4660-9253-cb27d1d44ffc\u0027, \u0027323da865-b33d-48e9-b5c2-650cb7ead20f\u0027, \u002710.186.214.129\u0027, \u00270b093c10-5947-44b6-9c11-3484ef7565fc\u0027, \u0027fc9e158f-522f-42b2-9ce4-49a88e22d535\u0027, u\u0027DOWN\u0027, u\u002711d0ed9e-191a-41b6-839b-107257559929\u0027)]\n\nI have tried to add some breakpoints, manually commit a port db obj, update the new_values to only contain the port_id. Then no failures will occur. \n\nMaybe I should push a separate patch set to fix the test_update_objects(), instead of adding both fixed_port_id and router_id as no-update. What do you think?","commit_id":"0c630af26b90477af0d2cc2899a167e8c670a1ec"},{"author":{"_account_id":17491,"name":"Lujin Luo","email":"luo.lujin@jp.fujitsu.com","username":"Lujin"},"change_message_id":"417003110982855065db1f52765bc02c390188df","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    }"},{"line_number":158,"context_line":"    fields_no_update \u003d [\u0027project_id\u0027, \u0027floating_ip_address\u0027,"},{"line_number":159,"context_line":"                        \u0027floating_network_id\u0027, \u0027floating_port_id\u0027,"},{"line_number":160,"context_line":"                        \u0027fixed_port_id\u0027, \u0027router_id\u0027]"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    @classmethod"},{"line_number":163,"context_line":"    def modify_fields_from_db(cls, db_obj):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_46a52d46","line":160,"range":{"start_line":160,"start_character":24,"end_line":160,"end_character":39},"in_reply_to":"1f1a1f67_d168daf5","updated":"2017-07-19 04:46:18.000000000","message":"Hmm, met an issue in integration patch. Will remove fixed_port_id and router_id as no_update here","commit_id":"0c630af26b90477af0d2cc2899a167e8c670a1ec"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"831cd18bd2d172b3a747de87fa524bb9c6a68d23","unresolved":false,"context_lines":[{"line_number":146,"context_line":"    fields \u003d {"},{"line_number":147,"context_line":"        \u0027id\u0027: common_types.UUIDField(),"},{"line_number":148,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(nullable\u003dTrue),"},{"line_number":149,"context_line":"        \u0027floating_ip_address\u0027: obj_fields.IPAddressField(),"},{"line_number":150,"context_line":"        \u0027floating_network_id\u0027: common_types.UUIDField(),"},{"line_number":151,"context_line":"        \u0027floating_port_id\u0027: common_types.UUIDField(),"},{"line_number":152,"context_line":"        \u0027fixed_port_id\u0027: common_types.UUIDField(nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f1a1f67_2b2f9288","line":149,"updated":"2017-07-19 08:55:55.000000000","message":"In the model [1], this field could be nullable\n\n\n[1] https://github.com/openstack/neutron/blob/master/neutron/db/models/l3.py#L76","commit_id":"ade7d6bdc35430c025fee3604ac1284664f28224"},{"author":{"_account_id":17491,"name":"Lujin Luo","email":"luo.lujin@jp.fujitsu.com","username":"Lujin"},"change_message_id":"975d0558dc6a3344aa868e712bfdcdf8ca663e8f","unresolved":false,"context_lines":[{"line_number":146,"context_line":"    fields \u003d {"},{"line_number":147,"context_line":"        \u0027id\u0027: common_types.UUIDField(),"},{"line_number":148,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(nullable\u003dTrue),"},{"line_number":149,"context_line":"        \u0027floating_ip_address\u0027: obj_fields.IPAddressField(),"},{"line_number":150,"context_line":"        \u0027floating_network_id\u0027: common_types.UUIDField(),"},{"line_number":151,"context_line":"        \u0027floating_port_id\u0027: common_types.UUIDField(),"},{"line_number":152,"context_line":"        \u0027fixed_port_id\u0027: common_types.UUIDField(nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f1a1f67_cf014907","line":149,"in_reply_to":"1f1a1f67_2b2f9288","updated":"2017-07-19 09:24:35.000000000","message":"Hmm, I might be missing something, but in the model it says \nnullable\u003dFalse","commit_id":"ade7d6bdc35430c025fee3604ac1284664f28224"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9ae5aeca4838bfce727c78245b14a4bf8738fb3f","unresolved":false,"context_lines":[{"line_number":146,"context_line":"    fields \u003d {"},{"line_number":147,"context_line":"        \u0027id\u0027: common_types.UUIDField(),"},{"line_number":148,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(nullable\u003dTrue),"},{"line_number":149,"context_line":"        \u0027floating_ip_address\u0027: obj_fields.IPAddressField(),"},{"line_number":150,"context_line":"        \u0027floating_network_id\u0027: common_types.UUIDField(),"},{"line_number":151,"context_line":"        \u0027floating_port_id\u0027: common_types.UUIDField(),"},{"line_number":152,"context_line":"        \u0027fixed_port_id\u0027: common_types.UUIDField(nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f1a1f67_2f679deb","line":149,"in_reply_to":"1f1a1f67_cf014907","updated":"2017-07-19 09:26:59.000000000","message":"And I need new glasses... sorry.","commit_id":"ade7d6bdc35430c025fee3604ac1284664f28224"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"831cd18bd2d172b3a747de87fa524bb9c6a68d23","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        \u0027id\u0027: common_types.UUIDField(),"},{"line_number":148,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(nullable\u003dTrue),"},{"line_number":149,"context_line":"        \u0027floating_ip_address\u0027: obj_fields.IPAddressField(),"},{"line_number":150,"context_line":"        \u0027floating_network_id\u0027: common_types.UUIDField(),"},{"line_number":151,"context_line":"        \u0027floating_port_id\u0027: common_types.UUIDField(),"},{"line_number":152,"context_line":"        \u0027fixed_port_id\u0027: common_types.UUIDField(nullable\u003dTrue),"},{"line_number":153,"context_line":"        \u0027fixed_ip_address\u0027: obj_fields.IPAddressField(nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f1a1f67_cb55befb","line":150,"updated":"2017-07-19 08:55:55.000000000","message":"ditto","commit_id":"ade7d6bdc35430c025fee3604ac1284664f28224"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"831cd18bd2d172b3a747de87fa524bb9c6a68d23","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        \u0027project_id\u0027: obj_fields.StringField(nullable\u003dTrue),"},{"line_number":149,"context_line":"        \u0027floating_ip_address\u0027: obj_fields.IPAddressField(),"},{"line_number":150,"context_line":"        \u0027floating_network_id\u0027: common_types.UUIDField(),"},{"line_number":151,"context_line":"        \u0027floating_port_id\u0027: common_types.UUIDField(),"},{"line_number":152,"context_line":"        \u0027fixed_port_id\u0027: common_types.UUIDField(nullable\u003dTrue),"},{"line_number":153,"context_line":"        \u0027fixed_ip_address\u0027: obj_fields.IPAddressField(nullable\u003dTrue),"},{"line_number":154,"context_line":"        \u0027router_id\u0027: common_types.UUIDField(nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f1a1f67_ab584230","line":151,"updated":"2017-07-19 08:55:55.000000000","message":"ditto","commit_id":"ade7d6bdc35430c025fee3604ac1284664f28224"}]}
