)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"caa5df69468688cc1263c5ed4e2d2817ae056975","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Tests are added that confirms the expected behavior."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Note that the expected behavior will change when we add suffix"},{"line_number":25,"context_line":"mappings to allocation requests. Whereas now"},{"line_number":26,"context_line":"\u0027test_nested_result_count_isolate\u0027 gets winnowed to 2 results because"},{"line_number":27,"context_line":"the following are treated as duplicates"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"   [(\u0027cn1\u0027, orc.VCPU, 2),"},{"line_number":30,"context_line":"    (\u0027cn1_numa0_pf0\u0027, orc.SRIOV_NET_VF, 1),"},{"line_number":31,"context_line":"    (\u0027cn1_numa1_pf1\u0027, orc.SRIOV_NET_VF, 1)],"},{"line_number":32,"context_line":"   [(\u0027cn1\u0027, orc.VCPU, 2),"},{"line_number":33,"context_line":"    (\u0027cn1_numa0_pf0\u0027, orc.SRIOV_NET_VF, 1),"},{"line_number":34,"context_line":"    (\u0027cn1_numa1_pf1\u0027, orc.SRIOV_NET_VF, 1)],"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"they are in fact slightly different: one set has pf0 satisfying group"},{"line_number":37,"context_line":"_NET1 and pf1 _NET2, the other vice versa. With mappings available"},{"line_number":38,"context_line":"we presumably want to expose this difference, resulting in more..."},{"line_number":39,"context_line":"results."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"An interesting note: The original bug report was that python 2.7 was"},{"line_number":42,"context_line":"varying across 3 values, sometimes right, but mostly wrong and 3.7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9fb8cfa7_2693aa51","line":39,"range":{"start_line":24,"start_character":0,"end_line":39,"end_character":8},"updated":"2019-06-07 13:31:48.000000000","message":"Gah, I didn\u0027t read this before I posted my comment where I thought I was coming up with this wrinkle on my own, making me look silly.","commit_id":"18c865e62d19807e74fabcfa2de5b40fded34cad"}],"placement/objects/allocation_candidate.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"47d07b4c3c15b76571da8cac2c3741a61538e51c","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        # class or \u003e 1 of the same resource provider we need to sort on both."},{"line_number":248,"context_line":"        sorted_rr \u003d sorted("},{"line_number":249,"context_line":"            self.resource_requests,"},{"line_number":250,"context_line":"            key\u003dlambda x: (x.resource_class, x.resource_provider.id))"},{"line_number":251,"context_line":"        return hash(tuple(sorted_rr))"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_2a95e9e4","line":250,"updated":"2019-06-04 20:58:11.000000000","message":"And this doesn\u0027t have to consider x.amount?","commit_id":"b806477a2c781aa0efc7c457971335ab45acb952"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9783ef217782aa47e14870daab94dcfcf515e1fd","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        # class or \u003e 1 of the same resource provider we need to sort on both."},{"line_number":248,"context_line":"        sorted_rr \u003d sorted("},{"line_number":249,"context_line":"            self.resource_requests,"},{"line_number":250,"context_line":"            key\u003dlambda x: (x.resource_class, x.resource_provider.id))"},{"line_number":251,"context_line":"        return hash(tuple(sorted_rr))"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_6a2e81a6","line":250,"in_reply_to":"9fb8cfa7_2a95e9e4","updated":"2019-06-04 21:07:41.000000000","message":"Hm, yes, I think that\u0027s true. If there\u0027s a request for different amounts of the same resource class, two allocation requests will be identical except for the amounts. Good eye.","commit_id":"b806477a2c781aa0efc7c457971335ab45acb952"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"6b7c475b7f56806c23420cfcff34fa8159fcd815","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        # class or \u003e 1 of the same resource provider we need to sort on both."},{"line_number":248,"context_line":"        sorted_rr \u003d sorted("},{"line_number":249,"context_line":"            self.resource_requests,"},{"line_number":250,"context_line":"            key\u003dlambda x: (x.resource_class, x.resource_provider.id))"},{"line_number":251,"context_line":"        return hash(tuple(sorted_rr))"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_fe1232b1","line":250,"in_reply_to":"9fb8cfa7_3e0a0ad2","updated":"2019-06-04 21:46:58.000000000","message":"Oh, rightright, I was looking at this at the wrong scope. We\u0027re sorting the AllocationRequest*Resource*s, where it is indeed impossible to have more than one with the same RP+RC.","commit_id":"b806477a2c781aa0efc7c457971335ab45acb952"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"d0c5b6d25b6022272f2488f9cd07927d4fc8bb74","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        # class or \u003e 1 of the same resource provider we need to sort on both."},{"line_number":248,"context_line":"        sorted_rr \u003d sorted("},{"line_number":249,"context_line":"            self.resource_requests,"},{"line_number":250,"context_line":"            key\u003dlambda x: (x.resource_class, x.resource_provider.id))"},{"line_number":251,"context_line":"        return hash(tuple(sorted_rr))"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_3e0a0ad2","line":250,"in_reply_to":"9fb8cfa7_6a2e81a6","updated":"2019-06-04 21:22:51.000000000","message":"We should indeed test it, but I\u0027m relatively sure it is impossible to create an AllocationRequest that contains two separate AllocationRequestResource for the exact same resource class, resource provider and amount, even during dot product that creates the expanded set of candidates (just before the _merge).\n\nWhat we\u0027re doing here by sorting is saying: in this one AllocationRequest, make sure that if we have two different resources from the same provider they come in a consistent order, and if we have two different providers with the same resources, they come in a consistent order.","commit_id":"b806477a2c781aa0efc7c457971335ab45acb952"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb02d0ac67f594b8146791259300be704062b475","unresolved":false,"context_lines":[{"line_number":244,"context_line":"    def __hash__(self):"},{"line_number":245,"context_line":"        # We need a stable sort order on the resource requests to get an"},{"line_number":246,"context_line":"        # accurate hash. Since we might have either \u003e 1 of the same resource"},{"line_number":247,"context_line":"        # class or \u003e 1 of the same resource provider we need to sort on both."},{"line_number":248,"context_line":"        sorted_rr \u003d sorted("},{"line_number":249,"context_line":"            self.resource_requests,"},{"line_number":250,"context_line":"            key\u003dlambda x: (x.resource_class, x.resource_provider.id))"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_60c18a2e","line":247,"updated":"2019-06-07 11:57:31.000000000","message":"So when there will be same amount with different group suffix then we need to adjust this algo. Can we make this future proof by sorting on lambda x: hash(x) ?","commit_id":"18c865e62d19807e74fabcfa2de5b40fded34cad"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"e699fc8661abafbf911acd6e75eb6eda21057275","unresolved":false,"context_lines":[{"line_number":244,"context_line":"    def __hash__(self):"},{"line_number":245,"context_line":"        # We need a stable sort order on the resource requests to get an"},{"line_number":246,"context_line":"        # accurate hash. Since we might have either \u003e 1 of the same resource"},{"line_number":247,"context_line":"        # class or \u003e 1 of the same resource provider we need to sort on both."},{"line_number":248,"context_line":"        sorted_rr \u003d sorted("},{"line_number":249,"context_line":"            self.resource_requests,"},{"line_number":250,"context_line":"            key\u003dlambda x: (x.resource_class, x.resource_provider.id))"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_b23b50e9","line":247,"in_reply_to":"9fb8cfa7_60c18a2e","updated":"2019-06-07 16:18:30.000000000","message":"\u003e So when there will be same amount with different group suffix then\n \u003e we need to adjust this algo. Can we make this future proof by\n \u003e sorting on lambda x: hash(x) ?\n\nIn work today, using hash(x) has proven to be the right thing, once suffix is involved, so I\u0027ve made this change in the patch that adds suffix support.","commit_id":"18c865e62d19807e74fabcfa2de5b40fded34cad"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"29dbf9fe77ce8111801b6fe6732565aff404c430","unresolved":false,"context_lines":[{"line_number":244,"context_line":"    def __hash__(self):"},{"line_number":245,"context_line":"        # We need a stable sort order on the resource requests to get an"},{"line_number":246,"context_line":"        # accurate hash. Since we might have either \u003e 1 of the same resource"},{"line_number":247,"context_line":"        # class or \u003e 1 of the same resource provider we need to sort on both."},{"line_number":248,"context_line":"        sorted_rr \u003d sorted("},{"line_number":249,"context_line":"            self.resource_requests,"},{"line_number":250,"context_line":"            key\u003dlambda x: (x.resource_class, x.resource_provider.id))"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_a36f8c90","line":247,"in_reply_to":"9fb8cfa7_60c18a2e","updated":"2019-06-07 13:01:25.000000000","message":"Hm. Yes. When we\u0027re doing mappings, we\u0027ll have more candidates than before. Like if two request groups request the same resources (whether with the same or different traits) and can be satisfied by two different providers, today we would merge that into one candidate, but tomorrow we have to have one with the mapping one way around and another with it the other way around.\n\nAt which point, yes, it will matter that the suffix be included in the hash and sort.","commit_id":"18c865e62d19807e74fabcfa2de5b40fded34cad"}],"placement/tests/functional/db/test_allocation_candidates.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9783ef217782aa47e14870daab94dcfcf515e1fd","unresolved":false,"context_lines":[{"line_number":2874,"context_line":"        #"},{"line_number":2875,"context_line":"        # We will issue a request to _get_allocation_candidates() for VCPU and"},{"line_number":2876,"context_line":"        # SRIOV_NET_VF and compare the provided allocation requests. In"},{"line_number":2877,"context_line":"        # https://storyboard.openstack.org/#!/story/2005822 we see different"},{"line_number":2878,"context_line":"        # results here for Python 2.7 versus Python 3.7."},{"line_number":2879,"context_line":"        cn1 \u003d self._create_provider(\u0027cn1\u0027, uuids.agg1)"},{"line_number":2880,"context_line":"        cn2 \u003d self._create_provider(\u0027cn2\u0027, uuids.agg2)"},{"line_number":2881,"context_line":"        tb.add_inventory(cn1, orc.VCPU, 16)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_4ac37dee","line":2878,"range":{"start_line":2877,"start_character":60,"end_line":2878,"end_character":56},"updated":"2019-06-04 21:07:41.000000000","message":"Based on the commit message and the fact that a fix is included in this change set, I think this...","commit_id":"b806477a2c781aa0efc7c457971335ab45acb952"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"47d07b4c3c15b76571da8cac2c3741a61538e51c","unresolved":false,"context_lines":[{"line_number":2919,"context_line":"        # by the __hash__ and __eq__ of the AllocationRequest which, in this"},{"line_number":2920,"context_line":"        # case, should winnow the results down to 2 since they are defined to"},{"line_number":2921,"context_line":"        # be the same (they have the same resource provider, the same resource"},{"line_number":2922,"context_line":"        # class and the same desired amount), but mirrored."},{"line_number":2923,"context_line":"        # expected \u003d ["},{"line_number":2924,"context_line":"        #    [(\u0027cn1\u0027, orc.VCPU, 2),"},{"line_number":2925,"context_line":"        #     (\u0027cn1_numa0_pf0\u0027, orc.SRIOV_NET_VF, 1),"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_8a8f35cb","line":2922,"range":{"start_line":2922,"start_character":16,"end_line":2922,"end_character":43},"updated":"2019-06-04 20:58:11.000000000","message":"As noted in the hash method, it\u0027s not sorting based on the amount - does it need to? Is there any way to test a test/bug where amount matters for the hash?","commit_id":"b806477a2c781aa0efc7c457971335ab45acb952"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"6b7c475b7f56806c23420cfcff34fa8159fcd815","unresolved":false,"context_lines":[{"line_number":2919,"context_line":"        # by the __hash__ and __eq__ of the AllocationRequest which, in this"},{"line_number":2920,"context_line":"        # case, should winnow the results down to 2 since they are defined to"},{"line_number":2921,"context_line":"        # be the same (they have the same resource provider, the same resource"},{"line_number":2922,"context_line":"        # class and the same desired amount), but mirrored."},{"line_number":2923,"context_line":"        # expected \u003d ["},{"line_number":2924,"context_line":"        #    [(\u0027cn1\u0027, orc.VCPU, 2),"},{"line_number":2925,"context_line":"        #     (\u0027cn1_numa0_pf0\u0027, orc.SRIOV_NET_VF, 1),"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_fe8792d6","line":2922,"range":{"start_line":2922,"start_character":16,"end_line":2922,"end_character":43},"in_reply_to":"9fb8cfa7_1e9b86c9","updated":"2019-06-04 21:46:58.000000000","message":"Wouldn\u0027t hurt anything, but it should be redundant because the additional candidates should just be where both VFs are provided by the same PF - i.e. one AllocationRequestResource each, so nothing to sort.\n\nBut it would still be interesting (if not probative) to change one of these amounts.","commit_id":"b806477a2c781aa0efc7c457971335ab45acb952"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"3bb0706bd5d41bac22e876854cf4630bb3a0a9d7","unresolved":false,"context_lines":[{"line_number":2919,"context_line":"        # by the __hash__ and __eq__ of the AllocationRequest which, in this"},{"line_number":2920,"context_line":"        # case, should winnow the results down to 2 since they are defined to"},{"line_number":2921,"context_line":"        # be the same (they have the same resource provider, the same resource"},{"line_number":2922,"context_line":"        # class and the same desired amount), but mirrored."},{"line_number":2923,"context_line":"        # expected \u003d ["},{"line_number":2924,"context_line":"        #    [(\u0027cn1\u0027, orc.VCPU, 2),"},{"line_number":2925,"context_line":"        #     (\u0027cn1_numa0_pf0\u0027, orc.SRIOV_NET_VF, 1),"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_1e9b86c9","line":2922,"range":{"start_line":2922,"start_character":16,"end_line":2922,"end_character":43},"in_reply_to":"9fb8cfa7_2a1ac97c","updated":"2019-06-04 21:13:34.000000000","message":"probably also worth turning off isolate to compare and contrast","commit_id":"b806477a2c781aa0efc7c457971335ab45acb952"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9783ef217782aa47e14870daab94dcfcf515e1fd","unresolved":false,"context_lines":[{"line_number":2919,"context_line":"        # by the __hash__ and __eq__ of the AllocationRequest which, in this"},{"line_number":2920,"context_line":"        # case, should winnow the results down to 2 since they are defined to"},{"line_number":2921,"context_line":"        # be the same (they have the same resource provider, the same resource"},{"line_number":2922,"context_line":"        # class and the same desired amount), but mirrored."},{"line_number":2923,"context_line":"        # expected \u003d ["},{"line_number":2924,"context_line":"        #    [(\u0027cn1\u0027, orc.VCPU, 2),"},{"line_number":2925,"context_line":"        #     (\u0027cn1_numa0_pf0\u0027, orc.SRIOV_NET_VF, 1),"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_2a1ac97c","line":2922,"range":{"start_line":2922,"start_character":16,"end_line":2922,"end_character":43},"in_reply_to":"9fb8cfa7_8a8f35cb","updated":"2019-06-04 21:07:41.000000000","message":"I think changing the amount in either L2909 or 2914 would do it.","commit_id":"b806477a2c781aa0efc7c457971335ab45acb952"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9783ef217782aa47e14870daab94dcfcf515e1fd","unresolved":false,"context_lines":[{"line_number":2914,"context_line":"                    orc.SRIOV_NET_VF: 1,"},{"line_number":2915,"context_line":"                }),"},{"line_number":2916,"context_line":"        }, group_policy\u003d\u0027isolate\u0027)"},{"line_number":2917,"context_line":"        # Near the end of _merge candidates we expect 4 different collections"},{"line_number":2918,"context_line":"        # of AllocationRequest to be added to a set. Admittance is controlled"},{"line_number":2919,"context_line":"        # by the __hash__ and __eq__ of the AllocationRequest which, in this"},{"line_number":2920,"context_line":"        # case, should winnow the results down to 2 since they are defined to"},{"line_number":2921,"context_line":"        # be the same (they have the same resource provider, the same resource"},{"line_number":2922,"context_line":"        # class and the same desired amount), but mirrored."},{"line_number":2923,"context_line":"        # expected \u003d ["},{"line_number":2924,"context_line":"        #    [(\u0027cn1\u0027, orc.VCPU, 2),"},{"line_number":2925,"context_line":"        #     (\u0027cn1_numa0_pf0\u0027, orc.SRIOV_NET_VF, 1),"},{"line_number":2926,"context_line":"        #     (\u0027cn1_numa1_pf1\u0027, orc.SRIOV_NET_VF, 1)],"},{"line_number":2927,"context_line":"        #    [(\u0027cn1\u0027, orc.VCPU, 2),"},{"line_number":2928,"context_line":"        #     (\u0027cn1_numa0_pf0\u0027, orc.SRIOV_NET_VF, 1),"},{"line_number":2929,"context_line":"        #     (\u0027cn1_numa1_pf1\u0027, orc.SRIOV_NET_VF, 1)],"},{"line_number":2930,"context_line":"        #    [(\u0027cn2\u0027, orc.VCPU, 2),"},{"line_number":2931,"context_line":"        #     (\u0027cn2_numa0_pf0\u0027, orc.SRIOV_NET_VF, 1),"},{"line_number":2932,"context_line":"        #     (\u0027cn2_numa1_pf1\u0027, orc.SRIOV_NET_VF, 1)],"},{"line_number":2933,"context_line":"        #    [(\u0027cn2\u0027, orc.VCPU, 2),"},{"line_number":2934,"context_line":"        #     (\u0027cn2_numa0_pf0\u0027, orc.SRIOV_NET_VF, 1),"},{"line_number":2935,"context_line":"        #     (\u0027cn2_numa1_pf1\u0027, orc.SRIOV_NET_VF, 1)],"},{"line_number":2936,"context_line":"        # ]"},{"line_number":2937,"context_line":"        self.assertEqual(2, len(alloc_cands.allocation_requests))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_0abd8564","line":2937,"range":{"start_line":2917,"start_character":0,"end_line":2937,"end_character":65},"updated":"2019-06-04 21:07:41.000000000","message":"...and this are out of date.","commit_id":"b806477a2c781aa0efc7c457971335ab45acb952"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"29dbf9fe77ce8111801b6fe6732565aff404c430","unresolved":false,"context_lines":[{"line_number":2918,"context_line":"        # controlled by the __hash__ and __eq__ of the AllocationRequest which,"},{"line_number":2919,"context_line":"        # in this case, should winnow the results down to 2 since they are"},{"line_number":2920,"context_line":"        # defined to be the same (they have the same resource provider, the"},{"line_number":2921,"context_line":"        # same resource class and the same desired amount), but contribute"},{"line_number":2922,"context_line":"        # via different suffixes."},{"line_number":2923,"context_line":"        self.assertEqual(2, len(alloc_cands.allocation_requests))"},{"line_number":2924,"context_line":""},{"line_number":2925,"context_line":"    def test_nested_result_count_none(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_a3c78c45","line":2922,"range":{"start_line":2921,"start_character":64,"end_line":2922,"end_character":33},"updated":"2019-06-07 13:01:25.000000000","message":"Not yet? The two candidates we get at this point are from different trees:\n\n pf1_0 + pf1_1\n pf2_0 + pf2_1\n\nOnce we are mapping, the suffixes will come into play and we\u0027ll expect 4 candidates:\n\n NET1/pf1_0 + NET2/pf1_1\n NET1/pf1_1 + NET2/pf1_0\n NET1/pf2_0 + NET2/pf2_1\n NET1/pf2_1 + NET2/pf2_0","commit_id":"18c865e62d19807e74fabcfa2de5b40fded34cad"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"caa5df69468688cc1263c5ed4e2d2817ae056975","unresolved":false,"context_lines":[{"line_number":2918,"context_line":"        # controlled by the __hash__ and __eq__ of the AllocationRequest which,"},{"line_number":2919,"context_line":"        # in this case, should winnow the results down to 2 since they are"},{"line_number":2920,"context_line":"        # defined to be the same (they have the same resource provider, the"},{"line_number":2921,"context_line":"        # same resource class and the same desired amount), but contribute"},{"line_number":2922,"context_line":"        # via different suffixes."},{"line_number":2923,"context_line":"        self.assertEqual(2, len(alloc_cands.allocation_requests))"},{"line_number":2924,"context_line":""},{"line_number":2925,"context_line":"    def test_nested_result_count_none(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_a690fa4f","line":2922,"range":{"start_line":2921,"start_character":64,"end_line":2922,"end_character":33},"in_reply_to":"9fb8cfa7_03bf7861","updated":"2019-06-07 13:31:48.000000000","message":"Okay, I just read this again (from my computer screen instead of my phone) and it makes sense. Sorry for the churn.\n\nIt was useful for me to think through the before/after permutations though :)","commit_id":"18c865e62d19807e74fabcfa2de5b40fded34cad"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"b02983bab2c320c41a42d3e77350cf9a7b66f8e5","unresolved":false,"context_lines":[{"line_number":2918,"context_line":"        # controlled by the __hash__ and __eq__ of the AllocationRequest which,"},{"line_number":2919,"context_line":"        # in this case, should winnow the results down to 2 since they are"},{"line_number":2920,"context_line":"        # defined to be the same (they have the same resource provider, the"},{"line_number":2921,"context_line":"        # same resource class and the same desired amount), but contribute"},{"line_number":2922,"context_line":"        # via different suffixes."},{"line_number":2923,"context_line":"        self.assertEqual(2, len(alloc_cands.allocation_requests))"},{"line_number":2924,"context_line":""},{"line_number":2925,"context_line":"    def test_nested_result_count_none(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_03bf7861","line":2922,"range":{"start_line":2921,"start_character":64,"end_line":2922,"end_character":33},"in_reply_to":"9fb8cfa7_a3c78c45","updated":"2019-06-07 13:06:56.000000000","message":"The comment says: we are taken from 4 to 2 because we ignore mappings _now_. See the comment in the commit message and let me know how I can make this comment more clear.","commit_id":"18c865e62d19807e74fabcfa2de5b40fded34cad"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"29dbf9fe77ce8111801b6fe6732565aff404c430","unresolved":false,"context_lines":[{"line_number":2946,"context_line":"                }),"},{"line_number":2947,"context_line":"        }, group_policy\u003d\u0027none\u0027)"},{"line_number":2948,"context_line":"        # 4 VF providers each providing 2, 1, or 0 inventory makes 6"},{"line_number":2949,"context_line":"        # workable combinations."},{"line_number":2950,"context_line":"        self.assertEqual(6, len(alloc_cands.allocation_requests))"},{"line_number":2951,"context_line":""},{"line_number":2952,"context_line":"    def test_nested_result_count_different_amounts(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_a3cc6c61","line":2949,"range":{"start_line":2949,"start_character":19,"end_line":2949,"end_character":31},"updated":"2019-06-07 13:01:25.000000000","message":"Too early for me to think about how many this will be with mappings.","commit_id":"18c865e62d19807e74fabcfa2de5b40fded34cad"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"29dbf9fe77ce8111801b6fe6732565aff404c430","unresolved":false,"context_lines":[{"line_number":2973,"context_line":"                    orc.SRIOV_NET_VF: 2,"},{"line_number":2974,"context_line":"                }),"},{"line_number":2975,"context_line":"        }, group_policy\u003d\u0027isolate\u0027)"},{"line_number":2976,"context_line":"        self.assertEqual(4, len(alloc_cands.allocation_requests))"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_833fe823","line":2976,"range":{"start_line":2976,"start_character":25,"end_line":2976,"end_character":26},"updated":"2019-06-07 13:01:25.000000000","message":"I think this will still be 4 when mapping.","commit_id":"18c865e62d19807e74fabcfa2de5b40fded34cad"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb02d0ac67f594b8146791259300be704062b475","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"9fb8cfa7_e0125a09","line":2977,"updated":"2019-06-07 11:57:31.000000000","message":"Good test cases","commit_id":"18c865e62d19807e74fabcfa2de5b40fded34cad"}]}
