)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"cb6d608052e670bc1a3596d6481f1e6a7424f157","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[placement] Idempotent PUT /resource_classes/{name}"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In a microversion 1.6 change PUT /resource_classes/{name} so that"},{"line_number":10,"context_line":"creation and existence validation of a custom resource class can"},{"line_number":11,"context_line":"happen in a single request and prevent the previous behavior of"},{"line_number":12,"context_line":"being able to update a single resource class to a new name, which is"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7ffa3b31_531fdc6b","line":9,"range":{"start_line":9,"start_character":18,"end_line":9,"end_character":21},"updated":"2017-04-17 09:45:51.000000000","message":"1.7","commit_id":"15aef0228b9740e0defe2a7c70ccd3c9e5b39bb0"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"cb6d608052e670bc1a3596d6481f1e6a7424f157","unresolved":false,"context_lines":[{"line_number":13,"context_line":"not desirable."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"The previous update_resource_class is still in place to support"},{"line_number":16,"context_line":"microversion 1.2-1.5. It has been slightly adjusted to remove some"},{"line_number":17,"context_line":"unreachable code. Because of the JSON validation that happens in the"},{"line_number":18,"context_line":"beginning of the method, no standard name can pass to the code where"},{"line_number":19,"context_line":"any writes happen."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7ffa3b31_13195484","line":16,"range":{"start_line":16,"start_character":13,"end_line":16,"end_character":20},"updated":"2017-04-17 09:45:51.000000000","message":"1.2-1.6","commit_id":"15aef0228b9740e0defe2a7c70ccd3c9e5b39bb0"}],"nova/api/openstack/placement/handlers/resource_class.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"7979d092efa652584a8327282064d5a93a034756","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"@wsgi_wrapper.PlacementWsgify"},{"line_number":167,"context_line":"@microversion.version_handler(\u00271.2\u0027, \u00271.5\u0027)"},{"line_number":168,"context_line":"@util.require_content(\u0027application/json\u0027)"},{"line_number":169,"context_line":"def update_resource_class(req):"},{"line_number":170,"context_line":"    \"\"\"PUT to update a single resource class."}],"source_content_type":"text/x-python","patch_set":7,"id":"7ffa3b31_27ae2a98","line":167,"range":{"start_line":167,"start_character":37,"end_line":167,"end_character":42},"updated":"2017-04-18 10:14:52.000000000","message":"Should that be 1.6?","commit_id":"02fce7f6f4adf9da888c9342229a52d00d23fcca"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"616786a93edecfab495da07583c93cecc674b59b","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"@wsgi_wrapper.PlacementWsgify"},{"line_number":167,"context_line":"@microversion.version_handler(\u00271.2\u0027, \u00271.5\u0027)"},{"line_number":168,"context_line":"@util.require_content(\u0027application/json\u0027)"},{"line_number":169,"context_line":"def update_resource_class(req):"},{"line_number":170,"context_line":"    \"\"\"PUT to update a single resource class."}],"source_content_type":"text/x-python","patch_set":7,"id":"7ffa3b31_ed1ca314","line":167,"in_reply_to":"7ffa3b31_27ae2a98","updated":"2017-04-18 11:12:09.000000000","message":"Done","commit_id":"02fce7f6f4adf9da888c9342229a52d00d23fcca"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"7979d092efa652584a8327282064d5a93a034756","unresolved":false,"context_lines":[{"line_number":210,"context_line":"    context \u003d req.environ[\u0027placement.context\u0027]"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    # Hack around json validation"},{"line_number":213,"context_line":"    # TODO(cdent): Consider if this is too much of a hack."},{"line_number":214,"context_line":"    util.extract_json(\u0027{\"name\": \"%s\"}\u0027 % name, PUT_RC_SCHEMA_V1_2)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    status \u003d 204"}],"source_content_type":"text/x-python","patch_set":7,"id":"7ffa3b31_67bb12c4","line":213,"updated":"2017-04-18 10:14:52.000000000","message":"FWIW, the nova-api just added some structures around schema validation of query string params. I guess this could be included in that kind of thing, somehow.","commit_id":"02fce7f6f4adf9da888c9342229a52d00d23fcca"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"616786a93edecfab495da07583c93cecc674b59b","unresolved":false,"context_lines":[{"line_number":210,"context_line":"    context \u003d req.environ[\u0027placement.context\u0027]"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    # Hack around json validation"},{"line_number":213,"context_line":"    # TODO(cdent): Consider if this is too much of a hack."},{"line_number":214,"context_line":"    util.extract_json(\u0027{\"name\": \"%s\"}\u0027 % name, PUT_RC_SCHEMA_V1_2)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    status \u003d 204"}],"source_content_type":"text/x-python","patch_set":7,"id":"7ffa3b31_4db6f7fc","line":213,"in_reply_to":"7ffa3b31_67bb12c4","updated":"2017-04-18 11:12:09.000000000","message":"Similar structures are being used over in the resource providers handler, for actual query parameters. In this case, since it is validating a path value, it seems good enough. I think I\u0027ll just change the comment and get rid of the todo.","commit_id":"02fce7f6f4adf9da888c9342229a52d00d23fcca"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"abdee66405adf6ec55d7f7ddeed6c10c2d0440bd","unresolved":false,"context_lines":[{"line_number":191,"context_line":"    except exception.ResourceClassCannotUpdateStandard:"},{"line_number":192,"context_line":"        raise webob.exc.HTTPBadRequest("},{"line_number":193,"context_line":"            _(\u0027Cannot update standard resource class %(rp_name)s\u0027) %"},{"line_number":194,"context_line":"            {\u0027rp_name\u0027: name})"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    req.response.body \u003d encodeutils.to_utf8(jsonutils.dumps("},{"line_number":197,"context_line":"        _serialize_resource_class(req.environ, rc))"}],"source_content_type":"text/x-python","patch_set":9,"id":"7ffa3b31_9c673eb8","side":"PARENT","line":194,"updated":"2017-04-20 15:29:17.000000000","message":"why are you removing this ? Seems unrelated to me, nope ? You\u0027re also modifying the behaviour for the legacy older \u003c1.7 versions AFAICS","commit_id":"b5c4ad5385f950bffda150d589c27a41553f5104"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"3d39f3c572efa0acb9c587982030922a9d65ee3f","unresolved":false,"context_lines":[{"line_number":191,"context_line":"    except exception.ResourceClassCannotUpdateStandard:"},{"line_number":192,"context_line":"        raise webob.exc.HTTPBadRequest("},{"line_number":193,"context_line":"            _(\u0027Cannot update standard resource class %(rp_name)s\u0027) %"},{"line_number":194,"context_line":"            {\u0027rp_name\u0027: name})"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    req.response.body \u003d encodeutils.to_utf8(jsonutils.dumps("},{"line_number":197,"context_line":"        _serialize_resource_class(req.environ, rc))"}],"source_content_type":"text/x-python","patch_set":9,"id":"7ffa3b31_2f0c6aea","side":"PARENT","line":194,"in_reply_to":"7ffa3b31_9c673eb8","updated":"2017-04-20 15:42:16.000000000","message":"Done","commit_id":"b5c4ad5385f950bffda150d589c27a41553f5104"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"abdee66405adf6ec55d7f7ddeed6c10c2d0440bd","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            rc \u003d objects.ResourceClass(context, name\u003dname)"},{"line_number":221,"context_line":"            rc.create()"},{"line_number":222,"context_line":"            status \u003d 201"},{"line_number":223,"context_line":"        # We will not see ResourceClassCannotUpdateStandard because"},{"line_number":224,"context_line":"        # that was already caught when validating the {name}."},{"line_number":225,"context_line":"        except exception.ResourceClassExists:"},{"line_number":226,"context_line":"            # Someone just now created the class, so stick with 204"},{"line_number":227,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":9,"id":"7ffa3b31_fce76211","line":224,"range":{"start_line":223,"start_character":0,"end_line":224,"end_character":61},"updated":"2017-04-20 15:29:17.000000000","message":"again, this is unrelated, and you should not comment that here (or maybe in the commit msg)","commit_id":"ced21c5d41c7b91b95e76a4b7a678bb209d46a7f"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"3d39f3c572efa0acb9c587982030922a9d65ee3f","unresolved":false,"context_lines":[{"line_number":221,"context_line":"            rc.create()"},{"line_number":222,"context_line":"            status \u003d 201"},{"line_number":223,"context_line":"        # We will not see ResourceClassCannotUpdateStandard because"},{"line_number":224,"context_line":"        # that was already caught when validating the {name}."},{"line_number":225,"context_line":"        except exception.ResourceClassExists:"},{"line_number":226,"context_line":"            # Someone just now created the class, so stick with 204"},{"line_number":227,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":9,"id":"7ffa3b31_8f15bee7","line":224,"in_reply_to":"7ffa3b31_fce76211","updated":"2017-04-20 15:42:16.000000000","message":"Why? In the old microversion we can, but here we cannot because the name is being validated by jsonschema. having the comment helps people understand why this handling is different from the other version.\n\nSo, yes, it is related.","commit_id":"ced21c5d41c7b91b95e76a4b7a678bb209d46a7f"}],"nova/tests/functional/api/openstack/placement/gabbits/resource-classes-1-6.yaml":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"e83e1fc2c1336c93873c07fe892a8d25fd2cb48a","unresolved":false,"context_lines":[{"line_number":13,"context_line":"tests:"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"- name: bodiless put"},{"line_number":16,"context_line":"  PUT: /resource_classes/CUSTOM_COW"},{"line_number":17,"context_line":"  status: 400"},{"line_number":18,"context_line":"  response_strings:"},{"line_number":19,"context_line":"      # We don\u0027t check much of this string because it is different"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"7ffa3b31_03bd37d7","line":16,"updated":"2017-04-19 12:23:51.000000000","message":"How about we test it like this https://review.openstack.org/#/c/458049/?","commit_id":"ced21c5d41c7b91b95e76a4b7a678bb209d46a7f"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"1cb19c1256db2a5a923f3b9688560f0a0474ceab","unresolved":false,"context_lines":[{"line_number":13,"context_line":"tests:"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"- name: bodiless put"},{"line_number":16,"context_line":"  PUT: /resource_classes/CUSTOM_COW"},{"line_number":17,"context_line":"  status: 400"},{"line_number":18,"context_line":"  response_strings:"},{"line_number":19,"context_line":"      # We don\u0027t check much of this string because it is different"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"7ffa3b31_1e4b50b0","line":16,"in_reply_to":"7ffa3b31_03bd37d7","updated":"2017-04-19 13:00:42.000000000","message":"That\u0027s a good idea but I still think we should have this test too.","commit_id":"ced21c5d41c7b91b95e76a4b7a678bb209d46a7f"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"cc935a6185480a1b928e72ea029eb3deb1a3af88","unresolved":false,"context_lines":[{"line_number":13,"context_line":"tests:"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"- name: bodiless put"},{"line_number":16,"context_line":"  PUT: /resource_classes/CUSTOM_COW"},{"line_number":17,"context_line":"  status: 400"},{"line_number":18,"context_line":"  response_strings:"},{"line_number":19,"context_line":"      # We don\u0027t check much of this string because it is different"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"7ffa3b31_829c8c6a","line":16,"in_reply_to":"7ffa3b31_1e4b50b0","updated":"2017-04-20 02:03:21.000000000","message":"why? It is probably ok just few microversion now. If we have bump the microversion a lot like now, I feel that will pain","commit_id":"ced21c5d41c7b91b95e76a4b7a678bb209d46a7f"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"d91fa937832fe96546fd883f41ff8c3411e6d180","unresolved":false,"context_lines":[{"line_number":13,"context_line":"tests:"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"- name: bodiless put"},{"line_number":16,"context_line":"  PUT: /resource_classes/CUSTOM_COW"},{"line_number":17,"context_line":"  status: 400"},{"line_number":18,"context_line":"  response_strings:"},{"line_number":19,"context_line":"      # We don\u0027t check much of this string because it is different"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"7ffa3b31_f902e26e","line":16,"in_reply_to":"7ffa3b31_829c8c6a","updated":"2017-04-20 08:49:55.000000000","message":"Because this test is confirming that the behavior introduced in 1.7 is not present in an earlier version. We need a test for that somewhere. I chose to put it in a separate file to avoid the gabbi files getting too big and unwieldy.","commit_id":"ced21c5d41c7b91b95e76a4b7a678bb209d46a7f"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"abdee66405adf6ec55d7f7ddeed6c10c2d0440bd","unresolved":false,"context_lines":[{"line_number":13,"context_line":"tests:"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"- name: bodiless put"},{"line_number":16,"context_line":"  PUT: /resource_classes/CUSTOM_COW"},{"line_number":17,"context_line":"  status: 400"},{"line_number":18,"context_line":"  response_strings:"},{"line_number":19,"context_line":"      # We don\u0027t check much of this string because it is different"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"7ffa3b31_dc53866a","line":16,"in_reply_to":"7ffa3b31_f902e26e","updated":"2017-04-20 15:29:17.000000000","message":"Having a separate gabbi file is fine by me, we could just remove it when the minimum version would be upper than 1.6","commit_id":"ced21c5d41c7b91b95e76a4b7a678bb209d46a7f"}],"nova/tests/functional/api/openstack/placement/gabbits/resource-classes-1-7.yaml":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"cf60963a379b08a673bfe84245de81bbedbfdcb1","unresolved":false,"context_lines":[{"line_number":11,"context_line":"tests:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"- name: create new custom class with put"},{"line_number":14,"context_line":"  PUT: /resource_classes/CUSTOM_COW"},{"line_number":15,"context_line":"  status: 201"},{"line_number":16,"context_line":"  response_headers:"},{"line_number":17,"context_line":"      location: //resource_classes/CUSTOM_COW/"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"5ff73747_ab105558","line":14,"range":{"start_line":14,"start_character":32,"end_line":14,"end_character":35},"updated":"2017-04-28 13:57:40.000000000","message":"Something special for pet VMs right?","commit_id":"697c2d89ee5a4c2fc45f34ad28165f397c602399"}],"nova/tests/functional/api/openstack/placement/gabbits/resource-classes.yaml":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"cb6d608052e670bc1a3596d6481f1e6a7424f157","unresolved":false,"context_lines":[{"line_number":273,"context_line":"  response_json_paths:"},{"line_number":274,"context_line":"      $.errors[0].title: Bad Request"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"- name: crupdate resource class with name exceed max characters"},{"line_number":277,"context_line":"  PUT: /resource_classes/CUSTOM_THIS_IS_A_LONG_TEXT_OF_LENGTH_256_CHARACTERSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS"},{"line_number":278,"context_line":"  request_headers:"},{"line_number":279,"context_line":"      OpenStack-API-Version: placement 1.7"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"7ffa3b31_937d64b3","line":276,"range":{"start_line":276,"start_character":8,"end_line":276,"end_character":16},"updated":"2017-04-17 09:45:51.000000000","message":"This is a typo?","commit_id":"15aef0228b9740e0defe2a7c70ccd3c9e5b39bb0"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"04971c43b16cd89c6edbcefd03ef1fc665940ef2","unresolved":false,"context_lines":[{"line_number":273,"context_line":"  response_json_paths:"},{"line_number":274,"context_line":"      $.errors[0].title: Bad Request"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"- name: crupdate resource class with name exceed max characters"},{"line_number":277,"context_line":"  PUT: /resource_classes/CUSTOM_THIS_IS_A_LONG_TEXT_OF_LENGTH_256_CHARACTERSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS"},{"line_number":278,"context_line":"  request_headers:"},{"line_number":279,"context_line":"      OpenStack-API-Version: placement 1.7"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"7ffa3b31_3622fea5","line":276,"in_reply_to":"7ffa3b31_937d64b3","updated":"2017-04-17 09:48:31.000000000","message":"Not really but it is probably a bad thing to do in a test name.\n\n\"crupdate\" is \"create or update\"\n\nI\u0027ll fix it.","commit_id":"15aef0228b9740e0defe2a7c70ccd3c9e5b39bb0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"7979d092efa652584a8327282064d5a93a034756","unresolved":false,"context_lines":[{"line_number":125,"context_line":"  PUT: /resource_classes/VCPU"},{"line_number":126,"context_line":"  request_headers:"},{"line_number":127,"context_line":"    content-type: application/json"},{"line_number":128,"context_line":"    OpenStack-API-Version: placement 1.5"},{"line_number":129,"context_line":"  data:"},{"line_number":130,"context_line":"      name: VCPU_ALTERNATE"},{"line_number":131,"context_line":"  status: 400"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"7ffa3b31_a7d59ae7","line":128,"updated":"2017-04-18 10:14:52.000000000","message":"So what happens for 1.6 and 1.0?\n\nSeems this should really be an additional test, and we keep the old one?","commit_id":"02fce7f6f4adf9da888c9342229a52d00d23fcca"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"cfff89885a9753c3b01faa2b5fcd2a2585a7945f","unresolved":false,"context_lines":[{"line_number":134,"context_line":"  response_json_paths:"},{"line_number":135,"context_line":"      $.errors[0].title: Bad Request"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"- name: update standard resource class 1.7"},{"line_number":138,"context_line":"  PUT: /resource_classes/VCPU"},{"line_number":139,"context_line":"  request_headers:"},{"line_number":140,"context_line":"    OpenStack-API-Version: placement 1.7"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"7ffa3b31_87797efd","line":137,"updated":"2017-04-18 10:17:02.000000000","message":"Nit: I would be tempted to group all the 1.7 tests into a single block in the file, not sure what the general pattern is here though.","commit_id":"02fce7f6f4adf9da888c9342229a52d00d23fcca"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"d9987e717f915e4d7176ecd63f538d06b9ef0ba4","unresolved":false,"context_lines":[{"line_number":134,"context_line":"  response_json_paths:"},{"line_number":135,"context_line":"      $.errors[0].title: Bad Request"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"- name: update standard resource class 1.7"},{"line_number":138,"context_line":"  PUT: /resource_classes/VCPU"},{"line_number":139,"context_line":"  request_headers:"},{"line_number":140,"context_line":"    OpenStack-API-Version: placement 1.7"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"7ffa3b31_fec56b8f","line":137,"in_reply_to":"7ffa3b31_87797efd","updated":"2017-04-18 12:34:38.000000000","message":"One issue with gabbits is that they execute sequentially, so you can\u0027t order them any old way like in regular python tests.","commit_id":"02fce7f6f4adf9da888c9342229a52d00d23fcca"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"cfff89885a9753c3b01faa2b5fcd2a2585a7945f","unresolved":false,"context_lines":[{"line_number":199,"context_line":"  PUT: /resource_classes/$ENVIRON[\u0027CUSTOM_RES_CLASS\u0027]"},{"line_number":200,"context_line":"  request_headers:"},{"line_number":201,"context_line":"    content-type: application/json"},{"line_number":202,"context_line":"    OpenStack-API-Version: placement 1.5"},{"line_number":203,"context_line":"  data:"},{"line_number":204,"context_line":"      name: CUSTOM_NFV_BAR"},{"line_number":205,"context_line":"  status: 200"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"7ffa3b31_e7228201","line":202,"updated":"2017-04-18 10:17:02.000000000","message":"I am missing something, could we not just leave these all un altered?","commit_id":"02fce7f6f4adf9da888c9342229a52d00d23fcca"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"616786a93edecfab495da07583c93cecc674b59b","unresolved":false,"context_lines":[{"line_number":199,"context_line":"  PUT: /resource_classes/$ENVIRON[\u0027CUSTOM_RES_CLASS\u0027]"},{"line_number":200,"context_line":"  request_headers:"},{"line_number":201,"context_line":"    content-type: application/json"},{"line_number":202,"context_line":"    OpenStack-API-Version: placement 1.5"},{"line_number":203,"context_line":"  data:"},{"line_number":204,"context_line":"      name: CUSTOM_NFV_BAR"},{"line_number":205,"context_line":"  status: 200"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"7ffa3b31_4dab9788","line":202,"in_reply_to":"7ffa3b31_e7228201","updated":"2017-04-18 11:12:09.000000000","message":"Yeah, I think you\u0027re right, going to try a somewhat different approach.","commit_id":"02fce7f6f4adf9da888c9342229a52d00d23fcca"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"3d39f3c572efa0acb9c587982030922a9d65ee3f","unresolved":false,"context_lines":[{"line_number":240,"context_line":"  response_strings:"},{"line_number":241,"context_line":"      - \"Failed validating \u0027maxLength\u0027\""},{"line_number":242,"context_line":"  response_json_paths:"},{"line_number":243,"context_line":"      $.errors[0].title: Bad Request"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"7ffa3b31_afc63a67","side":"PARENT","line":243,"updated":"2017-04-20 15:42:16.000000000","message":"this remove ought to come back, I think it was a fixup mistake","commit_id":"b5c4ad5385f950bffda150d589c27a41553f5104"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"abdee66405adf6ec55d7f7ddeed6c10c2d0440bd","unresolved":false,"context_lines":[{"line_number":115,"context_line":"      $.name: $ENVIRON[\u0027CUSTOM_RES_CLASS\u0027]"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"- name: list resource classes after addition of custom res class"},{"line_number":118,"context_line":"  GET: /resource_classes"},{"line_number":119,"context_line":"  response_json_paths:"},{"line_number":120,"context_line":"      $.resource_classes.`len`: 11  # 10 standard plus 1 custom"},{"line_number":121,"context_line":"      $.resource_classes[10].name: $ENVIRON[\u0027CUSTOM_RES_CLASS\u0027]"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"7ffa3b31_3c9caa0c","line":118,"updated":"2017-04-20 15:29:17.000000000","message":"I do wonder if we should update this gabbi file to be supporting the latest version, because new developers looking at the functional tests for RCs would first go to that name.\n\nOf course, we could describe the legacy behaviours in the *-1.6 file you began to write.","commit_id":"ced21c5d41c7b91b95e76a4b7a678bb209d46a7f"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"3d39f3c572efa0acb9c587982030922a9d65ee3f","unresolved":false,"context_lines":[{"line_number":115,"context_line":"      $.name: $ENVIRON[\u0027CUSTOM_RES_CLASS\u0027]"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"- name: list resource classes after addition of custom res class"},{"line_number":118,"context_line":"  GET: /resource_classes"},{"line_number":119,"context_line":"  response_json_paths:"},{"line_number":120,"context_line":"      $.resource_classes.`len`: 11  # 10 standard plus 1 custom"},{"line_number":121,"context_line":"      $.resource_classes[10].name: $ENVIRON[\u0027CUSTOM_RES_CLASS\u0027]"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"7ffa3b31_8fc37e57","line":118,"in_reply_to":"7ffa3b31_3c9caa0c","updated":"2017-04-20 15:42:16.000000000","message":"John asked that I change this file as little as possible.","commit_id":"ced21c5d41c7b91b95e76a4b7a678bb209d46a7f"}],"releasenotes/notes/idempotent-put-resource-class-dc7a267c823b7995.yaml":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"cb6d608052e670bc1a3596d6481f1e6a7424f157","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The 1.6 version of the placement API changes handling of"},{"line_number":5,"context_line":"    `PUT /resource_classes/{name}` to be a create or verification of the"},{"line_number":6,"context_line":"    resource class with `{name}`. If the resource class is a custom resource"},{"line_number":7,"context_line":"    class and does not already exist it will be created and a ``201`` response"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"7ffa3b31_13403456","line":4,"range":{"start_line":4,"start_character":8,"end_line":4,"end_character":11},"updated":"2017-04-17 09:45:51.000000000","message":"It is 1.7 now.","commit_id":"15aef0228b9740e0defe2a7c70ccd3c9e5b39bb0"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"abdee66405adf6ec55d7f7ddeed6c10c2d0440bd","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    class and does not already exist it will be created and a ``201`` response"},{"line_number":8,"context_line":"    code returned. If the class already exists the response code will be"},{"line_number":9,"context_line":"    ``204``. This makes it possible to check or create a resource class in one"},{"line_number":10,"context_line":"    request."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"7ffa3b31_9c7a9eb7","line":10,"updated":"2017-04-20 15:29:17.000000000","message":"You should comment that it\u0027s no longer possible to directly modify an existing RC now with 1.7 and rather delete/create it.","commit_id":"ced21c5d41c7b91b95e76a4b7a678bb209d46a7f"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"3d39f3c572efa0acb9c587982030922a9d65ee3f","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    class and does not already exist it will be created and a ``201`` response"},{"line_number":8,"context_line":"    code returned. If the class already exists the response code will be"},{"line_number":9,"context_line":"    ``204``. This makes it possible to check or create a resource class in one"},{"line_number":10,"context_line":"    request."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"7ffa3b31_2fa8ea89","line":10,"in_reply_to":"7ffa3b31_9c7a9eb7","updated":"2017-04-20 15:42:16.000000000","message":"I\u0027m hoping to leave that out because we don\u0027t want people to know that that was ever possible.","commit_id":"ced21c5d41c7b91b95e76a4b7a678bb209d46a7f"}]}
