)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"5d00f7c8f3d0cabc89101e09b428998484a31f1d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                    \u0027/tmp/dump.%s.dot\u0027 % time.time(),"},{"line_number":35,"context_line":"                    hidden_fields\u003d[\u0027inventories\u0027, \u0027generation\u0027, \u0027aggregates\u0027, \u0027resource_provider_generation\u0027])"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"[1] https://review.opendev.org/#/c/675606/2/placement/objects/allocation_candidate.py@908"},{"line_number":38,"context_line":"[2] Ibccaed40f1eac9c244cf70654f6be1d72f7a6054"},{"line_number":39,"context_line":"[3] https://pypi.org/project/osc-placement-tree/"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Change-Id: I2aedac0ce3a4f5a40de796bb9f74824541a95a65"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7faddb67_82210750","line":38,"range":{"start_line":37,"start_character":0,"end_line":38,"end_character":45},"updated":"2019-08-15 09:35:35.000000000","message":"These two footnotes are (nice but) not not linked from above afaics.","commit_id":"6f3c24d4d17f2ead6a4278d82432028b89f3d9b5"}],"placement/tests/functional/fixtures/gabbits.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9e2c312ac7da66972823af11461d1a6c160fa4de","unresolved":false,"context_lines":[{"line_number":437,"context_line":"    +-----+   +-----+      +-----+   +-----+   +-----+   +-----+     +-----+"},{"line_number":438,"context_line":"    \"\"\""},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"    # Having these here\u0027s allows us to pre-create cn1 and cn2 providers in"},{"line_number":441,"context_line":"    # DeepNUMANetworkFixture, where they have additional parents."},{"line_number":442,"context_line":"    cn1 \u003d None"},{"line_number":443,"context_line":"    cn2 \u003d None"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_85cd9c5e","line":440,"range":{"start_line":440,"start_character":23,"end_line":440,"end_character":25},"updated":"2019-08-14 23:49:11.000000000","message":"x","commit_id":"a98ef15177c7603d2259323748e4382c8b93cb36"}],"placement/tests/functional/gabbits/same-subtree-deep.yaml":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"97026f4a05616e99cc1ef26344fda914be47cc0c","unresolved":false,"context_lines":[{"line_number":25,"context_line":"      required_PORT1: CUSTOM_PHYSNET1"},{"line_number":26,"context_line":"      same_subtree:"},{"line_number":27,"context_line":"          - _NIC,_COMPUTE"},{"line_number":28,"context_line":"          - _NIC,_PORT1"},{"line_number":29,"context_line":"      group_policy: none"},{"line_number":30,"context_line":"  response_json_paths: \u0026json_response"},{"line_number":31,"context_line":"      $.provider_summaries.`len`: 26"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"7faddb67_dbbaa2df","line":28,"updated":"2019-08-14 12:55:40.000000000","message":"So CN1 is not a match as the NUMA node having the VCPU are a different subtree than the HW_NIC_ROOT providing the VF","commit_id":"214ed5f6af76229016473c7eaa852234403b1d15"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"caafe330c1503d745ba9636d7ed74d5b937253ae","unresolved":false,"context_lines":[{"line_number":25,"context_line":"      required_PORT1: CUSTOM_PHYSNET1"},{"line_number":26,"context_line":"      same_subtree:"},{"line_number":27,"context_line":"          - _NIC,_COMPUTE"},{"line_number":28,"context_line":"          - _NIC,_PORT1"},{"line_number":29,"context_line":"      group_policy: none"},{"line_number":30,"context_line":"  response_json_paths: \u0026json_response"},{"line_number":31,"context_line":"      $.provider_summaries.`len`: 26"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"7faddb67_7638633a","line":28,"in_reply_to":"7faddb67_dbbaa2df","updated":"2019-08-14 13:45:04.000000000","message":"yes\n\nI did that to minimize the number of results being looked at. Otherwise the permutations were getting hard to manage.","commit_id":"214ed5f6af76229016473c7eaa852234403b1d15"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"97026f4a05616e99cc1ef26344fda914be47cc0c","unresolved":false,"context_lines":[{"line_number":56,"context_line":"      same_subtree: _COMPUTE,_PORT1"},{"line_number":57,"context_line":"      group_policy: none"},{"line_number":58,"context_line":"  response_json_paths:"},{"line_number":59,"context_line":"      \u003c\u003c: *json_response"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"- name: deep subtree 2VFs, no foo"},{"line_number":62,"context_line":"  GET: /allocation_candidates"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"7faddb67_1bc83a72","line":59,"updated":"2019-08-14 12:55:40.000000000","message":"Just to be sure. Does it mean that the response is expected to be the same as the response for the above tests?","commit_id":"214ed5f6af76229016473c7eaa852234403b1d15"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"caafe330c1503d745ba9636d7ed74d5b937253ae","unresolved":false,"context_lines":[{"line_number":56,"context_line":"      same_subtree: _COMPUTE,_PORT1"},{"line_number":57,"context_line":"      group_policy: none"},{"line_number":58,"context_line":"  response_json_paths:"},{"line_number":59,"context_line":"      \u003c\u003c: *json_response"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"- name: deep subtree 2VFs, no foo"},{"line_number":62,"context_line":"  GET: /allocation_candidates"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"7faddb67_96339f62","line":59,"in_reply_to":"7faddb67_1bc83a72","updated":"2019-08-14 13:45:04.000000000","message":"yes","commit_id":"214ed5f6af76229016473c7eaa852234403b1d15"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9e2c312ac7da66972823af11461d1a6c160fa4de","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Test same_subtree with a deep hierarchy where the top levels of the tree"},{"line_number":2,"context_line":"# provide no resources. We create this by adding an additional empty top"},{"line_number":3,"context_line":"# providers to the NUMANetworkFixture used elsewhere for testing same_subtree."},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"fixtures:"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7faddb67_fde8a816","line":2,"range":{"start_line":2,"start_character":49,"end_line":2,"end_character":51},"updated":"2019-08-14 23:49:11.000000000","message":"x","commit_id":"a98ef15177c7603d2259323748e4382c8b93cb36"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9e2c312ac7da66972823af11461d1a6c160fa4de","unresolved":false,"context_lines":[{"line_number":23,"context_line":"      required_NIC: CUSTOM_HW_NIC_ROOT"},{"line_number":24,"context_line":"      resources_PORT1: CUSTOM_VF:2"},{"line_number":25,"context_line":"      required_PORT1: CUSTOM_PHYSNET1"},{"line_number":26,"context_line":"      # Make sure that there is a chain of subtrees, compute-\u003enic-\u003eport, so"},{"line_number":27,"context_line":"      # that we only get results from cn2."},{"line_number":28,"context_line":"      # _COMPUTE, _NIC, _PORT in one same_subtree would allow cn1 into the"},{"line_number":29,"context_line":"      # results. That would lead to 12 allocation requests, below."},{"line_number":30,"context_line":"      same_subtree:"},{"line_number":31,"context_line":"          - _NIC,_COMPUTE"},{"line_number":32,"context_line":"          - _NIC,_PORT1"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7faddb67_5d70dc40","line":29,"range":{"start_line":26,"start_character":0,"end_line":29,"end_character":66},"updated":"2019-08-14 23:49:11.000000000","message":"Whoah. I think you\u0027re going to have to walk me through this.\n\nWhether we do it like this or with a single same_subtree, I don\u0027t see how cn1 gets to be in any result, ever. The parents \u0026 grandparent are the only common ancestors of {NUMA1, the NICs, the PFs}. So that should fail our definition of same_subtree no matter what.\n\nAs I said the other day when you asked, I think overlapping same_subtreeZ should behave the same as their union. So I think you\u0027ve just proven that that\u0027s not the case, but you\u0027ve shown that it\u0027s a bug rather than me interpreting things wrong. (I still may be interpreting things wrong, but there\u0027s definitely a bug.)\n\n[Later]\n\nOkay, I started dumping stuff, and we blow out to 12 *not* because numa1/cn1 ever gets involved (phew).\n\nIt *is* because my intuition was wrong about overlapping same_subtreeZ.\n\nWhen we say same_subtree\u003dCOMPUTE,NIC,PORT, the COMPUTE gets to act as the sub-root for that subtree, so we allow combinations where PFs aren\u0027t under their respective NICs. Whereas when we have same_subtree\u003dNIC,PORT separate, it forces all NICs and PORTs to be anchored at the NIC.\n\nThe results are below. VCPU always comes from CN2. The * ones are the extra ones we get when we combine into one same_subtree.\n\n   nic1, pf1_1\n * nic1, pf2_1\n * nic1, pf2_3\n * nic1, pf3_1\n * nic2, pf1_1\n   nic2, pf2_1\n   nic2, pf2_3\n * nic2, pf3_1\n * nic3, pf1_1\n * nic3, pf2_1\n * nic3, pf2_3\n   nic3, pf3_1\n\nThis is worth having a test case for. However, it doesn\u0027t need the deep fixture, so I\u0027ll throw up a patch that puts it in with the regular same_subtree tests.","commit_id":"a98ef15177c7603d2259323748e4382c8b93cb36"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"7999de073d7d7d84123590e9008ec857367146b6","unresolved":false,"context_lines":[{"line_number":23,"context_line":"      required_NIC: CUSTOM_HW_NIC_ROOT"},{"line_number":24,"context_line":"      resources_PORT1: CUSTOM_VF:2"},{"line_number":25,"context_line":"      required_PORT1: CUSTOM_PHYSNET1"},{"line_number":26,"context_line":"      # Make sure that there is a chain of subtrees, compute-\u003enic-\u003eport, so"},{"line_number":27,"context_line":"      # that we only get results from cn2."},{"line_number":28,"context_line":"      # _COMPUTE, _NIC, _PORT in one same_subtree would allow cn1 into the"},{"line_number":29,"context_line":"      # results. That would lead to 12 allocation requests, below."},{"line_number":30,"context_line":"      same_subtree:"},{"line_number":31,"context_line":"          - _NIC,_COMPUTE"},{"line_number":32,"context_line":"          - _NIC,_PORT1"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7faddb67_622e4b8d","line":29,"range":{"start_line":26,"start_character":0,"end_line":29,"end_character":66},"in_reply_to":"7faddb67_5d70dc40","updated":"2019-08-15 09:13:21.000000000","message":"I think the comment is a mental leftover from where I was trying different permutations of same_subtree and I conflated two different situations:\n\n* the 12 one, for the reasons you describe\n* a something like 36 one, when _COMPUTE is not in same_subtree (I can\u0027t remember the details and at this point is doesn\u0027t matter)\n\nI\u0027ll correct the comment, get the other nits, tune up the commit message and we can have this little fixture in for funsies.","commit_id":"a98ef15177c7603d2259323748e4382c8b93cb36"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9b4b812808f8d68a2c2006a351cd8ff10ffce2a2","unresolved":false,"context_lines":[{"line_number":23,"context_line":"      required_NIC: CUSTOM_HW_NIC_ROOT"},{"line_number":24,"context_line":"      resources_PORT1: CUSTOM_VF:2"},{"line_number":25,"context_line":"      required_PORT1: CUSTOM_PHYSNET1"},{"line_number":26,"context_line":"      # Make sure that there is a chain of subtrees, compute-\u003enic-\u003eport, so"},{"line_number":27,"context_line":"      # that we only get results from cn2."},{"line_number":28,"context_line":"      # _COMPUTE, _NIC, _PORT in one same_subtree would allow cn1 into the"},{"line_number":29,"context_line":"      # results. That would lead to 12 allocation requests, below."},{"line_number":30,"context_line":"      same_subtree:"},{"line_number":31,"context_line":"          - _NIC,_COMPUTE"},{"line_number":32,"context_line":"          - _NIC,_PORT1"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7faddb67_1d36e404","line":29,"range":{"start_line":26,"start_character":0,"end_line":29,"end_character":66},"in_reply_to":"7faddb67_5d70dc40","updated":"2019-08-15 00:03:41.000000000","message":"https://review.opendev.org/676530","commit_id":"a98ef15177c7603d2259323748e4382c8b93cb36"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"5d00f7c8f3d0cabc89101e09b428998484a31f1d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"      # is anchored under _COMPUTE."},{"line_number":29,"context_line":"      # _COMPUTE, _NIC, _PORT1 in one same_subtree would allow some _PORT1"},{"line_number":30,"context_line":"      # results to be independent of _NIC (while still sharing the _COMPUTE"},{"line_number":31,"context_line":"      # ancestor), leading to 12 allocation requests # instead of 4."},{"line_number":32,"context_line":"      same_subtree:"},{"line_number":33,"context_line":"          - _NIC,_COMPUTE"},{"line_number":34,"context_line":"          - _NIC,_PORT1"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_62140bea","line":31,"range":{"start_line":31,"start_character":54,"end_line":31,"end_character":55},"updated":"2019-08-15 09:35:35.000000000","message":"s/# //","commit_id":"6f3c24d4d17f2ead6a4278d82432028b89f3d9b5"}]}
