)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"cd18f00d60eaf607fdf008ff77edc414ae4bd6df","unresolved":false,"context_lines":[{"line_number":9,"context_line":"We\u0027re going to need to consume information about the physnet and tunnel"},{"line_number":10,"context_line":"status of networks. While we don\u0027t currently retrieve the latter, we do"},{"line_number":11,"context_line":"retrieve the former but only for SR-IOV ports. Modify this so physnet"},{"line_number":12,"context_line":"information is retrieve for any non-auto and non-null network requests."},{"line_number":13,"context_line":"This is stored in a new object, \u0027InstanceNUMANetworkInfo\u0027, which defines"},{"line_number":14,"context_line":"fields for both physnets and tunneled networks. The latter attribute of"},{"line_number":15,"context_line":"this object is naturally unset for now, but this is not an issue as the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"5f7c97a3_eacbc646","line":12,"range":{"start_line":12,"start_character":15,"end_line":12,"end_character":23},"updated":"2018-06-25 17:32:22.000000000","message":"retrieved","commit_id":"27d5803b96307ac8ced3ad4a427d6a658768ece0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0f6ff711e5e801c451ec68d656424761621f9931","unresolved":false,"context_lines":[{"line_number":9,"context_line":"We\u0027re going to need to consume information about the physnet and tunnel"},{"line_number":10,"context_line":"status of networks. While we don\u0027t currently retrieve the latter, we do"},{"line_number":11,"context_line":"retrieve the former but only for SR-IOV ports. Modify this so physnet"},{"line_number":12,"context_line":"information is retrieve for any non-auto and non-null network requests."},{"line_number":13,"context_line":"This is stored in a new object, \u0027InstanceNUMANetworkInfo\u0027, which defines"},{"line_number":14,"context_line":"fields for both physnets and tunneled networks. The latter attribute of"},{"line_number":15,"context_line":"this object is naturally unset for now, but this is not an issue as the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"5f7c97a3_f361753a","line":12,"range":{"start_line":12,"start_character":15,"end_line":12,"end_character":23},"in_reply_to":"5f7c97a3_eacbc646","updated":"2018-06-26 10:38:52.000000000","message":"Done","commit_id":"27d5803b96307ac8ced3ad4a427d6a658768ece0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c63da0913600f71f89a0409b187bf2d72c6b91c3","unresolved":false,"context_lines":[{"line_number":11,"context_line":"retrieve the former but only for SR-IOV ports. Modify this so physnet"},{"line_number":12,"context_line":"information is retrieve for any non-auto and non-null network requests."},{"line_number":13,"context_line":"This is stored in a new object, \u0027InstanceNUMANetworkInfo\u0027, which defines"},{"line_number":14,"context_line":"fields for both physnets and tunneled networks. The latter attribute of"},{"line_number":15,"context_line":"this object is naturally unset for now, but this is not an issue as the"},{"line_number":16,"context_line":"value returned from this function is not yet used."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Part of blueprint numa-aware-vswitches"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"5f7c97a3_a103be41","line":15,"range":{"start_line":14,"start_character":49,"end_line":15,"end_character":38},"updated":"2018-06-25 12:54:39.000000000","message":"It is more like \u0027defaulted to False now\u0027","commit_id":"27d5803b96307ac8ced3ad4a427d6a658768ece0"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"cd18f00d60eaf607fdf008ff77edc414ae4bd6df","unresolved":false,"context_lines":[{"line_number":11,"context_line":"retrieve the former but only for SR-IOV ports. Modify this so physnet"},{"line_number":12,"context_line":"information is retrieve for any non-auto and non-null network requests."},{"line_number":13,"context_line":"This is stored in a new object, \u0027InstanceNUMANetworkInfo\u0027, which defines"},{"line_number":14,"context_line":"fields for both physnets and tunneled networks. The latter attribute of"},{"line_number":15,"context_line":"this object is naturally unset for now, but this is not an issue as the"},{"line_number":16,"context_line":"value returned from this function is not yet used."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Part of blueprint numa-aware-vswitches"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"5f7c97a3_2aff7e66","line":15,"range":{"start_line":14,"start_character":49,"end_line":15,"end_character":38},"in_reply_to":"5f7c97a3_a103be41","updated":"2018-06-25 17:32:22.000000000","message":"Defaulted to false in the object sense doesn\u0027t mean it\u0027s set, implicitly set, or anything else, so I think what is here is correct.","commit_id":"27d5803b96307ac8ced3ad4a427d6a658768ece0"}],"nova/network/api.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"29199396f85bbf5eed75f4317dd5af96efa19c39","unresolved":false,"context_lines":[{"line_number":401,"context_line":"        \"\"\"Retrieve all information for the networks passed at the time of"},{"line_number":402,"context_line":"        creating the server."},{"line_number":403,"context_line":"        \"\"\""},{"line_number":404,"context_line":"        # This is NOOP for Nova network since it doesn\u0027t support SR-IOV."},{"line_number":405,"context_line":"        pass"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"    def get_dns_domains(self, context):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_47448347","line":404,"range":{"start_line":404,"start_character":46,"end_line":404,"end_character":72},"updated":"2018-06-08 10:57:08.000000000","message":"I agree that we don\u0027t want to do this in nova-network, but the reasoning seems odd as this call is now use for other than SRIOV cases too.","commit_id":"c8cd3e675e0c15204e59c850a0431f763f1682ff"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3f4047f00e8480c8ad09e1561db5d8f1e1e87992","unresolved":false,"context_lines":[{"line_number":401,"context_line":"        \"\"\"Retrieve all information for the networks passed at the time of"},{"line_number":402,"context_line":"        creating the server."},{"line_number":403,"context_line":"        \"\"\""},{"line_number":404,"context_line":"        # This is NOOP for Nova network since it doesn\u0027t support SR-IOV."},{"line_number":405,"context_line":"        pass"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"    def get_dns_domains(self, context):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_48a24f9c","line":404,"range":{"start_line":404,"start_character":46,"end_line":404,"end_character":72},"in_reply_to":"5f7c97a3_47448347","updated":"2018-06-08 14:33:24.000000000","message":"I\u0027ve further clarified this (and you\u0027ll have to expand it when you return yet more info, I guess)","commit_id":"c8cd3e675e0c15204e59c850a0431f763f1682ff"}],"nova/network/base_api.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"cd18f00d60eaf607fdf008ff77edc414ae4bd6df","unresolved":false,"context_lines":[{"line_number":282,"context_line":"        :type pci_requests: nova.objects.InstancePCIRequests"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"        :returns: An instance of ``objects.InstanceNUMANetworkInfo`` for use by"},{"line_number":285,"context_line":"            the scheduler."},{"line_number":286,"context_line":"        \"\"\""},{"line_number":287,"context_line":"        raise NotImplementedError()"},{"line_number":288,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_8aa81278","line":285,"updated":"2018-06-25 17:32:22.000000000","message":"...or None?","commit_id":"27d5803b96307ac8ced3ad4a427d6a658768ece0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0f6ff711e5e801c451ec68d656424761621f9931","unresolved":false,"context_lines":[{"line_number":282,"context_line":"        :type pci_requests: nova.objects.InstancePCIRequests"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"        :returns: An instance of ``objects.InstanceNUMANetworkInfo`` for use by"},{"line_number":285,"context_line":"            the scheduler."},{"line_number":286,"context_line":"        \"\"\""},{"line_number":287,"context_line":"        raise NotImplementedError()"},{"line_number":288,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_9367e151","line":285,"in_reply_to":"5f7c97a3_8aa81278","updated":"2018-06-26 10:38:52.000000000","message":"Done","commit_id":"27d5803b96307ac8ced3ad4a427d6a658768ece0"}],"nova/network/neutronv2/api.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"75330edbc597494b885c032c032b76acbb5065e8","unresolved":false,"context_lines":[{"line_number":1606,"context_line":"                    context, request_net.port_id, neutron_client\u003dneutron,"},{"line_number":1607,"context_line":"                    fields\u003d[\u0027network_id\u0027])[\u0027network_id\u0027]"},{"line_number":1608,"context_line":""},{"line_number":1609,"context_line":"            if network_id:"},{"line_number":1610,"context_line":"                physnet \u003d self._get_network_physnet_info("},{"line_number":1611,"context_line":"                    context, neutron, network_id)"},{"line_number":1612,"context_line":""},{"line_number":1613,"context_line":"            if request_net.port_id:"},{"line_number":1614,"context_line":"                vnic_type \u003d self._get_port_vnic_info("}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_d57e0a6a","line":1611,"range":{"start_line":1609,"start_character":0,"end_line":1611,"end_character":49},"updated":"2018-05-09 15:55:29.000000000","message":"So something about this is upsetting Tempest but I don\u0027t know what and I can\u0027t reproduce locally...","commit_id":"ceb4587d00d9048d677edba0b1cce1a14ffc134e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f456989b1946323fae5a87930a1a7928c804b008","unresolved":false,"context_lines":[{"line_number":1700,"context_line":""},{"line_number":1701,"context_line":"        ports_needed_per_instance \u003d 0"},{"line_number":1702,"context_line":"        if (requested_networks is None or len(requested_networks) \u003d\u003d 0 or"},{"line_number":1703,"context_line":"                requested_networks.auto_allocate):"},{"line_number":1704,"context_line":"            nets \u003d self._get_available_networks(context, context.project_id,"},{"line_number":1705,"context_line":"                                                neutron\u003dneutron)"},{"line_number":1706,"context_line":"            if len(nets) \u003e 1:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_9595f242","line":1703,"range":{"start_line":1703,"start_character":16,"end_line":1703,"end_character":48},"updated":"2018-05-09 16:02:32.000000000","message":"You need to be aware of and handle this.","commit_id":"ceb4587d00d9048d677edba0b1cce1a14ffc134e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fe394413ef1230408ce34fc7779efebd59d2f071","unresolved":false,"context_lines":[{"line_number":1700,"context_line":""},{"line_number":1701,"context_line":"        ports_needed_per_instance \u003d 0"},{"line_number":1702,"context_line":"        if (requested_networks is None or len(requested_networks) \u003d\u003d 0 or"},{"line_number":1703,"context_line":"                requested_networks.auto_allocate):"},{"line_number":1704,"context_line":"            nets \u003d self._get_available_networks(context, context.project_id,"},{"line_number":1705,"context_line":"                                                neutron\u003dneutron)"},{"line_number":1706,"context_line":"            if len(nets) \u003e 1:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_5cbe1a65","line":1703,"range":{"start_line":1703,"start_character":16,"end_line":1703,"end_character":48},"in_reply_to":"5f7c97a3_9595f242","updated":"2018-06-14 13:40:30.000000000","message":"Done","commit_id":"ceb4587d00d9048d677edba0b1cce1a14ffc134e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"29199396f85bbf5eed75f4317dd5af96efa19c39","unresolved":false,"context_lines":[{"line_number":1585,"context_line":"        # calls to populate_network"},{"line_number":1586,"context_line":"        self.populate_networks(context, requested_networks, pci_requests)"},{"line_number":1587,"context_line":""},{"line_number":1588,"context_line":"    def populate_networks(self, context, requested_networks,"},{"line_number":1589,"context_line":"                          pci_requests\u003dNone):"},{"line_number":1590,"context_line":"        \"\"\"Retrieve all information for the networks passed at the time of"},{"line_number":1591,"context_line":"        creating the server."}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_a77c7772","line":1588,"updated":"2018-06-08 10:57:08.000000000","message":"note mostly to myself: I will further refactor this to gather the port\u0027s resource request in the same for loop with the same neutron API calls. I guess I will introduce one extra indirection then pull the for loop up to that level and do two things in the loop 1) the current processing done per request_net and 2) the resource gathering per request_net(if it is a port).","commit_id":"c8cd3e675e0c15204e59c850a0431f763f1682ff"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3f4047f00e8480c8ad09e1561db5d8f1e1e87992","unresolved":false,"context_lines":[{"line_number":1585,"context_line":"        # calls to populate_network"},{"line_number":1586,"context_line":"        self.populate_networks(context, requested_networks, pci_requests)"},{"line_number":1587,"context_line":""},{"line_number":1588,"context_line":"    def populate_networks(self, context, requested_networks,"},{"line_number":1589,"context_line":"                          pci_requests\u003dNone):"},{"line_number":1590,"context_line":"        \"\"\"Retrieve all information for the networks passed at the time of"},{"line_number":1591,"context_line":"        creating the server."}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_88adc785","line":1588,"in_reply_to":"5f7c97a3_a77c7772","updated":"2018-06-08 14:33:24.000000000","message":"I\u0027ve renamed this since I\u0027m not \"populating\" anything now. The new name should suit you too. Let me know if not","commit_id":"c8cd3e675e0c15204e59c850a0431f763f1682ff"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d45d97c53a29e4bb97edde185a501c9ddffa6b22","unresolved":false,"context_lines":[{"line_number":1608,"context_line":"        return self.create_resource_requests(context, requested_networks,"},{"line_number":1609,"context_line":"                                             pci_requests)"},{"line_number":1610,"context_line":""},{"line_number":1611,"context_line":"    def create_resource_requests(self, context, requested_networks,"},{"line_number":1612,"context_line":"                                 pci_requests\u003dNone):"},{"line_number":1613,"context_line":"        \"\"\"Retrieve all information for the networks passed at the time of"},{"line_number":1614,"context_line":"        creating the server."}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_a9f56ece","line":1611,"updated":"2018-06-18 14:16:14.000000000","message":"I know it\u0027s a little tedious, but it would really be great to have the refactor of splitting this out into a separate method be distinct from the refactor below that does change the behavior a bit it seems, and maybe distinct from collecting and returning the physnet info.\n\nA lot of people have a lot of battle scars from modifying this code, and it\u0027d be really nice to be able to bisect out changes if we need to, separate from the many code cleanups you\u0027re making here. I think it will also substantially increase your chances for getting it reviewed. I\u0027ll gladly try to drum up review support for straight refactors and cleanups that should be reviewable by anyone.","commit_id":"93d432a2f748ddf326ca3c192c824c823b54edc3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"31acecdad993cc52c450f0a407c4ee2fc7159926","unresolved":false,"context_lines":[{"line_number":1608,"context_line":"        return self.create_resource_requests(context, requested_networks,"},{"line_number":1609,"context_line":"                                             pci_requests)"},{"line_number":1610,"context_line":""},{"line_number":1611,"context_line":"    def create_resource_requests(self, context, requested_networks,"},{"line_number":1612,"context_line":"                                 pci_requests\u003dNone):"},{"line_number":1613,"context_line":"        \"\"\"Retrieve all information for the networks passed at the time of"},{"line_number":1614,"context_line":"        creating the server."}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_aac06e4b","line":1611,"in_reply_to":"5f7c97a3_a9f56ece","updated":"2018-06-25 17:29:35.000000000","message":"I think I\u0027ve done this now. Let me know if there\u0027s any further split ups you\u0027d like to see","commit_id":"93d432a2f748ddf326ca3c192c824c823b54edc3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d45d97c53a29e4bb97edde185a501c9ddffa6b22","unresolved":false,"context_lines":[{"line_number":1627,"context_line":"            vnic_type \u003d network_model.VNIC_TYPE_NORMAL"},{"line_number":1628,"context_line":""},{"line_number":1629,"context_line":"            if request_net.network_id and not request_net.auto_allocate:"},{"line_number":1630,"context_line":"                network_id \u003d request_net.network_id"},{"line_number":1631,"context_line":"            elif request_net.port_id:"},{"line_number":1632,"context_line":"                network_id \u003d self._show_port("},{"line_number":1633,"context_line":"                    context, request_net.port_id, neutron_client\u003dneutron,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_695196d9","line":1630,"updated":"2018-06-18 14:16:14.000000000","message":"This is new behavior, unrelated to the physnet collection and returning of InstanceNUMANetworkInfo right?","commit_id":"93d432a2f748ddf326ca3c192c824c823b54edc3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"31acecdad993cc52c450f0a407c4ee2fc7159926","unresolved":false,"context_lines":[{"line_number":1627,"context_line":"            vnic_type \u003d network_model.VNIC_TYPE_NORMAL"},{"line_number":1628,"context_line":""},{"line_number":1629,"context_line":"            if request_net.network_id and not request_net.auto_allocate:"},{"line_number":1630,"context_line":"                network_id \u003d request_net.network_id"},{"line_number":1631,"context_line":"            elif request_net.port_id:"},{"line_number":1632,"context_line":"                network_id \u003d self._show_port("},{"line_number":1633,"context_line":"                    context, request_net.port_id, neutron_client\u003dneutron,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_ea8f462b","line":1630,"in_reply_to":"5f7c97a3_695196d9","updated":"2018-06-25 17:29:35.000000000","message":"It\u0027s not, no. This is what I was referring to when I said \"always retrieve physnets\", as with this change we now collect physnets for NetworkRequest\u0027s that only have network_id set too, whereas before it was only done when port_id was set. I can reword","commit_id":"93d432a2f748ddf326ca3c192c824c823b54edc3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"17dec662328d4962fcd3a0f23b90e5aa2813749b","unresolved":false,"context_lines":[{"line_number":1627,"context_line":"            vnic_type \u003d network_model.VNIC_TYPE_NORMAL"},{"line_number":1628,"context_line":""},{"line_number":1629,"context_line":"            if request_net.network_id and not request_net.auto_allocate:"},{"line_number":1630,"context_line":"                network_id \u003d request_net.network_id"},{"line_number":1631,"context_line":"            elif request_net.port_id:"},{"line_number":1632,"context_line":"                network_id \u003d self._show_port("},{"line_number":1633,"context_line":"                    context, request_net.port_id, neutron_client\u003dneutron,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_8a4492b9","line":1630,"in_reply_to":"5f7c97a3_ea8f462b","updated":"2018-06-25 17:36:23.000000000","message":"How is it not new? Before we only collected this information if port_id was set, but now you\u0027re doing it if network_id is set and we\u0027re auto-allocating.\n\nHowever, doesn\u0027t really matter now that this is the functional change patch.","commit_id":"93d432a2f748ddf326ca3c192c824c823b54edc3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d45d97c53a29e4bb97edde185a501c9ddffa6b22","unresolved":false,"context_lines":[{"line_number":1634,"context_line":"                    fields\u003d[\u0027network_id\u0027])[\u0027network_id\u0027]"},{"line_number":1635,"context_line":""},{"line_number":1636,"context_line":"            if network_id:"},{"line_number":1637,"context_line":"                physnet \u003d self._get_network_info("},{"line_number":1638,"context_line":"                    context, neutron, network_id)"},{"line_number":1639,"context_line":"                if physnet:"},{"line_number":1640,"context_line":"                    physnets.append(physnet)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_e9efe61a","line":1637,"range":{"start_line":1637,"start_character":32,"end_line":1637,"end_character":48},"updated":"2018-06-18 14:16:14.000000000","message":"Again, if this was _get_network_physnet_info() it would help with clarity here.","commit_id":"93d432a2f748ddf326ca3c192c824c823b54edc3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"17dec662328d4962fcd3a0f23b90e5aa2813749b","unresolved":false,"context_lines":[{"line_number":1634,"context_line":"                    fields\u003d[\u0027network_id\u0027])[\u0027network_id\u0027]"},{"line_number":1635,"context_line":""},{"line_number":1636,"context_line":"            if network_id:"},{"line_number":1637,"context_line":"                physnet \u003d self._get_network_info("},{"line_number":1638,"context_line":"                    context, neutron, network_id)"},{"line_number":1639,"context_line":"                if physnet:"},{"line_number":1640,"context_line":"                    physnets.append(physnet)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_8a1d72bf","line":1637,"range":{"start_line":1637,"start_character":32,"end_line":1637,"end_character":48},"in_reply_to":"5f7c97a3_0a95e231","updated":"2018-06-25 17:36:23.000000000","message":"You \"can\u0027t\"? :)\n\nI think some name that expresses that this will \"get physnet and tunneled status\" is what we need. Anything that uses the words \"network\" and \"info\" in adjacent placement without \"physnet\" and \"tunneled\" is going to be confusing.","commit_id":"93d432a2f748ddf326ca3c192c824c823b54edc3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"31acecdad993cc52c450f0a407c4ee2fc7159926","unresolved":false,"context_lines":[{"line_number":1634,"context_line":"                    fields\u003d[\u0027network_id\u0027])[\u0027network_id\u0027]"},{"line_number":1635,"context_line":""},{"line_number":1636,"context_line":"            if network_id:"},{"line_number":1637,"context_line":"                physnet \u003d self._get_network_info("},{"line_number":1638,"context_line":"                    context, neutron, network_id)"},{"line_number":1639,"context_line":"                if physnet:"},{"line_number":1640,"context_line":"                    physnets.append(physnet)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_0a95e231","line":1637,"range":{"start_line":1637,"start_character":32,"end_line":1637,"end_character":48},"in_reply_to":"5f7c97a3_e9efe61a","updated":"2018-06-25 17:29:35.000000000","message":"Because I\u0027m returning other network info (tunneled status) in subsequent patches, I can\u0027t put \u0027physnet\u0027 into the name. We could probably do to avoid overloading the \u0027network_info\u0027 term though so I\u0027m open to ideas","commit_id":"93d432a2f748ddf326ca3c192c824c823b54edc3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d45d97c53a29e4bb97edde185a501c9ddffa6b22","unresolved":false,"context_lines":[{"line_number":1669,"context_line":"                pci_request_id \u003d request.request_id"},{"line_number":1670,"context_line":""},{"line_number":1671,"context_line":"            if network_id:"},{"line_number":1672,"context_line":"                request_net.network_id \u003d network_id"},{"line_number":1673,"context_line":"            request_net.pci_request_id \u003d pci_request_id"},{"line_number":1674,"context_line":""},{"line_number":1675,"context_line":"        return objects.InstanceNUMANetworkInfo(physnets\u003dlist(set(physnets)),"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_89e0b228","line":1672,"updated":"2018-06-18 14:16:14.000000000","message":"Maybe this should go up under L1631?","commit_id":"93d432a2f748ddf326ca3c192c824c823b54edc3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"17dec662328d4962fcd3a0f23b90e5aa2813749b","unresolved":false,"context_lines":[{"line_number":1669,"context_line":"                pci_request_id \u003d request.request_id"},{"line_number":1670,"context_line":""},{"line_number":1671,"context_line":"            if network_id:"},{"line_number":1672,"context_line":"                request_net.network_id \u003d network_id"},{"line_number":1673,"context_line":"            request_net.pci_request_id \u003d pci_request_id"},{"line_number":1674,"context_line":""},{"line_number":1675,"context_line":"        return objects.InstanceNUMANetworkInfo(physnets\u003dlist(set(physnets)),"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_aa186ecc","line":1672,"in_reply_to":"5f7c97a3_4add1a12","updated":"2018-06-25 17:36:23.000000000","message":"Okay, seems cleaner to do it above, but that\u0027s fine.","commit_id":"93d432a2f748ddf326ca3c192c824c823b54edc3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b42329d3f7d7e249109846c84c7f6ac6b99ac8c0","unresolved":false,"context_lines":[{"line_number":1669,"context_line":"                pci_request_id \u003d request.request_id"},{"line_number":1670,"context_line":""},{"line_number":1671,"context_line":"            if network_id:"},{"line_number":1672,"context_line":"                request_net.network_id \u003d network_id"},{"line_number":1673,"context_line":"            request_net.pci_request_id \u003d pci_request_id"},{"line_number":1674,"context_line":""},{"line_number":1675,"context_line":"        return objects.InstanceNUMANetworkInfo(physnets\u003dlist(set(physnets)),"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_4add1a12","line":1672,"in_reply_to":"5f7c97a3_89e0b228","updated":"2018-06-25 17:31:05.000000000","message":"I kept this here because this where we set all \u0027request_net\u0027 attributes and it seemed to make sense. I can change if you feel strongly about it though","commit_id":"93d432a2f748ddf326ca3c192c824c823b54edc3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d60e1f65bc8e01b49bf3b65619d82a3d42c2e452","unresolved":false,"context_lines":[{"line_number":1662,"context_line":"            if network_id:"},{"line_number":1663,"context_line":"                request_net.network_id \u003d network_id"},{"line_number":1664,"context_line":"            request_net.pci_request_id \u003d pci_request_id"},{"line_number":1665,"context_line":""},{"line_number":1666,"context_line":"        return objects.InstanceNUMANetworkInfo(physnets\u003dlist(set(physnets)),"},{"line_number":1667,"context_line":"                                               tunneled\u003dtunneled)"},{"line_number":1668,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_526c1e06","line":1665,"updated":"2018-06-22 10:38:43.000000000","message":"There is multiple network_id / port_id branching in this code now. The two code paths are pretty interwoven that does not help the understanding. Still I don\u0027t see right now how we can clear this up so meh.","commit_id":"37ef14fdb83495a618c04bca1540ee170d29aa9a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f8a52c58403f2bcc0e141d9173afe742d4cc251f","unresolved":false,"context_lines":[{"line_number":1662,"context_line":"            if network_id:"},{"line_number":1663,"context_line":"                request_net.network_id \u003d network_id"},{"line_number":1664,"context_line":"            request_net.pci_request_id \u003d pci_request_id"},{"line_number":1665,"context_line":""},{"line_number":1666,"context_line":"        return objects.InstanceNUMANetworkInfo(physnets\u003dlist(set(physnets)),"},{"line_number":1667,"context_line":"                                               tunneled\u003dtunneled)"},{"line_number":1668,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_f208c52d","line":1665,"in_reply_to":"5f7c97a3_526c1e06","updated":"2018-06-22 15:03:06.000000000","message":"I\u0027ve reworked this slightly not. Let me know what you think","commit_id":"37ef14fdb83495a618c04bca1540ee170d29aa9a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c63da0913600f71f89a0409b187bf2d72c6b91c3","unresolved":false,"context_lines":[{"line_number":1662,"context_line":"            if network_id:"},{"line_number":1663,"context_line":"                request_net.network_id \u003d network_id"},{"line_number":1664,"context_line":"            request_net.pci_request_id \u003d pci_request_id"},{"line_number":1665,"context_line":""},{"line_number":1666,"context_line":"        return objects.InstanceNUMANetworkInfo(physnets\u003dlist(set(physnets)),"},{"line_number":1667,"context_line":"                                               tunneled\u003dtunneled)"},{"line_number":1668,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_c11fda6d","line":1665,"in_reply_to":"5f7c97a3_f208c52d","updated":"2018-06-25 12:54:39.000000000","message":"It is definitely better. Thanks!","commit_id":"37ef14fdb83495a618c04bca1540ee170d29aa9a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d60e1f65bc8e01b49bf3b65619d82a3d42c2e452","unresolved":false,"context_lines":[{"line_number":1663,"context_line":"                request_net.network_id \u003d network_id"},{"line_number":1664,"context_line":"            request_net.pci_request_id \u003d pci_request_id"},{"line_number":1665,"context_line":""},{"line_number":1666,"context_line":"        return objects.InstanceNUMANetworkInfo(physnets\u003dlist(set(physnets)),"},{"line_number":1667,"context_line":"                                               tunneled\u003dtunneled)"},{"line_number":1668,"context_line":""},{"line_number":1669,"context_line":"    def _can_auto_allocate_network(self, context, neutron):"},{"line_number":1670,"context_line":"        \"\"\"Helper method to determine if we can auto-allocate networks"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_5d08af25","line":1667,"range":{"start_line":1666,"start_character":0,"end_line":1667,"end_character":65},"updated":"2018-06-22 10:38:43.000000000","message":"That will be a problem for me as I would like to return a list of RequestGroup objects here representing the (bandwidth) resource request of each port which has such. But I can change this to return two things as a tuple so that is OK.","commit_id":"37ef14fdb83495a618c04bca1540ee170d29aa9a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f8a52c58403f2bcc0e141d9173afe742d4cc251f","unresolved":false,"context_lines":[{"line_number":1663,"context_line":"                request_net.network_id \u003d network_id"},{"line_number":1664,"context_line":"            request_net.pci_request_id \u003d pci_request_id"},{"line_number":1665,"context_line":""},{"line_number":1666,"context_line":"        return objects.InstanceNUMANetworkInfo(physnets\u003dlist(set(physnets)),"},{"line_number":1667,"context_line":"                                               tunneled\u003dtunneled)"},{"line_number":1668,"context_line":""},{"line_number":1669,"context_line":"    def _can_auto_allocate_network(self, context, neutron):"},{"line_number":1670,"context_line":"        \"\"\"Helper method to determine if we can auto-allocate networks"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_120ea13c","line":1667,"range":{"start_line":1666,"start_character":0,"end_line":1667,"end_character":65},"in_reply_to":"5f7c97a3_5d08af25","updated":"2018-06-22 15:03:06.000000000","message":"Yeah, it\u0027s easy to return multiple things. In fact, I\u0027d like to rework this to return the pci_request_id values separately too (rather than setting them here) but that\u0027s another day\u0027s problem","commit_id":"37ef14fdb83495a618c04bca1540ee170d29aa9a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c63da0913600f71f89a0409b187bf2d72c6b91c3","unresolved":false,"context_lines":[{"line_number":1617,"context_line":"                    context, neutron, request_net.port_id)"},{"line_number":1618,"context_line":"                physnet \u003d self._get_network_info("},{"line_number":1619,"context_line":"                    context, neutron, network_id)"},{"line_number":1620,"context_line":"                LOG.debug(\"Creating PCI device request for port_id\u003d%s, \""},{"line_number":1621,"context_line":"                          \"vnic_type\u003d%s, phynet_name\u003d%s, trusted\u003d%s\","},{"line_number":1622,"context_line":"                          request_net.port_id, vnic_type, physnet,"},{"line_number":1623,"context_line":"                          trusted)"},{"line_number":1624,"context_line":"            pci_request_id \u003d None"},{"line_number":1625,"context_line":"            if vnic_type in network_model.VNIC_TYPES_SRIOV:"},{"line_number":1626,"context_line":"                # TODO(moshele): To differentiate between the SR-IOV legacy"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_41d66a29","side":"PARENT","line":1623,"range":{"start_line":1620,"start_character":1,"end_line":1623,"end_character":34},"updated":"2018-06-25 12:54:39.000000000","message":"I feel that this LOG message is useful but I agree that it is not at the good place as we only create PCI request if the condition \u0027vnic_type in network_model.VNIC_TYPES_SRIOV\u0027 is True below.","commit_id":"f1d404bffe749c57da27c72e447eaf7d9f73555c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"cd18f00d60eaf607fdf008ff77edc414ae4bd6df","unresolved":false,"context_lines":[{"line_number":1601,"context_line":"    def create_resource_requests(self, context, requested_networks,"},{"line_number":1602,"context_line":"                                 pci_requests\u003dNone):"},{"line_number":1603,"context_line":"        \"\"\"Retrieve all information for the networks passed at the time of"},{"line_number":1604,"context_line":"        creating the server."},{"line_number":1605,"context_line":"        \"\"\""},{"line_number":1606,"context_line":"        if not requested_networks or requested_networks.no_allocate:"},{"line_number":1607,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_6a92564d","line":1604,"updated":"2018-06-25 17:32:22.000000000","message":"Docstring update for the return value?","commit_id":"27d5803b96307ac8ced3ad4a427d6a658768ece0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0f6ff711e5e801c451ec68d656424761621f9931","unresolved":false,"context_lines":[{"line_number":1601,"context_line":"    def create_resource_requests(self, context, requested_networks,"},{"line_number":1602,"context_line":"                                 pci_requests\u003dNone):"},{"line_number":1603,"context_line":"        \"\"\"Retrieve all information for the networks passed at the time of"},{"line_number":1604,"context_line":"        creating the server."},{"line_number":1605,"context_line":"        \"\"\""},{"line_number":1606,"context_line":"        if not requested_networks or requested_networks.no_allocate:"},{"line_number":1607,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_f3b735d7","line":1604,"in_reply_to":"5f7c97a3_6a92564d","updated":"2018-06-26 10:38:52.000000000","message":"Ah, I\u0027d defined it on the base API and didn\u0027t think it was necessary here. The sooner we remove nova-network and can flatten this back down, the better","commit_id":"27d5803b96307ac8ced3ad4a427d6a658768ece0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c63da0913600f71f89a0409b187bf2d72c6b91c3","unresolved":false,"context_lines":[{"line_number":1617,"context_line":"            vnic_type \u003d network_model.VNIC_TYPE_NORMAL"},{"line_number":1618,"context_line":"            pci_request_id \u003d None"},{"line_number":1619,"context_line":""},{"line_number":1620,"context_line":"            if request_net.port_id:"},{"line_number":1621,"context_line":"                vnic_type, trusted, network_id \u003d self._get_port_vnic_info("},{"line_number":1622,"context_line":"                    context, neutron, request_net.port_id)"},{"line_number":1623,"context_line":"                physnet \u003d self._get_network_info("},{"line_number":1624,"context_line":"                    context, neutron, network_id)"},{"line_number":1625,"context_line":"            elif request_net.network_id and not request_net.auto_allocate:"},{"line_number":1626,"context_line":"                network_id \u003d request_net.network_id"},{"line_number":1627,"context_line":"                physnet \u003d self._get_network_info("},{"line_number":1628,"context_line":"                    context, neutron, network_id)"},{"line_number":1629,"context_line":""},{"line_number":1630,"context_line":"            if physnet:"},{"line_number":1631,"context_line":"                physnets.append(physnet)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_c1ca7a6c","line":1628,"range":{"start_line":1620,"start_character":0,"end_line":1628,"end_character":49},"updated":"2018-06-25 12:54:39.000000000","message":"This new structure looks good to me.","commit_id":"27d5803b96307ac8ced3ad4a427d6a658768ece0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c63da0913600f71f89a0409b187bf2d72c6b91c3","unresolved":false,"context_lines":[{"line_number":1655,"context_line":"                pci_request_id \u003d request.request_id"},{"line_number":1656,"context_line":""},{"line_number":1657,"context_line":"            if network_id:"},{"line_number":1658,"context_line":"                request_net.network_id \u003d network_id"},{"line_number":1659,"context_line":"            request_net.pci_request_id \u003d pci_request_id"},{"line_number":1660,"context_line":""},{"line_number":1661,"context_line":"        return objects.InstanceNUMANetworkInfo(physnets\u003dlist(set(physnets)),"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_b671c6e0","line":1658,"range":{"start_line":1658,"start_character":16,"end_line":1658,"end_character":38},"updated":"2018-06-25 12:54:39.000000000","message":"Is this used somewhere later or we just setting it as we now now it for request having port_id?","commit_id":"27d5803b96307ac8ced3ad4a427d6a658768ece0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0f6ff711e5e801c451ec68d656424761621f9931","unresolved":false,"context_lines":[{"line_number":1655,"context_line":"                pci_request_id \u003d request.request_id"},{"line_number":1656,"context_line":""},{"line_number":1657,"context_line":"            if network_id:"},{"line_number":1658,"context_line":"                request_net.network_id \u003d network_id"},{"line_number":1659,"context_line":"            request_net.pci_request_id \u003d pci_request_id"},{"line_number":1660,"context_line":""},{"line_number":1661,"context_line":"        return objects.InstanceNUMANetworkInfo(physnets\u003dlist(set(physnets)),"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_137c31e9","line":1658,"range":{"start_line":1658,"start_character":16,"end_line":1658,"end_character":38},"in_reply_to":"5f7c97a3_b671c6e0","updated":"2018-06-26 10:38:52.000000000","message":"Oh, yeah, this isn\u0027t necessary anymore since we now return InstanceNUMANetworkInfo objects","commit_id":"27d5803b96307ac8ced3ad4a427d6a658768ece0"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"cd18f00d60eaf607fdf008ff77edc414ae4bd6df","unresolved":false,"context_lines":[{"line_number":1658,"context_line":"                request_net.network_id \u003d network_id"},{"line_number":1659,"context_line":"            request_net.pci_request_id \u003d pci_request_id"},{"line_number":1660,"context_line":""},{"line_number":1661,"context_line":"        return objects.InstanceNUMANetworkInfo(physnets\u003dlist(set(physnets)),"},{"line_number":1662,"context_line":"                                               tunneled\u003dtunneled)"},{"line_number":1663,"context_line":""},{"line_number":1664,"context_line":"    def _can_auto_allocate_network(self, context, neutron):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_caa28a9a","line":1661,"range":{"start_line":1661,"start_character":61,"end_line":1661,"end_character":64},"updated":"2018-06-25 17:32:22.000000000","message":"Why not just make physnets a set to begin with?","commit_id":"27d5803b96307ac8ced3ad4a427d6a658768ece0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"569fcdd4bb50fe2665b922dc3fc9625cb4a73a9f","unresolved":false,"context_lines":[{"line_number":1658,"context_line":"                request_net.network_id \u003d network_id"},{"line_number":1659,"context_line":"            request_net.pci_request_id \u003d pci_request_id"},{"line_number":1660,"context_line":""},{"line_number":1661,"context_line":"        return objects.InstanceNUMANetworkInfo(physnets\u003dlist(set(physnets)),"},{"line_number":1662,"context_line":"                                               tunneled\u003dtunneled)"},{"line_number":1663,"context_line":""},{"line_number":1664,"context_line":"    def _can_auto_allocate_network(self, context, neutron):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_71b1dc00","line":1661,"range":{"start_line":1661,"start_character":61,"end_line":1661,"end_character":64},"in_reply_to":"5f7c97a3_b37f7d15","updated":"2018-06-26 12:13:55.000000000","message":"Be aware that Set field types has a fixed but unreleased hash generation problem in oslo https://review.openstack.org/#/c/569417/","commit_id":"27d5803b96307ac8ced3ad4a427d6a658768ece0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0f6ff711e5e801c451ec68d656424761621f9931","unresolved":false,"context_lines":[{"line_number":1658,"context_line":"                request_net.network_id \u003d network_id"},{"line_number":1659,"context_line":"            request_net.pci_request_id \u003d pci_request_id"},{"line_number":1660,"context_line":""},{"line_number":1661,"context_line":"        return objects.InstanceNUMANetworkInfo(physnets\u003dlist(set(physnets)),"},{"line_number":1662,"context_line":"                                               tunneled\u003dtunneled)"},{"line_number":1663,"context_line":""},{"line_number":1664,"context_line":"    def _can_auto_allocate_network(self, context, neutron):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_b37f7d15","line":1661,"range":{"start_line":1661,"start_character":61,"end_line":1661,"end_character":64},"in_reply_to":"5f7c97a3_caa28a9a","updated":"2018-06-26 10:38:52.000000000","message":"Good point. I wonder if I should add a SetOfStrings field type too, to avoid casting to a list like this?","commit_id":"27d5803b96307ac8ced3ad4a427d6a658768ece0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"569fcdd4bb50fe2665b922dc3fc9625cb4a73a9f","unresolved":false,"context_lines":[{"line_number":1631,"context_line":"                    context, neutron, request_net.port_id)"},{"line_number":1632,"context_line":"                physnet \u003d self._get_physnet_info("},{"line_number":1633,"context_line":"                    context, neutron, network_id)"},{"line_number":1634,"context_line":"                LOG.debug(\"Creating PCI device request for port_id\u003d%s, \""},{"line_number":1635,"context_line":"                          \"vnic_type\u003d%s, phynet_name\u003d%s, trusted\u003d%s\","},{"line_number":1636,"context_line":"                          request_net.port_id, vnic_type, physnet,"},{"line_number":1637,"context_line":"                          trusted)"},{"line_number":1638,"context_line":"            pci_request_id \u003d None"},{"line_number":1639,"context_line":"            if vnic_type in network_model.VNIC_TYPES_SRIOV:"},{"line_number":1640,"context_line":"                # TODO(moshele): To differentiate between the SR-IOV legacy"},{"line_number":1641,"context_line":"                # and SR-IOV ovs hardware offload we will leverage the nic"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_f1996c79","side":"PARENT","line":1638,"range":{"start_line":1634,"start_character":0,"end_line":1638,"end_character":1},"updated":"2018-06-26 12:13:55.000000000","message":"I still feel this debug message is useful even if this is might need to be moved under \"if vnic_type in network_model.VNIC_TYPES_SRIOV:\"","commit_id":"2d2700fb9ba9f5efe5af6dc60bf73aadf216200c"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"3d408a0c202c5d51099d4bf52731da2d6b8c41e0","unresolved":false,"context_lines":[{"line_number":1624,"context_line":"            requests created here will be added."},{"line_number":1625,"context_line":"        :type pci_requests: nova.objects.InstancePCIRequests"},{"line_number":1626,"context_line":""},{"line_number":1627,"context_line":"        :returns: An instance of ``objects.InstanceNUMANetworkAffinity`` for use by"},{"line_number":1628,"context_line":"            the scheduler or None."},{"line_number":1629,"context_line":"        \"\"\""},{"line_number":1630,"context_line":"        if not requested_networks or requested_networks.no_allocate:"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_8e4f9d68","line":1627,"updated":"2018-06-27 06:22:01.000000000","message":"./nova/network/neutronv2/api.py:1627:80: E501 line too long (83 \u003e 79 characters)","commit_id":"768862d03f69e1a5bacef37d5d46d95cc965e175"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b79a39abfd211510742a0db5ec46b4278d303a74","unresolved":false,"context_lines":[{"line_number":1630,"context_line":"            scheduler or None."},{"line_number":1631,"context_line":"        \"\"\""},{"line_number":1632,"context_line":"        if not requested_networks or requested_networks.no_allocate:"},{"line_number":1633,"context_line":"            return None"},{"line_number":1634,"context_line":""},{"line_number":1635,"context_line":"        physnets \u003d set()"},{"line_number":1636,"context_line":"        tunneled \u003d False"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_90e1c02e","line":1633,"range":{"start_line":1633,"start_character":19,"end_line":1633,"end_character":23},"updated":"2018-07-12 15:00:20.000000000","message":"We need to decide if this should be None or a NetworkMetadata with phsynets\u003dset([]) and tunneled\u003dFalse, because the RequestSpec.network_metadata field is currently not nullable and depends on this value:\n\nhttps://review.openstack.org/#/c/564452/17/nova/compute/api.py@889","commit_id":"de72526791968f6ac375740c26ef07aff37f6a18"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"545ada5daff45b5f6e607e031306d8759a6714ac","unresolved":false,"context_lines":[{"line_number":1630,"context_line":"            scheduler or None."},{"line_number":1631,"context_line":"        \"\"\""},{"line_number":1632,"context_line":"        if not requested_networks or requested_networks.no_allocate:"},{"line_number":1633,"context_line":"            return None"},{"line_number":1634,"context_line":""},{"line_number":1635,"context_line":"        physnets \u003d set()"},{"line_number":1636,"context_line":"        tunneled \u003d False"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_6b5bb7f8","line":1633,"range":{"start_line":1633,"start_character":19,"end_line":1633,"end_character":23},"in_reply_to":"5f7c97a3_90e1c02e","updated":"2018-07-13 16:09:16.000000000","message":"We agreed in IRC (today) to keep RequestSpec.network_metadata nullable and the API code will have to be aware of this method returning None and leave RequeestSpec.network_metadata unset.","commit_id":"de72526791968f6ac375740c26ef07aff37f6a18"}],"nova/objects/fields.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"51d9ab440a876cfb747a2dcb4566032f740aaf93","unresolved":false,"context_lines":[{"line_number":90,"context_line":"IPV6Network \u003d fields.IPV6Network"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"class SetOfStringsField(AutoTypedField):"},{"line_number":94,"context_line":"    AUTO_TYPE \u003d Set(String())"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_8cf3090a","line":93,"updated":"2018-06-28 05:45:52.000000000","message":"Yep much better. thanks","commit_id":"2071069d262baa0522b23e108881b2231b5b5efe"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3e3af227aa35eeef1e41ac709cd1e9599c880044","unresolved":false,"context_lines":[{"line_number":69,"context_line":"PCIAddressField \u003d fields.PCIAddressField"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"# NOTE(danms): These are things we need to import for some of our"},{"line_number":73,"context_line":"# own implementations below, our tests, or other transitional"},{"line_number":74,"context_line":"# bits of code. These should be removable after we finish our"},{"line_number":75,"context_line":"# conversion. So do not use these nova fields directly in any new code;"},{"line_number":76,"context_line":"# instead, use the oslo.versionedobjects fields."},{"line_number":77,"context_line":"Enum \u003d fields.Enum"},{"line_number":78,"context_line":"Field \u003d fields.Field"},{"line_number":79,"context_line":"FieldType \u003d fields.FieldType"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_c1a1313c","line":76,"range":{"start_line":72,"start_character":0,"end_line":76,"end_character":48},"updated":"2018-07-05 20:52:09.000000000","message":"Umm, either String should be in the group above, or this comment should be removed, but either way it could be done in a follow up.","commit_id":"de72526791968f6ac375740c26ef07aff37f6a18"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"05e9c5612e0d6d6c50eb9148a3da290264c3a9f5","unresolved":false,"context_lines":[{"line_number":69,"context_line":"PCIAddressField \u003d fields.PCIAddressField"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"# NOTE(danms): These are things we need to import for some of our"},{"line_number":73,"context_line":"# own implementations below, our tests, or other transitional"},{"line_number":74,"context_line":"# bits of code. These should be removable after we finish our"},{"line_number":75,"context_line":"# conversion. So do not use these nova fields directly in any new code;"},{"line_number":76,"context_line":"# instead, use the oslo.versionedobjects fields."},{"line_number":77,"context_line":"Enum \u003d fields.Enum"},{"line_number":78,"context_line":"Field \u003d fields.Field"},{"line_number":79,"context_line":"FieldType \u003d fields.FieldType"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_0e09f127","line":76,"range":{"start_line":72,"start_character":0,"end_line":76,"end_character":48},"in_reply_to":"5f7c97a3_ab8d4fd5","updated":"2018-07-13 16:42:44.000000000","message":"The list below needs to go at the same time. These aliases were added because we had (maybe still have?) tests and code below this that point to nova.fields.Thing, and when we moved all those to ovo those would break.This was just a transitional move that should have been nuked long ago. Looks like people have been adding things here because they didn\u0027t read the comment above or something.\n\nAnyway, just use fields.String directly, don\u0027t add more stuff here, and someone should remove the comment and the aliases below and fix up whatever breaks.","commit_id":"de72526791968f6ac375740c26ef07aff37f6a18"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5854ff08b0531493991ab0e40a04de5559f2575b","unresolved":false,"context_lines":[{"line_number":69,"context_line":"PCIAddressField \u003d fields.PCIAddressField"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"# NOTE(danms): These are things we need to import for some of our"},{"line_number":73,"context_line":"# own implementations below, our tests, or other transitional"},{"line_number":74,"context_line":"# bits of code. These should be removable after we finish our"},{"line_number":75,"context_line":"# conversion. So do not use these nova fields directly in any new code;"},{"line_number":76,"context_line":"# instead, use the oslo.versionedobjects fields."},{"line_number":77,"context_line":"Enum \u003d fields.Enum"},{"line_number":78,"context_line":"Field \u003d fields.Field"},{"line_number":79,"context_line":"FieldType \u003d fields.FieldType"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_ab8d4fd5","line":76,"range":{"start_line":72,"start_character":0,"end_line":76,"end_character":48},"in_reply_to":"5f7c97a3_c1a1313c","updated":"2018-07-13 16:36:30.000000000","message":"I\u0027d read this as \"these are the things we don\u0027t use directly in our models\" but there\u0027s some other stuff there that doesn\u0027t really make sense. I can remove this whole comment, I guess","commit_id":"de72526791968f6ac375740c26ef07aff37f6a18"}],"nova/objects/instance_numa_topology.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"2e4634185b2439bb48909eec6a85914a0eef33c1","unresolved":false,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"@base.NovaObjectRegistry.register"},{"line_number":256,"context_line":"class InstanceNUMANetworkInfo(base.NovaObject):"},{"line_number":257,"context_line":"    # Version 1.0: Initial version"},{"line_number":258,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_6c378d00","line":256,"updated":"2018-06-15 10:21:35.000000000","message":"It\u0027s strange to have this object defined but related to any other objects. Should be to an instanceNUMACell, right?","commit_id":"93d432a2f748ddf326ca3c192c824c823b54edc3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5ac3b15e88d442f098ade56675a627f324f1d845","unresolved":false,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"@base.NovaObjectRegistry.register"},{"line_number":256,"context_line":"class InstanceNUMANetworkInfo(base.NovaObject):"},{"line_number":257,"context_line":"    # Version 1.0: Initial version"},{"line_number":258,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_b74e526c","line":256,"in_reply_to":"5f7c97a3_6c378d00","updated":"2018-06-15 10:25:15.000000000","message":"I do that in a future change [1]. I need to define it here because I\u0027m doing the population aspect of things first\n\n[1] https://review.openstack.org/#/c/575486/1","commit_id":"93d432a2f748ddf326ca3c192c824c823b54edc3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"22f44634be449b4758c29c706aaeed676f81f67e","unresolved":false,"context_lines":[{"line_number":239,"context_line":""},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"@base.NovaObjectRegistry.register"},{"line_number":242,"context_line":"class InstanceNUMANetworkInfo(base.NovaObject):"},{"line_number":243,"context_line":"    # Version 1.0: Initial version"},{"line_number":244,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":245,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5f7c97a3_6be1e1fb","line":242,"range":{"start_line":242,"start_character":6,"end_line":242,"end_character":29},"updated":"2018-06-26 15:41:20.000000000","message":"If you\u0027re going to do a rename of the object defined in this change:\n\nhttps://review.openstack.org/#/c/564439/7/nova/objects/numa.py\n\nYou should consider renaming this object, and you\u0027d better hurry because this change is in the gate and nearly merged.","commit_id":"03ba1f74b7d0c6444b608f1fc117d42c29daf96a"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"3d408a0c202c5d51099d4bf52731da2d6b8c41e0","unresolved":false,"context_lines":[{"line_number":244,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    fields \u003d {"},{"line_number":247,"context_line":"        \u0027physnets\u0027: obj_fields.ListOfStringsField(),"},{"line_number":248,"context_line":"        # neutron only supports a single tunnel provider per host"},{"line_number":249,"context_line":"        \u0027tunneled\u0027: obj_fields.BooleanField(default\u003dFalse),"},{"line_number":250,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_ae45b945","line":247,"updated":"2018-06-27 06:22:01.000000000","message":"Don\u0027t we have a SetOfStringField()?","commit_id":"768862d03f69e1a5bacef37d5d46d95cc965e175"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2e6fc8a35a033be90706bbc97a69e8cd3fee1997","unresolved":false,"context_lines":[{"line_number":244,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    fields \u003d {"},{"line_number":247,"context_line":"        \u0027physnets\u0027: obj_fields.ListOfStringsField(),"},{"line_number":248,"context_line":"        # neutron only supports a single tunnel provider per host"},{"line_number":249,"context_line":"        \u0027tunneled\u0027: obj_fields.BooleanField(default\u003dFalse),"},{"line_number":250,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f7c97a3_f8ffd7ff","line":247,"in_reply_to":"5f7c97a3_ae45b945","updated":"2018-06-28 09:51:36.000000000","message":"We don\u0027t but I\u0027ve added one, as you saw :)","commit_id":"768862d03f69e1a5bacef37d5d46d95cc965e175"}],"nova/objects/network_metadata.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7a842256477a2e65c4abbc1f198c5aa78a612507","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"@base.NovaObjectRegistry.register"},{"line_number":20,"context_line":"class NetworkMetadata(base.NovaObject):"},{"line_number":21,"context_line":"    \"\"\"Hold metadata about a collection on networks on a host or instance.\"\"\""},{"line_number":22,"context_line":"    # Version 1.0: Initial version"},{"line_number":23,"context_line":"    VERSION \u003d \u00271.0\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_d7de7769","line":20,"updated":"2018-06-27 21:25:15.000000000","message":"Seems like this is begging to be confused with some general-purpose metadata on a network. However, doesn\u0027t look to me like Neutron provides metadata services on its objects like we do for so many of ours. Not crazy about this name, but it\u0027s better than some of the alternatives, so...","commit_id":"2071069d262baa0522b23e108881b2231b5b5efe"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bb3ae0cec40f1d96a94d9bcc5509785e9802df1f","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"@base.NovaObjectRegistry.register"},{"line_number":20,"context_line":"class NetworkMetadata(base.NovaObject):"},{"line_number":21,"context_line":"    \"\"\"Hold metadata about a collection on networks on a host or instance.\"\"\""},{"line_number":22,"context_line":"    # Version 1.0: Initial version"},{"line_number":23,"context_line":"    VERSION \u003d \u00271.0\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_580feb38","line":20,"in_reply_to":"5f7c97a3_2cc19582","updated":"2018-06-28 09:51:04.000000000","message":"Yeah, NetworkInfo conflicts with info cache stuff, it\u0027s nothing really NUMA related so that rules that out, and NetworkDetails is really too generic to mean anything. This is is the best I had.\n\nNaming things is hard.","commit_id":"2071069d262baa0522b23e108881b2231b5b5efe"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"51d9ab440a876cfb747a2dcb4566032f740aaf93","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"@base.NovaObjectRegistry.register"},{"line_number":20,"context_line":"class NetworkMetadata(base.NovaObject):"},{"line_number":21,"context_line":"    \"\"\"Hold metadata about a collection on networks on a host or instance.\"\"\""},{"line_number":22,"context_line":"    # Version 1.0: Initial version"},{"line_number":23,"context_line":"    VERSION \u003d \u00271.0\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_2cc19582","line":20,"in_reply_to":"5f7c97a3_d7de7769","updated":"2018-06-28 05:45:52.000000000","message":"OK so if there is preference for this name I fine as-well. Thanks Stephen to have rebased the code an other time to change the name.","commit_id":"2071069d262baa0522b23e108881b2231b5b5efe"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"71aa2ce93e2f2bbc9bb235929885fa355be860c8","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    # Version 1.0: Initial version"},{"line_number":23,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    fields \u003d {"},{"line_number":26,"context_line":"        \u0027physnets\u0027: fields.SetOfStringsField(),"},{"line_number":27,"context_line":"        \u0027tunneled\u0027: fields.BooleanField(),"},{"line_number":28,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_7865f448","line":28,"range":{"start_line":25,"start_character":4,"end_line":28,"end_character":5},"updated":"2018-06-28 21:43:19.000000000","message":"We never really discussed, face to face (hangouts) anyway, the cardinality thing here, or the confusion Dan and I had about how tunneled is handled related to physnets, and if you can only have one or the other. Also, my concern about baking business logic into the object wasn\u0027t really addressed unless I\u0027ve missed that elsewhere - but I\u0027m not crazy about setting the tunneled flag to True if at least one network in the request is tunneled, it seems weird from a modeling standpoint. I thought we could have a list of NetworkMetadata objects with a physnet and tunneled field, and then whatever code is consuming that list can have the logic of determining what happens if any of them are tunneled.","commit_id":"2071069d262baa0522b23e108881b2231b5b5efe"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b76d10e02c55ac33a4b3d98e1c92c6ab3278962a","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    # Version 1.0: Initial version"},{"line_number":23,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    fields \u003d {"},{"line_number":26,"context_line":"        \u0027physnets\u0027: fields.SetOfStringsField(),"},{"line_number":27,"context_line":"        \u0027tunneled\u0027: fields.BooleanField(),"},{"line_number":28,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_f8c7c410","line":28,"range":{"start_line":25,"start_character":4,"end_line":28,"end_character":5},"in_reply_to":"5f7c97a3_7865f448","updated":"2018-06-28 21:44:18.000000000","message":"https://review.openstack.org/#/c/564445/11/nova/network/neutronv2/api.py@1661\n\nDon\u0027t see replies to any of my comments there.","commit_id":"2071069d262baa0522b23e108881b2231b5b5efe"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bafa75e27a3a5095cbefc42a860676e5b475c501","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    # Version 1.0: Initial version"},{"line_number":23,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    fields \u003d {"},{"line_number":26,"context_line":"        \u0027physnets\u0027: fields.SetOfStringsField(),"},{"line_number":27,"context_line":"        \u0027tunneled\u0027: fields.BooleanField(),"},{"line_number":28,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":12,"id":"5f7c97a3_436c97cf","line":28,"range":{"start_line":25,"start_character":4,"end_line":28,"end_character":5},"in_reply_to":"5f7c97a3_f8c7c410","updated":"2018-07-02 13:57:04.000000000","message":"Replies left for that now.","commit_id":"2071069d262baa0522b23e108881b2231b5b5efe"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"51e5cc77cd0f93d72b482db5b4b88d6b36e60bf8","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"@base.NovaObjectRegistry.register"},{"line_number":20,"context_line":"class NetworkMetadata(base.NovaObject):"},{"line_number":21,"context_line":"    \"\"\"Hold metadata about a collection on networks on a host or instance.\"\"\""},{"line_number":22,"context_line":"    # Version 1.0: Initial version"},{"line_number":23,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_0949c78c","line":21,"updated":"2018-07-03 12:57:47.000000000","message":"See comment on https://review.openstack.org/#/c/564445/11/nova/network/neutronv2/api.py@1661 - it would be nice to incorporate some of that into the docstring here, at least for the physnet and tunneled modeling which is all we have in this object for now.","commit_id":"e51748a13863520c786f5bc869c1564f93f01106"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3e3af227aa35eeef1e41ac709cd1e9599c880044","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"@base.NovaObjectRegistry.register"},{"line_number":20,"context_line":"class NetworkMetadata(base.NovaObject):"},{"line_number":21,"context_line":"    \"\"\"Hold aggregate metadata for a collection on networks."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    This object holds aggregate information for a collection of neutron"},{"line_number":24,"context_line":"    networks. There are two types of network collections we care about and use"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_61605d0e","line":21,"range":{"start_line":21,"start_character":48,"end_line":21,"end_character":50},"updated":"2018-07-05 20:52:09.000000000","message":"of","commit_id":"de72526791968f6ac375740c26ef07aff37f6a18"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5854ff08b0531493991ab0e40a04de5559f2575b","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"@base.NovaObjectRegistry.register"},{"line_number":20,"context_line":"class NetworkMetadata(base.NovaObject):"},{"line_number":21,"context_line":"    \"\"\"Hold aggregate metadata for a collection on networks."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    This object holds aggregate information for a collection of neutron"},{"line_number":24,"context_line":"    networks. There are two types of network collections we care about and use"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_6bb9777a","line":21,"range":{"start_line":21,"start_character":48,"end_line":21,"end_character":50},"in_reply_to":"5f7c97a3_61605d0e","updated":"2018-07-13 16:36:30.000000000","message":"Done in a follow-up","commit_id":"de72526791968f6ac375740c26ef07aff37f6a18"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3e3af227aa35eeef1e41ac709cd1e9599c880044","unresolved":false,"context_lines":[{"line_number":20,"context_line":"class NetworkMetadata(base.NovaObject):"},{"line_number":21,"context_line":"    \"\"\"Hold aggregate metadata for a collection on networks."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    This object holds aggregate information for a collection of neutron"},{"line_number":24,"context_line":"    networks. There are two types of network collections we care about and use"},{"line_number":25,"context_line":"    this for: the collection of networks configured or requested for a guest"},{"line_number":26,"context_line":"    and the collection of networks available to a host. We want this"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_a17995c6","line":23,"updated":"2018-07-05 20:52:09.000000000","message":"nice doc, thanks","commit_id":"de72526791968f6ac375740c26ef07aff37f6a18"}],"nova/tests/unit/network/test_neutronv2.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c63da0913600f71f89a0409b187bf2d72c6b91c3","unresolved":false,"context_lines":[{"line_number":4917,"context_line":"                objects.NetworkRequest(port_id\u003duuids.trusted_port)])"},{"line_number":4918,"context_line":"        pci_requests \u003d objects.InstancePCIRequests(requests\u003d[])"},{"line_number":4919,"context_line":"        # _get_port_vnic_info should be called for every NetworkRequest with a"},{"line_number":4920,"context_line":"        # port_id attribute (so five times)"},{"line_number":4921,"context_line":"        mock_get_port_vnic_info.side_effect \u003d ["},{"line_number":4922,"context_line":"            (model.VNIC_TYPE_DIRECT, None, \u0027netN\u0027),"},{"line_number":4923,"context_line":"            (model.VNIC_TYPE_NORMAL, None, \u0027netN\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_c1711ae0","line":4920,"range":{"start_line":4920,"start_character":29,"end_line":4920,"end_character":42},"updated":"2018-06-25 12:54:39.000000000","message":"there is six side_effects below","commit_id":"27d5803b96307ac8ced3ad4a427d6a658768ece0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0f6ff711e5e801c451ec68d656424761621f9931","unresolved":false,"context_lines":[{"line_number":4917,"context_line":"                objects.NetworkRequest(port_id\u003duuids.trusted_port)])"},{"line_number":4918,"context_line":"        pci_requests \u003d objects.InstancePCIRequests(requests\u003d[])"},{"line_number":4919,"context_line":"        # _get_port_vnic_info should be called for every NetworkRequest with a"},{"line_number":4920,"context_line":"        # port_id attribute (so five times)"},{"line_number":4921,"context_line":"        mock_get_port_vnic_info.side_effect \u003d ["},{"line_number":4922,"context_line":"            (model.VNIC_TYPE_DIRECT, None, \u0027netN\u0027),"},{"line_number":4923,"context_line":"            (model.VNIC_TYPE_NORMAL, None, \u0027netN\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_f38e5525","line":4920,"range":{"start_line":4920,"start_character":29,"end_line":4920,"end_character":42},"in_reply_to":"5f7c97a3_c1711ae0","updated":"2018-06-26 10:38:52.000000000","message":"#mathsfail\n\n(in my defense, there were five before an earlier rebase)","commit_id":"27d5803b96307ac8ced3ad4a427d6a658768ece0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c63da0913600f71f89a0409b187bf2d72c6b91c3","unresolved":false,"context_lines":[{"line_number":4926,"context_line":"            (model.VNIC_TYPE_DIRECT_PHYSICAL, None, \u0027netN\u0027),"},{"line_number":4927,"context_line":"            (model.VNIC_TYPE_DIRECT, True, \u0027netN\u0027),"},{"line_number":4928,"context_line":"        ]"},{"line_number":4929,"context_line":"        # _get_network_info should be called for every NetworkRequest (so six"},{"line_number":4930,"context_line":"        # times)"},{"line_number":4931,"context_line":"        mock_get_network_info.side_effect \u003d ["},{"line_number":4932,"context_line":"            \u0027physnet1\u0027, \u0027physnet1\u0027, \u0027\u0027, \u0027physnet1\u0027, \u0027physnet2\u0027, \u0027physnet3\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_c15a7a4e","line":4929,"range":{"start_line":4929,"start_character":74,"end_line":4929,"end_character":77},"updated":"2018-06-25 12:54:39.000000000","message":"there is seven side_effects below (but the third is an empty string)","commit_id":"27d5803b96307ac8ced3ad4a427d6a658768ece0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0f6ff711e5e801c451ec68d656424761621f9931","unresolved":false,"context_lines":[{"line_number":4926,"context_line":"            (model.VNIC_TYPE_DIRECT_PHYSICAL, None, \u0027netN\u0027),"},{"line_number":4927,"context_line":"            (model.VNIC_TYPE_DIRECT, True, \u0027netN\u0027),"},{"line_number":4928,"context_line":"        ]"},{"line_number":4929,"context_line":"        # _get_network_info should be called for every NetworkRequest (so six"},{"line_number":4930,"context_line":"        # times)"},{"line_number":4931,"context_line":"        mock_get_network_info.side_effect \u003d ["},{"line_number":4932,"context_line":"            \u0027physnet1\u0027, \u0027physnet1\u0027, \u0027\u0027, \u0027physnet1\u0027, \u0027physnet2\u0027, \u0027physnet3\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_33a84d76","line":4929,"range":{"start_line":4929,"start_character":74,"end_line":4929,"end_character":77},"in_reply_to":"5f7c97a3_c15a7a4e","updated":"2018-06-26 10:38:52.000000000","message":"Done","commit_id":"27d5803b96307ac8ced3ad4a427d6a658768ece0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c63da0913600f71f89a0409b187bf2d72c6b91c3","unresolved":false,"context_lines":[{"line_number":4962,"context_line":"        self.assertFalse(net_info.tunneled)"},{"line_number":4963,"context_line":""},{"line_number":4964,"context_line":"    @mock.patch.object(neutronapi, \u0027get_client\u0027)"},{"line_number":4965,"context_line":"    def test_create_resource_requests_no_allocate(self, mock_get_client):"},{"line_number":4966,"context_line":"        \"\"\"Enture network info is not retrieved when networks are not to be"},{"line_number":4967,"context_line":"        allocated."},{"line_number":4968,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_41c18ae3","line":4965,"updated":"2018-06-25 12:54:39.000000000","message":"It seems this test was there in the base but it is moved a bit down. This produce an unnecessarily big diff. It seems to me that only the doc is changed and a new assert about the retun value is added.","commit_id":"27d5803b96307ac8ced3ad4a427d6a658768ece0"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0f6ff711e5e801c451ec68d656424761621f9931","unresolved":false,"context_lines":[{"line_number":4962,"context_line":"        self.assertFalse(net_info.tunneled)"},{"line_number":4963,"context_line":""},{"line_number":4964,"context_line":"    @mock.patch.object(neutronapi, \u0027get_client\u0027)"},{"line_number":4965,"context_line":"    def test_create_resource_requests_no_allocate(self, mock_get_client):"},{"line_number":4966,"context_line":"        \"\"\"Enture network info is not retrieved when networks are not to be"},{"line_number":4967,"context_line":"        allocated."},{"line_number":4968,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"5f7c97a3_d3979938","line":4965,"in_reply_to":"5f7c97a3_41c18ae3","updated":"2018-06-26 10:38:52.000000000","message":"Correct. Lemme move it back up and move it down in a separate patch","commit_id":"27d5803b96307ac8ced3ad4a427d6a658768ece0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3e3af227aa35eeef1e41ac709cd1e9599c880044","unresolved":false,"context_lines":[{"line_number":4960,"context_line":""},{"line_number":4961,"context_line":"        mock_get_physnet_info.assert_not_called()"},{"line_number":4962,"context_line":"        self.assertEqual(set(), network_metadata.physnets)"},{"line_number":4963,"context_line":"        self.assertFalse(network_metadata.tunneled)"},{"line_number":4964,"context_line":""},{"line_number":4965,"context_line":"    @mock.patch.object(neutronapi.API, \u0027_get_physnet_info\u0027)"},{"line_number":4966,"context_line":"    @mock.patch.object(neutronapi.API, \"_get_port_vnic_info\")"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_5c2508ad","line":4963,"range":{"start_line":4963,"start_character":8,"end_line":4963,"end_character":51},"updated":"2018-07-05 20:52:09.000000000","message":"This is a bit weird, and kind of makes me think tunneled should be nullable lest some consumer of this NetworkMetadata object thinks it\u0027s False because a real network was requested and it\u0027s not tunneled, but probably not a big deal.","commit_id":"de72526791968f6ac375740c26ef07aff37f6a18"}]}
