)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"37297828d0c1eae70a4668017e9de8428d5130fe","unresolved":false,"context_lines":[{"line_number":18,"context_line":"pci_passthrough_whitelist \u003d {"},{"line_number":19,"context_line":"    \"devname\":\"ens3f0\","},{"line_number":20,"context_line":"    \"physical_network\":\"default\","},{"line_number":21,"context_line":"    \"network_group\":\"red\"}"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Implements: blueprint user-controlled-sriov-ports-allocation"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a95cdbc_fbb3e295","line":21,"range":{"start_line":21,"start_character":21,"end_line":21,"end_character":24},"updated":"2016-10-09 10:21:55.000000000","message":"shouldn\u0027t this be green?","commit_id":"8987f6861245ec23e7f51fc96e8c9484d2af2a2f"},{"author":{"_account_id":21683,"name":"edan david","email":"edand@mellanox.com","username":"edand"},"change_message_id":"3ed76640800b6932a67bab1003a37c89270fbf95","unresolved":false,"context_lines":[{"line_number":18,"context_line":"pci_passthrough_whitelist \u003d {"},{"line_number":19,"context_line":"    \"devname\":\"ens3f0\","},{"line_number":20,"context_line":"    \"physical_network\":\"default\","},{"line_number":21,"context_line":"    \"network_group\":\"red\"}"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Implements: blueprint user-controlled-sriov-ports-allocation"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"fa6399be_341f145c","line":21,"range":{"start_line":21,"start_character":21,"end_line":21,"end_character":24},"in_reply_to":"1a95cdbc_fbb3e295","updated":"2016-10-16 07:10:29.000000000","message":"Done","commit_id":"8987f6861245ec23e7f51fc96e8c9484d2af2a2f"}],"nova/network/neutronv2/api.py":[{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"1305bb7b5e40075da4ec8a1e6e9392dea04cc496","unresolved":false,"context_lines":[{"line_number":506,"context_line":"            port_req_body \u003d {\u0027port\u0027: {\u0027device_id\u0027: \u0027\u0027, \u0027device_owner\u0027: \u0027\u0027}}"},{"line_number":507,"context_line":"            if port_binding:"},{"line_number":508,"context_line":"                port_req_body[\u0027port\u0027][BINDING_HOST_ID] \u003d None"},{"line_number":509,"context_line":"                port_req_body[\u0027port\u0027][BINDING_PROFILE] \u003d {}"},{"line_number":510,"context_line":"            if constants.DNS_INTEGRATION in self.extensions:"},{"line_number":511,"context_line":"                port_req_body[\u0027port\u0027][\u0027dns_name\u0027] \u003d \u0027\u0027"},{"line_number":512,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_7ce15c29","line":509,"updated":"2016-10-17 12:24:24.000000000","message":"I agree that we should use those enums here, but this change shouldn\u0027t be part of this patch.","commit_id":"c0d0e9f23a121ef96374496175c9f4ed84ea6587"},{"author":{"_account_id":21683,"name":"edan david","email":"edand@mellanox.com","username":"edand"},"change_message_id":"0c186965cddbc832d63d279cad7bc089eab6d257","unresolved":false,"context_lines":[{"line_number":506,"context_line":"            port_req_body \u003d {\u0027port\u0027: {\u0027device_id\u0027: \u0027\u0027, \u0027device_owner\u0027: \u0027\u0027}}"},{"line_number":507,"context_line":"            if port_binding:"},{"line_number":508,"context_line":"                port_req_body[\u0027port\u0027][BINDING_HOST_ID] \u003d None"},{"line_number":509,"context_line":"                port_req_body[\u0027port\u0027][BINDING_PROFILE] \u003d {}"},{"line_number":510,"context_line":"            if constants.DNS_INTEGRATION in self.extensions:"},{"line_number":511,"context_line":"                port_req_body[\u0027port\u0027][\u0027dns_name\u0027] \u003d \u0027\u0027"},{"line_number":512,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_d6c6a048","line":509,"in_reply_to":"fa6399be_7ce15c29","updated":"2016-10-18 10:18:45.000000000","message":"Done","commit_id":"c0d0e9f23a121ef96374496175c9f4ed84ea6587"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"97bf3263553d085efb4ede12f4fe538e3b48400d","unresolved":false,"context_lines":[{"line_number":1402,"context_line":"        \"\"\"Retrieve port vnic info"},{"line_number":1403,"context_line":""},{"line_number":1404,"context_line":"        Invoked with a valid port_id."},{"line_number":1405,"context_line":"        Return vnic type and the attached physical network name."},{"line_number":1406,"context_line":"        \"\"\""},{"line_number":1407,"context_line":"        phynet_name \u003d None"},{"line_number":1408,"context_line":"        port \u003d self._show_port(context, port_id, neutron_client\u003dneutron,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a77a97e_3f5f640f","line":1405,"updated":"2016-11-16 16:19:22.000000000","message":"This should be updated.","commit_id":"eda0fbdc285838325996cd699acf9009c9f61408"},{"author":{"_account_id":21683,"name":"edan david","email":"edand@mellanox.com","username":"edand"},"change_message_id":"e057783903fde5fc9aac4efe38cde1f7528afbf5","unresolved":false,"context_lines":[{"line_number":1402,"context_line":"        \"\"\"Retrieve port vnic info"},{"line_number":1403,"context_line":""},{"line_number":1404,"context_line":"        Invoked with a valid port_id."},{"line_number":1405,"context_line":"        Return vnic type and the attached physical network name."},{"line_number":1406,"context_line":"        \"\"\""},{"line_number":1407,"context_line":"        phynet_name \u003d None"},{"line_number":1408,"context_line":"        port \u003d self._show_port(context, port_id, neutron_client\u003dneutron,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a77a97e_46a277fe","line":1405,"in_reply_to":"7a77a97e_3f5f640f","updated":"2016-11-17 10:19:56.000000000","message":"Done","commit_id":"eda0fbdc285838325996cd699acf9009c9f61408"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"97bf3263553d085efb4ede12f4fe538e3b48400d","unresolved":false,"context_lines":[{"line_number":1416,"context_line":"            net \u003d neutron.show_network(net_id,"},{"line_number":1417,"context_line":"                fields\u003d\u0027provider:physical_network\u0027).get(\u0027network\u0027)"},{"line_number":1418,"context_line":"            phynet_name \u003d net.get(\u0027provider:physical_network\u0027)"},{"line_number":1419,"context_line":"        network_group \u003d port.get(BINDING_PROFILE, {})"},{"line_number":1420,"context_line":"        network_group \u003d network_group.get(pci_utils.NETWORK_GROUP,"},{"line_number":1421,"context_line":"                                          pci_utils.ANY)"},{"line_number":1422,"context_line":"        return vnic_type, phynet_name, network_group"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a77a97e_ff3decbb","line":1419,"range":{"start_line":1419,"start_character":8,"end_line":1419,"end_character":21},"updated":"2016-11-16 16:19:22.000000000","message":"this is the binding profile, not the network group","commit_id":"eda0fbdc285838325996cd699acf9009c9f61408"},{"author":{"_account_id":21683,"name":"edan david","email":"edand@mellanox.com","username":"edand"},"change_message_id":"e057783903fde5fc9aac4efe38cde1f7528afbf5","unresolved":false,"context_lines":[{"line_number":1416,"context_line":"            net \u003d neutron.show_network(net_id,"},{"line_number":1417,"context_line":"                fields\u003d\u0027provider:physical_network\u0027).get(\u0027network\u0027)"},{"line_number":1418,"context_line":"            phynet_name \u003d net.get(\u0027provider:physical_network\u0027)"},{"line_number":1419,"context_line":"        network_group \u003d port.get(BINDING_PROFILE, {})"},{"line_number":1420,"context_line":"        network_group \u003d network_group.get(pci_utils.NETWORK_GROUP,"},{"line_number":1421,"context_line":"                                          pci_utils.ANY)"},{"line_number":1422,"context_line":"        return vnic_type, phynet_name, network_group"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a77a97e_66a3f300","line":1419,"range":{"start_line":1419,"start_character":8,"end_line":1419,"end_character":21},"in_reply_to":"7a77a97e_ff3decbb","updated":"2016-11-17 10:19:56.000000000","message":"Done","commit_id":"eda0fbdc285838325996cd699acf9009c9f61408"}],"nova/pci/devspec.py":[{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"1305bb7b5e40075da4ec8a1e6e9392dea04cc496","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        self.domain \u003d utils.ANY"},{"line_number":60,"context_line":"        self.bus \u003d utils.ANY"},{"line_number":61,"context_line":"        self.slot \u003d utils.ANY"},{"line_number":62,"context_line":"        self.func \u003d utils.ANY"},{"line_number":63,"context_line":"        self.is_physical_function \u003d is_physical_function"},{"line_number":64,"context_line":"        self._init_address_fields(pci_addr)"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_3cf7e4d3","line":62,"updated":"2016-10-17 12:24:24.000000000","message":"Again, this patch introduces a lots of churn ...  This change should be split so that it\u0027s easier to review.","commit_id":"c0d0e9f23a121ef96374496175c9f4ed84ea6587"},{"author":{"_account_id":21683,"name":"edan david","email":"edand@mellanox.com","username":"edand"},"change_message_id":"0c186965cddbc832d63d279cad7bc089eab6d257","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        self.domain \u003d utils.ANY"},{"line_number":60,"context_line":"        self.bus \u003d utils.ANY"},{"line_number":61,"context_line":"        self.slot \u003d utils.ANY"},{"line_number":62,"context_line":"        self.func \u003d utils.ANY"},{"line_number":63,"context_line":"        self.is_physical_function \u003d is_physical_function"},{"line_number":64,"context_line":"        self._init_address_fields(pci_addr)"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_6b30859f","line":62,"in_reply_to":"fa6399be_3cf7e4d3","updated":"2016-10-18 10:18:45.000000000","message":"Done","commit_id":"c0d0e9f23a121ef96374496175c9f4ed84ea6587"}],"nova/pci/stats.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"97bf3263553d085efb4ede12f4fe538e3b48400d","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self.dev_filter \u003d dev_filter or whitelist.Whitelist("},{"line_number":68,"context_line":"            CONF.pci.passthrough_whitelist)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def _equal_properties(self, dev, entry, matching_keys):"},{"line_number":71,"context_line":"        def _check_properties(matching_keys):"},{"line_number":72,"context_line":"            return all(dev.get(prop) \u003d\u003d entry.get(prop)"},{"line_number":73,"context_line":"                       for prop in set(matching_keys) - {utils.NETWORK_GROUP})"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        return (_check_properties(matching_keys) and"},{"line_number":76,"context_line":"                utils.network_group_match("},{"line_number":77,"context_line":"                        dev.get(utils.NETWORK_GROUP, utils.ANY),"},{"line_number":78,"context_line":"                        entry.get(utils.NETWORK_GROUP, utils.ANY)))"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def _find_pool(self, dev_pool):"},{"line_number":81,"context_line":"        \"\"\"Return the first pool that matches dev.\"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"7a77a97e_9f42380f","line":78,"range":{"start_line":70,"start_character":4,"end_line":78,"end_character":67},"updated":"2016-11-16 16:19:22.000000000","message":"Please document what this code is doing, it\u0027s pretty hard to follow otherwise.","commit_id":"eda0fbdc285838325996cd699acf9009c9f61408"},{"author":{"_account_id":21683,"name":"edan david","email":"edand@mellanox.com","username":"edand"},"change_message_id":"e057783903fde5fc9aac4efe38cde1f7528afbf5","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self.dev_filter \u003d dev_filter or whitelist.Whitelist("},{"line_number":68,"context_line":"            CONF.pci.passthrough_whitelist)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def _equal_properties(self, dev, entry, matching_keys):"},{"line_number":71,"context_line":"        def _check_properties(matching_keys):"},{"line_number":72,"context_line":"            return all(dev.get(prop) \u003d\u003d entry.get(prop)"},{"line_number":73,"context_line":"                       for prop in set(matching_keys) - {utils.NETWORK_GROUP})"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        return (_check_properties(matching_keys) and"},{"line_number":76,"context_line":"                utils.network_group_match("},{"line_number":77,"context_line":"                        dev.get(utils.NETWORK_GROUP, utils.ANY),"},{"line_number":78,"context_line":"                        entry.get(utils.NETWORK_GROUP, utils.ANY)))"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def _find_pool(self, dev_pool):"},{"line_number":81,"context_line":"        \"\"\"Return the first pool that matches dev.\"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"7a77a97e_86f64ff7","line":78,"range":{"start_line":70,"start_character":4,"end_line":78,"end_character":67},"in_reply_to":"7a77a97e_9f42380f","updated":"2016-11-17 10:19:56.000000000","message":"Done","commit_id":"eda0fbdc285838325996cd699acf9009c9f61408"}],"nova/pci/utils.py":[{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"37297828d0c1eae70a4668017e9de8428d5130fe","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    \"\"\""},{"line_number":65,"context_line":"    def _matching_devices(spec):"},{"line_number":66,"context_line":"        return all(pci_dev.get(k) \u003d\u003d v for k, v in six.iteritems(spec)"},{"line_number":67,"context_line":"                   if k !\u003d \u0027network_group\u0027)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    return any(_matching_devices(spec) and"},{"line_number":70,"context_line":"               network_group_match(spec.get(\u0027network_group\u0027, ANY),"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a95cdbc_5ba5b644","line":67,"range":{"start_line":67,"start_character":27,"end_line":67,"end_character":41},"updated":"2016-10-09 10:21:55.000000000","message":"don\u0027t you have constant for the network_group?","commit_id":"8987f6861245ec23e7f51fc96e8c9484d2af2a2f"},{"author":{"_account_id":21683,"name":"edan david","email":"edand@mellanox.com","username":"edand"},"change_message_id":"3ed76640800b6932a67bab1003a37c89270fbf95","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    \"\"\""},{"line_number":65,"context_line":"    def _matching_devices(spec):"},{"line_number":66,"context_line":"        return all(pci_dev.get(k) \u003d\u003d v for k, v in six.iteritems(spec)"},{"line_number":67,"context_line":"                   if k !\u003d \u0027network_group\u0027)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    return any(_matching_devices(spec) and"},{"line_number":70,"context_line":"               network_group_match(spec.get(\u0027network_group\u0027, ANY),"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_142cd097","line":67,"range":{"start_line":67,"start_character":27,"end_line":67,"end_character":41},"in_reply_to":"1a95cdbc_5ba5b644","updated":"2016-10-16 07:10:29.000000000","message":"Done","commit_id":"8987f6861245ec23e7f51fc96e8c9484d2af2a2f"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"b567ffd0d65ec1ea98cabc75bf8752b982917aac","unresolved":false,"context_lines":[{"line_number":40,"context_line":"NETWORK_SUBGROUP_SEPERATOR \u003d \u0027:\u0027"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def network_group_match(group_a, group_b):"},{"line_number":44,"context_line":"    sub_groups_a \u003d group_a.split(NETWORK_SUBGROUP_SEPERATOR)"},{"line_number":45,"context_line":"    sub_groups_b \u003d group_b.split(NETWORK_SUBGROUP_SEPERATOR)"},{"line_number":46,"context_line":"    if len(sub_groups_a) !\u003d len(sub_groups_b):"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa6399be_87b865e7","line":43,"updated":"2016-10-18 12:54:15.000000000","message":"I think you should document/comment what this method do.","commit_id":"040bdb3cb8a5f4ab27e1be320468ef642ba66ef0"},{"author":{"_account_id":21683,"name":"edan david","email":"edand@mellanox.com","username":"edand"},"change_message_id":"537966232c9728ec704f526323da65598c583e44","unresolved":false,"context_lines":[{"line_number":40,"context_line":"NETWORK_SUBGROUP_SEPERATOR \u003d \u0027:\u0027"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def network_group_match(group_a, group_b):"},{"line_number":44,"context_line":"    sub_groups_a \u003d group_a.split(NETWORK_SUBGROUP_SEPERATOR)"},{"line_number":45,"context_line":"    sub_groups_b \u003d group_b.split(NETWORK_SUBGROUP_SEPERATOR)"},{"line_number":46,"context_line":"    if len(sub_groups_a) !\u003d len(sub_groups_b):"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa6399be_d8723bad","line":43,"in_reply_to":"fa6399be_87b865e7","updated":"2016-10-18 15:47:38.000000000","message":"Done","commit_id":"040bdb3cb8a5f4ab27e1be320468ef642ba66ef0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"97bf3263553d085efb4ede12f4fe538e3b48400d","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def network_group_match(group_a, group_b):"},{"line_number":44,"context_line":"    \"\"\"Check if group A match group B."},{"line_number":45,"context_line":"    Valid syntax is composed of subgroups separated by \u0027:\u0027"},{"line_number":46,"context_line":"    for example:"},{"line_number":47,"context_line":"        sub1:sub2:sub3 - 1:1:3, 1:*:2"},{"line_number":48,"context_line":"    An alternative can be \"group name\" syntax"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a77a97e_9f279863","line":45,"updated":"2016-11-16 16:19:22.000000000","message":"nit: docstring should have a blank line between the title and rest of the description body.","commit_id":"eda0fbdc285838325996cd699acf9009c9f61408"},{"author":{"_account_id":21683,"name":"edan david","email":"edand@mellanox.com","username":"edand"},"change_message_id":"e057783903fde5fc9aac4efe38cde1f7528afbf5","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def network_group_match(group_a, group_b):"},{"line_number":44,"context_line":"    \"\"\"Check if group A match group B."},{"line_number":45,"context_line":"    Valid syntax is composed of subgroups separated by \u0027:\u0027"},{"line_number":46,"context_line":"    for example:"},{"line_number":47,"context_line":"        sub1:sub2:sub3 - 1:1:3, 1:*:2"},{"line_number":48,"context_line":"    An alternative can be \"group name\" syntax"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a77a97e_a6dfcb67","line":45,"in_reply_to":"7a77a97e_9f279863","updated":"2016-11-17 10:19:56.000000000","message":"Done","commit_id":"eda0fbdc285838325996cd699acf9009c9f61408"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"97bf3263553d085efb4ede12f4fe538e3b48400d","unresolved":false,"context_lines":[{"line_number":74,"context_line":"     {\"vendor_id\":\"10de\", \"product_id\":\"10d8\"}]"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    \"\"\""},{"line_number":77,"context_line":"    def _matching_devices(spec):"},{"line_number":78,"context_line":"        return all(pci_dev.get(k) \u003d\u003d v for k, v in six.iteritems(spec)"},{"line_number":79,"context_line":"                   if k !\u003d NETWORK_GROUP)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    return any(_matching_devices(spec) and"},{"line_number":82,"context_line":"               network_group_match(spec.get(NETWORK_GROUP, ANY),"},{"line_number":83,"context_line":"                                   pci_dev.get(NETWORK_GROUP, ANY))"},{"line_number":84,"context_line":"               for spec in specs)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def parse_address(address):"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a77a97e_df7d901d","line":84,"range":{"start_line":77,"start_character":4,"end_line":84,"end_character":33},"updated":"2016-11-16 16:19:22.000000000","message":"This is nearly identical to the _equal_properties method in the stats module, can they be merged somehow?","commit_id":"eda0fbdc285838325996cd699acf9009c9f61408"},{"author":{"_account_id":21683,"name":"edan david","email":"edand@mellanox.com","username":"edand"},"change_message_id":"e057783903fde5fc9aac4efe38cde1f7528afbf5","unresolved":false,"context_lines":[{"line_number":74,"context_line":"     {\"vendor_id\":\"10de\", \"product_id\":\"10d8\"}]"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    \"\"\""},{"line_number":77,"context_line":"    def _matching_devices(spec):"},{"line_number":78,"context_line":"        return all(pci_dev.get(k) \u003d\u003d v for k, v in six.iteritems(spec)"},{"line_number":79,"context_line":"                   if k !\u003d NETWORK_GROUP)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    return any(_matching_devices(spec) and"},{"line_number":82,"context_line":"               network_group_match(spec.get(NETWORK_GROUP, ANY),"},{"line_number":83,"context_line":"                                   pci_dev.get(NETWORK_GROUP, ANY))"},{"line_number":84,"context_line":"               for spec in specs)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"def parse_address(address):"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a77a97e_86700fde","line":84,"range":{"start_line":77,"start_character":4,"end_line":84,"end_character":33},"in_reply_to":"7a77a97e_df7d901d","updated":"2016-11-17 10:19:56.000000000","message":"Done","commit_id":"eda0fbdc285838325996cd699acf9009c9f61408"}],"nova/tests/unit/pci/test_stats.py":[{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"b567ffd0d65ec1ea98cabc75bf8752b982917aac","unresolved":false,"context_lines":[{"line_number":537,"context_line":"        devs \u003d self.pci_stats.consume_requests(pci_requests)"},{"line_number":538,"context_line":"        self.assertEqual(1, len(devs))"},{"line_number":539,"context_line":"        related_pf \u003d devs[0].parent_addr"},{"line_number":540,"context_line":"        self.assertIn(related_pf, expected_pfs)"},{"line_number":541,"context_line":""},{"line_number":542,"context_line":"    @mock.patch(\u0027nova.pci.utils.get_function_by_ifname\u0027)"},{"line_number":543,"context_line":"    def test_consume_non_existing_network_group(self, mock_get_function):"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa6399be_07aa9570","line":540,"updated":"2016-10-18 12:54:15.000000000","message":"Can you please modify this test so that more than one network groups are setup and verify that the right one is matched ?","commit_id":"040bdb3cb8a5f4ab27e1be320468ef642ba66ef0"},{"author":{"_account_id":21683,"name":"edan david","email":"edand@mellanox.com","username":"edand"},"change_message_id":"537966232c9728ec704f526323da65598c583e44","unresolved":false,"context_lines":[{"line_number":537,"context_line":"        devs \u003d self.pci_stats.consume_requests(pci_requests)"},{"line_number":538,"context_line":"        self.assertEqual(1, len(devs))"},{"line_number":539,"context_line":"        related_pf \u003d devs[0].parent_addr"},{"line_number":540,"context_line":"        self.assertIn(related_pf, expected_pfs)"},{"line_number":541,"context_line":""},{"line_number":542,"context_line":"    @mock.patch(\u0027nova.pci.utils.get_function_by_ifname\u0027)"},{"line_number":543,"context_line":"    def test_consume_non_existing_network_group(self, mock_get_function):"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa6399be_beaacf83","line":540,"in_reply_to":"fa6399be_07aa9570","updated":"2016-10-18 15:47:38.000000000","message":"I\u0027ve changed the two groups names to: \"2:1\", \"1:1\" (previous was \"red\", \"1:1\").\nthe validation is that the VF selected is connected to the correct PF by self.assertEqual(dev.parent_addr, u\"0000:81:00.0\").\nI\u0027ve added comments I think it was a little unclear.","commit_id":"040bdb3cb8a5f4ab27e1be320468ef642ba66ef0"},{"author":{"_account_id":21683,"name":"edan david","email":"edand@mellanox.com","username":"edand"},"change_message_id":"537966232c9728ec704f526323da65598c583e44","unresolved":false,"context_lines":[{"line_number":549,"context_line":"                            spec\u003d[{utils.NETWORK_GROUP: \u00271:2\u0027}]),"},{"line_number":550,"context_line":"                        objects.InstancePCIRequest(count\u003d1,"},{"line_number":551,"context_line":"                            spec\u003d[{utils.NETWORK_GROUP: \u0027*:2\u0027}]),"},{"line_number":552,"context_line":"                        ]"},{"line_number":553,"context_line":"        self.assertIsNone(self.pci_stats.consume_requests(pci_requests))"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa6399be_3ec4ff3e","line":552,"updated":"2016-10-18 15:47:38.000000000","message":"also added some more cases here.","commit_id":"040bdb3cb8a5f4ab27e1be320468ef642ba66ef0"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6bf7a0c66b62e04506c876dea6952f39d2b7af50","unresolved":false,"context_lines":[{"line_number":457,"context_line":"        super(PciDeviceStatsNetworkGroupTestCase, self).setUp()"},{"line_number":458,"context_line":"        white_list \u003d [\u0027{\"devname\":\"ensf30\",\"physical_network\":\"physnet1\",\u0027 +"},{"line_number":459,"context_line":"                      \u0027\"\u0027 + utils.NETWORK_GROUP + \u0027\"\u0027 + \u0027:\"1:1\"}\u0027,"},{"line_number":460,"context_line":"                      \u0027{\"devname\":\"ensf31\",\"physical_network\":\"physnet1\",\u0027 +"},{"line_number":461,"context_line":"                      \u0027\"\u0027 + utils.NETWORK_GROUP + \u0027\"\u0027 + \u0027:\"red\"}\u0027]"},{"line_number":462,"context_line":"        self.flags(passthrough_whitelist\u003dwhite_list, group\u003d\u0027pci\u0027)"},{"line_number":463,"context_line":"        dev_filter \u003d whitelist.Whitelist(white_list)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_05b0f1dc","line":460,"updated":"2016-11-07 14:07:06.000000000","message":"I would say to have better tests you should to have 4 PFs and whitlist example:  ensf30 and ensf32","commit_id":"7750c272f50fca6813c373e00a35b169ec170447"},{"author":{"_account_id":21683,"name":"edan david","email":"edand@mellanox.com","username":"edand"},"change_message_id":"08b584efb2648d0954df2e6c45f0c6e87998a190","unresolved":false,"context_lines":[{"line_number":457,"context_line":"        super(PciDeviceStatsNetworkGroupTestCase, self).setUp()"},{"line_number":458,"context_line":"        white_list \u003d [\u0027{\"devname\":\"ensf30\",\"physical_network\":\"physnet1\",\u0027 +"},{"line_number":459,"context_line":"                      \u0027\"\u0027 + utils.NETWORK_GROUP + \u0027\"\u0027 + \u0027:\"1:1\"}\u0027,"},{"line_number":460,"context_line":"                      \u0027{\"devname\":\"ensf31\",\"physical_network\":\"physnet1\",\u0027 +"},{"line_number":461,"context_line":"                      \u0027\"\u0027 + utils.NETWORK_GROUP + \u0027\"\u0027 + \u0027:\"red\"}\u0027]"},{"line_number":462,"context_line":"        self.flags(passthrough_whitelist\u003dwhite_list, group\u003d\u0027pci\u0027)"},{"line_number":463,"context_line":"        dev_filter \u003d whitelist.Whitelist(white_list)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_6bab1b75","line":460,"in_reply_to":"9a629dbe_05b0f1dc","updated":"2016-11-08 08:21:19.000000000","message":"Done","commit_id":"7750c272f50fca6813c373e00a35b169ec170447"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6bf7a0c66b62e04506c876dea6952f39d2b7af50","unresolved":false,"context_lines":[{"line_number":465,"context_line":""},{"line_number":466,"context_line":"    def _create_pci_devices(self, vf_product_id\u003d1515, pf_product_id\u003d1528):"},{"line_number":467,"context_line":"        self.sriov_pf_devices \u003d []"},{"line_number":468,"context_line":"        for dev in range(2):"},{"line_number":469,"context_line":"            pci_dev \u003d {\u0027compute_node_id\u0027: 1,"},{"line_number":470,"context_line":"                       \u0027address\u0027: \u00270000:81:00.%d\u0027 % dev,"},{"line_number":471,"context_line":"                       \u0027vendor_id\u0027: \u00278086\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_a5c5855c","line":468,"updated":"2016-11-07 14:07:06.000000000","message":"Could you increase the number of PFs so we can ensure tests are doing good results, example 4.","commit_id":"7750c272f50fca6813c373e00a35b169ec170447"},{"author":{"_account_id":21683,"name":"edan david","email":"edand@mellanox.com","username":"edand"},"change_message_id":"08b584efb2648d0954df2e6c45f0c6e87998a190","unresolved":false,"context_lines":[{"line_number":465,"context_line":""},{"line_number":466,"context_line":"    def _create_pci_devices(self, vf_product_id\u003d1515, pf_product_id\u003d1528):"},{"line_number":467,"context_line":"        self.sriov_pf_devices \u003d []"},{"line_number":468,"context_line":"        for dev in range(2):"},{"line_number":469,"context_line":"            pci_dev \u003d {\u0027compute_node_id\u0027: 1,"},{"line_number":470,"context_line":"                       \u0027address\u0027: \u00270000:81:00.%d\u0027 % dev,"},{"line_number":471,"context_line":"                       \u0027vendor_id\u0027: \u00278086\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_8bb6afda","line":468,"in_reply_to":"9a629dbe_a5c5855c","updated":"2016-11-08 08:21:19.000000000","message":"Done","commit_id":"7750c272f50fca6813c373e00a35b169ec170447"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6bf7a0c66b62e04506c876dea6952f39d2b7af50","unresolved":false,"context_lines":[{"line_number":501,"context_line":"    def _get_function_side_effect(self, network_group):"},{"line_number":502,"context_line":"        network_group_to_pci_device \u003d {"},{"line_number":503,"context_line":"                \"ensf30\": (\"0000:81:00.0\", True),"},{"line_number":504,"context_line":"                \"ensf31\": (\"0000:81:00.1\", True)"},{"line_number":505,"context_line":"        }"},{"line_number":506,"context_line":"        return network_group_to_pci_device[network_group]"},{"line_number":507,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_0582b100","line":504,"updated":"2016-11-07 14:07:06.000000000","message":"Can you add more devices for the new PFs created","commit_id":"7750c272f50fca6813c373e00a35b169ec170447"},{"author":{"_account_id":21683,"name":"edan david","email":"edand@mellanox.com","username":"edand"},"change_message_id":"08b584efb2648d0954df2e6c45f0c6e87998a190","unresolved":false,"context_lines":[{"line_number":501,"context_line":"    def _get_function_side_effect(self, network_group):"},{"line_number":502,"context_line":"        network_group_to_pci_device \u003d {"},{"line_number":503,"context_line":"                \"ensf30\": (\"0000:81:00.0\", True),"},{"line_number":504,"context_line":"                \"ensf31\": (\"0000:81:00.1\", True)"},{"line_number":505,"context_line":"        }"},{"line_number":506,"context_line":"        return network_group_to_pci_device[network_group]"},{"line_number":507,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a629dbe_ebb56bcd","line":504,"in_reply_to":"9a629dbe_0582b100","updated":"2016-11-08 08:21:19.000000000","message":"Done","commit_id":"7750c272f50fca6813c373e00a35b169ec170447"}]}
