)]}'
{"nova/network/base_api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8bf3700b1f5b18faca659a5241b8adcfef36bb38","unresolved":false,"context_lines":[{"line_number":259,"context_line":"        raise NotImplementedError()"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    def get_requested_resource_for_instance(self, context, instance_uuid):"},{"line_number":262,"context_line":"        \"\"\"Collect resource requests from the bound ports of the instance"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        :param context: nova request context"},{"line_number":265,"context_line":"        :param instance_uuid: The UUID of the instance"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_d19fe162","line":262,"range":{"start_line":262,"start_character":46,"end_line":262,"end_character":51},"updated":"2019-08-14 14:17:07.000000000","message":"nix this","commit_id":"85f06d3f5e491976535f4d441b1e5484437db05c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"982f94e66babdb06f51cd8f3416f0195eb992b2a","unresolved":false,"context_lines":[{"line_number":259,"context_line":"        raise NotImplementedError()"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    def get_requested_resource_for_instance(self, context, instance_uuid):"},{"line_number":262,"context_line":"        \"\"\"Collect resource requests from the bound ports of the instance"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        :param context: nova request context"},{"line_number":265,"context_line":"        :param instance_uuid: The UUID of the instance"}],"source_content_type":"text/x-python","patch_set":16,"id":"7faddb67_31b8dc73","line":262,"range":{"start_line":262,"start_character":46,"end_line":262,"end_character":51},"updated":"2019-08-27 21:28:12.000000000","message":"nix this","commit_id":"fc5e7cf84152a94462c4f943586296e7e6357875"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1eb1010a0880f56b23733767e7a06e78c41fb685","unresolved":false,"context_lines":[{"line_number":259,"context_line":"        raise NotImplementedError()"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    def get_requested_resource_for_instance(self, context, instance_uuid):"},{"line_number":262,"context_line":"        \"\"\"Collect resource requests from the bound ports of the instance"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        :param context: nova request context"},{"line_number":265,"context_line":"        :param instance_uuid: The UUID of the instance"}],"source_content_type":"text/x-python","patch_set":16,"id":"7faddb67_7847dba4","line":262,"range":{"start_line":262,"start_character":46,"end_line":262,"end_character":51},"in_reply_to":"7faddb67_31b8dc73","updated":"2019-08-30 19:51:27.000000000","message":"Done","commit_id":"fc5e7cf84152a94462c4f943586296e7e6357875"}],"nova/network/neutronv2/api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"38362e7cbb50b3a9cea0b07efa05232d1b4148bd","unresolved":false,"context_lines":[{"line_number":2225,"context_line":"        return ports_needed_per_instance"},{"line_number":2226,"context_line":""},{"line_number":2227,"context_line":"    def get_requested_resource_for_instance(self, context, instance_uuid):"},{"line_number":2228,"context_line":"        \"\"\"Collect resource requests from the bound ports of the instance"},{"line_number":2229,"context_line":""},{"line_number":2230,"context_line":"        :param context: nova request context"},{"line_number":2231,"context_line":"        :param instance_uuid: The UUID of the instance"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_0d71fcde","line":2228,"range":{"start_line":2228,"start_character":46,"end_line":2228,"end_character":57},"updated":"2019-07-26 19:58:45.000000000","message":"This method doesn\u0027t really distinguish that the ports are bound, right? I think you mean attached to the instance, something like that, but that doesn\u0027t mean they are bound to a host, right? I\u0027m thinking of the shelved offloaded instance case where the instance still has ports associated with it but they aren\u0027t bound to a host (though I\u0027m not sure if we explicitly unbind the ports during shelve offload...).\n\n(later)\n\nAh yes we don\u0027t unbind during shelve offload:\n\nhttps://github.com/openstack/nova/blob/89e65bd976be8e02fdb6932bb710b5165d7e00a3/nova/compute/manager.py#L5307\n\nhttps://github.com/openstack/nova/blob/89e65bd976be8e02fdb6932bb710b5165d7e00a3/nova/network/neutronv2/api.py#L3183\n\nAnyway, the \"bound ports\" thing is a nit - maybe \"associated\" would be a better word?","commit_id":"4fa396a21e14fe0b0ef450a09545b300645d5735"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6898a6844b818c94922ed3bf30eb0e7da05c69e2","unresolved":false,"context_lines":[{"line_number":2225,"context_line":"        return ports_needed_per_instance"},{"line_number":2226,"context_line":""},{"line_number":2227,"context_line":"    def get_requested_resource_for_instance(self, context, instance_uuid):"},{"line_number":2228,"context_line":"        \"\"\"Collect resource requests from the bound ports of the instance"},{"line_number":2229,"context_line":""},{"line_number":2230,"context_line":"        :param context: nova request context"},{"line_number":2231,"context_line":"        :param instance_uuid: The UUID of the instance"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_8d6e8994","line":2228,"range":{"start_line":2228,"start_character":46,"end_line":2228,"end_character":57},"in_reply_to":"7faddb67_0d71fcde","updated":"2019-08-08 15:49:39.000000000","message":"Done","commit_id":"4fa396a21e14fe0b0ef450a09545b300645d5735"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"38362e7cbb50b3a9cea0b07efa05232d1b4148bd","unresolved":false,"context_lines":[{"line_number":2235,"context_line":"        # get the ports bound to this instance"},{"line_number":2236,"context_line":"        search_opts \u003d {\u0027device_id\u0027: instance_uuid}"},{"line_number":2237,"context_line":"        neutron \u003d get_client(context)"},{"line_number":2238,"context_line":"        data \u003d neutron.list_ports(**search_opts)"},{"line_number":2239,"context_line":"        resource_requests \u003d []"},{"line_number":2240,"context_line":""},{"line_number":2241,"context_line":"        for bound_port in data.get(\u0027ports\u0027, []):"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_cd8c44d9","line":2238,"range":{"start_line":2238,"start_character":23,"end_line":2238,"end_character":33},"updated":"2019-07-26 19:58:45.000000000","message":"You can filter the returned fields to just contain id and resource_request using the fields kwarg on this. I\u0027m not sure how much that helps performance on the neutron side but we do it elsewhere so might as well here.\n\nCould be a follow up improvement I suppose.","commit_id":"4fa396a21e14fe0b0ef450a09545b300645d5735"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6898a6844b818c94922ed3bf30eb0e7da05c69e2","unresolved":false,"context_lines":[{"line_number":2235,"context_line":"        # get the ports bound to this instance"},{"line_number":2236,"context_line":"        search_opts \u003d {\u0027device_id\u0027: instance_uuid}"},{"line_number":2237,"context_line":"        neutron \u003d get_client(context)"},{"line_number":2238,"context_line":"        data \u003d neutron.list_ports(**search_opts)"},{"line_number":2239,"context_line":"        resource_requests \u003d []"},{"line_number":2240,"context_line":""},{"line_number":2241,"context_line":"        for bound_port in data.get(\u0027ports\u0027, []):"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_8dca096c","line":2238,"range":{"start_line":2238,"start_character":23,"end_line":2238,"end_character":33},"in_reply_to":"7faddb67_cd8c44d9","updated":"2019-08-08 15:49:39.000000000","message":"Done","commit_id":"4fa396a21e14fe0b0ef450a09545b300645d5735"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8bf3700b1f5b18faca659a5241b8adcfef36bb38","unresolved":false,"context_lines":[{"line_number":2239,"context_line":"            device_id\u003dinstance_uuid, fields\u003d[\u0027id\u0027, \u0027resource_request\u0027])"},{"line_number":2240,"context_line":"        resource_requests \u003d []"},{"line_number":2241,"context_line":""},{"line_number":2242,"context_line":"        for bound_port in data.get(\u0027ports\u0027, []):"},{"line_number":2243,"context_line":"            if bound_port.get(\u0027resource_request\u0027):"},{"line_number":2244,"context_line":"                # NOTE(gibi): explicitly orphan the RequestGroup by setting"},{"line_number":2245,"context_line":"                # context\u003dNone as we never intended to save it to the DB."}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_119d7965","line":2242,"range":{"start_line":2242,"start_character":12,"end_line":2242,"end_character":22},"updated":"2019-08-14 14:17:07.000000000","message":"nit: the port might not be bound to a host, so could just call this \"port\"","commit_id":"85f06d3f5e491976535f4d441b1e5484437db05c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"566f28bd18117a0fafe7635c33524b82af9f03f4","unresolved":false,"context_lines":[{"line_number":2239,"context_line":"            device_id\u003dinstance_uuid, fields\u003d[\u0027id\u0027, \u0027resource_request\u0027])"},{"line_number":2240,"context_line":"        resource_requests \u003d []"},{"line_number":2241,"context_line":""},{"line_number":2242,"context_line":"        for bound_port in data.get(\u0027ports\u0027, []):"},{"line_number":2243,"context_line":"            if bound_port.get(\u0027resource_request\u0027):"},{"line_number":2244,"context_line":"                # NOTE(gibi): explicitly orphan the RequestGroup by setting"},{"line_number":2245,"context_line":"                # context\u003dNone as we never intended to save it to the DB."}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_b8983ecc","line":2242,"range":{"start_line":2242,"start_character":12,"end_line":2242,"end_character":22},"in_reply_to":"7faddb67_07e902b6","updated":"2019-08-27 12:03:42.000000000","message":"Done","commit_id":"85f06d3f5e491976535f4d441b1e5484437db05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"85f6a24e32348e1e728957482d2651df6d1c59d5","unresolved":false,"context_lines":[{"line_number":2239,"context_line":"            device_id\u003dinstance_uuid, fields\u003d[\u0027id\u0027, \u0027resource_request\u0027])"},{"line_number":2240,"context_line":"        resource_requests \u003d []"},{"line_number":2241,"context_line":""},{"line_number":2242,"context_line":"        for bound_port in data.get(\u0027ports\u0027, []):"},{"line_number":2243,"context_line":"            if bound_port.get(\u0027resource_request\u0027):"},{"line_number":2244,"context_line":"                # NOTE(gibi): explicitly orphan the RequestGroup by setting"},{"line_number":2245,"context_line":"                # context\u003dNone as we never intended to save it to the DB."}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_07e902b6","line":2242,"range":{"start_line":2242,"start_character":12,"end_line":2242,"end_character":22},"in_reply_to":"7faddb67_119d7965","updated":"2019-08-26 11:02:18.000000000","message":"ya ifact when we call this intially on server create it wont be bound as we will not have selected a host yet.","commit_id":"85f06d3f5e491976535f4d441b1e5484437db05c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dd2046b44d10d1a78a5f84a72ae307c79c90242e","unresolved":false,"context_lines":[{"line_number":2236,"context_line":"                # context\u003dNone as we never intended to save it to the DB."},{"line_number":2237,"context_line":"                resource_requests.append("},{"line_number":2238,"context_line":"                    objects.RequestGroup.from_port_request("},{"line_number":2239,"context_line":"                        context\u003dNone,"},{"line_number":2240,"context_line":"                        port_uuid\u003dbound_port[\u0027id\u0027],"},{"line_number":2241,"context_line":"                        port_resource_request\u003dbound_port[\u0027resource_request\u0027]))"},{"line_number":2242,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_a7910e56","line":2239,"range":{"start_line":2239,"start_character":24,"end_line":2239,"end_character":37},"updated":"2019-08-26 11:00:28.000000000","message":"ya this is pretty opaque with out the coment above\nthanks for adding it.","commit_id":"cab1526db4ba665f9b104c1428fde92498183f41"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dd2046b44d10d1a78a5f84a72ae307c79c90242e","unresolved":false,"context_lines":[{"line_number":2237,"context_line":"                resource_requests.append("},{"line_number":2238,"context_line":"                    objects.RequestGroup.from_port_request("},{"line_number":2239,"context_line":"                        context\u003dNone,"},{"line_number":2240,"context_line":"                        port_uuid\u003dbound_port[\u0027id\u0027],"},{"line_number":2241,"context_line":"                        port_resource_request\u003dbound_port[\u0027resource_request\u0027]))"},{"line_number":2242,"context_line":""},{"line_number":2243,"context_line":"        return resource_requests"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_87989275","line":2240,"range":{"start_line":2240,"start_character":23,"end_line":2240,"end_character":51},"updated":"2019-08-26 11:00:28.000000000","message":"nit: you could put this on the line above","commit_id":"cab1526db4ba665f9b104c1428fde92498183f41"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"566f28bd18117a0fafe7635c33524b82af9f03f4","unresolved":false,"context_lines":[{"line_number":2237,"context_line":"                resource_requests.append("},{"line_number":2238,"context_line":"                    objects.RequestGroup.from_port_request("},{"line_number":2239,"context_line":"                        context\u003dNone,"},{"line_number":2240,"context_line":"                        port_uuid\u003dbound_port[\u0027id\u0027],"},{"line_number":2241,"context_line":"                        port_resource_request\u003dbound_port[\u0027resource_request\u0027]))"},{"line_number":2242,"context_line":""},{"line_number":2243,"context_line":"        return resource_requests"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_f860f6d1","line":2240,"range":{"start_line":2240,"start_character":23,"end_line":2240,"end_character":51},"in_reply_to":"7faddb67_87989275","updated":"2019-08-27 12:03:42.000000000","message":"Done","commit_id":"cab1526db4ba665f9b104c1428fde92498183f41"}],"nova/tests/unit/network/test_neutronv2.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"38362e7cbb50b3a9cea0b07efa05232d1b4148bd","unresolved":false,"context_lines":[{"line_number":5836,"context_line":"            {"},{"line_number":5837,"context_line":"                \u0027id\u0027: uuids.port1,"},{"line_number":5838,"context_line":"                \u0027device_id\u0027: uuids.isnt1,"},{"line_number":5839,"context_line":"                \u0027resource_request\u0027: {"},{"line_number":5840,"context_line":"                    \u0027resources\u0027: {\u0027NET_BW_EGR_KILOBIT_PER_SEC\u0027: 10000}}"},{"line_number":5841,"context_line":"            },"},{"line_number":5842,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_6d4bd086","line":5839,"updated":"2019-07-26 19:58:45.000000000","message":"nit: Wouldn\u0027t we expect a \u0027required\u0027 key in here also? :)","commit_id":"4fa396a21e14fe0b0ef450a09545b300645d5735"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6898a6844b818c94922ed3bf30eb0e7da05c69e2","unresolved":false,"context_lines":[{"line_number":5836,"context_line":"            {"},{"line_number":5837,"context_line":"                \u0027id\u0027: uuids.port1,"},{"line_number":5838,"context_line":"                \u0027device_id\u0027: uuids.isnt1,"},{"line_number":5839,"context_line":"                \u0027resource_request\u0027: {"},{"line_number":5840,"context_line":"                    \u0027resources\u0027: {\u0027NET_BW_EGR_KILOBIT_PER_SEC\u0027: 10000}}"},{"line_number":5841,"context_line":"            },"},{"line_number":5842,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_8d9d2959","line":5839,"in_reply_to":"7faddb67_6d4bd086","updated":"2019-08-08 15:49:39.000000000","message":"Nova treats resources as mandatory while required is optional. \n\nhttps://github.com/openstack/nova/blob/af40e3d1a67c8542683368fd6927ac9c0363a3b8/nova/objects/request_spec.py#L1059\n\nToday neutron will send both in case of bandwidth.","commit_id":"4fa396a21e14fe0b0ef450a09545b300645d5735"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8bf3700b1f5b18faca659a5241b8adcfef36bb38","unresolved":false,"context_lines":[{"line_number":5836,"context_line":"            {"},{"line_number":5837,"context_line":"                \u0027id\u0027: uuids.port1,"},{"line_number":5838,"context_line":"                \u0027device_id\u0027: uuids.isnt1,"},{"line_number":5839,"context_line":"                \u0027resource_request\u0027: {"},{"line_number":5840,"context_line":"                    \u0027resources\u0027: {\u0027NET_BW_EGR_KILOBIT_PER_SEC\u0027: 10000}}"},{"line_number":5841,"context_line":"            },"},{"line_number":5842,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":10,"id":"7faddb67_b1858509","line":5839,"in_reply_to":"7faddb67_8d9d2959","updated":"2019-08-14 14:17:07.000000000","message":"\u003e Today neutron will send both in case of bandwidth.\n\nYeah my point was if you\u0027re faking the neutron response, and neutron will always send \"required\" then the fake could match that. But it\u0027s not a big deal.","commit_id":"4fa396a21e14fe0b0ef450a09545b300645d5735"}]}
