)]}'
{"id":"openstack%2Fplacement~675372","triplet_id":"openstack%2Fplacement~master~I3e8167e5d09aeb2ae68282bc0378bee6d956a286","project":"openstack/placement","branch":"master","topic":"cd/arr-clone","hashtags":[],"change_id":"I3e8167e5d09aeb2ae68282bc0378bee6d956a286","subject":"Add __copy__ method to AllocationRequest{,Resource}","status":"MERGED","created":"2019-08-08 15:02:03.000000000","updated":"2019-08-09 14:38:20.000000000","submitted":"2019-08-09 14:38:20.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":6,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"675372-1565361500791-fcaf60fb","meta_rev_id":"0ad78dc92a52ffb4917258a2bbe85fc7e8c5f55c","_number":675372,"virtual_id_number":675372,"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":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},{"value":0,"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},{"value":2,"date":"2019-08-09 14:38:20.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"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":0,"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},{"value":2,"date":"2019-08-09 13:13:51.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":2,"date":"2019-08-08 21:34:37.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":0,"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},{"value":1,"date":"2019-08-09 13:13:51.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":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":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},{"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":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"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2019-08-08 17:27:35.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-09 13:13:51.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-09 14:38:20.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":"8e8b935a8297e325b9b75f932fc1e57f86ec1bc1","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-08 15:02:03.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"46171cbb106c190c1cb38a6d2557e9eb167c02f7","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-08-08 15:10:13.000000000","message":"Patch Set 1: Code-Review+2\n\n(4 comments)","accounts_in_message":[],"_revision_number":1},{"id":"21b4df4980368055be40f7deaa56467038f1cfb4","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-08 15:13:10.000000000","message":"Patch Set 1: Workflow-1\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"c6463a4a8a6df9ac933d44da9dc942339f36fcf6","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-08 17:08:48.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"83e919bd36ad1384c2c2e05ca894811490e92852","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-08-08 17:27:35.000000000","message":"Patch Set 2: Code-Review+2","accounts_in_message":[],"_revision_number":2},{"id":"844b8c9c6dc7b8fc82b58620d37ae25f99de2d74","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-08-08 21:34:37.000000000","message":"Patch Set 3: Patch Set 2 was rebased","accounts_in_message":[],"_revision_number":3},{"id":"5d9fc24de7926224dee0cfa3147e6545ff977ca1","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-08-09 01:34:29.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\n\n- grenade-py3 https://logs.opendev.org/72/675372/3/check/grenade-py3/6a0b1fc/ : SUCCESS in 1h 05m 32s\n- tempest-integrated-placement https://logs.opendev.org/72/675372/3/check/tempest-integrated-placement/7baf023/ : SUCCESS in 1h 20m 49s\n- openstack-tox-docs https://logs.opendev.org/72/675372/3/check/openstack-tox-docs/e2c3bd5/html/ : SUCCESS in 5m 19s\n- openstack-tox-cover https://logs.opendev.org/72/675372/3/check/openstack-tox-cover/7fa3a07/cover/ : SUCCESS in 6m 55s\n- openstack-tox-lower-constraints https://logs.opendev.org/72/675372/3/check/openstack-tox-lower-constraints/1d47b34/ : SUCCESS in 6m 05s\n- openstack-tox-pep8 https://logs.opendev.org/72/675372/3/check/openstack-tox-pep8/a793d53/ : SUCCESS in 3m 58s\n- openstack-tox-py27 https://logs.opendev.org/72/675372/3/check/openstack-tox-py27/977bdd8/ : SUCCESS in 5m 15s\n- openstack-tox-py36 https://logs.opendev.org/72/675372/3/check/openstack-tox-py36/d7d67b8/ : SUCCESS in 5m 18s\n- openstack-tox-py37 https://logs.opendev.org/72/675372/3/check/openstack-tox-py37/e0a327d/ : SUCCESS in 4m 16s\n- openstack-tox-functional https://logs.opendev.org/72/675372/3/check/openstack-tox-functional/6d531ea/ : SUCCESS in 6m 20s\n- openstack-tox-functional-py36 https://logs.opendev.org/72/675372/3/check/openstack-tox-functional-py36/4d34352/ : SUCCESS in 6m 10s\n- openstack-tox-functional-py37 https://logs.opendev.org/72/675372/3/check/openstack-tox-functional-py37/07d09ab/ : SUCCESS in 6m 44s\n- placement-nova-tox-functional-py37 https://logs.opendev.org/72/675372/3/check/placement-nova-tox-functional-py37/478f99d/ : SUCCESS in 14m 41s\n- placement-nested-perfload https://logs.opendev.org/72/675372/3/check/placement-nested-perfload/60c341e/ : SUCCESS in 35m 36s (non-voting)\n- placement-perfload https://logs.opendev.org/72/675372/3/check/placement-perfload/7df8df0/ : SUCCESS in 13m 21s (non-voting)\n- tempest-ipv6-only https://logs.opendev.org/72/675372/3/check/tempest-ipv6-only/f3fb08e/ : SUCCESS in 1h 13m 23s","accounts_in_message":[],"_revision_number":3},{"id":"d2883e190b4ff2025ec64eb3be4d06b86fcf0a35","author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"date":"2019-08-09 13:13:51.000000000","message":"Patch Set 3: Code-Review+2 Workflow+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"4dd6c2ec06f40e464539d722906d306b528bc509","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-08-09 13:14:08.000000000","message":"Patch Set 3: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":3},{"id":"b98466199545eda76ec4aa02093b07d6adf26dba","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-08-09 14:38:20.000000000","message":"Patch Set 3: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- grenade-py3 https://logs.opendev.org/72/675372/3/gate/grenade-py3/403da75/ : SUCCESS in 54m 09s\n- tempest-integrated-placement https://logs.opendev.org/72/675372/3/gate/tempest-integrated-placement/6779351/ : SUCCESS in 1h 17m 07s\n- openstack-tox-docs https://logs.opendev.org/72/675372/3/gate/openstack-tox-docs/fbf457e/html/ : SUCCESS in 6m 21s\n- openstack-tox-lower-constraints https://logs.opendev.org/72/675372/3/gate/openstack-tox-lower-constraints/c5840f6/ : SUCCESS in 6m 30s\n- openstack-tox-pep8 https://logs.opendev.org/72/675372/3/gate/openstack-tox-pep8/cc4dcff/ : SUCCESS in 3m 46s\n- openstack-tox-py27 https://logs.opendev.org/72/675372/3/gate/openstack-tox-py27/94eacc9/ : SUCCESS in 5m 28s\n- openstack-tox-py36 https://logs.opendev.org/72/675372/3/gate/openstack-tox-py36/b684d8a/ : SUCCESS in 4m 25s\n- openstack-tox-py37 https://logs.opendev.org/72/675372/3/gate/openstack-tox-py37/0a504bc/ : SUCCESS in 5m 47s\n- openstack-tox-functional https://logs.opendev.org/72/675372/3/gate/openstack-tox-functional/50b9c5e/ : SUCCESS in 4m 59s\n- openstack-tox-functional-py36 https://logs.opendev.org/72/675372/3/gate/openstack-tox-functional-py36/3ffdc6e/ : SUCCESS in 4m 51s\n- openstack-tox-functional-py37 https://logs.opendev.org/72/675372/3/gate/openstack-tox-functional-py37/ea8bd7a/ : SUCCESS in 7m 27s\n- placement-nova-tox-functional-py37 https://logs.opendev.org/72/675372/3/gate/placement-nova-tox-functional-py37/7f3af26/ : SUCCESS in 14m 33s\n- tempest-ipv6-only https://logs.opendev.org/72/675372/3/gate/tempest-ipv6-only/f54103a/ : SUCCESS in 1h 03m 27s","accounts_in_message":[],"_revision_number":3},{"id":"5d93ed32f3392a0fb07f78859880fb5f57e2f54d","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-08-09 14:38:20.000000000","message":"Change has been successfully merged by Zuul","accounts_in_message":[],"_revision_number":3}],"current_revision_number":3,"current_revision":"1a7d39beed138406267d214580ba07c255fccd62","revisions":{"50fe7a4cb4113d0cc13be9eb313d8e477042a42f":{"kind":"REWORK","_number":1,"created":"2019-08-08 15:02:03.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/72/675372/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/72/675372/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/72/675372/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/72/675372/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/72/675372/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/72/675372/1"}}},"commit":{"parents":[{"commit":"0d3020cd64bbe976b5e641c1c53555700b36d3f8","subject":"Merge \"Add apache benchmark (ab) to end of perfload jobs\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/0d3020cd64bbe976b5e641c1c53555700b36d3f8"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-08 14:08:25.000000000","tz":60},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-08 14:08:25.000000000","tz":60},"subject":"Add __copy__ method to AllocationRequest{,Resource}","message":"Add __copy__ method to AllocationRequest{,Resource}\n\nIt turns out that when Python runs copy.copy on an object it does\na lot of unnecessary work that can be avoided by implementing a\n__copy__ method that essentially does a clone(), creating a new\nobject with the same values. This is considered the idiomatic form\nof clone.\n\nThat unnecessary work shows up quite significantly in the\n_consolidate_allocation_requests method in allocation_candidate.py where\nAllocationRequestResource objects get copied, alot. The use of __copy__\nmore than halves the time consume by _consolidate_allocation_requests.\n\nThere is another copy.copy, in _alloc_candidates_single_provider in the\nsame file, this time copying AllocationRequest objects. This is only\ndone when a shared provider is involved, and we haven\u0027t been doing scale\ntesting for those (yet) but since we\u0027re in that domain I\u0027ve gone ahead\nand pre-emptively added a __copy__ to that object too, to prepare for\nthe eventually work of many shared disks.\n\nChange-Id: I3e8167e5d09aeb2ae68282bc0378bee6d956a286\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/50fe7a4cb4113d0cc13be9eb313d8e477042a42f"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/50fe7a4cb4113d0cc13be9eb313d8e477042a42f"}]},"branch":"refs/heads/master"},"f00db15570ead06b9a68cdfa0fae0675fbed35ba":{"kind":"REWORK","_number":2,"created":"2019-08-08 17:08:48.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/72/675372/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/72/675372/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/72/675372/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/72/675372/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/72/675372/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/72/675372/2"}}},"commit":{"parents":[{"commit":"0d3020cd64bbe976b5e641c1c53555700b36d3f8","subject":"Merge \"Add apache benchmark (ab) to end of perfload jobs\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/0d3020cd64bbe976b5e641c1c53555700b36d3f8"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-08 14:08:25.000000000","tz":60},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-08 17:08:02.000000000","tz":60},"subject":"Add __copy__ method to AllocationRequest{,Resource}","message":"Add __copy__ method to AllocationRequest{,Resource}\n\nIt turns out that when Python runs copy.copy on an object it does\na lot of unnecessary work that can be avoided by implementing a\n__copy__ method that essentially does a clone(), creating a new\nobject with the same values. This is considered the idiomatic form\nof clone.\n\nThat unnecessary work shows up quite significantly in the\n_consolidate_allocation_requests method in allocation_candidate.py where\nAllocationRequestResource objects get copied, a lot. The use of __copy__\nmore than halves the time consumed by _consolidate_allocation_requests.\n\nThere is another copy.copy, in _alloc_candidates_single_provider in the\nsame file, this time copying AllocationRequest objects. This is only\ndone when a shared provider is involved, and we haven\u0027t been doing scale\ntesting for those (yet) but since we\u0027re in that domain I\u0027ve gone ahead\nand pre-emptively added a __copy__ to that object too, to prepare for\nthe eventual work of many shared disks.\n\nChange-Id: I3e8167e5d09aeb2ae68282bc0378bee6d956a286\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/f00db15570ead06b9a68cdfa0fae0675fbed35ba"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/f00db15570ead06b9a68cdfa0fae0675fbed35ba"}]},"branch":"refs/heads/master"},"1a7d39beed138406267d214580ba07c255fccd62":{"kind":"TRIVIAL_REBASE","_number":3,"created":"2019-08-08 21:34:37.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/72/675372/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/72/675372/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/72/675372/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/72/675372/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/72/675372/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/72/675372/3"}}},"commit":{"parents":[{"commit":"2c13a2b7c4a06edb1ddf122cf1ed6c8d56a3268a","subject":"Merge \"Use another expanding bindparam in _get_usages_by_provider_trees\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/2c13a2b7c4a06edb1ddf122cf1ed6c8d56a3268a"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-08 14:08:25.000000000","tz":60},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-08-08 21:34:37.000000000","tz":0},"subject":"Add __copy__ method to AllocationRequest{,Resource}","message":"Add __copy__ method to AllocationRequest{,Resource}\n\nIt turns out that when Python runs copy.copy on an object it does\na lot of unnecessary work that can be avoided by implementing a\n__copy__ method that essentially does a clone(), creating a new\nobject with the same values. This is considered the idiomatic form\nof clone.\n\nThat unnecessary work shows up quite significantly in the\n_consolidate_allocation_requests method in allocation_candidate.py where\nAllocationRequestResource objects get copied, a lot. The use of __copy__\nmore than halves the time consumed by _consolidate_allocation_requests.\n\nThere is another copy.copy, in _alloc_candidates_single_provider in the\nsame file, this time copying AllocationRequest objects. This is only\ndone when a shared provider is involved, and we haven\u0027t been doing scale\ntesting for those (yet) but since we\u0027re in that domain I\u0027ve gone ahead\nand pre-emptively added a __copy__ to that object too, to prepare for\nthe eventual work of many shared disks.\n\nChange-Id: I3e8167e5d09aeb2ae68282bc0378bee6d956a286\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/1a7d39beed138406267d214580ba07c255fccd62"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/1a7d39beed138406267d214580ba07c255fccd62"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
