)]}'
{"id":"openstack%2Foslo.limit~695310","triplet_id":"openstack%2Foslo.limit~master~I294a922ea80af673291c991f07a4a203f25c289d","project":"openstack/oslo.limit","branch":"master","topic":"add-flat-enforce","hashtags":[],"change_id":"I294a922ea80af673291c991f07a4a203f25c289d","subject":"Add flat enforcer","status":"MERGED","created":"2019-11-20 22:10:42.000000000","updated":"2019-12-05 20:22:39.000000000","submitted":"2019-12-05 20:21:06.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":15,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"695310-1575577266979-a31ee413","meta_rev_id":"ede601aa4bc533551a5df804f8591b8e07b2161d","_number":695310,"virtual_id_number":695310,"owner":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},{"value":0,"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},{"value":0,"date":"2019-11-27 19:44:18.000000000","_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},{"value":0,"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2019-12-05 20:21:06.000000000","post_submit":true,"permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},{"value":0,"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"}],"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":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"all":[{"value":2,"date":"2019-11-27 19:56:45.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},{"value":2,"date":"2019-11-27 19:20:52.000000000","_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},{"value":0,"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},{"value":0,"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":2,"date":"2019-12-02 10:57:27.000000000","_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},{"value":0,"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"}],"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":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"all":[{"value":1,"date":"2019-12-02 15:53:50.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},{"value":0,"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},{"value":0,"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},{"value":0,"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},{"value":0,"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Backport-Candidate":{"all":[{"value":0,"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},{"value":0,"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},{"value":0,"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},{"value":0,"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},{"value":0,"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"}],"values":{"-2":"Do Not Backport","-1":"Not A Backport Candidate"," 0":"Backport Review Needed","+1":"Proposed Backport","+2":"Should Backport"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2019-11-22 14:06:20.000000000","updated_by":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"reviewer":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"state":"REVIEWER"},{"updated":"2019-11-27 19:20:52.000000000","updated_by":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"reviewer":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"state":"REVIEWER"},{"updated":"2019-11-27 19:44:18.000000000","updated_by":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"reviewer":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"state":"REVIEWER"},{"updated":"2019-12-02 10:57:27.000000000","updated_by":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"reviewer":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"state":"REVIEWER"},{"updated":"2019-12-02 15:53:50.000000000","updated_by":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"reviewer":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"state":"REVIEWER"},{"updated":"2019-12-05 20:21:06.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":"dec40a841ccf30884f17f1d3d5a34a46e10c9d33","author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"date":"2019-11-20 22:10:42.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"7ef8454a5a12a2ae1f2a969e5982823b88986c96","author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"date":"2019-11-20 22:23:03.000000000","message":"Uploaded patch set 2: Patch Set 1 was rebased.","accounts_in_message":[],"_revision_number":2},{"id":"f897c8325123ab24b6ca934fe3a9ed94f51ede52","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-11-20 23:59:50.000000000","message":"Patch Set 2: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/e30e2c81b666424bb060d96c01302fcf : FAILURE in 3m 08s\n- tempest-full https://zuul.opendev.org/t/openstack/build/033df6e399f84d34aa285a69e84abc83 : FAILURE in 1h 34m 30s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/0a53754c3d044ffda9e2080f833aa05a : SUCCESS in 1h 13m 19s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/6f6620e3a9334e698986334a81495bb5 : SUCCESS in 4m 14s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/e9db26aedd43404baf357ac7510ab38e : SUCCESS in 3m 16s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/17d4f8ed187849fbb13873d49995afea : SUCCESS in 3m 29s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/52edf78b47ea415cb7117d3620265e9d : SUCCESS in 4m 11s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/687981e6bf9d4b51960bce139baadf58 : SUCCESS in 4m 47s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/547edf6791de4b4f991a7e35f53ce43a : SUCCESS in 3m 13s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/975f160db60b4a3d8767832537a0b30a : SUCCESS in 4m 35s","accounts_in_message":[],"_revision_number":2},{"id":"e504941d64dcfa194707fa519989530233235fe4","author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"date":"2019-11-21 16:11:08.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"57c518d5984bd130c8576782f881f20763da3ab8","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-11-21 17:56:03.000000000","message":"Patch Set 3: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/b12a1789a28749938bb84b50838ca640 : SUCCESS in 2m 30s\n- tempest-full https://zuul.opendev.org/t/openstack/build/2a3196ad10574f51b786ff20862149f7 : SUCCESS in 1h 39m 03s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/e38f4e46606b47e49df9cccb520e61c9 : SUCCESS in 1h 39m 34s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/9be4af4209414a549e68e92ae4a01485 : SUCCESS in 5m 33s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/48cd332362cb413cb09578ba00825972 : SUCCESS in 3m 26s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/e61e0671ecf44bb789381f0c5c0b592e : FAILURE in 5m 10s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/c65704384d6541b69d6ca525b9dc86d4 : SUCCESS in 2m 51s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/2d08505a1fbb4ddd9d6c56ab1489975a : SUCCESS in 4m 03s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/2747bc70dc984e5589b917b2a2dc797d : SUCCESS in 3m 43s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/18c9834e0b6249d08a3b80b57c43094b : SUCCESS in 5m 23s","accounts_in_message":[],"_revision_number":3},{"id":"669783ac9d8fb690104f25c8b62d0602ff3d5b50","author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"date":"2019-11-22 13:52:09.000000000","message":"Uploaded patch set 4.","accounts_in_message":[],"_revision_number":4},{"id":"e4becc459fe76cd6b4c9c12dec609de7dce48ccf","author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"date":"2019-11-22 14:06:20.000000000","message":"Patch Set 4:\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"056a08d900b54e1fcac261a53b295f2c95dc651c","author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"date":"2019-11-22 14:47:09.000000000","message":"Patch Set 4:\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"9f439e5119f505b2fe4cdb3b8ccf91dc0a2f61a8","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-11-22 15:12:27.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/27eb741121a34aaaae3a45bafc54eb0f : SUCCESS in 2m 16s\n- tempest-full https://zuul.opendev.org/t/openstack/build/8a10141956024f96ba7057b44fe6a2ae : SUCCESS in 1h 19m 11s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/deed792ce1af405b9009ee407585c9d2 : SUCCESS in 1h 12m 58s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/a8579c4b0b544378a3b9f284cfaa00d1 : SUCCESS in 2m 54s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/665bafbd39d84b369dab18fbfba6c860 : SUCCESS in 3m 06s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/393e6582c5124c4bbcbec9adcec10f3f : SUCCESS in 3m 34s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/94092dc9a31443d19201c19eaf353a67 : SUCCESS in 3m 00s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/2ec419a0b1fb4a05acf6ac15b65583d1 : SUCCESS in 4m 05s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/c7788d05d8b84b8382b62116e5e7ddb6 : SUCCESS in 2m 47s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/41a4fc7998464e77a6bae22087eb775e : SUCCESS in 3m 26s","accounts_in_message":[],"_revision_number":4},{"id":"74cfc135df7e9e67ab7ed20d959b13d2adc1c5ee","author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"date":"2019-11-22 16:59:18.000000000","message":"Uploaded patch set 5.","accounts_in_message":[],"_revision_number":5},{"id":"420afd0bffea620f1a8e5be1ea1f2981fb7d99ac","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-11-22 18:46:37.000000000","message":"Patch Set 5: Verified+1\n\nBuild succeeded (check pipeline).\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/45fadf3a3e9840c09f1f23c225287186 : SUCCESS in 3m 00s\n- tempest-full https://zuul.opendev.org/t/openstack/build/d31911f455b44b5b93ad6216f69a53b2 : SUCCESS in 1h 28m 53s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/30e3dc15598b4ef69b1973f864c5f2b7 : SUCCESS in 1h 28m 51s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/bb386d9d9ff44335bf40b73e9b59e2d6 : SUCCESS in 3m 39s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/a7e0ab1ceaf74c64ae706b3be43b14b5 : SUCCESS in 2m 55s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/aa1017699a3d48b995221fe334c8d708 : SUCCESS in 3m 02s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/cca181c5b56f407ca2304f8e4c1c2b5e : SUCCESS in 3m 02s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/b028f1a164194ae28682d4eac0f7893f : SUCCESS in 3m 29s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/972a353dc78e4ad78b1e9774f1f75200 : SUCCESS in 4m 48s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/a0874ea054df4381860724d44c04929e : SUCCESS in 4m 02s","accounts_in_message":[],"_revision_number":5},{"id":"3e2145dbbdd5cd7ac8bd6ed8b8892233fdd39438","author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"date":"2019-11-22 20:50:51.000000000","message":"Patch Set 5:\n\n(5 comments)\n\nMostly nits inline, but I would like to find a way to report all of the over-limit quotas back to the user. That doesn\u0027t really affect the API so it could be done as a followup if that would help move this along.","accounts_in_message":[],"_revision_number":5},{"id":"8c286b411d8d596bffcb0b84bc27bb916b4db9c2","author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"date":"2019-11-25 10:21:02.000000000","message":"Patch Set 5:\n\n(4 comments)","accounts_in_message":[],"_revision_number":5},{"id":"ad2fd26522076360733ef367d0656b92f7011dbf","author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"date":"2019-11-25 10:55:12.000000000","message":"Uploaded patch set 6.","accounts_in_message":[],"_revision_number":6},{"id":"5d0871a1a39e1acf3c3301c89c061e7c7b04693a","author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"date":"2019-11-25 11:29:03.000000000","message":"Uploaded patch set 7.","accounts_in_message":[],"_revision_number":7},{"id":"09f249b2f98421fba0b6cebba5f4ceecaa6ffc1a","author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"date":"2019-11-25 12:23:15.000000000","message":"Uploaded patch set 8.","accounts_in_message":[],"_revision_number":8},{"id":"e5e0ca0362645a6d61400341fa8fb848ef66de1f","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-11-25 14:12:20.000000000","message":"Patch Set 8: Verified+1\n\nBuild succeeded (check pipeline).\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/850d98ebedcb4b05be3f07edd5ca06be : SUCCESS in 2m 57s\n- tempest-full https://zuul.opendev.org/t/openstack/build/6d3fcf23311a470ebdbcb6ba2deb734a : SUCCESS in 1h 37m 50s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/2f1b58e589d74f9fab40a9e7d3f02989 : SUCCESS in 1h 25m 40s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/2248f522c42f47cc948273d1f91af9d0 : SUCCESS in 3m 51s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/7940a71adfff4f90877f8beffa915818 : SUCCESS in 3m 45s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/0f387c7e820a4a22a103755d958b8fe5 : SUCCESS in 4m 38s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/27c05c2949b84eceb1845b32ec8ef922 : SUCCESS in 3m 55s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/a9c047f3c68345219e3242468ab9288c : SUCCESS in 4m 36s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/0ec0c77e49424df29090a093218bdb4a : SUCCESS in 4m 15s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/f12e53dd333d47ad9795895734c2af21 : SUCCESS in 4m 30s","accounts_in_message":[],"_revision_number":8},{"id":"21c6bcfe05a1fe3d2638544ace9c882ece53f4a2","author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"date":"2019-11-25 18:31:07.000000000","message":"Uploaded patch set 9.","accounts_in_message":[],"_revision_number":9},{"id":"031fe4e0243999ebd80e09b0f55b51e0c4d1a0b3","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-11-25 20:10:28.000000000","message":"Patch Set 9: Verified+1\n\nBuild succeeded (check pipeline).\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/eb45d5a6b6cc4b369181105b13da3d0e : SUCCESS in 2m 29s\n- tempest-full https://zuul.opendev.org/t/openstack/build/7a98c52bd1e049ab98a76bed8bc6ea29 : SUCCESS in 1h 32m 43s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/26f346bdaf544b27aa282e5909c20c5d : SUCCESS in 1h 18m 05s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/d47dc5de61a84c7480a35bc44b6d6a24 : SUCCESS in 3m 19s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/3363818b517f48daa28054aaea303acd : SUCCESS in 6m 19s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/457d3db3ff4149d3a17e747643d0dd02 : SUCCESS in 5m 09s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/35fa649971a742dcba1be3f8cb7d133b : SUCCESS in 2m 37s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/60ec2f3c10f441688143ffee967b8936 : SUCCESS in 4m 31s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/208ab1652efc4fde9b5594326b50cfc6 : SUCCESS in 3m 48s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/f41eeafde3ea43c4a9d01c7a5804e844 : SUCCESS in 3m 47s","accounts_in_message":[],"_revision_number":9},{"id":"751d16fde00a4cee6565d60746c7be1b4c7dfae6","author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"date":"2019-11-27 19:20:52.000000000","message":"Patch Set 9: Code-Review+2","accounts_in_message":[],"_revision_number":9},{"id":"33451e5d42ac86869131a6cbf65809851c8fe2dc","author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"date":"2019-11-27 19:35:27.000000000","message":"Patch Set 9:\n\n(1 comment)","accounts_in_message":[],"_revision_number":9},{"id":"1998a15abb13f13d8c4277069ad6a02d79c1c264","author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"date":"2019-11-27 19:44:18.000000000","message":"Patch Set 9:\n\n(1 comment)","accounts_in_message":[],"_revision_number":9},{"id":"2264ba7972a31ab6c2f5bdd6e0871daa80a46aec","author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"date":"2019-11-27 19:56:45.000000000","message":"Patch Set 9: Code-Review+2\n\n(2 comments)\n\nThanks!","accounts_in_message":[],"_revision_number":9},{"id":"51296073405e00c9dca942e7a0140bf9162681d1","author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"date":"2019-12-02 10:57:27.000000000","message":"Patch Set 9: Code-Review+2","accounts_in_message":[],"_revision_number":9},{"id":"8b7cbf09e16c363d36ac86525e6c9bc77b8f6b11","author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"date":"2019-12-02 15:53:50.000000000","message":"Patch Set 9: Workflow+1","accounts_in_message":[],"_revision_number":9},{"id":"26e0372dfb7775e6d395e6e64e80b8fb1e61d774","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-12-02 15:54:31.000000000","message":"Patch Set 9: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":9},{"id":"f70298b8c031e2c1ead54b03f06dd37913e4acdb","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-12-02 17:43:17.000000000","message":"Patch Set 9: Verified-2\n\nThis change depends on a change that failed to merge.","accounts_in_message":[],"_revision_number":9},{"id":"f4d39f2152ee86f9cda60b5fd1e25ad1d9879994","author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"date":"2019-12-05 17:23:10.000000000","message":"Patch Set 9:\n\nrecheck","accounts_in_message":[],"_revision_number":9},{"id":"a77ac1c5242cd8adae45fff275e4dc151275fb1a","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-12-05 18:50:58.000000000","message":"Patch Set 9: Verified+1\n\nBuild succeeded (check pipeline).\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/fc0e9a830b9d44008213b08888e1d855 : SUCCESS in 2m 19s\n- tempest-full https://zuul.opendev.org/t/openstack/build/3cb32a00301d4c31af0ba01343112d6e : SUCCESS in 1h 22m 28s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/a610b4c83dc54d77821aa01fc1a16d2b : SUCCESS in 1h 21m 27s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/f7c5a7f443cd4e7fa5324a1476e49867 : SUCCESS in 3m 19s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/df81d096170047a1a039f632f73551b2 : SUCCESS in 3m 47s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/5028c5803fce4d00a2027c1981b79fe0 : SUCCESS in 3m 11s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/23d4d179e60a42fc854ab202c4285e95 : SUCCESS in 3m 18s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/7c03b2942a9945f5ad7066bd7e909f44 : SUCCESS in 5m 01s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/9fa2001709ca4769b07a6432512e9bfb : SUCCESS in 4m 37s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/ab37c700440e4894abd768735fb9286b : SUCCESS in 3m 26s\n- oslo-limit-functional-devstack https://zuul.opendev.org/t/openstack/build/d456e38b1672465986bfe662f67e0bdb : SUCCESS in 34m 39s","accounts_in_message":[],"_revision_number":9},{"id":"cf36b0aa2bbcb5b2df5387f64b8479c5a5f48782","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-12-05 18:51:10.000000000","message":"Patch Set 9: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":9},{"id":"e91ba8a04e9efa59d81e5ee6b8abf9fbb258fbcd","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-12-05 20:21:06.000000000","message":"Patch Set 9: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- requirements-check https://zuul.opendev.org/t/openstack/build/7367398448c749ed85fb204258ff03c3 : SUCCESS in 3m 07s\n- tempest-full https://zuul.opendev.org/t/openstack/build/d5cc3b4124624da789af9dd3a4c21e73 : SUCCESS in 1h 24m 30s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/c379065dd1874f9fbc54eb60a16c99e3 : SUCCESS in 1h 24m 04s\n- openstack-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/c49ae6c6ccd04436919f2703916b1062 : SUCCESS in 3m 25s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/7cc2ce86bc1146ccb3b1cb6cd49fc8cc : SUCCESS in 3m 33s\n- openstack-tox-py27 https://zuul.opendev.org/t/openstack/build/79f520daddaf40acb0c08e95a520bee8 : SUCCESS in 3m 02s\n- openstack-tox-py36 https://zuul.opendev.org/t/openstack/build/3ce01f2f4b2f489189871cc7d560e2bd : SUCCESS in 4m 47s\n- openstack-tox-py37 https://zuul.opendev.org/t/openstack/build/5545cf81fa4f4bf5b06140f472b540d9 : SUCCESS in 4m 36s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/0b2aa98d49a84fdc9c69eb4620d9008a : SUCCESS in 3m 19s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/7507c9cfece048a2aa730b534b9ae7a4 : SUCCESS in 3m 25s\n- oslo-limit-functional-devstack https://zuul.opendev.org/t/openstack/build/33947f8b57a2467eb526d28202ae6037 : SUCCESS in 31m 14s","accounts_in_message":[],"_revision_number":9},{"id":"d0d848b5b5db5bb5dce66c65d60b4a1c4964f0f1","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-12-05 20:21:06.000000000","message":"Change has been successfully merged by Zuul","accounts_in_message":[],"_revision_number":9},{"id":"9753ce866ead47320dd2ef5dd828b2325269f5ed","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-12-05 20:22:39.000000000","message":"Patch Set 9:\n\nBuild succeeded (promote pipeline).\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/b0d144a21df14708ae394785a7e2efcd : SUCCESS in 1m 05s\n- promote-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/5594f26ea4f54859b108066e776e49ae : SUCCESS in 1m 14s","accounts_in_message":[],"_revision_number":9}],"current_revision_number":9,"current_revision":"40ef2764a5b8483103ce4d7b8d390b4e5d643d79","revisions":{"5edbbf0660cba283384381e30f69fa67c7be46d6":{"kind":"REWORK","_number":1,"created":"2019-11-20 22:10:42.000000000","uploader":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"ref":"refs/changes/10/695310/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.limit","ref":"refs/changes/10/695310/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/1"}}},"commit":{"parents":[{"commit":"91ca7b0e26afdf1dbf1a0e7ff298317e78e7a873","subject":"tox: Keeping going with docs","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/91ca7b0e26afdf1dbf1a0e7ff298317e78e7a873"}]}],"author":{"name":"wangxiyuan","email":"wangxiyuan@huawei.com","date":"2018-08-25 07:11:18.000000000","tz":480},"committer":{"name":"John Garbutt","email":"john@johngarbutt.com","date":"2019-11-20 22:08:09.000000000","tz":0},"subject":"Add basic enforcer","message":"Add basic enforcer\n\nTaking the Nova work as an example, looking to add a basic flat enforcer\nthat meets Nova\u0027s needs.\n\nThis builds on various previous prototypes from:\nCo-Authored-By: Lance Bragstad\u003clbragstad@gmail.com\u003e\nCo-Authored-By: wangxiyuan \u003cwangxiyuan@huawei.com\u003e\n\nChange-Id: I294a922ea80af673291c991f07a4a203f25c289d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/5edbbf0660cba283384381e30f69fa67c7be46d6"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/5edbbf0660cba283384381e30f69fa67c7be46d6"}]},"branch":"refs/heads/master"},"6c7628b5a555f530430490e8c8b37f84c20d2253":{"kind":"NO_CHANGE","_number":2,"created":"2019-11-20 22:23:03.000000000","uploader":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"ref":"refs/changes/10/695310/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.limit","ref":"refs/changes/10/695310/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/2"}}},"commit":{"parents":[{"commit":"91ca7b0e26afdf1dbf1a0e7ff298317e78e7a873","subject":"tox: Keeping going with docs","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/91ca7b0e26afdf1dbf1a0e7ff298317e78e7a873"}]}],"author":{"name":"John Garbutt","email":"john@johngarbutt.com","date":"2019-11-20 22:22:48.000000000","tz":0},"committer":{"name":"John Garbutt","email":"john@johngarbutt.com","date":"2019-11-20 22:22:48.000000000","tz":0},"subject":"Add basic enforcer","message":"Add basic enforcer\n\nTaking the Nova work as an example, looking to add a basic flat enforcer\nthat meets Nova\u0027s needs.\n\nThis builds on various previous prototypes from:\nCo-Authored-By: Lance Bragstad\u003clbragstad@gmail.com\u003e\nCo-Authored-By: wangxiyuan \u003cwangxiyuan@huawei.com\u003e\n\nChange-Id: I294a922ea80af673291c991f07a4a203f25c289d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/6c7628b5a555f530430490e8c8b37f84c20d2253"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/6c7628b5a555f530430490e8c8b37f84c20d2253"}]},"branch":"refs/heads/master"},"c0f480b11b1ad6b1e7658abdd199191bd3522e42":{"kind":"REWORK","_number":3,"created":"2019-11-21 16:11:08.000000000","uploader":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"ref":"refs/changes/10/695310/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.limit","ref":"refs/changes/10/695310/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/3"}}},"commit":{"parents":[{"commit":"91ca7b0e26afdf1dbf1a0e7ff298317e78e7a873","subject":"tox: Keeping going with docs","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/91ca7b0e26afdf1dbf1a0e7ff298317e78e7a873"}]}],"author":{"name":"John Garbutt","email":"john@johngarbutt.com","date":"2019-11-20 22:22:48.000000000","tz":0},"committer":{"name":"John Garbutt","email":"john@johngarbutt.com","date":"2019-11-21 16:10:53.000000000","tz":0},"subject":"Add flat enforcer","message":"Add flat enforcer\n\nTaking the Nova work as an example, looking to add a basic flat enforcer\nthat meets Nova\u0027s needs.\n\nThe user of the Enforce provides a callback. You can see an example of\nthe callback in the unit tests:\n\n  def fake_callback(project_id, resources):\n    return {\n      \"a\": 5,\n      \"b\": 10,\n      \"c\": 0,\n    }\n\nIn the code where you want to check if you increase the amount of\nresources that are being consumed, you can make this call:\n\n   enforcer \u003d limit.Enforcer(fake_callback)\n   enforcer.enforce(project_id, {\"a\": 5})\n\nThe enforce function looks up the limits that apply for the given\nproject_id, uses the callback to count the current usage. The proposed\nusage is then calculated be adding the delta and the current usage\ntogether. This is compared to any limits that apply.\n\nIf you later want to check if you have races that mean you are\nover your limit, you can do this call:\n\n   enforcer.enforce(project_id, {\u0027a\u0027: 0})\n\nSummary of key design points:\n\n* single set of logic to enforce limits shared between all projects\n  that adopt unified limits\n\n* interface should work for both flat and strict-two-level enforcement\n\n* it is assumed that oslo.limit will control which type of enforcement\n  is being applied\n\n* callback lists all resources that need counting\n  for the given project_id, in Nova this helps limit\n  the number of API calls made to placement\n\n* allows to check if proposed additional usage means you are over\n  your limit, and also double check if the current usages means\n  you are over quota\n\n* if the code is checking a resource where you do not have a\n  registered limit, we default to a limit of zero, i.e. no\n  resources can be created unless you set that registered limit\n  There will be an appropriate warning logged to help the operator\n  understand what needs to be setup in keystone.\n\nThis builds on various previous prototypes from:\nCo-Authored-By: Lance Bragstad\u003clbragstad@gmail.com\u003e\nCo-Authored-By: wangxiyuan \u003cwangxiyuan@huawei.com\u003e\n\nChange-Id: I294a922ea80af673291c991f07a4a203f25c289d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/c0f480b11b1ad6b1e7658abdd199191bd3522e42"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/c0f480b11b1ad6b1e7658abdd199191bd3522e42"}]},"branch":"refs/heads/master"},"921c448389cb2e844fb34abd8db7f7a984ca3fa8":{"kind":"REWORK","_number":4,"created":"2019-11-22 13:52:09.000000000","uploader":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"ref":"refs/changes/10/695310/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.limit","ref":"refs/changes/10/695310/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/4"}}},"commit":{"parents":[{"commit":"91ca7b0e26afdf1dbf1a0e7ff298317e78e7a873","subject":"tox: Keeping going with docs","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/91ca7b0e26afdf1dbf1a0e7ff298317e78e7a873"}]}],"author":{"name":"John Garbutt","email":"john@johngarbutt.com","date":"2019-11-20 22:22:48.000000000","tz":0},"committer":{"name":"John Garbutt","email":"john@johngarbutt.com","date":"2019-11-22 13:52:01.000000000","tz":0},"subject":"Add flat enforcer","message":"Add flat enforcer\n\nTaking the Nova work as an example, looking to add a basic flat enforcer\nthat meets Nova\u0027s needs.\n\nThe user of the Enforce provides a callback. You can see an example of\nthe callback in the unit tests:\n\n  def fake_callback(project_id, resources):\n    return {\n      \"a\": 5,\n      \"b\": 10,\n      \"c\": 0,\n    }\n\nIn the code where you want to check if you increase the amount of\nresources that are being consumed, you can make this call:\n\n   enforcer \u003d limit.Enforcer(fake_callback)\n   enforcer.enforce(project_id, {\"a\": 5})\n\nThe enforce function looks up the limits that apply for the given\nproject_id, uses the callback to count the current usage. The proposed\nusage is then calculated be adding the delta and the current usage\ntogether. This is compared to any limits that apply.\n\nIf you later want to check if you have races that mean you are\nover your limit, you can do this call:\n\n   enforcer.enforce(project_id, {\u0027a\u0027: 0})\n\nSummary of key design points:\n\n* single set of logic to enforce limits shared between all projects\n  that adopt unified limits\n\n* interface should work for both flat and strict-two-level enforcement\n\n* it is assumed that oslo.limit will control which type of enforcement\n  is being applied\n\n* callback lists all resources that need counting\n  for the given project_id, in Nova this helps limit\n  the number of API calls made to placement\n\n* allows to check if proposed additional usage means you are over\n  your limit, and also double check if the current usages means\n  you are over quota\n\n* if the code is checking a resource where you do not have a\n  registered limit, we default to a limit of zero, i.e. no\n  resources can be created unless you set that registered limit\n  There will be an appropriate warning logged to help the operator\n  understand what needs to be setup in keystone.\n\nThis builds on various previous prototypes from:\nCo-Authored-By: Lance Bragstad\u003clbragstad@gmail.com\u003e\nCo-Authored-By: wangxiyuan \u003cwangxiyuan@huawei.com\u003e\n\nChange-Id: I294a922ea80af673291c991f07a4a203f25c289d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/921c448389cb2e844fb34abd8db7f7a984ca3fa8"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/921c448389cb2e844fb34abd8db7f7a984ca3fa8"}]},"branch":"refs/heads/master"},"dd70d1a331efcbc0eaf44134739d0ace8fa94b50":{"kind":"REWORK","_number":5,"created":"2019-11-22 16:59:18.000000000","uploader":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"ref":"refs/changes/10/695310/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.limit","ref":"refs/changes/10/695310/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/5"}}},"commit":{"parents":[{"commit":"b07d36cd721dfaf35a8e10209c975e77b45da5cf","subject":"Fetch limits from keystone","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/b07d36cd721dfaf35a8e10209c975e77b45da5cf"}]}],"author":{"name":"John Garbutt","email":"john@johngarbutt.com","date":"2019-11-20 22:22:48.000000000","tz":0},"committer":{"name":"John Garbutt","email":"john@johngarbutt.com","date":"2019-11-22 16:59:00.000000000","tz":0},"subject":"Add flat enforcer","message":"Add flat enforcer\n\nTaking the Nova work as an example, looking to add a basic flat enforcer\nthat meets Nova\u0027s needs.\n\nThe user of the Enforce provides a callback. You can see an example of\nthe callback in the unit tests:\n\n  def fake_callback(project_id, resources):\n    return {\n      \"a\": 5,\n      \"b\": 10,\n      \"c\": 0,\n    }\n\nIn the code where you want to check if you increase the amount of\nresources that are being consumed, you can make this call:\n\n   enforcer \u003d limit.Enforcer(fake_callback)\n   enforcer.enforce(project_id, {\"a\": 5})\n\nThe enforce function looks up the limits that apply for the given\nproject_id, uses the callback to count the current usage. The proposed\nusage is then calculated be adding the delta and the current usage\ntogether. This is compared to any limits that apply.\n\nIf you later want to check if you have races that mean you are\nover your limit, you can do this call:\n\n   enforcer.enforce(project_id, {\u0027a\u0027: 0})\n\nSummary of key design points:\n\n* single set of logic to enforce limits shared between all projects\n  that adopt unified limits\n\n* interface should work for both flat and strict-two-level enforcement\n\n* it is assumed that oslo.limit will control which type of enforcement\n  is being applied\n\n* callback lists all resources that need counting\n  for the given project_id, in Nova this helps limit\n  the number of API calls made to placement\n\n* allows to check if proposed additional usage means you are over\n  your limit, and also double check if the current usages means\n  you are over quota\n\n* if the code is checking a resource where you do not have a\n  registered limit, we default to a limit of zero, i.e. no\n  resources can be created unless you set that registered limit\n  There will be an appropriate warning logged to help the operator\n  understand what needs to be setup in keystone.\n\nThis builds on various previous prototypes from:\nCo-Authored-By: Lance Bragstad\u003clbragstad@gmail.com\u003e\nCo-Authored-By: wangxiyuan \u003cwangxiyuan@huawei.com\u003e\n\nChange-Id: I294a922ea80af673291c991f07a4a203f25c289d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/dd70d1a331efcbc0eaf44134739d0ace8fa94b50"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/dd70d1a331efcbc0eaf44134739d0ace8fa94b50"}]},"branch":"refs/heads/master"},"8a4db5e1d85329c997251c038b9986b79b6c9cbd":{"kind":"REWORK","_number":6,"created":"2019-11-25 10:55:12.000000000","uploader":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"ref":"refs/changes/10/695310/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.limit","ref":"refs/changes/10/695310/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/6"}}},"commit":{"parents":[{"commit":"69da5756ea8b3ba1bafa3a66e3678ec3da1e7b41","subject":"Fetch limits from keystone","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/69da5756ea8b3ba1bafa3a66e3678ec3da1e7b41"}]}],"author":{"name":"John Garbutt","email":"john@johngarbutt.com","date":"2019-11-20 22:22:48.000000000","tz":0},"committer":{"name":"John Garbutt","email":"john@johngarbutt.com","date":"2019-11-25 10:54:49.000000000","tz":0},"subject":"Add flat enforcer","message":"Add flat enforcer\n\nTaking the Nova work as an example, looking to add a basic flat enforcer\nthat meets Nova\u0027s needs.\n\nThe user of the Enforce provides a callback. You can see an example of\nthe callback in the unit tests:\n\n  def fake_callback(project_id, resources):\n    return {\n      \"a\": 5,\n      \"b\": 10,\n      \"c\": 0,\n    }\n\nIn the code where you want to check if you increase the amount of\nresources that are being consumed, you can make this call:\n\n   enforcer \u003d limit.Enforcer(fake_callback)\n   enforcer.enforce(project_id, {\"a\": 5})\n\nThe enforce function looks up the limits that apply for the given\nproject_id, uses the callback to count the current usage. The proposed\nusage is then calculated be adding the delta and the current usage\ntogether. This is compared to any limits that apply.\n\nIf you later want to check if you have races that mean you are\nover your limit, you can do this call:\n\n   enforcer.enforce(project_id, {\u0027a\u0027: 0})\n\nSummary of key design points:\n\n* single set of logic to enforce limits shared between all projects\n  that adopt unified limits\n\n* interface should work for both flat and strict-two-level enforcement\n\n* it is assumed that oslo.limit will control which type of enforcement\n  is being applied\n\n* callback lists all resources that need counting\n  for the given project_id, in Nova this helps limit\n  the number of API calls made to placement\n\n* allows to check if proposed additional usage means you are over\n  your limit, and also double check if the current usages means\n  you are over quota\n\n* if the code is checking a resource where you do not have a\n  registered limit, we default to a limit of zero, i.e. no\n  resources can be created unless you set that registered limit\n  There will be an appropriate warning logged to help the operator\n  understand what needs to be setup in keystone.\n\nThis builds on various previous prototypes from:\nCo-Authored-By: Lance Bragstad\u003clbragstad@gmail.com\u003e\nCo-Authored-By: wangxiyuan \u003cwangxiyuan@huawei.com\u003e\n\nChange-Id: I294a922ea80af673291c991f07a4a203f25c289d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/8a4db5e1d85329c997251c038b9986b79b6c9cbd"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/8a4db5e1d85329c997251c038b9986b79b6c9cbd"}]},"branch":"refs/heads/master"},"94a735863694b3e78ac720b37629c16fbc5bba3a":{"kind":"REWORK","_number":7,"created":"2019-11-25 11:29:03.000000000","uploader":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"ref":"refs/changes/10/695310/7","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.limit","ref":"refs/changes/10/695310/7","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/7"}}},"commit":{"parents":[{"commit":"69da5756ea8b3ba1bafa3a66e3678ec3da1e7b41","subject":"Fetch limits from keystone","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/69da5756ea8b3ba1bafa3a66e3678ec3da1e7b41"}]}],"author":{"name":"John Garbutt","email":"john@johngarbutt.com","date":"2019-11-20 22:22:48.000000000","tz":0},"committer":{"name":"John Garbutt","email":"john@johngarbutt.com","date":"2019-11-25 11:28:51.000000000","tz":0},"subject":"Add flat enforcer","message":"Add flat enforcer\n\nTaking the Nova work as an example, looking to add a basic flat enforcer\nthat meets Nova\u0027s needs.\n\nThe user of the Enforce provides a callback. You can see an example of\nthe callback in the unit tests:\n\n  def fake_callback(project_id, resources):\n    return {\n      \"a\": 5,\n      \"b\": 10,\n      \"c\": 0,\n    }\n\nIn the code where you want to check if you increase the amount of\nresources that are being consumed, you can make this call:\n\n   enforcer \u003d limit.Enforcer(fake_callback)\n   enforcer.enforce(project_id, {\"a\": 5})\n\nThe enforce function looks up the limits that apply for the given\nproject_id, uses the callback to count the current usage. The proposed\nusage is then calculated be adding the delta and the current usage\ntogether. This is compared to any limits that apply.\n\nIf you later want to check if you have races that mean you are\nover your limit, you can do this call:\n\n   enforcer.enforce(project_id, {\u0027a\u0027: 0})\n\nSummary of key design points:\n\n* single set of logic to enforce limits shared between all projects\n  that adopt unified limits\n\n* interface should work for both flat and strict-two-level enforcement\n\n* it is assumed that oslo.limit will control which type of enforcement\n  is being applied\n\n* callback lists all resources that need counting\n  for the given project_id, in Nova this helps limit\n  the number of API calls made to placement\n\n* allows to check if proposed additional usage means you are over\n  your limit, and also double check if the current usages means\n  you are over quota\n\n* if the code is checking a resource where you do not have a\n  registered limit, we default to a limit of zero, i.e. no\n  resources can be created unless you set that registered limit\n  There will be an appropriate warning logged to help the operator\n  understand what needs to be setup in keystone.\n\nThis builds on various previous prototypes from:\nCo-Authored-By: Lance Bragstad\u003clbragstad@gmail.com\u003e\nCo-Authored-By: wangxiyuan \u003cwangxiyuan@huawei.com\u003e\n\nChange-Id: I294a922ea80af673291c991f07a4a203f25c289d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/94a735863694b3e78ac720b37629c16fbc5bba3a"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/94a735863694b3e78ac720b37629c16fbc5bba3a"}]},"branch":"refs/heads/master"},"47144ab60449b2b4cff5346778fa92bf3553edb5":{"kind":"REWORK","_number":8,"created":"2019-11-25 12:23:15.000000000","uploader":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"ref":"refs/changes/10/695310/8","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.limit","ref":"refs/changes/10/695310/8","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/8 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/8 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/8 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/8"}}},"commit":{"parents":[{"commit":"69da5756ea8b3ba1bafa3a66e3678ec3da1e7b41","subject":"Fetch limits from keystone","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/69da5756ea8b3ba1bafa3a66e3678ec3da1e7b41"}]}],"author":{"name":"John Garbutt","email":"john@johngarbutt.com","date":"2019-11-20 22:22:48.000000000","tz":0},"committer":{"name":"John Garbutt","email":"john@johngarbutt.com","date":"2019-11-25 12:23:06.000000000","tz":0},"subject":"Add flat enforcer","message":"Add flat enforcer\n\nTaking the Nova work as an example, looking to add a basic flat enforcer\nthat meets Nova\u0027s needs.\n\nThe user of the Enforce provides a callback. You can see an example of\nthe callback in the unit tests:\n\n  def fake_callback(project_id, resources):\n    return {\n      \"a\": 5,\n      \"b\": 10,\n      \"c\": 0,\n    }\n\nIn the code where you want to check if you increase the amount of\nresources that are being consumed, you can make this call:\n\n   enforcer \u003d limit.Enforcer(fake_callback)\n   enforcer.enforce(project_id, {\"a\": 5})\n\nThe enforce function looks up the limits that apply for the given\nproject_id, uses the callback to count the current usage. The proposed\nusage is then calculated be adding the delta and the current usage\ntogether. This is compared to any limits that apply.\n\nIf you later want to check if you have races that mean you are\nover your limit, you can do this call:\n\n   enforcer.enforce(project_id, {\u0027a\u0027: 0})\n\nSummary of key design points:\n\n* single set of logic to enforce limits shared between all projects\n  that adopt unified limits\n\n* interface should work for both flat and strict-two-level enforcement\n\n* it is assumed that oslo.limit will control which type of enforcement\n  is being applied\n\n* callback lists all resources that need counting\n  for the given project_id, in Nova this helps limit\n  the number of API calls made to placement\n\n* allows to check if proposed additional usage means you are over\n  your limit, and also double check if the current usages means\n  you are over quota\n\n* if the code is checking a resource where you do not have a\n  registered limit, we default to a limit of zero, i.e. no\n  resources can be created unless you set that registered limit\n  There will be an appropriate warning logged to help the operator\n  understand what needs to be setup in keystone.\n\nThis builds on various previous prototypes from:\nCo-Authored-By: Lance Bragstad\u003clbragstad@gmail.com\u003e\nCo-Authored-By: wangxiyuan \u003cwangxiyuan@huawei.com\u003e\n\nChange-Id: I294a922ea80af673291c991f07a4a203f25c289d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/47144ab60449b2b4cff5346778fa92bf3553edb5"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/47144ab60449b2b4cff5346778fa92bf3553edb5"}]},"branch":"refs/heads/master"},"40ef2764a5b8483103ce4d7b8d390b4e5d643d79":{"kind":"REWORK","_number":9,"created":"2019-11-25 18:31:07.000000000","uploader":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"ref":"refs/changes/10/695310/9","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.limit","ref":"refs/changes/10/695310/9","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/9 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/9 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/9 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.limit refs/changes/10/695310/9"}}},"commit":{"parents":[{"commit":"a044cd9d70bc723cd3b3a46a7aaca82f9a0c4ed9","subject":"Fetch unified limits from keystone","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/a044cd9d70bc723cd3b3a46a7aaca82f9a0c4ed9"}]}],"author":{"name":"John Garbutt","email":"john@johngarbutt.com","date":"2019-11-20 22:22:48.000000000","tz":0},"committer":{"name":"John Garbutt","email":"john@johngarbutt.com","date":"2019-11-25 18:30:28.000000000","tz":0},"subject":"Add flat enforcer","message":"Add flat enforcer\n\nTaking the Nova work as an example, looking to add a basic flat enforcer\nthat meets Nova\u0027s needs.\n\nThe user of the Enforce provides a callback. You can see an example of\nthe callback in the unit tests:\n\n  def fake_callback(project_id, resources):\n    return {\n      \"a\": 5,\n      \"b\": 10,\n      \"c\": 0,\n    }\n\nIn the code where you want to check if you increase the amount of\nresources that are being consumed, you can make this call:\n\n   enforcer \u003d limit.Enforcer(fake_callback)\n   enforcer.enforce(project_id, {\"a\": 5})\n\nThe enforce function looks up the limits that apply for the given\nproject_id, uses the callback to count the current usage. The proposed\nusage is then calculated be adding the delta and the current usage\ntogether. This is compared to any limits that apply.\n\nIf you later want to check if you have races that mean you are\nover your limit, you can do this call:\n\n   enforcer.enforce(project_id, {\u0027a\u0027: 0})\n\nSummary of key design points:\n\n* single set of logic to enforce limits shared between all projects\n  that adopt unified limits\n\n* interface should work for both flat and strict-two-level enforcement\n\n* it is assumed that oslo.limit will control which type of enforcement\n  is being applied\n\n* callback lists all resources that need counting\n  for the given project_id, in Nova this helps limit\n  the number of API calls made to placement\n\n* allows to check if proposed additional usage means you are over\n  your limit, and also double check if the current usages means\n  you are over quota\n\n* if the code is checking a resource where you do not have a\n  registered limit, we default to a limit of zero, i.e. no\n  resources can be created unless you set that registered limit\n  There will be an appropriate warning logged to help the operator\n  understand what needs to be setup in keystone.\n\nThis builds on various previous prototypes from:\nCo-Authored-By: Lance Bragstad\u003clbragstad@gmail.com\u003e\nCo-Authored-By: wangxiyuan \u003cwangxiyuan@huawei.com\u003e\n\nChange-Id: I294a922ea80af673291c991f07a4a203f25c289d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/40ef2764a5b8483103ce4d7b8d390b4e5d643d79"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.limit/commit/40ef2764a5b8483103ce4d7b8d390b4e5d643d79"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
