)]}'
{"id":"openstack%2Fplacement~657419","triplet_id":"openstack%2Fplacement~master~Ia44b0922d151695d406883262e891bd932536f38","project":"openstack/placement","branch":"master","topic":"task/2005575-30781","hashtags":[],"change_id":"Ia44b0922d151695d406883262e891bd932536f38","subject":"Allow [a-zA-Z0-9_-]{1,64} for request group suffix","status":"MERGED","created":"2019-05-06 17:58:04.000000000","updated":"2019-05-29 02:53:34.000000000","submitted":"2019-05-29 02:53:34.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":51,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"657419-1559098414356-45b1259d","meta_rev_id":"3a75b4243d6a237a5522a38c94d186f9b5d108ca","_number":657419,"virtual_id_number":657419,"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":2,"date":"2019-05-29 02:53:34.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},{"value":0,"date":"2019-05-28 16:16:56.000000000","_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},{"value":0,"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},{"value":0,"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},{"value":0,"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"}],"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":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":2,"date":"2019-05-28 13:52:47.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":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},{"value":0,"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},{"value":2,"date":"2019-05-21 10:26:14.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},{"value":1,"date":"2019-05-21 15:18:20.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"}],"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":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":1,"date":"2019-05-28 13:52:47.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":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},{"value":0,"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},{"value":0,"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},{"value":0,"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},{"value":0,"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},{"value":0,"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},{"value":0,"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},{"value":0,"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"}],"values":{" 0":"Default Priority","+1":"Contributor Review Promise","+2":"Core Review Promise"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},{"_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":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2019-05-20 22:58:01.000000000","updated_by":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"reviewer":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"state":"REVIEWER"},{"updated":"2019-05-21 10:26:14.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-05-21 15:18:20.000000000","updated_by":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"reviewer":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"state":"REVIEWER"},{"updated":"2019-05-28 13:52:47.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-05-29 02:53:34.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":"03cd27585f830b146a937dbc72054679d909430d","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-05-06 17:58:04.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"baf2acea8eaf738bd98f3096d165c2c53410c1ab","author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"date":"2019-05-06 18:18:20.000000000","message":"Patch Set 1: Code-Review-1\n\n(4 comments)","accounts_in_message":[],"_revision_number":1},{"id":"09576bcefdc839a1bf6aff1c50faf06fa390afed","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-05-06 18:23:33.000000000","message":"Patch Set 1:\n\n(8 comments)\n\nplacement.schemas.allocation_candidate._GROUP_PAT_FMT would need to be changed to make this work from the API.","accounts_in_message":[],"_revision_number":1},{"id":"398c89975433aac4e1ac452173d9b8e0eeb77bb5","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-05-06 18:24:50.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"e88a224615ca41d2c4fbb4d6325be83718269dfb","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-05-06 19:17:29.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"e79087c6011eed16f43327b83cbb5ec4df68a481","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-05-06 19:18:07.000000000","message":"Uploaded patch set 3: Commit message was updated.","accounts_in_message":[],"_revision_number":3},{"id":"a0029923cce345f5b1f846eff3fcc7524773526b","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-05-06 19:20:49.000000000","message":"Patch Set 3:\n\nCool, this design wfm. Obviously still a WIP so not voting.","accounts_in_message":[],"_revision_number":3},{"id":"4d652f5bb7080cff8e004916e68945c41c83333b","author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"date":"2019-05-06 19:34:45.000000000","message":"Patch Set 3:\n\n(1 comment)\n\nMuch better. Still need better error messages for the pattern failures, though.","accounts_in_message":[],"_revision_number":3},{"id":"2f59fc9d7951ea0b407c3b4eff4183b5b56cb16c","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-05-06 19:39:57.000000000","message":"Patch Set 3:\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"5c28577ec675a6655d3e052072272da02489a252","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-05-06 20:38:28.000000000","message":"Patch Set 3:\n\n(3 comments)\n\n\u003e Much better. Still need better error messages for the pattern\n \u003e failures, though.\n\nFrom the API side the error message that a client who does a bag resoruces* will see something like:\n\n\u0027resources1a\u0027 does not match any of the regexes: \u0027^member_of([A-Z0-9_-]{1,32})?$\u0027, \u0027^required([A-Z0-9_-]{1,32})?$\u0027, \u0027^resources([A-Z0-9_-]{1,32})?$\u0027\n\nThat is: the 400 will be raised by schema validation, not the code in placement.lib (which has the generic message).\n\nI can adjust one of the tests to be more clear about the error message so where it happens is more clear.\n\nWhat I think we may want to consider (if we agree on it):\n\nTune this up, fix the docs, merge it independent of anythings else (and without a microversion).\n\nThen, when we implement required without resources, _that_ would be a microversion.\n\nIt doesn\u0027t really matter, making a microversion is no big deal. What I\u0027m more interested in is making sure we don\u0027t couple changes into a big stack.","accounts_in_message":[],"_revision_number":3},{"id":"c97ee8c616c6d8ff039fb9aa7d43df4ebdfe0b3d","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-05-06 20:42:01.000000000","message":"Uploaded patch set 4.","accounts_in_message":[],"_revision_number":4},{"id":"2b4912a29dde655793b241a0b9d81ff49581afbd","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-05-06 20:46:47.000000000","message":"Patch Set 4:\n\nWill let this sit while we resolve the discussion on ps3.\n\nThis change adds some tests to confirm the error message a bit better.","accounts_in_message":[],"_revision_number":4},{"id":"ce1c92764a2f77016844e32f425212399ffffda6","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-05-06 22:09:05.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\n\n- grenade-py3 http://logs.openstack.org/19/657419/4/check/grenade-py3/d38bfce/ : SUCCESS in 55m 56s\n- tempest-full-py3 http://logs.openstack.org/19/657419/4/check/tempest-full-py3/6862ccc/ : SUCCESS in 1h 25m 46s\n- openstack-tox-docs http://logs.openstack.org/19/657419/4/check/openstack-tox-docs/cee2e8b/html/ : SUCCESS in 3m 48s\n- openstack-tox-cover http://logs.openstack.org/19/657419/4/check/openstack-tox-cover/eb3c85d/cover/ : SUCCESS in 4m 54s\n- openstack-tox-lower-constraints http://logs.openstack.org/19/657419/4/check/openstack-tox-lower-constraints/cac28d9/ : SUCCESS in 4m 50s\n- openstack-tox-pep8 http://logs.openstack.org/19/657419/4/check/openstack-tox-pep8/1eaf271/ : SUCCESS in 4m 24s\n- openstack-tox-py27 http://logs.openstack.org/19/657419/4/check/openstack-tox-py27/c39b968/ : SUCCESS in 4m 09s\n- openstack-tox-py36 http://logs.openstack.org/19/657419/4/check/openstack-tox-py36/ebbf045/ : SUCCESS in 4m 19s\n- openstack-tox-py37 http://logs.openstack.org/19/657419/4/check/openstack-tox-py37/84b4a12/ : SUCCESS in 4m 31s\n- openstack-tox-functional http://logs.openstack.org/19/657419/4/check/openstack-tox-functional/73b1658/ : SUCCESS in 4m 42s\n- openstack-tox-functional-py36 http://logs.openstack.org/19/657419/4/check/openstack-tox-functional-py36/f292980/ : SUCCESS in 4m 37s\n- placement-nova-tox-functional-py36 http://logs.openstack.org/19/657419/4/check/placement-nova-tox-functional-py36/1983b2b/ : SUCCESS in 12m 16s\n- placement-perfload http://logs.openstack.org/19/657419/4/check/placement-perfload/7dbdcec/ : SUCCESS in 3m 18s (non-voting)","accounts_in_message":[],"_revision_number":4},{"id":"ddae05389188ac53c25675ef0314259057bd49e1","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-05-10 22:40:10.000000000","message":"Patch Set 4:\n\n(1 comment)","accounts_in_message":[],"_revision_number":4},{"id":"c8ef26f2eabafbc8e34bf46623904bd49143aa00","author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"date":"2019-05-13 16:13:44.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"84671fc6f773fd16083212179d0399414d44d896","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-05-16 11:29:24.000000000","message":"Patch Set 4:\n\n(1 comment)\n\nOne potential issue with limiting this to just uppercase is that we tend to use uuid in their lowercase form.\n\nIs it annoying to require people to do a transformation when creating a group name?\n\n(comment within is a note to self that I apparently made weeks ago and then didn\u0027t save, but is still relevant)","accounts_in_message":[],"_revision_number":4},{"id":"542bb55c565a32c33ac6470b5011d9d1ae27a49e","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-05-16 12:32:13.000000000","message":"Uploaded patch set 5.","accounts_in_message":[],"_revision_number":5},{"id":"c0ecf7518be872f0bfc973e53ae94d0916feb041","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-05-16 12:36:39.000000000","message":"Patch Set 5:\n\nCouple of issues to decide before we say groovy on this:\n\n* See my comment on ps4 about limitations of upper case\n* I\u0027ve done this without a microversion and explained why in the release note. This may not be satisfactory for everyone. We should reach wide agreement if this is okay.","accounts_in_message":[],"_revision_number":5},{"id":"06c4405f7e6bfe3fbe6afd5436796e44b71be6d3","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-05-16 13:40:59.000000000","message":"Patch Set 5: Code-Review-1\n\n(2 comments)\n\n\u003e Couple of issues to decide before we say groovy on this:\n\nWe should have an approved spec first too, I would imagine.\n\n\u003e See my comment on ps4 about limitations of upper case\n\nMakes sense to me, and so does Ed\u0027s rationale about distinguishing via case. I wouldn\u0027t oppose either way, but if I had to choose...\n\nI agree it would be nice if suffixes were always easily human-readable, but this is first and foremost an API for machines to talk to. Machines don\u0027t have trouble distinguishing resources1 from resourcesI from resourcesl etc. And the consumer of the API is still in control of making suffixes human-readable if and as they wish (like by using delimiters, or themselves sticking to always using uppercase). So I say we should target for common, non-pathological cases that we know about, and it sounds like lowercase UUIDs are in that category. So allowing lowercase seems like the better choice.\n\n\u003e I\u0027ve done this without a microversion and explained why in the release note. This may not be satisfactory for everyone. We should reach wide agreement if this is okay.\n\nYeah, the counterargument being that things that would have previously resulted in 400s would now get further and possibly \"succeed\". That kind of implies that someone\u0027s counting on getting a 400 from a bogus queryparam, which seems unlikely. Given where we are in the world right now, I\u0027m inclined to be liberal with this and let it happen without a microversion.\n\nI am going to downvote on the spec issue, though. Normally for API changes (which this is, microversion or no) a formal spec is required. But in this case I could probably get behind the equivalent of a \"specless blueprint\", however that works in sb. Extract (and update) the text currently in the spec draft [1] into {what? - a task? a story?} and agree to approve that (how? what\u0027s the equivalent to bp approval in sb?).\n\n[1] https://review.opendev.org/#/c/658510/2/doc/source/specs/train/approved/2005575-nested-magic.rst@44","accounts_in_message":[],"_revision_number":5},{"id":"3067b58492d54ce827df40398d7275df82bf00fd","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-05-16 14:06:43.000000000","message":"Patch Set 5: Verified+1\n\nBuild succeeded (check pipeline).\n\n- build-openstack-api-ref http://logs.openstack.org/19/657419/5/check/build-openstack-api-ref/c2ac75b/html/ : SUCCESS in 4m 03s\n- grenade-py3 http://logs.openstack.org/19/657419/5/check/grenade-py3/73231cb/ : SUCCESS in 53m 34s\n- tempest-full-py3 http://logs.openstack.org/19/657419/5/check/tempest-full-py3/180513b/ : SUCCESS in 1h 33m 58s\n- openstack-tox-docs http://logs.openstack.org/19/657419/5/check/openstack-tox-docs/863d287/html/ : SUCCESS in 4m 01s\n- openstack-tox-cover http://logs.openstack.org/19/657419/5/check/openstack-tox-cover/29303cb/cover/ : SUCCESS in 4m 20s\n- openstack-tox-lower-constraints http://logs.openstack.org/19/657419/5/check/openstack-tox-lower-constraints/297e826/ : SUCCESS in 4m 02s\n- openstack-tox-pep8 http://logs.openstack.org/19/657419/5/check/openstack-tox-pep8/c3d7964/ : SUCCESS in 3m 59s\n- openstack-tox-py27 http://logs.openstack.org/19/657419/5/check/openstack-tox-py27/05988a2/ : SUCCESS in 3m 59s\n- openstack-tox-py36 http://logs.openstack.org/19/657419/5/check/openstack-tox-py36/216687e/ : SUCCESS in 3m 52s\n- openstack-tox-py37 http://logs.openstack.org/19/657419/5/check/openstack-tox-py37/cd36176/ : SUCCESS in 4m 30s\n- build-openstack-releasenotes http://logs.openstack.org/19/657419/5/check/build-openstack-releasenotes/ad84fee/html/ : SUCCESS in 3m 12s\n- openstack-tox-functional http://logs.openstack.org/19/657419/5/check/openstack-tox-functional/6dc830e/ : SUCCESS in 4m 20s\n- openstack-tox-functional-py36 http://logs.openstack.org/19/657419/5/check/openstack-tox-functional-py36/30e6403/ : SUCCESS in 4m 10s\n- placement-nova-tox-functional-py36 http://logs.openstack.org/19/657419/5/check/placement-nova-tox-functional-py36/c6482ab/ : SUCCESS in 10m 00s\n- placement-perfload http://logs.openstack.org/19/657419/5/check/placement-perfload/1e6ef10/ : SUCCESS in 2m 59s (non-voting)","accounts_in_message":[],"_revision_number":5},{"id":"d3802b5b135a2f3b29c76de49d4727d6c6b75913","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-05-16 14:33:23.000000000","message":"Patch Set 5:\n\n(1 comment)\n\n\u003e (2 comments)\n \u003e \n \u003e \u003e Couple of issues to decide before we say groovy on this:\n \u003e \n \u003e We should have an approved spec first too, I would imagine.\n\nI\u0027m gonna go with \"not really\". Part of the reason for not doing this on a microversion is get it done ahead of and out sync with any of the other nested-magic related changes. But see also below for a bit more detail.\n\n \u003e So I say we should target for common,\n \u003e non-pathological cases that we know about, and it sounds like\n \u003e lowercase UUIDs are in that category. So allowing lowercase seems\n \u003e like the better choice.\n\nI\u0027m leaning this way too, but will until Ed and others can weigh in.\n\n \u003e Given where we\n \u003e are in the world right now, I\u0027m inclined to be liberal with this\n \u003e and let it happen without a microversion.\n\nPretty much what I was thinking.\n\n \u003e I am going to downvote on the spec issue, though. Normally for API\n \u003e changes (which this is, microversion or no) a formal spec is\n \u003e required.\n\nThat\u0027s a nova rule. Placement doesn\u0027t have a rule yet other than what\u0027s in the docs at https://docs.openstack.org/placement/latest/contributor/contributing.html#new-features where we say \"Once there is a clear need for a change, a story should be created in StoryBoard with a tag of rfe. Placement team members will evaluate the story to determine if a spec is required. If it is, a task to create the spec will be added to the story. At this time there are no hard and fast rules on what will require a spec.\"\n\nIn this case I\u0027ve interpreted that to mean: for the simple pieces of this that are relatively well understood we don\u0027t need a spec beyond the story (2005575). The spec is for the parts that are confusing (of which there a fair few confusing pieces and thus the spec is a great place to build agreement) but the story is the ultimate authority and tracker.\n\n \u003e and agree to approve that (how? what\u0027s\n \u003e the equivalent to bp approval in sb?).\n\nUntil we have a situation where we have too many people trying to do too much work to be able to review it well (which is part (but not all) of what led to the nova processes I\u0027d hope that the equivalent of \"approval\" is talking about it.\n\nIf we need a signal (I\u0027m not sure we do given the small size of the team and the presence of aide-mémoires like the pupdate) in storyboard that an \u0027rfe\u0027 story has been approved it is the presence of tasks created by cores.","accounts_in_message":[],"_revision_number":5},{"id":"6d7053881d372a1eae4e5981a97030b8b5a7fa0c","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-05-16 16:03:45.000000000","message":"Patch Set 5:\n\n(1 comment)\n\n\u003e Placement team members will evaluate the story to determine if a spec is required. \n\nYeah, I guess that\u0027s what\u0027s happening here.\n\nAs long as\n\na) The design outline is documented cohesively (so having to read a disjointed chain of patch set comments and deltas doesn\u0027t count) with motivations for decisions made (ditto)\n\nb) That content doesn\u0027t get \"too long for a story\" (I\u0027ll know it when I see it?)\n\nI\u0027m fine with not requiring a spec.\n\nI think probably \"microversion requires spec\" is a good rule of thumb to go forward with in general, though. (Doesn\u0027t imply the converse.)","accounts_in_message":[],"_revision_number":5},{"id":"bd744d485c2e4230d05b662ee307eb75e25c1e40","author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"date":"2019-05-16 20:53:36.000000000","message":"Patch Set 5: Code-Review-1\n\n(3 comments)","accounts_in_message":[],"_revision_number":5},{"id":"7bd83ff100082cbddc7a05c1ef8552c6d3e62499","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-05-16 21:54:17.000000000","message":"Patch Set 5:\n\n(2 comments)","accounts_in_message":[],"_revision_number":5},{"id":"752eac45136b9edb70a58153798c9dd2be83c414","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-05-17 09:36:14.000000000","message":"Patch Set 5: Workflow-1\n\n(2 comments)\n\nThanks for the thoughtful reviews.\n\nI\u0027ll make a new version that:\n\n* [A-Za-z0-9_-]{1,64} (and case sensitive)\n* microversioned\n* tunes the docs appropriately\n\nThere are two questions about preferences within on which input is desired.","accounts_in_message":[],"_revision_number":5},{"id":"71286e75f3c14b8ea0f06abb81d404804891e3e3","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-05-17 16:04:27.000000000","message":"Patch Set 5:\n\n(2 comments)","accounts_in_message":[],"_revision_number":5},{"id":"1a85fcc88d37483696c51da28fa0b9ce0f6fe362","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-05-20 16:41:50.000000000","message":"Uploaded patch set 6.","accounts_in_message":[],"_revision_number":6},{"id":"e2da6db5b983f658a482fff6b7437ad2716c932f","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-05-20 22:06:38.000000000","message":"Patch Set 6: Code-Review+2\n\n(5 comments)\n\nRockin.","accounts_in_message":[],"_revision_number":6},{"id":"bc76b25f40aa00199dfeb2657def36ffffc936b0","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-05-20 22:37:58.000000000","message":"Patch Set 6: Verified+1\n\nBuild succeeded (check pipeline).\n\n- build-openstack-api-ref http://logs.openstack.org/19/657419/6/check/build-openstack-api-ref/a50e767/html/ : SUCCESS in 4m 26s\n- grenade-py3 http://logs.openstack.org/19/657419/6/check/grenade-py3/9f5d752/ : SUCCESS in 48m 42s\n- tempest-full-py3 http://logs.openstack.org/19/657419/6/check/tempest-full-py3/19970d0/ : SUCCESS in 1h 49m 00s\n- openstack-tox-docs http://logs.openstack.org/19/657419/6/check/openstack-tox-docs/55464f0/html/ : SUCCESS in 5m 34s\n- openstack-tox-cover http://logs.openstack.org/19/657419/6/check/openstack-tox-cover/3783df6/cover/ : SUCCESS in 4m 54s\n- openstack-tox-lower-constraints http://logs.openstack.org/19/657419/6/check/openstack-tox-lower-constraints/8aa90c2/ : SUCCESS in 4m 37s\n- openstack-tox-pep8 http://logs.openstack.org/19/657419/6/check/openstack-tox-pep8/bcafb26/ : SUCCESS in 4m 15s\n- openstack-tox-py27 http://logs.openstack.org/19/657419/6/check/openstack-tox-py27/c02fa58/ : SUCCESS in 3m 57s\n- openstack-tox-py36 http://logs.openstack.org/19/657419/6/check/openstack-tox-py36/c258f19/ : SUCCESS in 4m 16s\n- openstack-tox-py37 http://logs.openstack.org/19/657419/6/check/openstack-tox-py37/5d09b15/ : SUCCESS in 4m 09s\n- build-openstack-releasenotes http://logs.openstack.org/19/657419/6/check/build-openstack-releasenotes/9b881a4/html/ : SUCCESS in 3m 59s\n- openstack-tox-functional http://logs.openstack.org/19/657419/6/check/openstack-tox-functional/de8c45b/ : SUCCESS in 4m 42s\n- openstack-tox-functional-py36 http://logs.openstack.org/19/657419/6/check/openstack-tox-functional-py36/41ba54b/ : SUCCESS in 4m 48s\n- placement-nova-tox-functional-py36 http://logs.openstack.org/19/657419/6/check/placement-nova-tox-functional-py36/23019d9/ : SUCCESS in 14m 59s\n- placement-perfload http://logs.openstack.org/19/657419/6/check/placement-perfload/d942ab6/ : SUCCESS in 3m 33s (non-voting)","accounts_in_message":[],"_revision_number":6},{"id":"4c6b50d53eaf0fa62ea931628db4eb12c5bdf44f","author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"date":"2019-05-20 22:58:01.000000000","message":"Patch Set 6:\n\nIs there a corresponding Nova patch or spec? If not, it will be good to add words on how all this gets used. Reference: [1]\n\n1. If a flavor request group (RG) has suffix \u0027_foo\u0027, and a Cyborg device profile references that, it is the operator\u0027s responsibility to embed that device profile only in a flavor that has the suffix \u0027_foo\u0027. Correct?\n2. How would the \u0027same_subtree\u0027 clause be specified? As part of the flavor? Could it be in a Neutron port request or Cyborg device profile?\n\n[1] https://storyboard.openstack.org/#!/story/2005575","accounts_in_message":[],"_revision_number":6},{"id":"a20c01eb0361056cd01c960f68d9e634eb6f44f6","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-05-21 10:07:50.000000000","message":"Uploaded patch set 7.","accounts_in_message":[],"_revision_number":7},{"id":"02d43df90c2f65003b9dea3912f68951d850dfed","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-05-21 10:26:14.000000000","message":"Patch Set 7: Code-Review+2","accounts_in_message":[],"_revision_number":7},{"id":"64c4d909a57a2423fd3ee6de16f570c6c6c53383","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-05-21 13:49:15.000000000","message":"Patch Set 7:\n\n\u003e Is there a corresponding Nova patch or spec?\n\nNo, there\u0027s not.\n\n\u003e If not, it will be good to add words on how all this gets used.\n\nI agree. We have a vague hand-wavey use case in the spec [2]. However, anything more specific doesn\u0027t really belong in placement IMO.\n\n\u003e 1. If a flavor request group (RG) has suffix \u0027_foo\u0027, and a Cyborg device profile references that, it is the operator\u0027s responsibility to embed that device profile only in a flavor that has the suffix \u0027_foo\u0027. Correct?\n\nSort of. See below.\n\n\u003e 2. How would the \u0027same_subtree\u0027 clause be specified? As part of the flavor? Could it be in a Neutron port request or Cyborg device profile?\n\nThis (affinity via same_subtree) is the main motivator for this feature I believe. But I anticipate it being algorithmic, based on a naming convention for the suffixes, rather than embedded explicitly in flavor/device_profile/image metadata. So the flavor request group for e.g. VCPU resources should not use the *same* request group suffix as the device_profile group for an accelerator resource - that would try to land them on the same provider, which would be bad. Rather, we would achieve affinity by using an agreed-upon common substring (pattern).\n\nFor example, if your flavor said:\n\n VCPU \u003d 5\n hw:numa_nodes \u003d 2\n hw:numa_cpus.0 \u003d 0,1\n hw:numa_cpus.1 \u003d 2,3,4\n\nwe would translate that to two request groups:\n\n resources_COMPUTE_NUMA0\u003dVCPU:2,\n resources_COMPUTE_NUMA1\u003dVCPU:3\n\nNow let\u0027s say your device profile wants one accelerator affined to each of two NUMA nodes; it could say:\n\n resources_ACCEL_NUMA0\u003dFPGA:1,\n resources_ACCEL_NUMA1\u003dFPGA:1\n\nAnd based on the naming convention (.endswith(_NUMA*) kind of thing) we (n-sch) would add (resourceless) request groups for:\n\n required_AFFINITY_NUMA0\u003dI_AM_A_NUMA_NODE,\n required_AFFINITY_NUMA1\u003dI_AM_A_NUMA_NODE\n\nand same_subtree params to tie each of the groupings together:\n\n same_subtree\u003d_COMPUTE_NUMA0,_ACCEL_NUMA0,_AFFINITY_NUMA0,\n same_subtree\u003d_COMPUTE_NUMA1,_ACCEL_NUMA1,_AFFINITY_NUMA1\n\n\u003e [1] https://storyboard.openstack.org/#!/story/2005575\n[2] https://review.opendev.org/#/c/658510/2/doc/source/specs/train/approved/2005575-nested-magic.rst@46","accounts_in_message":[],"_revision_number":7},{"id":"26212a4ee85578899cd6ef43af2269dba0083e00","author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"date":"2019-05-21 15:18:20.000000000","message":"Patch Set 7: Code-Review+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":7},{"id":"ab591216711cdb5f1cd500913d98808a7da1ccd8","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-05-21 16:45:32.000000000","message":"Patch Set 7: Verified+1\n\nBuild succeeded (check pipeline).\n\n- build-openstack-api-ref http://logs.openstack.org/19/657419/7/check/build-openstack-api-ref/2bc6fb5/html/ : SUCCESS in 5m 44s\n- grenade-py3 http://logs.openstack.org/19/657419/7/check/grenade-py3/aee21d4/ : SUCCESS in 1h 01m 05s\n- tempest-full-py3 http://logs.openstack.org/19/657419/7/check/tempest-full-py3/72057df/ : SUCCESS in 1h 37m 01s\n- openstack-tox-docs http://logs.openstack.org/19/657419/7/check/openstack-tox-docs/2127a39/html/ : SUCCESS in 4m 43s\n- openstack-tox-cover http://logs.openstack.org/19/657419/7/check/openstack-tox-cover/da4433f/cover/ : SUCCESS in 6m 01s\n- openstack-tox-lower-constraints http://logs.openstack.org/19/657419/7/check/openstack-tox-lower-constraints/c18f3ec/ : SUCCESS in 4m 54s\n- openstack-tox-pep8 http://logs.openstack.org/19/657419/7/check/openstack-tox-pep8/7c2a7cd/ : SUCCESS in 5m 08s\n- openstack-tox-py27 http://logs.openstack.org/19/657419/7/check/openstack-tox-py27/2c421db/ : SUCCESS in 6m 35s\n- openstack-tox-py36 http://logs.openstack.org/19/657419/7/check/openstack-tox-py36/2d61b07/ : SUCCESS in 3m 53s\n- openstack-tox-py37 http://logs.openstack.org/19/657419/7/check/openstack-tox-py37/0f94c33/ : SUCCESS in 5m 41s\n- build-openstack-releasenotes http://logs.openstack.org/19/657419/7/check/build-openstack-releasenotes/f1d7c65/html/ : SUCCESS in 4m 15s\n- openstack-tox-functional http://logs.openstack.org/19/657419/7/check/openstack-tox-functional/6b09362/ : SUCCESS in 5m 09s\n- openstack-tox-functional-py36 http://logs.openstack.org/19/657419/7/check/openstack-tox-functional-py36/c97115c/ : SUCCESS in 5m 15s\n- placement-nova-tox-functional-py36 http://logs.openstack.org/19/657419/7/check/placement-nova-tox-functional-py36/c319465/ : SUCCESS in 13m 21s\n- placement-perfload http://logs.openstack.org/19/657419/7/check/placement-perfload/c8612ce/ : SUCCESS in 3m 26s (non-voting)","accounts_in_message":[],"_revision_number":7},{"id":"7959edb478ac9601eaf4b779d0365f03d6f9f48a","author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"date":"2019-05-23 16:22:28.000000000","message":"Patch Set 7: Code-Review+1\n\n(1 comment)\n\nThe overall design direction looks good to me, but I have reviewed the implementation details yet, hence the +1 only.","accounts_in_message":[],"_revision_number":7},{"id":"bacf4620a4c77d0688ad094907a9d94d545c6b49","author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"date":"2019-05-28 09:17:55.000000000","message":"Patch Set 7:\n\n(2 comments)\n\nLooks good. I have a question in https://review.opendev.org/#/c/657419/7/api-ref/source/parameters.yaml@169 if that is answered then I\u0027m +2 on this.\n\nCheers,\ngibi","accounts_in_message":[],"_revision_number":7},{"id":"c4cbbfa5e2bb6f0c090c7a37e8e531be0e967f64","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-05-28 09:54:50.000000000","message":"Patch Set 7:\n\n(7 comments)","accounts_in_message":[],"_revision_number":7},{"id":"f5c5c43a6cad9bc6ac9d7ce7a99ca9706e3dff9a","author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"date":"2019-05-28 13:24:38.000000000","message":"Patch Set 7:\n\n(1 comment)","accounts_in_message":[],"_revision_number":7},{"id":"a1b6dd41aaa913cdec22be8bcc62f932fa055e55","author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"date":"2019-05-28 13:52:47.000000000","message":"Patch Set 7: Code-Review+2 Workflow+1\n\nLGTM","accounts_in_message":[],"_revision_number":7},{"id":"b3b5a703c38dbb461f6ebebd09fb05c1595e5433","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-05-28 13:53:01.000000000","message":"Patch Set 7: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":7},{"id":"395207b001ce4a84bfc488f0730498ae7d4282b3","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-05-28 15:59:04.000000000","message":"Patch Set 7: Verified-2\n\nBuild failed (gate pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- build-openstack-api-ref http://logs.openstack.org/19/657419/7/gate/build-openstack-api-ref/3f4dfca/html/ : SUCCESS in 4m 03s\n- grenade-py3 http://logs.openstack.org/19/657419/7/gate/grenade-py3/e6ab7c6/ : SUCCESS in 59m 15s\n- tempest-full-py3 http://logs.openstack.org/19/657419/7/gate/tempest-full-py3/b3059c4/ : TIMED_OUT in 2h 04m 56s\n- openstack-tox-docs http://logs.openstack.org/19/657419/7/gate/openstack-tox-docs/082872e/html/ : SUCCESS in 4m 17s\n- openstack-tox-lower-constraints http://logs.openstack.org/19/657419/7/gate/openstack-tox-lower-constraints/5956bf6/ : SUCCESS in 4m 43s\n- openstack-tox-pep8 http://logs.openstack.org/19/657419/7/gate/openstack-tox-pep8/26c6580/ : SUCCESS in 3m 42s\n- openstack-tox-py27 http://logs.openstack.org/19/657419/7/gate/openstack-tox-py27/89d7d42/ : SUCCESS in 4m 08s\n- openstack-tox-py36 http://logs.openstack.org/19/657419/7/gate/openstack-tox-py36/0faccce/ : SUCCESS in 4m 18s\n- openstack-tox-py37 http://logs.openstack.org/19/657419/7/gate/openstack-tox-py37/fecbfee/ : SUCCESS in 4m 22s\n- build-openstack-releasenotes http://logs.openstack.org/19/657419/7/gate/build-openstack-releasenotes/49d7bfe/html/ : SUCCESS in 3m 55s\n- openstack-tox-functional http://logs.openstack.org/19/657419/7/gate/openstack-tox-functional/251e529/ : SUCCESS in 4m 29s\n- openstack-tox-functional-py36 http://logs.openstack.org/19/657419/7/gate/openstack-tox-functional-py36/24a1ff9/ : SUCCESS in 4m 43s\n- placement-nova-tox-functional-py36 http://logs.openstack.org/19/657419/7/gate/placement-nova-tox-functional-py36/e1efd33/ : SUCCESS in 12m 46s","accounts_in_message":[],"_revision_number":7},{"id":"ef00426fb969877d0dd509321406d7596fc273d8","author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"date":"2019-05-28 16:16:56.000000000","message":"Patch Set 7:\n\nrecheck timeout","accounts_in_message":[],"_revision_number":7},{"id":"2e65102e38bb57b1a6a9e088a22b773d614c2798","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-05-28 19:12:27.000000000","message":"Patch Set 7: Verified+1\n\nBuild succeeded (check pipeline).\n\n- build-openstack-api-ref http://logs.openstack.org/19/657419/7/check/build-openstack-api-ref/5bf33d6/html/ : SUCCESS in 3m 44s\n- grenade-py3 http://logs.openstack.org/19/657419/7/check/grenade-py3/5d7d6d6/ : SUCCESS in 1h 00m 42s\n- tempest-full-py3 http://logs.openstack.org/19/657419/7/check/tempest-full-py3/1b6d218/ : SUCCESS in 1h 34m 17s\n- openstack-tox-docs http://logs.openstack.org/19/657419/7/check/openstack-tox-docs/8c8e569/html/ : SUCCESS in 4m 29s\n- openstack-tox-cover http://logs.openstack.org/19/657419/7/check/openstack-tox-cover/1cf24dc/cover/ : SUCCESS in 5m 34s\n- openstack-tox-lower-constraints http://logs.openstack.org/19/657419/7/check/openstack-tox-lower-constraints/e0a4071/ : SUCCESS in 4m 38s\n- openstack-tox-pep8 http://logs.openstack.org/19/657419/7/check/openstack-tox-pep8/9b30dd4/ : SUCCESS in 4m 32s\n- openstack-tox-py27 http://logs.openstack.org/19/657419/7/check/openstack-tox-py27/0cb28dc/ : SUCCESS in 4m 06s\n- openstack-tox-py36 http://logs.openstack.org/19/657419/7/check/openstack-tox-py36/0ff69cc/ : SUCCESS in 4m 02s\n- openstack-tox-py37 http://logs.openstack.org/19/657419/7/check/openstack-tox-py37/dcd58f6/ : SUCCESS in 4m 50s\n- build-openstack-releasenotes http://logs.openstack.org/19/657419/7/check/build-openstack-releasenotes/0a66157/html/ : SUCCESS in 4m 01s\n- openstack-tox-functional http://logs.openstack.org/19/657419/7/check/openstack-tox-functional/25ee798/ : SUCCESS in 4m 38s\n- openstack-tox-functional-py36 http://logs.openstack.org/19/657419/7/check/openstack-tox-functional-py36/19d9f51/ : SUCCESS in 4m 37s\n- placement-nova-tox-functional-py36 http://logs.openstack.org/19/657419/7/check/placement-nova-tox-functional-py36/5033a59/ : SUCCESS in 10m 45s\n- placement-perfload http://logs.openstack.org/19/657419/7/check/placement-perfload/0dae8f7/ : SUCCESS in 3m 30s (non-voting)","accounts_in_message":[],"_revision_number":7},{"id":"1ebe03a49ec8c9ee7f812c12e18967851c00d027","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-05-28 19:12:53.000000000","message":"Patch Set 7: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":7},{"id":"a7b16e44116727fabf3522d5e5cc2b272f886a5c","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-05-29 02:53:34.000000000","message":"Patch Set 7: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- build-openstack-api-ref http://logs.openstack.org/19/657419/7/gate/build-openstack-api-ref/c2ddc19/html/ : SUCCESS in 4m 08s\n- grenade-py3 http://logs.openstack.org/19/657419/7/gate/grenade-py3/9ee4d00/ : SUCCESS in 59m 07s\n- tempest-full-py3 http://logs.openstack.org/19/657419/7/gate/tempest-full-py3/c07555f/ : SUCCESS in 1h 35m 36s\n- openstack-tox-docs http://logs.openstack.org/19/657419/7/gate/openstack-tox-docs/c8f8b0e/html/ : SUCCESS in 3m 58s\n- openstack-tox-lower-constraints http://logs.openstack.org/19/657419/7/gate/openstack-tox-lower-constraints/8bfb3f0/ : SUCCESS in 5m 09s\n- openstack-tox-pep8 http://logs.openstack.org/19/657419/7/gate/openstack-tox-pep8/2d2af2a/ : SUCCESS in 3m 55s\n- openstack-tox-py27 http://logs.openstack.org/19/657419/7/gate/openstack-tox-py27/a0684c9/ : SUCCESS in 4m 18s\n- openstack-tox-py36 http://logs.openstack.org/19/657419/7/gate/openstack-tox-py36/62680b2/ : SUCCESS in 4m 29s\n- openstack-tox-py37 http://logs.openstack.org/19/657419/7/gate/openstack-tox-py37/36e4d77/ : SUCCESS in 4m 25s\n- build-openstack-releasenotes http://logs.openstack.org/19/657419/7/gate/build-openstack-releasenotes/94a87a5/html/ : SUCCESS in 3m 48s\n- openstack-tox-functional http://logs.openstack.org/19/657419/7/gate/openstack-tox-functional/8c6483d/ : SUCCESS in 4m 25s\n- openstack-tox-functional-py36 http://logs.openstack.org/19/657419/7/gate/openstack-tox-functional-py36/60830fb/ : SUCCESS in 4m 46s\n- placement-nova-tox-functional-py36 http://logs.openstack.org/19/657419/7/gate/placement-nova-tox-functional-py36/90fe40b/ : SUCCESS in 10m 29s","accounts_in_message":[],"_revision_number":7},{"id":"56a9964810b89526898fa544bb1ad7e8e65b2fcd","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-05-29 02:53:34.000000000","message":"Change has been successfully merged by Zuul","accounts_in_message":[],"_revision_number":7}],"current_revision_number":7,"current_revision":"fb0f6f2608b64546c61fa7aa359e8fdbef83a8a5","revisions":{"1a776f4b1494931cf9a46274dbe66afc06d3bf09":{"kind":"REWORK","_number":1,"created":"2019-05-06 17:58:04.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/19/657419/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/19/657419/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/19/657419/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/19/657419/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/19/657419/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/19/657419/1"}}},"commit":{"parents":[{"commit":"55d85daefa8583dafe942057c8c1d27ee46fe199","subject":"Merge \"Run nova-tox-functional-py36 in the placement gate\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/55d85daefa8583dafe942057c8c1d27ee46fe199"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-05-06 17:24:53.000000000","tz":-420},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-05-06 17:57:17.000000000","tz":-420},"subject":"WIP: Allow [A-Za-z0-9_-]{1,32} for request group suffix","message":"WIP: Allow [A-Za-z0-9_-]{1,32} for request group suffix\n\nThis does the simplest change to move from numeric suffixes\nto strings suffixes that can be 32 chars longs made from \u0027-\u0027,\n\u0027_\u0027, and alphanumeric.\n\nThis is a WIP because:\n\n* docs need to be updated\n\n* We need to make some decisions about:\n\n   * Do we need a microversion for this? Strictly speaking we do\n     because things that were previously a 400 will now sometimes\n     work. On the other hand, stuff that already worked will\n     continue to work without additional signalling.\n\n   * If we do a microversion how much of the large collection of\n     nested-related improvements should be in the same microversion?\n\n   * See the TODO within about error messages with poorly formed\n     grouping params.\n\nNothing is done here about allowing required without a resources.\nThat will be a separate patch.\n\nStory: 2005575\nTask: 30781\nChange-Id: Ia44b0922d151695d406883262e891bd932536f38\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/1a776f4b1494931cf9a46274dbe66afc06d3bf09"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/1a776f4b1494931cf9a46274dbe66afc06d3bf09"}]},"branch":"refs/heads/master"},"fec0bdadc6e88d048d09b9a7da805a9f96617981":{"kind":"REWORK","_number":2,"created":"2019-05-06 19:17:29.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/19/657419/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/19/657419/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/19/657419/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/19/657419/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/19/657419/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/19/657419/2"}}},"commit":{"parents":[{"commit":"55d85daefa8583dafe942057c8c1d27ee46fe199","subject":"Merge \"Run nova-tox-functional-py36 in the placement gate\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/55d85daefa8583dafe942057c8c1d27ee46fe199"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-05-06 17:24:53.000000000","tz":-420},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-05-06 19:16:07.000000000","tz":-420},"subject":"WIP: Allow [A-Za-z0-9_-]{1,32} for request group suffix","message":"WIP: Allow [A-Za-z0-9_-]{1,32} for request group suffix\n\nThis does the simplest change to move from numeric suffixes\nto strings suffixes that can be 32 chars longs made from \u0027-\u0027,\n\u0027_\u0027, and upper-case alphanumeric. The format is shared between\nschema and RequestGroup parsing.\n\nThis is a WIP because:\n\n* docs need to be updated\n\n* We need to make some decisions about:\n\n   * Do we need a microversion for this? Strictly speaking we do\n     because things that were previously a 400 will now sometimes\n     work. On the other hand, stuff that already worked will\n     continue to work without additional signalling.\n\n     Looking at the changed (or removed) tests will give some\n     insight into the impact of the changes.\n\n   * If we do a microversion how much of the large collection of\n     nested-related improvements should be in the same microversion?\n\n   * See the TODO within about error messages with poorly formed\n     grouping params.\n\nNothing is done here about allowing required without a resources.\nThat will be a separate patch.\n\nStory: 2005575\nTask: 30781\nChange-Id: Ia44b0922d151695d406883262e891bd932536f38\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/fec0bdadc6e88d048d09b9a7da805a9f96617981"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/fec0bdadc6e88d048d09b9a7da805a9f96617981"}]},"branch":"refs/heads/master"},"fda7305bfe86292500dad59065b914d1378fa4eb":{"kind":"NO_CODE_CHANGE","_number":3,"created":"2019-05-06 19:18:07.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/19/657419/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/19/657419/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/19/657419/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/19/657419/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/19/657419/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/19/657419/3"}}},"commit":{"parents":[{"commit":"55d85daefa8583dafe942057c8c1d27ee46fe199","subject":"Merge \"Run nova-tox-functional-py36 in the placement gate\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/55d85daefa8583dafe942057c8c1d27ee46fe199"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-05-06 17:24:53.000000000","tz":-420},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-05-06 19:17:48.000000000","tz":-420},"subject":"WIP: Allow [A-Z0-9_-]{1,32} for request group suffix","message":"WIP: Allow [A-Z0-9_-]{1,32} for request group suffix\n\nThis does the simplest change to move from numeric suffixes\nto strings suffixes that can be 32 chars longs made from \u0027-\u0027,\n\u0027_\u0027, and upper-case alphanumeric. The format is shared between\nschema and RequestGroup parsing.\n\nThis is a WIP because:\n\n* docs need to be updated\n\n* We need to make some decisions about:\n\n   * Do we need a microversion for this? Strictly speaking we do\n     because things that were previously a 400 will now sometimes\n     work. On the other hand, stuff that already worked will\n     continue to work without additional signalling.\n\n     Looking at the changed (or removed) tests will give some\n     insight into the impact of the changes.\n\n   * If we do a microversion how much of the large collection of\n     nested-related improvements should be in the same microversion?\n\n   * See the TODO within about error messages with poorly formed\n     grouping params.\n\nNothing is done here about allowing required without a resources.\nThat will be a separate patch.\n\nStory: 2005575\nTask: 30781\nChange-Id: Ia44b0922d151695d406883262e891bd932536f38\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/fda7305bfe86292500dad59065b914d1378fa4eb"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/fda7305bfe86292500dad59065b914d1378fa4eb"}]},"branch":"refs/heads/master"},"25c5cb054e93996ae16f12908bcf3e589b6b9137":{"kind":"REWORK","_number":4,"created":"2019-05-06 20:42:01.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/19/657419/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/19/657419/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/19/657419/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/19/657419/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/19/657419/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/19/657419/4"}}},"commit":{"parents":[{"commit":"55d85daefa8583dafe942057c8c1d27ee46fe199","subject":"Merge \"Run nova-tox-functional-py36 in the placement gate\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/55d85daefa8583dafe942057c8c1d27ee46fe199"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-05-06 17:24:53.000000000","tz":-420},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-05-06 20:41:36.000000000","tz":-420},"subject":"WIP: Allow [A-Z0-9_-]{1,32} for request group suffix","message":"WIP: Allow [A-Z0-9_-]{1,32} for request group suffix\n\nThis does the simplest change to move from numeric suffixes\nto strings suffixes that can be 32 chars longs made from \u0027-\u0027,\n\u0027_\u0027, and upper-case alphanumeric. The format is shared between\nschema and RequestGroup parsing.\n\nThis is a WIP because:\n\n* docs need to be updated\n\n* We need to make some decisions about:\n\n   * Do we need a microversion for this? Strictly speaking we do\n     because things that were previously a 400 will now sometimes\n     work. On the other hand, stuff that already worked will\n     continue to work without additional signalling.\n\n     Looking at the changed (or removed) tests will give some\n     insight into the impact of the changes.\n\n   * If we do a microversion how much of the large collection of\n     nested-related improvements should be in the same microversion?\n\n   * See the TODO within about error messages with poorly formed\n     grouping params.\n\nNothing is done here about allowing required without a resources.\nThat will be a separate patch.\n\nStory: 2005575\nTask: 30781\nChange-Id: Ia44b0922d151695d406883262e891bd932536f38\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/25c5cb054e93996ae16f12908bcf3e589b6b9137"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/25c5cb054e93996ae16f12908bcf3e589b6b9137"}]},"branch":"refs/heads/master"},"3e24cd859d8fa8802453bb37283a41474afb80be":{"kind":"REWORK","_number":5,"created":"2019-05-16 12:32:13.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/19/657419/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/19/657419/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/19/657419/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/19/657419/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/19/657419/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/19/657419/5"}}},"commit":{"parents":[{"commit":"1281806c99ceb80fed78237b39aa34b9097a39e6","subject":"Merge \"Skip _exclude_nested_providers() if not nested\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/1281806c99ceb80fed78237b39aa34b9097a39e6"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-05-06 17:24:53.000000000","tz":-420},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-05-16 12:29:00.000000000","tz":60},"subject":"Allow [A-Z0-9_-]{1,64} for request group suffix","message":"Allow [A-Z0-9_-]{1,64} for request group suffix\n\nThis does the simplest change to move from numeric suffixes\nto strings suffixes that can be 64 chars longs made from \u0027-\u0027,\n\u0027_\u0027, and upper-case alphanumeric. The format is shared between\nschema and RequestGroup parsing.\n\nDocs and and api-ref are updated to changed from \"numbered\" to\n\"suffixed\" or \"granular\" groups.\n\nA release note is added, including a note on why this isn\u0027t\nbeing done in a microversion.\n\nNothing is done here about allowing required without a resources.\nThat will be a separate patch.\n\nStory: 2005575\nTask: 30781\nChange-Id: Ia44b0922d151695d406883262e891bd932536f38\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/3e24cd859d8fa8802453bb37283a41474afb80be"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/3e24cd859d8fa8802453bb37283a41474afb80be"}]},"branch":"refs/heads/master"},"0bd6853fc2f1d1ea9ea50d035961870f6b05dd59":{"kind":"REWORK","_number":6,"created":"2019-05-20 16:41:50.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/19/657419/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/19/657419/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/19/657419/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/19/657419/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/19/657419/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/19/657419/6"}}},"commit":{"parents":[{"commit":"1281806c99ceb80fed78237b39aa34b9097a39e6","subject":"Merge \"Skip _exclude_nested_providers() if not nested\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/1281806c99ceb80fed78237b39aa34b9097a39e6"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-05-06 17:24:53.000000000","tz":-420},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-05-20 16:40:57.000000000","tz":60},"subject":"Allow [a-zA-Z0-9_-]{1,64} for request group suffix","message":"Allow [a-zA-Z0-9_-]{1,64} for request group suffix\n\nAdd a 1.33 microversion to move from numeric suffixes to string\nsuffixes that can be 64 chars longs made from \u0027-\u0027, \u0027_\u0027, and\nmixed-case alphanumeric. The format is shared between schema\nand RequestGroup parsing.\n\nDocs, api-ref, api history and microversion upper limit are updated\nto indicate the new form in the new microversion.\n\nA release note is added.\n\nStory: 2005575\nTask: 30781\nChange-Id: Ia44b0922d151695d406883262e891bd932536f38\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/0bd6853fc2f1d1ea9ea50d035961870f6b05dd59"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/0bd6853fc2f1d1ea9ea50d035961870f6b05dd59"}]},"branch":"refs/heads/master"},"fb0f6f2608b64546c61fa7aa359e8fdbef83a8a5":{"kind":"REWORK","_number":7,"created":"2019-05-21 10:07:50.000000000","uploader":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"ref":"refs/changes/19/657419/7","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/placement","ref":"refs/changes/19/657419/7","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/placement refs/changes/19/657419/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/placement refs/changes/19/657419/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/placement refs/changes/19/657419/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/placement refs/changes/19/657419/7"}}},"commit":{"parents":[{"commit":"1281806c99ceb80fed78237b39aa34b9097a39e6","subject":"Merge \"Skip _exclude_nested_providers() if not nested\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/1281806c99ceb80fed78237b39aa34b9097a39e6"}]}],"author":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-05-06 17:24:53.000000000","tz":-420},"committer":{"name":"Chris Dent","email":"cdent@anticdent.org","date":"2019-05-21 10:07:38.000000000","tz":60},"subject":"Allow [a-zA-Z0-9_-]{1,64} for request group suffix","message":"Allow [a-zA-Z0-9_-]{1,64} for request group suffix\n\nAdd a 1.33 microversion to move from numeric suffixes to string\nsuffixes that can be 64 chars longs made from \u0027-\u0027, \u0027_\u0027, and\nmixed-case alphanumeric. The format is shared between schema\nand RequestGroup parsing.\n\nDocs, api-ref, api history and microversion upper limit are updated\nto indicate the new form in the new microversion.\n\nA release note is added.\n\nStory: 2005575\nTask: 30781\nChange-Id: Ia44b0922d151695d406883262e891bd932536f38\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/fb0f6f2608b64546c61fa7aa359e8fdbef83a8a5"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/placement/commit/fb0f6f2608b64546c61fa7aa359e8fdbef83a8a5"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
