)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"94a157d7b0b1d4f906764274eacad1ab29aadcf2","unresolved":false,"context_lines":[{"line_number":11,"context_line":"dealing with port bindings."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The NeutronFixture.list_extensions stub is also fleshed"},{"line_number":14,"context_line":"out to include a response with the binding-extended"},{"line_number":15,"context_line":"extension which is what\u0027s used from the neutron.api.API"},{"line_number":16,"context_line":"supports_port_binding_extension method and without that"},{"line_number":17,"context_line":"we don\u0027t create/delete port bindings via that API anyway."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9fdfeff1_2e363553","line":14,"updated":"2019-02-22 00:08:22.000000000","message":"maybe said a little simpler the binding-extended alias\nis use by the conductor to determin if the neutron deployment\nsupport the multiple port binding flow for live migration.\nthe \u0027binding\u0027 extension alias is used to singal neutron support\nthe stand portbinding workflow used when spwaning an instance\nor cold migrating. not all ml2 driver or neutron l2 plugins support the binding-extended extention.","commit_id":"debff531a8f0906cbdd38fbbb75e4c351d43412a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a0135e2653a7bbc1f275138c79d2f7049ea9cac3","unresolved":false,"context_lines":[{"line_number":11,"context_line":"dealing with port bindings."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The NeutronFixture.list_extensions stub is also fleshed"},{"line_number":14,"context_line":"out to include a response with the binding-extended"},{"line_number":15,"context_line":"extension which is what\u0027s used from the neutron.api.API"},{"line_number":16,"context_line":"supports_port_binding_extension method and without that"},{"line_number":17,"context_line":"we don\u0027t create/delete port bindings via that API anyway."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9fdfeff1_38a0a9a5","line":14,"in_reply_to":"9fdfeff1_2e363553","updated":"2019-02-22 17:58:13.000000000","message":"I don\u0027t know if that is simpler. The reason I\u0027m needing this isn\u0027t because of live migration, it\u0027s for the cross-cell resize stuff that is going to use the port bindings extended API code to determine if we can create a port binding on a target host in another cell as part of early verification that the selected target will work for the ports attached to the instance.","commit_id":"debff531a8f0906cbdd38fbbb75e4c351d43412a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"66872931f3c3332fedaccc3406bdd18edfc0f8a8","unresolved":false,"context_lines":[{"line_number":11,"context_line":"dealing with port bindings."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The NeutronFixture.list_extensions stub is also fleshed"},{"line_number":14,"context_line":"out to include a response with the binding-extended"},{"line_number":15,"context_line":"extension which is what\u0027s used from the neutron.api.API"},{"line_number":16,"context_line":"supports_port_binding_extension method and without that"},{"line_number":17,"context_line":"we don\u0027t create/delete port bindings via that API anyway."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9fdfeff1_f055d51e","line":14,"in_reply_to":"9fdfeff1_38a0a9a5","updated":"2019-03-01 02:36:47.000000000","message":"ok in that case disregard the comment.\nthe live migration code was the only thing that used it previously but that just adds noise if the intend is to use this for the cross-cell migration code which i guess i should have got for the fact its part of the cross cell series :)","commit_id":"debff531a8f0906cbdd38fbbb75e4c351d43412a"}],"nova/network/neutronv2/api.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f50ace9123fa407f8d70fb5cf5f27889add30012","unresolved":false,"context_lines":[{"line_number":1362,"context_line":"    def _create_port_binding(client, port_id, data):"},{"line_number":1363,"context_line":"        \"\"\"Creates a port binding with the specified data."},{"line_number":1364,"context_line":""},{"line_number":1365,"context_line":"        :param client: keystoneauth1.adapter.Adapter session"},{"line_number":1366,"context_line":"        :param port_id: The ID of the port on which to create the binding."},{"line_number":1367,"context_line":"        :param data: dict of port binding data (requires at least the host),"},{"line_number":1368,"context_line":"            for example::"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_78310c0b","line":1365,"range":{"start_line":1365,"start_character":52,"end_line":1365,"end_character":60},"updated":"2019-02-13 16:29:15.000000000","message":"x","commit_id":"c7413d9bf533397ee7f02e94baf3820dc4724644"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d223465e4093544b0fa0c176d74268beb73570d4","unresolved":false,"context_lines":[{"line_number":1362,"context_line":"    def _create_port_binding(client, port_id, data):"},{"line_number":1363,"context_line":"        \"\"\"Creates a port binding with the specified data."},{"line_number":1364,"context_line":""},{"line_number":1365,"context_line":"        :param client: keystoneauth1.adapter.Adapter session"},{"line_number":1366,"context_line":"        :param port_id: The ID of the port on which to create the binding."},{"line_number":1367,"context_line":"        :param data: dict of port binding data (requires at least the host),"},{"line_number":1368,"context_line":"            for example::"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_4cf55356","line":1365,"range":{"start_line":1365,"start_character":52,"end_line":1365,"end_character":60},"in_reply_to":"9fdfeff1_78310c0b","updated":"2019-02-14 16:23:06.000000000","message":"Done","commit_id":"c7413d9bf533397ee7f02e94baf3820dc4724644"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f50ace9123fa407f8d70fb5cf5f27889add30012","unresolved":false,"context_lines":[{"line_number":1371,"context_line":"        :return: requests.Response object"},{"line_number":1372,"context_line":"        \"\"\""},{"line_number":1373,"context_line":"        return client.post(\u0027/v2.0/ports/%s/bindings\u0027 % port_id,"},{"line_number":1374,"context_line":"                           json\u003ddata, raise_exc\u003dFalse)"},{"line_number":1375,"context_line":""},{"line_number":1376,"context_line":"    def delete_port_binding(self, context, port_id, host):"},{"line_number":1377,"context_line":"        \"\"\"Delete the port binding for the given port ID and host"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_38106459","line":1374,"range":{"start_line":1374,"start_character":38,"end_line":1374,"end_character":53},"updated":"2019-02-13 16:29:15.000000000","message":"raise_exc\u003dFalse isn\u0027t necessary since I477afdfce746d405adf77134f57670563fd575e1\n\n(I realize this is a straight refactor; this could be cleaned up later.)","commit_id":"c7413d9bf533397ee7f02e94baf3820dc4724644"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f50ace9123fa407f8d70fb5cf5f27889add30012","unresolved":false,"context_lines":[{"line_number":1406,"context_line":"    def _delete_port_binding(client, port_id, host):"},{"line_number":1407,"context_line":"        \"\"\"Deletes the binding for the given host on the given port."},{"line_number":1408,"context_line":""},{"line_number":1409,"context_line":"        :param client: keystoneauth1.adapter.Adapter session"},{"line_number":1410,"context_line":"        :param port_id: ID of the port from which to delete the binding"},{"line_number":1411,"context_line":"        :param host: A host on which the port is bound"},{"line_number":1412,"context_line":"        :return: requests.Response object"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_b803f40f","line":1409,"range":{"start_line":1409,"start_character":53,"end_line":1409,"end_character":60},"updated":"2019-02-13 16:29:15.000000000","message":"x","commit_id":"c7413d9bf533397ee7f02e94baf3820dc4724644"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d223465e4093544b0fa0c176d74268beb73570d4","unresolved":false,"context_lines":[{"line_number":1406,"context_line":"    def _delete_port_binding(client, port_id, host):"},{"line_number":1407,"context_line":"        \"\"\"Deletes the binding for the given host on the given port."},{"line_number":1408,"context_line":""},{"line_number":1409,"context_line":"        :param client: keystoneauth1.adapter.Adapter session"},{"line_number":1410,"context_line":"        :param port_id: ID of the port from which to delete the binding"},{"line_number":1411,"context_line":"        :param host: A host on which the port is bound"},{"line_number":1412,"context_line":"        :return: requests.Response object"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_ac05df47","line":1409,"range":{"start_line":1409,"start_character":53,"end_line":1409,"end_character":60},"in_reply_to":"9fdfeff1_b803f40f","updated":"2019-02-14 16:23:06.000000000","message":"Done","commit_id":"c7413d9bf533397ee7f02e94baf3820dc4724644"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f50ace9123fa407f8d70fb5cf5f27889add30012","unresolved":false,"context_lines":[{"line_number":1408,"context_line":""},{"line_number":1409,"context_line":"        :param client: keystoneauth1.adapter.Adapter session"},{"line_number":1410,"context_line":"        :param port_id: ID of the port from which to delete the binding"},{"line_number":1411,"context_line":"        :param host: A host on which the port is bound"},{"line_number":1412,"context_line":"        :return: requests.Response object"},{"line_number":1413,"context_line":"        \"\"\""},{"line_number":1414,"context_line":"        return client.delete(\u0027/v2.0/ports/%s/bindings/%s\u0027 % (port_id, host),"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_1310e34d","line":1411,"updated":"2019-02-13 16:29:15.000000000","message":"string name of host","commit_id":"c7413d9bf533397ee7f02e94baf3820dc4724644"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f50ace9123fa407f8d70fb5cf5f27889add30012","unresolved":false,"context_lines":[{"line_number":1412,"context_line":"        :return: requests.Response object"},{"line_number":1413,"context_line":"        \"\"\""},{"line_number":1414,"context_line":"        return client.delete(\u0027/v2.0/ports/%s/bindings/%s\u0027 % (port_id, host),"},{"line_number":1415,"context_line":"                             raise_exc\u003dFalse)"},{"line_number":1416,"context_line":""},{"line_number":1417,"context_line":"    def activate_port_binding(self, context, port_id, host):"},{"line_number":1418,"context_line":"        \"\"\"Activates an inactive port binding."}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_73284f85","line":1415,"range":{"start_line":1415,"start_character":29,"end_line":1415,"end_character":44},"updated":"2019-02-13 16:29:15.000000000","message":"as above","commit_id":"c7413d9bf533397ee7f02e94baf3820dc4724644"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"94a157d7b0b1d4f906764274eacad1ab29aadcf2","unresolved":false,"context_lines":[{"line_number":1336,"context_line":""},{"line_number":1337,"context_line":"        bindings_by_port_id \u003d {}"},{"line_number":1338,"context_line":"        for port_id in port_ids:"},{"line_number":1339,"context_line":"            resp \u003d self._create_port_binding(client, port_id, data)"},{"line_number":1340,"context_line":"            if resp:"},{"line_number":1341,"context_line":"                bindings_by_port_id[port_id] \u003d resp.json()[\u0027binding\u0027]"},{"line_number":1342,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_ce3c4932","line":1339,"updated":"2019-02-22 00:08:22.000000000","message":"nit: extracting the calls into fucntion was not in the commit message but by doing so you have documented them significantly better then before so +1 :)","commit_id":"debff531a8f0906cbdd38fbbb75e4c351d43412a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a0135e2653a7bbc1f275138c79d2f7049ea9cac3","unresolved":false,"context_lines":[{"line_number":1336,"context_line":""},{"line_number":1337,"context_line":"        bindings_by_port_id \u003d {}"},{"line_number":1338,"context_line":"        for port_id in port_ids:"},{"line_number":1339,"context_line":"            resp \u003d self._create_port_binding(client, port_id, data)"},{"line_number":1340,"context_line":"            if resp:"},{"line_number":1341,"context_line":"                bindings_by_port_id[port_id] \u003d resp.json()[\u0027binding\u0027]"},{"line_number":1342,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_d88e3d31","line":1339,"in_reply_to":"9fdfeff1_ce3c4932","updated":"2019-02-22 17:58:13.000000000","message":"I had to for the fixture.","commit_id":"debff531a8f0906cbdd38fbbb75e4c351d43412a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"66872931f3c3332fedaccc3406bdd18edfc0f8a8","unresolved":false,"context_lines":[{"line_number":1336,"context_line":""},{"line_number":1337,"context_line":"        bindings_by_port_id \u003d {}"},{"line_number":1338,"context_line":"        for port_id in port_ids:"},{"line_number":1339,"context_line":"            resp \u003d self._create_port_binding(client, port_id, data)"},{"line_number":1340,"context_line":"            if resp:"},{"line_number":1341,"context_line":"                bindings_by_port_id[port_id] \u003d resp.json()[\u0027binding\u0027]"},{"line_number":1342,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_3077ddd6","line":1339,"in_reply_to":"9fdfeff1_d88e3d31","updated":"2019-03-01 02:36:47.000000000","message":"i was not saying you should not do it :)\ni just noted it when reviewing as  i had not expected to see it form readign the commit.\n\nit makes sense to do it.","commit_id":"debff531a8f0906cbdd38fbbb75e4c351d43412a"}],"nova/tests/fixtures.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f50ace9123fa407f8d70fb5cf5f27889add30012","unresolved":false,"context_lines":[{"line_number":1378,"context_line":"        # rather than python-neutronclient."},{"line_number":1379,"context_line":"        self.test.stub_out("},{"line_number":1380,"context_line":"            \u0027nova.network.neutronv2.api._get_ksa_client\u0027,"},{"line_number":1381,"context_line":"            lambda *args, **kwargs: mock.MagicMock("},{"line_number":1382,"context_line":"                spec\u003d\u0027keystoneauth1.adapter.Adapter\u0027))"},{"line_number":1383,"context_line":"        self.test.stub_out("},{"line_number":1384,"context_line":"            \u0027nova.network.neutronv2.api.API._create_port_binding\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_f3dc3f75","line":1381,"range":{"start_line":1381,"start_character":41,"end_line":1381,"end_character":50},"updated":"2019-02-13 16:29:15.000000000","message":"nit: I don\u0027t think this needs to be magic, particularly as you\u0027re providing a spec.","commit_id":"c7413d9bf533397ee7f02e94baf3820dc4724644"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d223465e4093544b0fa0c176d74268beb73570d4","unresolved":false,"context_lines":[{"line_number":1378,"context_line":"        # rather than python-neutronclient."},{"line_number":1379,"context_line":"        self.test.stub_out("},{"line_number":1380,"context_line":"            \u0027nova.network.neutronv2.api._get_ksa_client\u0027,"},{"line_number":1381,"context_line":"            lambda *args, **kwargs: mock.MagicMock("},{"line_number":1382,"context_line":"                spec\u003d\u0027keystoneauth1.adapter.Adapter\u0027))"},{"line_number":1383,"context_line":"        self.test.stub_out("},{"line_number":1384,"context_line":"            \u0027nova.network.neutronv2.api.API._create_port_binding\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_cc85c3ae","line":1381,"range":{"start_line":1381,"start_character":41,"end_line":1381,"end_character":50},"in_reply_to":"9fdfeff1_f3dc3f75","updated":"2019-02-14 16:23:06.000000000","message":"Done","commit_id":"c7413d9bf533397ee7f02e94baf3820dc4724644"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f50ace9123fa407f8d70fb5cf5f27889add30012","unresolved":false,"context_lines":[{"line_number":1411,"context_line":""},{"line_number":1412,"context_line":"    def list_extensions(self, *args, **kwargs):"},{"line_number":1413,"context_line":"        return {"},{"line_number":1414,"context_line":"            \u0027extensions\u0027: ["},{"line_number":1415,"context_line":"                {"},{"line_number":1416,"context_line":"                    # Copied from neutron-lib portbindings_extended.py"},{"line_number":1417,"context_line":"                    \"updated\": \"2017-07-17T10:00:00-00:00\","},{"line_number":1418,"context_line":"                    \"name\": neutron_constants.PORT_BINDING_EXTENDED,"},{"line_number":1419,"context_line":"                    \"links\": [],"},{"line_number":1420,"context_line":"                    \"alias\": \"binding-extended\","},{"line_number":1421,"context_line":"                    \"description\": \"Expose port bindings of a virtual port to \""},{"line_number":1422,"context_line":"                                   \"external application\""},{"line_number":1423,"context_line":"                }"},{"line_number":1424,"context_line":"            ]"},{"line_number":1425,"context_line":"        }"},{"line_number":1426,"context_line":""},{"line_number":1427,"context_line":"    def show_port(self, port_id, **_params):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_537f4b65","line":1424,"range":{"start_line":1414,"start_character":0,"end_line":1424,"end_character":13},"updated":"2019-02-13 16:29:15.000000000","message":"This looks like something that ought to be mentioned explicitly in the commit message.","commit_id":"c7413d9bf533397ee7f02e94baf3820dc4724644"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b4e317e01e75811de99dacb53f477ae872ccfa12","unresolved":false,"context_lines":[{"line_number":1411,"context_line":""},{"line_number":1412,"context_line":"    def list_extensions(self, *args, **kwargs):"},{"line_number":1413,"context_line":"        return {"},{"line_number":1414,"context_line":"            \u0027extensions\u0027: ["},{"line_number":1415,"context_line":"                {"},{"line_number":1416,"context_line":"                    # Copied from neutron-lib portbindings_extended.py"},{"line_number":1417,"context_line":"                    \"updated\": \"2017-07-17T10:00:00-00:00\","},{"line_number":1418,"context_line":"                    \"name\": neutron_constants.PORT_BINDING_EXTENDED,"},{"line_number":1419,"context_line":"                    \"links\": [],"},{"line_number":1420,"context_line":"                    \"alias\": \"binding-extended\","},{"line_number":1421,"context_line":"                    \"description\": \"Expose port bindings of a virtual port to \""},{"line_number":1422,"context_line":"                                   \"external application\""},{"line_number":1423,"context_line":"                }"},{"line_number":1424,"context_line":"            ]"},{"line_number":1425,"context_line":"        }"},{"line_number":1426,"context_line":""},{"line_number":1427,"context_line":"    def show_port(self, port_id, **_params):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_89cca435","line":1424,"range":{"start_line":1414,"start_character":0,"end_line":1424,"end_character":13},"in_reply_to":"9fdfeff1_537f4b65","updated":"2019-02-13 17:48:19.000000000","message":"Yeah good point, forgot about this. Since this is technically the extension needed to create/delete port bindings in the APIs being stubbed I think it\u0027s probably OK to leave it in this change, and I\u0027ll document it in the commit message.","commit_id":"c7413d9bf533397ee7f02e94baf3820dc4724644"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"94a157d7b0b1d4f906764274eacad1ab29aadcf2","unresolved":false,"context_lines":[{"line_number":1411,"context_line":""},{"line_number":1412,"context_line":"    def list_extensions(self, *args, **kwargs):"},{"line_number":1413,"context_line":"        return {"},{"line_number":1414,"context_line":"            \u0027extensions\u0027: ["},{"line_number":1415,"context_line":"                {"},{"line_number":1416,"context_line":"                    # Copied from neutron-lib portbindings_extended.py"},{"line_number":1417,"context_line":"                    \"updated\": \"2017-07-17T10:00:00-00:00\","}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_ee37cd4a","line":1414,"updated":"2019-02-22 00:08:22.000000000","message":"you proably should also stub out the bindings extention. we are currently\nadding support for binding-extended to the sriov nic agent\nbut odl and ovs to my knowladge dont support binding-extended jsut binding\nso  you proably shoulc copy the alisa https://github.com/openstack/neutron-lib/blob/master/neutron_lib/api/definitions/portbindings.py#L122 name: https://github.com/openstack/neutron-lib/blob/master/neutron_lib/api/definitions/portbindings.py#L137 and description https://github.com/openstack/neutron-lib/blob/master/neutron_lib/api/definitions/portbindings.py#L144 form that too.","commit_id":"debff531a8f0906cbdd38fbbb75e4c351d43412a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"66872931f3c3332fedaccc3406bdd18edfc0f8a8","unresolved":false,"context_lines":[{"line_number":1411,"context_line":""},{"line_number":1412,"context_line":"    def list_extensions(self, *args, **kwargs):"},{"line_number":1413,"context_line":"        return {"},{"line_number":1414,"context_line":"            \u0027extensions\u0027: ["},{"line_number":1415,"context_line":"                {"},{"line_number":1416,"context_line":"                    # Copied from neutron-lib portbindings_extended.py"},{"line_number":1417,"context_line":"                    \"updated\": \"2017-07-17T10:00:00-00:00\","}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_b063cd19","line":1414,"in_reply_to":"9fdfeff1_18860515","updated":"2019-03-01 02:36:47.000000000","message":"ok.\n\nif i need it in the future for something ill add it then but your right you dont need it for this code so no point in adding it if nothing uses it.","commit_id":"debff531a8f0906cbdd38fbbb75e4c351d43412a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a0135e2653a7bbc1f275138c79d2f7049ea9cac3","unresolved":false,"context_lines":[{"line_number":1411,"context_line":""},{"line_number":1412,"context_line":"    def list_extensions(self, *args, **kwargs):"},{"line_number":1413,"context_line":"        return {"},{"line_number":1414,"context_line":"            \u0027extensions\u0027: ["},{"line_number":1415,"context_line":"                {"},{"line_number":1416,"context_line":"                    # Copied from neutron-lib portbindings_extended.py"},{"line_number":1417,"context_line":"                    \"updated\": \"2017-07-17T10:00:00-00:00\","}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_18860515","line":1414,"in_reply_to":"9fdfeff1_ee37cd4a","updated":"2019-02-22 17:58:13.000000000","message":"Meaning you can\u0027t have binding-extended without the \u0027binding\u0027 extension, right? I don\u0027t really need that here nor does anything in nova look for the \u0027binding\u0027 extension.","commit_id":"debff531a8f0906cbdd38fbbb75e4c351d43412a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"94a157d7b0b1d4f906764274eacad1ab29aadcf2","unresolved":false,"context_lines":[{"line_number":1415,"context_line":"                {"},{"line_number":1416,"context_line":"                    # Copied from neutron-lib portbindings_extended.py"},{"line_number":1417,"context_line":"                    \"updated\": \"2017-07-17T10:00:00-00:00\","},{"line_number":1418,"context_line":"                    \"name\": neutron_constants.PORT_BINDING_EXTENDED,"},{"line_number":1419,"context_line":"                    \"links\": [],"},{"line_number":1420,"context_line":"                    \"alias\": \"binding-extended\","},{"line_number":1421,"context_line":"                    \"description\": \"Expose port bindings of a virtual port to \""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_8e4641c0","line":1418,"updated":"2019-02-22 00:08:22.000000000","message":"technically the name is  \"Port Bindings Extended\"\nhttps://github.com/openstack/neutron-lib/blob/master/neutron_lib/api/definitions/portbindings_extended.py#L43","commit_id":"debff531a8f0906cbdd38fbbb75e4c351d43412a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"66872931f3c3332fedaccc3406bdd18edfc0f8a8","unresolved":false,"context_lines":[{"line_number":1415,"context_line":"                {"},{"line_number":1416,"context_line":"                    # Copied from neutron-lib portbindings_extended.py"},{"line_number":1417,"context_line":"                    \"updated\": \"2017-07-17T10:00:00-00:00\","},{"line_number":1418,"context_line":"                    \"name\": neutron_constants.PORT_BINDING_EXTENDED,"},{"line_number":1419,"context_line":"                    \"links\": [],"},{"line_number":1420,"context_line":"                    \"alias\": \"binding-extended\","},{"line_number":1421,"context_line":"                    \"description\": \"Expose port bindings of a virtual port to \""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_70b48582","line":1418,"in_reply_to":"9fdfeff1_6cd436ea","updated":"2019-03-01 02:36:47.000000000","message":"your right i read that as  quoted for some reason\n\"neutron_constants.PORT_BINDING_EXTENDED\"","commit_id":"debff531a8f0906cbdd38fbbb75e4c351d43412a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"43cae3673c209b165a7d811af0eead6df6707746","unresolved":false,"context_lines":[{"line_number":1415,"context_line":"                {"},{"line_number":1416,"context_line":"                    # Copied from neutron-lib portbindings_extended.py"},{"line_number":1417,"context_line":"                    \"updated\": \"2017-07-17T10:00:00-00:00\","},{"line_number":1418,"context_line":"                    \"name\": neutron_constants.PORT_BINDING_EXTENDED,"},{"line_number":1419,"context_line":"                    \"links\": [],"},{"line_number":1420,"context_line":"                    \"alias\": \"binding-extended\","},{"line_number":1421,"context_line":"                    \"description\": \"Expose port bindings of a virtual port to \""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_6cd436ea","line":1418,"in_reply_to":"9fdfeff1_8e4641c0","updated":"2019-02-22 17:58:58.000000000","message":"And that\u0027s what the constant is.","commit_id":"debff531a8f0906cbdd38fbbb75e4c351d43412a"}]}
