)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"63e9cb01ee2ea53b1318635261fccdd033f6723d","unresolved":false,"context_lines":[{"line_number":7,"context_line":"PUT dict format to /allocations (v1.11, v1.12)"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Microversion 1.11 does not need any support in osc so we just skip over"},{"line_number":10,"context_line":"that in this patch."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Partially-Implements: blueprint placement-osc-plugin-rocky"},{"line_number":13,"context_line":"Change-Id: Ie2f6a9e73e9b00968c8e850aea705ffccdfa124b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa0c359_7a68c0f3","line":10,"updated":"2018-02-14 13:58:51.000000000","message":"1.11 adds allocations links to the GET resource_providers API but the osc client does not do anything with links so skipping 1.11 over is OK.","commit_id":"fbbbc8c8c681cd84980b27481b22deb736c1e134"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"63e9cb01ee2ea53b1318635261fccdd033f6723d","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Microversion 1.11 does not need any support in osc so we just skip over"},{"line_number":10,"context_line":"that in this patch."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Partially-Implements: blueprint placement-osc-plugin-rocky"},{"line_number":13,"context_line":"Change-Id: Ie2f6a9e73e9b00968c8e850aea705ffccdfa124b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa0c359_d5576557","line":11,"updated":"2018-02-14 13:58:51.000000000","message":"Based on the doc[1], 1.12 also changed the GET /allocations/{consumer_uuid} response body by adding project_id and user_id to it. \n\n  openstack --debug --os-placement-api-version 1.12 resource provider allocation show 734ab10e-9bbd-4e85-aac4-2d2da9f5819f\n\nRESP BODY: {\"project_id\": \"82b8f6962f624285aa3c99f92231b3c5\", \"user_id\": \"ce23715bef294ca69d94af25140f9e02\", \"allocations\": {\"ce4ee125-e4c6-4949-a46c-b2fc754a0353\": {\"generation\": 12, \"resources\": {\"VCPU\": 1, \"MEMORY_MB\": 512, \"DISK_GB\": 5}}}}\n\n+--------------------------------------+------------+------------------------------------------------+\n| resource_provider                    | generation | resources                                      |\n+--------------------------------------+------------+------------------------------------------------+\n| ce4ee125-e4c6-4949-a46c-b2fc754a0353 |         12 | {u\u0027VCPU\u0027: 1, u\u0027MEMORY_MB\u0027: 512, u\u0027DISK_GB\u0027: 5} |\n+--------------------------------------+------------+------------------------------------------------+\n\n\nSo this patch needs to support this change as well.\n\n\nAlso 1.12 changes the response body format of GET allocation_candidates API which also needs to be followed up.\n\n  openstack --os-placement-api-version 1.10 allocation candidate show --resource VCPU\u003d1\n\n+------------+------------+--------------------------------------+-----------+\n| request no | allocation | resource provider                    | resource  |\n+------------+------------+--------------------------------------+-----------+\n|          1 | VCPU\u003d1     | ce4ee125-e4c6-4949-a46c-b2fc754a0353 | VCPU\u003d2/32 |\n+------------+------------+--------------------------------------+-----------+\n\n\n  openstack --debug --os-placement-api-version 1.12 allocation candidate show --resource VCPU\u003d1\n\n\nRESP BODY: {\"provider_summaries\": {\"ce4ee125-e4c6-4949-a46c-b2fc754a0353\": {\"resources\": {\"VCPU\": {\"used\": 2, \"capacity\": 32}}}}, \"allocation_requests\": [{\"allocations\": {\"ce4ee125-e4c6-4949-a46c-b2fc754a0353\": {\"resources\": {\"VCPU\": 1}}}}]}\n\nGET call to placement for http://192.168.122.95/placement/allocation_candidates?resources\u003dVCPU%3A1 used request id req-cb206d57-99c7-4aa3-b5c7-ceff893d0694\nstring indices must be integers\nTraceback (most recent call last):\n  File \"/usr/local/lib/python2.7/dist-packages/cliff/app.py\", line 400, in run_subcommand\n    result \u003d cmd.run(parsed_args)\n  File \"/usr/local/lib/python2.7/dist-packages/osc_lib/command/command.py\", line 41, in run\n    return super(Command, self).run(parsed_args)\n  File \"/usr/local/lib/python2.7/dist-packages/cliff/display.py\", line 116, in run\n    column_names, data \u003d self.take_action(parsed_args)\n  File \"/opt/stack/osc-placement/osc_placement/resources/allocation_candidate.py\", line 61, in take_action\n    rp \u003d allocation[\u0027resource_provider\u0027][\u0027uuid\u0027]\nTypeError: string indices must be integers\nclean_up ShowAllocationCandidate: string indices must be integers\nTraceback (most recent call last):\n  File \"/usr/local/lib/python2.7/dist-packages/osc_lib/shell.py\", line 134, in run\n    ret_val \u003d super(OpenStackShell, self).run(argv)\n  File \"/usr/local/lib/python2.7/dist-packages/cliff/app.py\", line 279, in run\n    result \u003d self.run_subcommand(remainder)\n  File \"/usr/local/lib/python2.7/dist-packages/osc_lib/shell.py\", line 169, in run_subcommand\n    ret_value \u003d super(OpenStackShell, self).run_subcommand(argv)\n  File \"/usr/local/lib/python2.7/dist-packages/cliff/app.py\", line 400, in run_subcommand\n    result \u003d cmd.run(parsed_args)\n  File \"/usr/local/lib/python2.7/dist-packages/osc_lib/command/command.py\", line 41, in run\n    return super(Command, self).run(parsed_args)\n  File \"/usr/local/lib/python2.7/dist-packages/cliff/display.py\", line 116, in run\n    column_names, data \u003d self.take_action(parsed_args)\n  File \"/opt/stack/osc-placement/osc_placement/resources/allocation_candidate.py\", line 61, in take_action\n    rp \u003d allocation[\u0027resource_provider\u0027][\u0027uuid\u0027]\nTypeError: string indices must be integers\n\n\n[1]https://github.com/openstack/nova/blob/master/nova/api/openstack/placement/rest_api_version_history.rst","commit_id":"fbbbc8c8c681cd84980b27481b22deb736c1e134"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"36725907194d01556050ea63ef9afe06c5835f9d","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Microversion 1.11 does not need any support in osc so we just skip over"},{"line_number":10,"context_line":"that in this patch."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Partially-Implements: blueprint placement-osc-plugin-rocky"},{"line_number":13,"context_line":"Change-Id: Ie2f6a9e73e9b00968c8e850aea705ffccdfa124b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3fa0c359_4ab3364e","line":11,"in_reply_to":"3fa0c359_d5576557","updated":"2018-02-20 13:35:41.000000000","message":"Done","commit_id":"fbbbc8c8c681cd84980b27481b22deb736c1e134"}],"osc_placement/resources/allocation.py":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"848c9884c80d6024d94846d9c5b3f0337af8e396","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    return allocations"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"class SetAllocation(command.Lister, version.CheckerMixin):"},{"line_number":49,"context_line":"    \"\"\"Replaces the set of resource allocation(s) for a given consumer"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    Note that this is a full replacement of the existing allocations. If you"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_33bf28b1","line":48,"range":{"start_line":48,"start_character":36,"end_line":48,"end_character":56},"updated":"2018-02-09 13:31:47.000000000","message":"This needs to be fixed not here but in one of the base patches.","commit_id":"7101a5d33b12b03cb6f07d40c11a51cf3d8071c9"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"b25186a3c943a79268163448fa721de8ee062dc0","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def get_fields(self):"},{"line_number":50,"context_line":"        fields \u003d (\u0027generation\u0027, \u0027resources\u0027)"},{"line_number":51,"context_line":"        if self.compare_version(version.ge(\u00271.12\u0027)):"},{"line_number":52,"context_line":"            fields +\u003d (\u0027project_id\u0027, \u0027user_id\u0027)"},{"line_number":53,"context_line":"        return fields"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa0c359_52ed12ee","line":51,"range":{"start_line":51,"start_character":16,"end_line":51,"end_character":31},"updated":"2018-02-21 10:01:53.000000000","message":"I\u0027m not really satisfied with this mixin, especially that we inherit compare_version from version.CheckerMixin. Let me know if you see a nicer way to gain access to the requested version.","commit_id":"f46fd3725f443a40fc62cd348a8155727c79e471"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"184deaf3aacbc2b3bdf341f0e4d9bab4a22655b1","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def get_fields(self):"},{"line_number":50,"context_line":"        fields \u003d (\u0027generation\u0027, \u0027resources\u0027)"},{"line_number":51,"context_line":"        if self.compare_version(version.ge(\u00271.12\u0027)):"},{"line_number":52,"context_line":"            fields +\u003d (\u0027project_id\u0027, \u0027user_id\u0027)"},{"line_number":53,"context_line":"        return fields"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ff6b8bd7_191f2b6d","line":51,"range":{"start_line":51,"start_character":16,"end_line":51,"end_character":31},"in_reply_to":"3fa0c359_52ed12ee","updated":"2018-03-06 16:29:32.000000000","message":"Still that FieldsMixin looks weird for me. \nFirst I\u0027m not against copy-paste for that case, indeed SetAllocation and ShowAllocation could return different fields.\n\nAlternative solution:\nI updated version.py a little bit, so we could do:\n\ndef get_fields(v):\n    if version.compare(v, ..., exc\u003dFalse):\n    ...\n\nand in method:\n\nfields \u003d get_fields(version.get_version(self))","commit_id":"f46fd3725f443a40fc62cd348a8155727c79e471"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"081d0c8c8b6a99d60c12534b4e680db062972ff0","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def get_fields(self):"},{"line_number":50,"context_line":"        fields \u003d (\u0027generation\u0027, \u0027resources\u0027)"},{"line_number":51,"context_line":"        if self.compare_version(version.ge(\u00271.12\u0027)):"},{"line_number":52,"context_line":"            fields +\u003d (\u0027project_id\u0027, \u0027user_id\u0027)"},{"line_number":53,"context_line":"        return fields"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"df7087c5_72c5158e","line":51,"range":{"start_line":51,"start_character":16,"end_line":51,"end_character":31},"in_reply_to":"ff6b8bd7_191f2b6d","updated":"2018-03-08 13:52:08.000000000","message":"\u003e First I\u0027m not against copy-paste for that case, indeed\n \u003e SetAllocation and ShowAllocation could return different fields.\n\nI went with your first suggestion. You\u0027re right, the fields returned by the different verbs may diverge in the future. I forgot about that.","commit_id":"f46fd3725f443a40fc62cd348a8155727c79e471"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"8abb9a5072f9cfecab0cfe5bcb7cf71786312915","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                **v) for k, v in per_provider]"},{"line_number":132,"context_line":"        else:"},{"line_number":133,"context_line":"            allocs \u003d [dict(resource_provider\u003dk, **v) for k, v in per_provider]"},{"line_number":134,"context_line":"        fields_ext \u003d (\u0027resource_provider\u0027, ) + self.get_fields()"},{"line_number":135,"context_line":"        rows \u003d (utils.get_dict_properties(a, fields_ext) for a in allocs)"},{"line_number":136,"context_line":"        return fields_ext, rows"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa0c359_889b6a71","line":134,"updated":"2018-02-21 14:19:59.000000000","message":"how about:\n\nfields_ext \u003d (\u0027resource_provider\u0027, ) + get_list_fields(self.compare_version(version.ge(\u00271.12\u0027)))","commit_id":"f46fd3725f443a40fc62cd348a8155727c79e471"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"21dcbdd6ec04b8852a4166335f69b2bd55980cdb","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                **v) for k, v in per_provider]"},{"line_number":132,"context_line":"        else:"},{"line_number":133,"context_line":"            allocs \u003d [dict(resource_provider\u003dk, **v) for k, v in per_provider]"},{"line_number":134,"context_line":"        fields_ext \u003d (\u0027resource_provider\u0027, ) + self.get_fields()"},{"line_number":135,"context_line":"        rows \u003d (utils.get_dict_properties(a, fields_ext) for a in allocs)"},{"line_number":136,"context_line":"        return fields_ext, rows"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa0c359_65c38e8a","line":134,"in_reply_to":"3fa0c359_889b6a71","updated":"2018-02-22 10:20:31.000000000","message":"If we pass a boolean to get_list_fields then we cannot later extend it to work with more than 2 versions, right? With the current get_fields that\u0027s possible. Or do I misunderstand the suggestion?","commit_id":"f46fd3725f443a40fc62cd348a8155727c79e471"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"b53c467fd50f254ad83702d0039b23467d868f2b","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    Note that this is a full replacement of the existing allocations. If you"},{"line_number":60,"context_line":"    want to retain the existing allocations and add a new resource class"},{"line_number":61,"context_line":"    allocation, you must specify all resource class allocations, old and new."},{"line_number":62,"context_line":"    \"\"\""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def get_parser(self, prog_name):"},{"line_number":65,"context_line":"        parser \u003d super(SetAllocation, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff6b8bd7_fcbb45e2","line":62,"updated":"2018-03-06 17:03:55.000000000","message":"In both changed commands it would be great to mention that \ndepends on version project_id and user_id fields appear.","commit_id":"7372e4402fff731bbf965b34695943221e84bb64"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"081d0c8c8b6a99d60c12534b4e680db062972ff0","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    Note that this is a full replacement of the existing allocations. If you"},{"line_number":60,"context_line":"    want to retain the existing allocations and add a new resource class"},{"line_number":61,"context_line":"    allocation, you must specify all resource class allocations, old and new."},{"line_number":62,"context_line":"    \"\"\""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def get_parser(self, prog_name):"},{"line_number":65,"context_line":"        parser \u003d super(SetAllocation, self).get_parser(prog_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"df7087c5_1294d936","line":62,"in_reply_to":"ff6b8bd7_fcbb45e2","updated":"2018-03-08 13:52:08.000000000","message":"Mentioned project/user_id in the docstrings, but let me know if you meant something else.","commit_id":"7372e4402fff731bbf965b34695943221e84bb64"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"b53c467fd50f254ad83702d0039b23467d868f2b","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        http.request(\u0027PUT\u0027, url, json\u003dpayload)"},{"line_number":124,"context_line":"        resp \u003d http.request(\u0027GET\u0027, url).json()"},{"line_number":125,"context_line":"        per_provider \u003d resp[\u0027allocations\u0027].items()"},{"line_number":126,"context_line":"        if self.compare_version(version.ge(\u00271.12\u0027)):"},{"line_number":127,"context_line":"            allocs \u003d [dict("},{"line_number":128,"context_line":"                resource_provider\u003dk,"},{"line_number":129,"context_line":"                project_id\u003dresp[\u0027project_id\u0027],"},{"line_number":130,"context_line":"                user_id\u003dresp[\u0027user_id\u0027],"},{"line_number":131,"context_line":"                **v) for k, v in per_provider]"},{"line_number":132,"context_line":"        else:"},{"line_number":133,"context_line":"            allocs \u003d [dict(resource_provider\u003dk, **v) for k, v in per_provider]"},{"line_number":134,"context_line":"        fields_ext \u003d (\u0027resource_provider\u0027, ) + self.get_fields()"},{"line_number":135,"context_line":"        rows \u003d (utils.get_dict_properties(a, fields_ext) for a in allocs)"},{"line_number":136,"context_line":"        return fields_ext, rows"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff6b8bd7_1c515937","line":134,"range":{"start_line":126,"start_character":0,"end_line":134,"end_character":64},"updated":"2018-03-06 17:03:55.000000000","message":"Something like:\n\n        fields \u003d (\u0027resource_provider\u0027, \u0027generation\u0027, \u0027resources\u0027)\n        allocs \u003d [dict(resource_provider\u003dk, **v) for k, v in per_provider]\n        if self.compare_version(version.ge(\u00271.12\u0027)):\n            fields +\u003d (\u0027project_id\u0027, \u0027user_id\u0027)\n            [alloc.update(\n                project_id\u003dresp[\u0027project_id\u0027], user_id\u003dresp[\u0027user_id\u0027])\n             for alloc in allocs]","commit_id":"7372e4402fff731bbf965b34695943221e84bb64"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"081d0c8c8b6a99d60c12534b4e680db062972ff0","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        http.request(\u0027PUT\u0027, url, json\u003dpayload)"},{"line_number":124,"context_line":"        resp \u003d http.request(\u0027GET\u0027, url).json()"},{"line_number":125,"context_line":"        per_provider \u003d resp[\u0027allocations\u0027].items()"},{"line_number":126,"context_line":"        if self.compare_version(version.ge(\u00271.12\u0027)):"},{"line_number":127,"context_line":"            allocs \u003d [dict("},{"line_number":128,"context_line":"                resource_provider\u003dk,"},{"line_number":129,"context_line":"                project_id\u003dresp[\u0027project_id\u0027],"},{"line_number":130,"context_line":"                user_id\u003dresp[\u0027user_id\u0027],"},{"line_number":131,"context_line":"                **v) for k, v in per_provider]"},{"line_number":132,"context_line":"        else:"},{"line_number":133,"context_line":"            allocs \u003d [dict(resource_provider\u003dk, **v) for k, v in per_provider]"},{"line_number":134,"context_line":"        fields_ext \u003d (\u0027resource_provider\u0027, ) + self.get_fields()"},{"line_number":135,"context_line":"        rows \u003d (utils.get_dict_properties(a, fields_ext) for a in allocs)"},{"line_number":136,"context_line":"        return fields_ext, rows"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"df7087c5_a19efd04","line":134,"range":{"start_line":126,"start_character":0,"end_line":134,"end_character":64},"in_reply_to":"ff6b8bd7_1c515937","updated":"2018-03-08 13:52:08.000000000","message":"Done","commit_id":"7372e4402fff731bbf965b34695943221e84bb64"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9a2337dd169ea1d122817793d7ec188637e7d00f","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            raise exceptions.CommandError("},{"line_number":107,"context_line":"                \u0027At least one resource allocation must be specified\u0027)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        if self.compare_version(version.ge(\u00271.12\u0027)):"},{"line_number":110,"context_line":"            allocations \u003d {"},{"line_number":111,"context_line":"                rp: {\u0027resources\u0027: resources}"},{"line_number":112,"context_line":"                for rp, resources in allocations.items()}"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_a63a7d32","line":109,"updated":"2018-06-29 13:53:00.000000000","message":"OK so this is just dealing with format change on the PUT request.","commit_id":"dbd35024d74ff9a9b3fdd5b45bcaff53c9dc0f8b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9a2337dd169ea1d122817793d7ec188637e7d00f","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    \"\"\"Show resource allocations for a given consumer."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    Starting with --os-placement-api-version 1.12 the API response contains the"},{"line_number":150,"context_line":"    project_id and user_id of allocations which also appears in the CLI output."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_66722515","line":149,"range":{"start_line":149,"start_character":18,"end_line":149,"end_character":49},"updated":"2018-06-29 13:53:00.000000000","message":"``--os-placement-api-version 1.12``","commit_id":"dbd35024d74ff9a9b3fdd5b45bcaff53c9dc0f8b"}],"osc_placement/resources/allocation_candidate.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9a2337dd169ea1d122817793d7ec188637e7d00f","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                for rc, value in resources[\u0027resources\u0027].items())"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        rows \u003d []"},{"line_number":93,"context_line":"        if self.compare_version(version.ge(\u00271.12\u0027)):"},{"line_number":94,"context_line":"            for i, allocation_req in enumerate(resp[\u0027allocation_requests\u0027]):"},{"line_number":95,"context_line":"                for rp, resources in allocation_req[\u0027allocations\u0027].items():"},{"line_number":96,"context_line":"                    req \u003d \u0027,\u0027.join("}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_c64e99c1","line":93,"updated":"2018-06-29 13:53:00.000000000","message":"OK this is handling the response format change for allocation requests for 1.12. And we don\u0027t actually include the project_id/user_id from the response in the output - I\u0027m OK with that.","commit_id":"dbd35024d74ff9a9b3fdd5b45bcaff53c9dc0f8b"}],"osc_placement/tests/functional/test_allocation.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9a2337dd169ea1d122817793d7ec188637e7d00f","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"class TestAllocation112(base.BaseTestCase):"},{"line_number":100,"context_line":"    VERSION \u003d \u00271.12\u0027"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def setUp(self):"},{"line_number":103,"context_line":"        super(TestAllocation112, self).setUp()"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_c6aa1919","line":100,"updated":"2018-06-29 13:53:00.000000000","message":"Seems sort of weird that we don\u0027t have a specific 1.8 test for PUT /allocations, then we could have just extended that for 1.12 and asserted the project_id and user_id fields in the response. I think PUT /allocations with 1.8 is tested implicitly in the 1.9 test for consumer usages.","commit_id":"dbd35024d74ff9a9b3fdd5b45bcaff53c9dc0f8b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8478cbd25a9a298d3696e9a78c862aacd3d2d59c","unresolved":false,"context_lines":[{"line_number":117,"context_line":"             \u0027rp\u003d{},MEMORY_MB\u003d512\u0027.format(self.rp1[\u0027uuid\u0027])],"},{"line_number":118,"context_line":"            project_id\u003dproject_id, user_id\u003duser_id"},{"line_number":119,"context_line":"        )"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        retrieved_alloc \u003d self.resource_allocation_show(consumer_uuid)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        expected \u003d ["}],"source_content_type":"text/x-python","patch_set":31,"id":"5f7c97a3_c32a02e5","line":120,"updated":"2018-06-29 18:22:48.000000000","message":"This was a rebase merge conflict oops, not worth respinning unless I have to.","commit_id":"67ca00f1a4483b8beb7c07ffb2012566e1df9a24"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"97f2acae830605b75d004fd604c26aa1cd67dc8f","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        retrieved_alloc \u003d self.resource_allocation_show(consumer_uuid)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        expected \u003d ["},{"line_number":160,"context_line":"            {\u0027resource_provider\u0027: rp1[\u0027uuid\u0027],"},{"line_number":161,"context_line":"             \u0027generation\u0027: 2,"},{"line_number":162,"context_line":"             \u0027project_id\u0027: project_uuid,"},{"line_number":163,"context_line":"             \u0027user_id\u0027: user_uuid,"}],"source_content_type":"text/x-python","patch_set":32,"id":"5f7c97a3_ac2d73af","line":160,"range":{"start_line":160,"start_character":34,"end_line":160,"end_character":37},"updated":"2018-06-29 20:54:10.000000000","message":"This is wrong now.","commit_id":"8c21cc809c63a523bcfbe021d4d109ffc3c80fb0"}],"osc_placement/version.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9a2337dd169ea1d122817793d7ec188637e7d00f","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    \u00271.8\u0027,"},{"line_number":27,"context_line":"    \u00271.9\u0027,"},{"line_number":28,"context_line":"    \u00271.10\u0027,"},{"line_number":29,"context_line":"    \u00271.11\u0027,"},{"line_number":30,"context_line":"    \u00271.12\u0027"},{"line_number":31,"context_line":"]"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5f7c97a3_8652e134","line":29,"updated":"2018-06-29 13:53:00.000000000","message":"could leave a comment that 1.11 isn\u0027t used","commit_id":"dbd35024d74ff9a9b3fdd5b45bcaff53c9dc0f8b"}]}
