)]}'
{"id":"openstack%2Fplacement~676235","triplet_id":"openstack%2Fplacement~master~Id74c01215956fc998f2dadcd9d84801ac58c2d3d","project":"openstack/placement","branch":"master","topic":"optimize-_build_provider_summaries","hashtags":[],"change_id":"Id74c01215956fc998f2dadcd9d84801ac58c2d3d","subject":"Add a rw_ctx.psum_res_by_rp_rc, for clarity","status":"MERGED","created":"2019-08-13 16:11:56.000000000","updated":"2019-08-16 13:39:02.000000000","submitted":"2019-08-16 13:39:02.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":2,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"676235-1565962742458-0e67f363","meta_rev_id":"0ac7e641d7abb1e4512b68a2071e2e04e9bfb49d","_number":676235,"virtual_id_number":676235,"owner":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},{"value":2,"date":"2019-08-16 13:39:02.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},{"value":0,"_account_id":28543,"name":"shupeng","email":"15050873171@163.com","username":"Vieri"},{"value":0,"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"all":[{"value":2,"date":"2019-08-16 12:09:18.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},{"value":1,"date":"2019-08-16 09:52:29.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":28543,"name":"shupeng","email":"15050873171@163.com","username":"Vieri"},{"value":2,"date":"2019-08-16 09:52:29.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"all":[{"value":1,"date":"2019-08-16 12:09:18.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},{"value":0,"_account_id":28543,"name":"shupeng","email":"15050873171@163.com","username":"Vieri"},{"value":0,"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},{"value":0,"_account_id":28543,"name":"shupeng","email":"15050873171@163.com","username":"Vieri"},{"value":0,"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"}],"values":{" 0":"Default Priority","+1":"Contributor Review Promise","+2":"Core Review Promise"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":28543,"name":"shupeng","email":"15050873171@163.com","username":"Vieri"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2019-08-14 14:45:05.000000000","updated_by":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"reviewer":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"state":"REVIEWER"},{"updated":"2019-08-14 14:46:41.000000000","updated_by":{"_account_id":28543,"name":"shupeng","email":"15050873171@163.com","username":"Vieri"},"reviewer":{"_account_id":28543,"name":"shupeng","email":"15050873171@163.com","username":"Vieri"},"state":"REVIEWER"},{"updated":"2019-08-16 12:09:18.000000000","updated_by":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"reviewer":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"state":"REVIEWER"},{"updated":"2019-08-16 13:39:02.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"}],"messages":[{"id":"9add1ce2d34dd0c1272c1a6f577140f02e94ea70","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-13 16:11:56.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"652943e6f596759192eb47a128aead58b1522d51","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-08-13 18:53:29.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\n\n- grenade-py3 https://zuul.opendev.org/t/openstack/build/35606736121a4e0db71aa07db0b8ac33 : SUCCESS in 1h 00m 13s\n- tempest-integrated-placement https://zuul.opendev.org/t/openstack/build/d192adbda3fc433bbfe509ed59590d86 : SUCCESS in 1h 24m 53s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/0f44e2586a884202ab8050e3733e1f57 : SUCCESS in 4m 31s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/df822bbbb1fa49bf937f8e5ec1a21125 : SUCCESS in 6m 44s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/a19d97633f17453199c685b797bbbc8e : SUCCESS in 6m 47s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/dd3cccbdeb6f4d0cb7450026176d512f : SUCCESS in 3m 55s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/4b307b7de56848d2968ddb79687f4200 : SUCCESS in 4m 54s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/fbeb9520b7a04cb1a299b2d0a7753644 : SUCCESS in 5m 05s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/94d7fe43d3934e0ea597c0f9e7c67ff4 : SUCCESS in 5m 57s\n- openstack-tox-functional https://zuul.opendev.org/t/openstack/build/0e9c5f28844740a7933ad70f01385e85 : SUCCESS in 5m 42s\n- openstack-tox-functional-py36 https://zuul.opendev.org/t/openstack/build/769991bdeab84c8fbc1f5a96efd4c957 : SUCCESS in 4m 58s\n- openstack-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/a3ccb7183cf6488c909b1fe002714aea : SUCCESS in 5m 29s\n- placement-nova-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/fe3a7b92266f4a4097f8fbe0db946e92 : SUCCESS in 12m 32s\n- placement-nested-perfload https://zuul.opendev.org/t/openstack/build/c8159a9706e846e1bef5d2aeff75b2d1 : SUCCESS in 34m 02s (non-voting)\n- placement-perfload https://zuul.opendev.org/t/openstack/build/2a905afcb9c845a49b4ca90eec122774 : SUCCESS in 12m 47s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/52300021368e42af869ff18272603f0b : SUCCESS in 1h 20m 01s","accounts_in_message":[],"_revision_number":1},{"id":"9fce147fc192b2aea20b2a545208c9a8ade080c8","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-08-13 21:28:56.000000000","message":"Patch Set 1: Code-Review-1\n\n(1 comment)\n\nI like this refactor, but I don\u0027t like the way we got rid of _rp_rc_key, because now we need to make sure we do the same computation in three places. That was the reason we made this (admittedly trivial) method.\n\nFor all that it\u0027s nearly identical, I would rather see _rp_rc_key accept (rp.id, rc_name) rather than (rp, rc_name).\n\nOr we could take it a step further: make the dict private, and make methods on rw_ctx to register_psum_resource(psum_res, rp_id) and get_psum_resource(rp_id, rc_name).\n\nBut -1 to calculating the key inline in three places.","accounts_in_message":[],"_revision_number":1},{"id":"c9164600c69cc13fdc6daa04e882ab2fefead4d6","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-13 21:44:23.000000000","message":"Patch Set 1: Workflow-1\n\n\u003e Or we could take it a step further: make the dict private, and make\n \u003e methods on rw_ctx to register_psum_resource(psum_res, rp_id) and\n \u003e get_psum_resource(rp_id, rc_name).\n\nReason #1 for why I got rid of it was because I didn\u0027t want to force _consolidate_allocation_requests to make calls outside of its own model for something so trivial _and_ to create a key for a different style of dict.\n\nReason #2 was same thing for _build_provider_summaries, even though it was the \"right\" style of dict: calling elsewhere seemed too much. Which does imply your suggestion above might be worthwhile, however, see next:\n\nReason #3: If we\u0027re in the land of performance optimizations, method and function call overhead is non-trivial. Inlining things like key generation probably isn\u0027t going to make all that much difference, but for something where the damage isn\u0027t significant it is a reasonable thing to do.\n\nIn this case the damage isn\u0027t significant because there\u0027s really only one place where it isn\u0027t fairly clean (_build_provider_summaries) because the other two cases are either \"in the class\" or \"a different dict with its own rules for key access that are only the same by happenstance and only used in that place (that is arrs_by_rp_rc) is local to its method, only\".\n\nSince _build_provider_summaries is still, even after all this, one of the hotbeds in this whole performance welk, I\u0027m happy to have that little bit of duplication, via inlining, if it saves us even a tiny bit of overhead.\n\nIn the end, it would matter if we used the key in may places, but we don\u0027t.\n\nAt least, that\u0027s what I think, others may disagree, please do if you do.\n\nThe comment does need to move, so I\u0027ll fix at least that.","accounts_in_message":[],"_revision_number":1},{"id":"e4e92860497e4dd5a1d64a41487539efd400ffc0","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-08-13 21:52:25.000000000","message":"Patch Set 1:\n\nFWIW, I did consider the method call overhead, and IMO it\u0027s still worthwhile. Feel free to prove me wrong with your profiley thingy, but I\u0027m betting that\u0027s negligible next to all the object building we\u0027re doing at the same level.\n\nWhere\u0027s #define when you need it?","accounts_in_message":[],"_revision_number":1},{"id":"e460eac7c5a1e9812b80259fd599c5697bae7953","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-13 22:05:42.000000000","message":"Patch Set 1:\n\n\u003e FWIW, I did consider the method call overhead, and IMO it\u0027s still\n \u003e worthwhile. Feel free to prove me wrong with your profiley thingy,\n \u003e but I\u0027m betting that\u0027s negligible next to all the object building\n \u003e we\u0027re doing at the same level.\n\nI think you\u0027ve disregarded all the rest of what I said. I can run the numbers, but that still doesn\u0027t get around the fact that it is a method for something done twice (the _consolidate one doesn\u0027t count), and only one externally, for something that is deeply internal.\n\nThat is: there\u0027s no public api here, and there\u0027s little risk.\n\nIf you want me to change it, I need to understand better what the perceived risks are.","accounts_in_message":[],"_revision_number":1},{"id":"7e44e15a740649c26c2f76ae55c782616cf50c3b","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-08-13 22:59:02.000000000","message":"Patch Set 1: -Code-Review\n\n(1 comment)\n\nI\u0027m not concerned about public API, I\u0027m concerned about future me having to find all usages to change them, or add a new one by example.\n\nBut the magic number is three, and you\u0027ve convinced me that one of those doesn\u0027t count, so I won\u0027t block on this.\n\nBut would still prefer a cleaner-looking (even if marginally less performant) solution.","accounts_in_message":[],"_revision_number":1},{"id":"68cd04a2af9b4fea400e660cb62754455a943437","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-14 08:49:52.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"6814d7d12a3d00199c8d1934ff00be149b6de3a5","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-08-14 10:14:17.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\n\n- grenade-py3 https://zuul.opendev.org/t/openstack/build/4b9506e3251a4d87b47d8b5d13b22c9c : SUCCESS in 58m 41s\n- tempest-integrated-placement https://zuul.opendev.org/t/openstack/build/fab46a6a1013408db8186fe477fa15f8 : SUCCESS in 1h 22m 59s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/dc4eaa429bdd40ff8e75ec85fb7579cc : SUCCESS in 4m 24s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/03694a1410c246d4a779a61c1d588dac : SUCCESS in 5m 26s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/645779a7927a47a39214fa75f4a3adbf : SUCCESS in 4m 24s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/7a513b87c7174820b5f70524e257a593 : SUCCESS in 4m 11s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/381dc1a9999a436188aaa6fe2c3ac9ed : SUCCESS in 6m 10s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/9081ad3a369e4f329fc7d4ab505848af : SUCCESS in 4m 09s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/99a3eb95ed3f4aafb177ef0d95b7947b : SUCCESS in 6m 23s\n- openstack-tox-functional https://zuul.opendev.org/t/openstack/build/8bacfbbed89f4f3ca6abcbab06505d4e : SUCCESS in 6m 16s\n- openstack-tox-functional-py36 https://zuul.opendev.org/t/openstack/build/9adcf0d656b041088d701ca628ea4aab : SUCCESS in 7m 08s\n- openstack-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/611a19811e064981b87f3f54d6ea3150 : SUCCESS in 4m 37s\n- placement-nova-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/432162154f0a46c29a8b78d81510ce47 : SUCCESS in 15m 10s\n- placement-nested-perfload https://zuul.opendev.org/t/openstack/build/23a079de74e64c7988dcbe696820385e : SUCCESS in 26m 45s (non-voting)\n- placement-perfload https://zuul.opendev.org/t/openstack/build/d32e2f6aaff849e5a773127d878853f5 : SUCCESS in 11m 23s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/d716394565d3446ab195115dd7920d6d : SUCCESS in 1h 01m 08s","accounts_in_message":[],"_revision_number":2},{"id":"d949542e6935b9e6616490d740e05c85cad5d21c","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-08-14 14:45:05.000000000","message":"Patch Set 2: Code-Review+2","accounts_in_message":[],"_revision_number":2},{"id":"41941453eb01cc2331db9b8d45946e022c6ac4ac","author":{"_account_id":28543,"name":"shupeng","email":"15050873171@163.com","username":"Vieri"},"date":"2019-08-14 14:46:41.000000000","message":"Patch Set 2: Code-Review+1","accounts_in_message":[],"_revision_number":2},{"id":"1fe3b3943aa84942aa2bc41fc3588d956591c6e6","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-14 16:57:49.000000000","message":"Uploaded patch set 3: Patch Set 2 was rebased.","accounts_in_message":[],"_revision_number":3},{"id":"e22157e41a41ff2ba880fd8ea027d30378ec36e4","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-08-14 18:47:41.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\n\n- grenade-py3 https://zuul.opendev.org/t/openstack/build/55ca59e2a61e421c8c13fca3757fa739 : SUCCESS in 1h 10m 21s\n- tempest-integrated-placement https://zuul.opendev.org/t/openstack/build/1ce2672a75df4f729271ad5209f312b8 : SUCCESS in 1h 14m 38s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/7535e7571216495c82e6a3d74d3332f3 : SUCCESS in 5m 16s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/c057c4487f04428994afee8d23ab2477 : SUCCESS in 6m 54s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/0e7ec51d22ad4d42a02b5fe84652d608 : SUCCESS in 5m 29s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/f61bab47a8cd46e4a8bf412c37a418be : SUCCESS in 6m 22s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/82c4c2c495424ea486f18b20ae5681ca : SUCCESS in 4m 59s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/d2ca6fa833654954a5bcbd69494fd30b : SUCCESS in 6m 40s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/396f2223830249dcaf1336e8bd8f2f0c : SUCCESS in 7m 20s\n- openstack-tox-functional https://zuul.opendev.org/t/openstack/build/eeb514814050411c9a71a1b6aa6a3dbb : SUCCESS in 7m 21s\n- openstack-tox-functional-py36 https://zuul.opendev.org/t/openstack/build/8e0506f6085e489ba784f4ab1509b99b : SUCCESS in 5m 48s\n- openstack-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/162c7928a09347aca24dff2fecce39e0 : SUCCESS in 6m 26s\n- placement-nova-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/c3cd9a5a7792482da35ec8970b32ef44 : SUCCESS in 11m 43s\n- placement-nested-perfload https://zuul.opendev.org/t/openstack/build/5e3e8d6d9d8a42588393915661f8c828 : SUCCESS in 11m 07s (non-voting)\n- placement-perfload https://zuul.opendev.org/t/openstack/build/1cc30c965dc14cb7a37dbcc97592da0a : SUCCESS in 12m 05s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/6a24aa1d330245929a2a180c49d7b8f2 : SUCCESS in 1h 22m 04s","accounts_in_message":[],"_revision_number":3},{"id":"63abb0ccdd08d4676708179d1da343a4cfc285ba","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-15 09:27:04.000000000","message":"Uploaded patch set 4: Patch Set 3 was rebased.","accounts_in_message":[],"_revision_number":4},{"id":"809ac22c26fbdfd5b872bb68e5799d134974fa03","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-15 09:53:13.000000000","message":"Uploaded patch set 5: Patch Set 4 was rebased.","accounts_in_message":[],"_revision_number":5},{"id":"116ab6dd34a3c20a1c9247944129fb8fd585f877","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-08-15 11:22:14.000000000","message":"Patch Set 5: Verified+1\n\nBuild succeeded (check pipeline).\n\n- grenade-py3 https://zuul.opendev.org/t/openstack/build/d96a47796faf4747bdd94a386a6730ed : SUCCESS in 59m 14s\n- tempest-integrated-placement https://zuul.opendev.org/t/openstack/build/9383e562c38d4e0990a2ad415e4f4f97 : SUCCESS in 1h 26m 17s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/31dfdfed18664bb5bc4d06047ffdb1b9 : SUCCESS in 4m 59s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/a5d99c725f184d3886fd75ad07ed095d : SUCCESS in 5m 20s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/baec47e3c7fb4368863c8b5ef36c7170 : SUCCESS in 4m 30s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/fc607a9f4ac94494a081f6bbe1b9129a : SUCCESS in 4m 28s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/4dc2b95eeaeb4cda938cda0deb448dbe : SUCCESS in 4m 21s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/578423b6bf2341ee86033cce420be3c6 : SUCCESS in 4m 22s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/6cd2410ee29946c7bab9e5908150dd0a : SUCCESS in 4m 50s\n- openstack-tox-functional https://zuul.opendev.org/t/openstack/build/ed03c17bff7c4bb29d5b82d99b40e67d : SUCCESS in 4m 58s\n- openstack-tox-functional-py36 https://zuul.opendev.org/t/openstack/build/c26502d330e441da83a0f27cb8cdedac : SUCCESS in 5m 05s\n- openstack-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/9197c6b7f7fe4d7abcab4091d9375003 : SUCCESS in 6m 18s\n- placement-nova-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/195f0c40d8b3451e9b4f451dcf050503 : SUCCESS in 12m 04s\n- placement-nested-perfload https://zuul.opendev.org/t/openstack/build/aaee27b847eb46f8be0c822b8ba59e4a : SUCCESS in 27m 50s (non-voting)\n- placement-perfload https://zuul.opendev.org/t/openstack/build/8be107f848b74ad49b654eee3c671f34 : SUCCESS in 11m 43s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/cd38975921b7409cab20f1089ae3a687 : SUCCESS in 1h 02m 50s","accounts_in_message":[],"_revision_number":5},{"id":"30a8d891e347a9cafb3a6859c6d6d0a24f6bdaae","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-16 09:52:29.000000000","message":"Uploaded patch set 6: Patch Set 5 was rebased.","accounts_in_message":[],"_revision_number":6},{"id":"fbb7274c3b7d56ee1f9f95267cab1cf5d3abc419","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-08-16 11:31:54.000000000","message":"Patch Set 6: Verified+1\n\nBuild succeeded (check pipeline).\n\n- grenade-py3 https://zuul.opendev.org/t/openstack/build/78e49919275e469b9704f21ce60ee9d3 : SUCCESS in 59m 00s\n- tempest-integrated-placement https://zuul.opendev.org/t/openstack/build/1ebd70b3c7fa45c2ae218d18deeac160 : SUCCESS in 1h 34m 22s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/7733bba4e38f4575b4df448c56aaaaf6 : SUCCESS in 5m 11s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/d3640fbe854442658a24e0262e300402 : SUCCESS in 5m 57s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/1103d2b4735f4b94b466b0950b700447 : SUCCESS in 6m 52s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/91abf9a6c3204eb19d5cf2f6e8fd49c6 : SUCCESS in 5m 08s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/13ef7025807245adb499084e7ac8c8b7 : SUCCESS in 4m 36s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/065210e08e214f97b765c3243046fadc : SUCCESS in 6m 18s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/368350baeac24890bb72121157414867 : SUCCESS in 5m 28s\n- openstack-tox-functional https://zuul.opendev.org/t/openstack/build/fb2a65bc4b1447afb992dc7b77d236d6 : SUCCESS in 5m 33s\n- openstack-tox-functional-py36 https://zuul.opendev.org/t/openstack/build/79c76f1204d64a8990dfb539b84bc567 : SUCCESS in 6m 08s\n- openstack-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/274bf00394494a459043976a417509b7 : SUCCESS in 7m 14s\n- placement-nova-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/c2d044c95c534a02aa995c4fd4f8080c : SUCCESS in 14m 32s\n- placement-nested-perfload https://zuul.opendev.org/t/openstack/build/54e9565ecd674ed2bb6fbebe56dd5f6f : SUCCESS in 28m 44s (non-voting)\n- placement-perfload https://zuul.opendev.org/t/openstack/build/d5d4ed7ebafa4b7ea5104720596b9e05 : SUCCESS in 10m 39s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/23eb038e3f8245e3b85f5d251a8a8e39 : SUCCESS in 1h 20m 41s","accounts_in_message":[],"_revision_number":6},{"id":"759299dbdab5014ab59ccf59b8f5cec2a672ac20","author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"date":"2019-08-16 12:09:18.000000000","message":"Patch Set 6: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":6},{"id":"2998264a89c1e11b67efe9e5464968a7961ce189","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-08-16 12:09:32.000000000","message":"Patch Set 6: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":6},{"id":"c5f818ba04b4acfc59d5f45eb9655103d5909072","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-08-16 13:39:02.000000000","message":"Patch Set 6: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- grenade-py3 https://zuul.opendev.org/t/openstack/build/f6d875d4151740809347e8f5e515272a : SUCCESS in 1h 11m 39s\n- tempest-integrated-placement https://zuul.opendev.org/t/openstack/build/07954de5c78744ef88e3ed08820b3c67 : SUCCESS in 1h 27m 48s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/7fadf825ed394926ade08aa149eda022 : SUCCESS in 7m 41s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/189d76d34bfa45c188277fafc217a132 : SUCCESS in 8m 01s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/ff5ec2a77b234e4f9b97dacbde6131e5 : SUCCESS in 8m 55s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/e5143e738f244003b25eaa640f9acca7 : SUCCESS in 8m 18s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/da9ed7a1d9ee49c5ad6d61a3676b95b9 : SUCCESS in 9m 28s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/9abc63ea1b2a4754b432d082e6e86afa : SUCCESS in 10m 02s\n- openstack-tox-functional https://zuul.opendev.org/t/openstack/build/a539029380c04c4fa9f1bee734e07323 : SUCCESS in 9m 34s\n- openstack-tox-functional-py36 https://zuul.opendev.org/t/openstack/build/79cbaddb9d2b476aa9cb231235310992 : SUCCESS in 9m 19s\n- openstack-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/68826469f9d64b2a9911229067a318ad : SUCCESS in 10m 48s\n- placement-nova-tox-functional-py37 https://zuul.opendev.org/t/openstack/build/721973599056403d800b618465538aa4 : SUCCESS in 17m 34s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/daa05d52280b462fb4e368a8bc8e3962 : SUCCESS in 1h 10m 21s","accounts_in_message":[],"_revision_number":6},{"id":"7b66724e57a904bf4a7ae84744e5d7fb1709af9e","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-08-16 13:39:02.000000000","message":"Change has been successfully merged by Zuul","accounts_in_message":[],"_revision_number":6}],"current_revision_number":6,"current_revision":"5dda479f5b80e7853e3aeec9a94df0ed4bf90248","revisions":{"eb5b837789afbbbf0a21f9ab022b0f118d5f2318":{"kind":"REWORK","_number":1,"created":"2019-08-13 16:11:56.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/35/676235/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/35/676235/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/35/676235/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/35/676235/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/35/676235/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/35/676235/1"}}},"commit":{"parents":[{"commit":"4f284b9f4cbc8f437c0c8a7cd02302f59cbcb7a2","subject":"Use rp.id instead of uuid in _rp_rc_key","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/4f284b9f4cbc8f437c0c8a7cd02302f59cbcb7a2"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-13 15:32:14.000000000","tz":60},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-13 16:07:05.000000000","tz":60},"subject":"Add a rw_ctx.psum_res_by_rp_rc, for clarity","message":"Add a rw_ctx.psum_res_by_rp_rc, for clarity\n\nIn _merge_candidates we need a final _exceeds_capacity check to\nmake sure a multi-part granular request has not exceeded capacity\nlimits. This uses a dict that maps resource provider uuid and resource\nclass name to a ProviderSummaryResource.\n\nRather than creating this dict in _merge_candidates, we now have it\nas a member on the RequestWideSearchContext and add to it when\ncreating the ProviderSummaryResource.\n\nThis allows us to remove some looping in _merge_candidates and is\nalso a bit more tidy. This is only possible with the advent of\nthe RequestWideSearchContext, which is newer than _merge_candidates.\n\n_exceeds_capacity is moved to the RequestWideSearchContext as\nexceeds_capacity as it now makes sense as a method.\n\nBecause _rp_rc_key is now used from a few different places and with\nslightly different contexts, the method is removed and callers create\ntheir own keys.\n\nChange-Id: Id74c01215956fc998f2dadcd9d84801ac58c2d3d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/eb5b837789afbbbf0a21f9ab022b0f118d5f2318"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/eb5b837789afbbbf0a21f9ab022b0f118d5f2318"}]},"branch":"refs/heads/master"},"34a04e939f12a2642433e6488d81c977e0d6adca":{"kind":"REWORK","_number":2,"created":"2019-08-14 08:49:52.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/35/676235/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/35/676235/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/35/676235/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/35/676235/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/35/676235/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/35/676235/2"}}},"commit":{"parents":[{"commit":"4f284b9f4cbc8f437c0c8a7cd02302f59cbcb7a2","subject":"Use rp.id instead of uuid in _rp_rc_key","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/4f284b9f4cbc8f437c0c8a7cd02302f59cbcb7a2"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-13 15:32:14.000000000","tz":60},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-14 08:46:12.000000000","tz":60},"subject":"Add a rw_ctx.psum_res_by_rp_rc, for clarity","message":"Add a rw_ctx.psum_res_by_rp_rc, for clarity\n\nIn _merge_candidates we need a final _exceeds_capacity check to\nmake sure a multi-part granular request has not exceeded capacity\nlimits. This uses a dict that maps resource provider uuid and resource\nclass name to a ProviderSummaryResource.\n\nRather than creating this dict in _merge_candidates, we now have it\nas a member on the RequestWideSearchContext and add to it when\ncreating the ProviderSummaryResource.\n\nThis allows us to remove some looping in _merge_candidates and is\nalso a bit more tidy. This is only possible with the advent of\nthe RequestWideSearchContext, which is newer than _merge_candidates.\n\n_exceeds_capacity is moved to the RequestWideSearchContext as\nexceeds_capacity as it now makes sense as a method.\n\nBecause _rp_rc_key ended up used from two different modules and for\ntwo different purposes, the method is instead removed and callers\ncreate their own keys directly.\n\nChange-Id: Id74c01215956fc998f2dadcd9d84801ac58c2d3d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/34a04e939f12a2642433e6488d81c977e0d6adca"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/34a04e939f12a2642433e6488d81c977e0d6adca"}]},"branch":"refs/heads/master"},"154e8483d4ff51afe4fd4ab2efb05af9aae30768":{"kind":"TRIVIAL_REBASE","_number":3,"created":"2019-08-14 16:57:49.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/35/676235/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/35/676235/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/35/676235/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/35/676235/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/35/676235/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/35/676235/3"}}},"commit":{"parents":[{"commit":"2c5ca65125c6824a6d6c0eb392bf04c56bf43832","subject":"Use rp.id instead of uuid in _rp_rc_key","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/2c5ca65125c6824a6d6c0eb392bf04c56bf43832"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-13 15:32:14.000000000","tz":60},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-14 16:57:04.000000000","tz":60},"subject":"Add a rw_ctx.psum_res_by_rp_rc, for clarity","message":"Add a rw_ctx.psum_res_by_rp_rc, for clarity\n\nIn _merge_candidates we need a final _exceeds_capacity check to\nmake sure a multi-part granular request has not exceeded capacity\nlimits. This uses a dict that maps resource provider uuid and resource\nclass name to a ProviderSummaryResource.\n\nRather than creating this dict in _merge_candidates, we now have it\nas a member on the RequestWideSearchContext and add to it when\ncreating the ProviderSummaryResource.\n\nThis allows us to remove some looping in _merge_candidates and is\nalso a bit more tidy. This is only possible with the advent of\nthe RequestWideSearchContext, which is newer than _merge_candidates.\n\n_exceeds_capacity is moved to the RequestWideSearchContext as\nexceeds_capacity as it now makes sense as a method.\n\nBecause _rp_rc_key ended up used from two different modules and for\ntwo different purposes, the method is instead removed and callers\ncreate their own keys directly.\n\nChange-Id: Id74c01215956fc998f2dadcd9d84801ac58c2d3d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/154e8483d4ff51afe4fd4ab2efb05af9aae30768"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/154e8483d4ff51afe4fd4ab2efb05af9aae30768"}]},"branch":"refs/heads/master"},"cfeb3a9e768653c7b3cc1b937d2e6774bdc6d5ff":{"kind":"TRIVIAL_REBASE","_number":4,"created":"2019-08-15 09:27:04.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/35/676235/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/35/676235/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/35/676235/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/35/676235/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/35/676235/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/35/676235/4"}}},"commit":{"parents":[{"commit":"effcc9d3b33aea838435d967065b6b51014b3f23","subject":"Use rp.id instead of uuid in _rp_rc_key","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/effcc9d3b33aea838435d967065b6b51014b3f23"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-13 15:32:14.000000000","tz":60},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-15 09:26:53.000000000","tz":60},"subject":"Add a rw_ctx.psum_res_by_rp_rc, for clarity","message":"Add a rw_ctx.psum_res_by_rp_rc, for clarity\n\nIn _merge_candidates we need a final _exceeds_capacity check to\nmake sure a multi-part granular request has not exceeded capacity\nlimits. This uses a dict that maps resource provider uuid and resource\nclass name to a ProviderSummaryResource.\n\nRather than creating this dict in _merge_candidates, we now have it\nas a member on the RequestWideSearchContext and add to it when\ncreating the ProviderSummaryResource.\n\nThis allows us to remove some looping in _merge_candidates and is\nalso a bit more tidy. This is only possible with the advent of\nthe RequestWideSearchContext, which is newer than _merge_candidates.\n\n_exceeds_capacity is moved to the RequestWideSearchContext as\nexceeds_capacity as it now makes sense as a method.\n\nBecause _rp_rc_key ended up used from two different modules and for\ntwo different purposes, the method is instead removed and callers\ncreate their own keys directly.\n\nChange-Id: Id74c01215956fc998f2dadcd9d84801ac58c2d3d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/cfeb3a9e768653c7b3cc1b937d2e6774bdc6d5ff"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/cfeb3a9e768653c7b3cc1b937d2e6774bdc6d5ff"}]},"branch":"refs/heads/master"},"aa1de9cb17aff53b246bae9b29102f0358d8c576":{"kind":"TRIVIAL_REBASE","_number":5,"created":"2019-08-15 09:53:13.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/35/676235/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/35/676235/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/35/676235/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/35/676235/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/35/676235/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/35/676235/5"}}},"commit":{"parents":[{"commit":"dccce7f73a9f00bef10d7cfdaf8101fb7c503cd0","subject":"Use rp.id instead of uuid in _rp_rc_key","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/dccce7f73a9f00bef10d7cfdaf8101fb7c503cd0"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-13 15:32:14.000000000","tz":60},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-15 09:53:03.000000000","tz":60},"subject":"Add a rw_ctx.psum_res_by_rp_rc, for clarity","message":"Add a rw_ctx.psum_res_by_rp_rc, for clarity\n\nIn _merge_candidates we need a final _exceeds_capacity check to\nmake sure a multi-part granular request has not exceeded capacity\nlimits. This uses a dict that maps resource provider uuid and resource\nclass name to a ProviderSummaryResource.\n\nRather than creating this dict in _merge_candidates, we now have it\nas a member on the RequestWideSearchContext and add to it when\ncreating the ProviderSummaryResource.\n\nThis allows us to remove some looping in _merge_candidates and is\nalso a bit more tidy. This is only possible with the advent of\nthe RequestWideSearchContext, which is newer than _merge_candidates.\n\n_exceeds_capacity is moved to the RequestWideSearchContext as\nexceeds_capacity as it now makes sense as a method.\n\nBecause _rp_rc_key ended up used from two different modules and for\ntwo different purposes, the method is instead removed and callers\ncreate their own keys directly.\n\nChange-Id: Id74c01215956fc998f2dadcd9d84801ac58c2d3d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/aa1de9cb17aff53b246bae9b29102f0358d8c576"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/aa1de9cb17aff53b246bae9b29102f0358d8c576"}]},"branch":"refs/heads/master"},"5dda479f5b80e7853e3aeec9a94df0ed4bf90248":{"kind":"TRIVIAL_REBASE","_number":6,"created":"2019-08-16 09:52:29.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/35/676235/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/35/676235/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/35/676235/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/35/676235/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/35/676235/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/35/676235/6"}}},"commit":{"parents":[{"commit":"803d673c1f993e4513a317f4f74e201017abd180","subject":"Use rp.id instead of uuid in _rp_rc_key","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/803d673c1f993e4513a317f4f74e201017abd180"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-13 15:32:14.000000000","tz":60},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-16 09:44:37.000000000","tz":60},"subject":"Add a rw_ctx.psum_res_by_rp_rc, for clarity","message":"Add a rw_ctx.psum_res_by_rp_rc, for clarity\n\nIn _merge_candidates we need a final _exceeds_capacity check to\nmake sure a multi-part granular request has not exceeded capacity\nlimits. This uses a dict that maps resource provider uuid and resource\nclass name to a ProviderSummaryResource.\n\nRather than creating this dict in _merge_candidates, we now have it\nas a member on the RequestWideSearchContext and add to it when\ncreating the ProviderSummaryResource.\n\nThis allows us to remove some looping in _merge_candidates and is\nalso a bit more tidy. This is only possible with the advent of\nthe RequestWideSearchContext, which is newer than _merge_candidates.\n\n_exceeds_capacity is moved to the RequestWideSearchContext as\nexceeds_capacity as it now makes sense as a method.\n\nBecause _rp_rc_key ended up used from two different modules and for\ntwo different purposes, the method is instead removed and callers\ncreate their own keys directly.\n\nChange-Id: Id74c01215956fc998f2dadcd9d84801ac58c2d3d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/5dda479f5b80e7853e3aeec9a94df0ed4bf90248"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/5dda479f5b80e7853e3aeec9a94df0ed4bf90248"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
