)]}'
{"osc_placement/resources/resource_provider.py":[{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"8f043fb4172fad6f9ebd2e8c95f5263dcd5b710a","unresolved":false,"context_lines":[{"line_number":178,"context_line":"            allocs_url \u003d ALLOCATIONS_URL.format(uuid\u003dparsed_args.uuid)"},{"line_number":179,"context_line":"            allocs \u003d http.request(\u0027GET\u0027, allocs_url).json()[\u0027allocations\u0027]"},{"line_number":180,"context_line":"            resource[\u0027allocations\u0027] \u003d allocs"},{"line_number":181,"context_line":"            fields +\u003d fields + (\u0027allocations\u0027,)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        return fields, utils.get_dict_properties(resource, fields)"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bf659307_c683c7a8","line":181,"range":{"start_line":181,"start_character":0,"end_line":181,"end_character":47},"updated":"2018-04-10 07:51:47.000000000","message":"openstack resource provider show b4fdecd4-1488-4ca8-a3d8-1ab8cdd20d6b --allocations\n+-------------+--------------------------------------+\n| Field       | Value                                |\n+-------------+--------------------------------------+\n| uuid        | b4fdecd4-1488-4ca8-a3d8-1ab8cdd20d6b |\n| name        | Baremetal_node_01                    |\n| generation  | 0                                    |\n| uuid        | b4fdecd4-1488-4ca8-a3d8-1ab8cdd20d6b |\n| name        | Baremetal_node_01                    |\n| generation  | 0                                    |\n| allocations | {}                                   |\n+-------------+--------------------------------------+\n\nI think ``fields +\u003d (\u0027allocations\u0027,)`` is your wanted.","commit_id":"929aeefb36518156b0c4d0ba10fadf592933137d"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"eafe4a2f0c8b19722e863319915d6b83ce4df8c0","unresolved":false,"context_lines":[{"line_number":178,"context_line":"            allocs_url \u003d ALLOCATIONS_URL.format(uuid\u003dparsed_args.uuid)"},{"line_number":179,"context_line":"            allocs \u003d http.request(\u0027GET\u0027, allocs_url).json()[\u0027allocations\u0027]"},{"line_number":180,"context_line":"            resource[\u0027allocations\u0027] \u003d allocs"},{"line_number":181,"context_line":"            fields +\u003d fields + (\u0027allocations\u0027,)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        return fields, utils.get_dict_properties(resource, fields)"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bf659307_a5fc6972","line":181,"range":{"start_line":181,"start_character":0,"end_line":181,"end_character":47},"in_reply_to":"bf659307_c683c7a8","updated":"2018-04-11 07:20:11.000000000","message":"Good catch. Thank you.","commit_id":"929aeefb36518156b0c4d0ba10fadf592933137d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"6609089e2ce186f0e958c66befd503b9ec3feebc","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            \u0027--parent-provider-uuid\u0027,"},{"line_number":212,"context_line":"            metavar\u003d\u0027\u003cparent_provider_uuid\u003e\u0027,"},{"line_number":213,"context_line":"            help\u003d\u0027UUID of the parent provider.\u0027"},{"line_number":214,"context_line":"                 \u0027 Can only be set if the resource had no parent yet.\u0027"},{"line_number":215,"context_line":"                 \u0027 This param requires at least\u0027"},{"line_number":216,"context_line":"                 \u0027 --os-placement-api-version 1.14.\u0027"},{"line_number":217,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_e974616a","line":214,"range":{"start_line":214,"start_character":42,"end_line":214,"end_character":50},"updated":"2018-05-11 13:18:47.000000000","message":"resource provider (or just \"provider\")","commit_id":"fb72375af9e6d5ff560b59c480003c63d40c6f81"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"4b3366566dd073d80a2573a1fb4f722e64fd16f1","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            \u0027--parent-provider-uuid\u0027,"},{"line_number":212,"context_line":"            metavar\u003d\u0027\u003cparent_provider_uuid\u003e\u0027,"},{"line_number":213,"context_line":"            help\u003d\u0027UUID of the parent provider.\u0027"},{"line_number":214,"context_line":"                 \u0027 Can only be set if the resource had no parent yet.\u0027"},{"line_number":215,"context_line":"                 \u0027 This param requires at least\u0027"},{"line_number":216,"context_line":"                 \u0027 --os-placement-api-version 1.14.\u0027"},{"line_number":217,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_f3a6700f","line":214,"range":{"start_line":214,"start_character":42,"end_line":214,"end_character":50},"in_reply_to":"5f7c97a3_e974616a","updated":"2018-05-14 13:57:13.000000000","message":"Done","commit_id":"fb72375af9e6d5ff560b59c480003c63d40c6f81"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"6609089e2ce186f0e958c66befd503b9ec3feebc","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        http \u003d self.app.client_manager.placement"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"        url \u003d BASE_URL + \u0027/\u0027 + parsed_args.uuid"},{"line_number":267,"context_line":"        http.request(\u0027DELETE\u0027, url)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_211cb376","line":267,"updated":"2018-05-11 13:18:47.000000000","message":"Attempting to delete a parent with children will return a CannotDeleteParentResourceProvider error which should [1] get translated to a 409 Conflict in the API service. Just FYI. You may want to add some nice error handling for that.\n\nhttps://github.com/openstack/nova/blob/master/nova/api/openstack/placement/objects/resource_provider.py#L970\n\n[1] Not currently translated to a 409... see  https://bugs.launchpad.net/nova/+bug/1770636","commit_id":"fb72375af9e6d5ff560b59c480003c63d40c6f81"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"4b3366566dd073d80a2573a1fb4f722e64fd16f1","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        http \u003d self.app.client_manager.placement"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"        url \u003d BASE_URL + \u0027/\u0027 + parsed_args.uuid"},{"line_number":267,"context_line":"        http.request(\u0027DELETE\u0027, url)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_b00b0e28","line":267,"in_reply_to":"5f7c97a3_211cb376","updated":"2018-05-14 13:57:13.000000000","message":"The default behavior is to print the http code and the error message from the server so I think that\u0027s good enough here for both the 404 and 409 cases. But I will add the extra test because showing the error code to the user is behavior expected from the client.","commit_id":"fb72375af9e6d5ff560b59c480003c63d40c6f81"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d9374fe7bf16a451fd37f9320e8df1415a1ff8cd","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        parser \u003d super(CreateResourceProvider, self).get_parser(prog_name)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        parser.add_argument("},{"line_number":31,"context_line":"            \u0027--parent-provider-uuid\u0027,"},{"line_number":32,"context_line":"            metavar\u003d\u0027\u003cparent_provider_uuid\u003e\u0027,"},{"line_number":33,"context_line":"            help\u003d\u0027UUID of the parent provider.\u0027"},{"line_number":34,"context_line":"                 \u0027 Omit for no parent.\u0027"}],"source_content_type":"text/x-python","patch_set":31,"id":"5f7c97a3_f1c5885d","line":31,"range":{"start_line":31,"start_character":30,"end_line":31,"end_character":35},"updated":"2018-06-29 19:39:55.000000000","message":"My advice is to leave \"uuid\" (and for that matter, \"id) off of the parameters. In other words, just make it \"--parent-provider\".\n\nWhile it\u0027s true that a UUID is expected as the parameter value (and that is detailed in the help message), I expect eventually we will be requested to allow unique non-UUID names instead of UUIDs.\n\nPlus, --parent-provider is just easier and shorter.","commit_id":"d6503fa23fb9e3dfdddf8fc81737d774e9e57f17"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"cab4f71914284b6785000679a809efe7465ff8b8","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        parser \u003d super(CreateResourceProvider, self).get_parser(prog_name)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        parser.add_argument("},{"line_number":31,"context_line":"            \u0027--parent-provider-uuid\u0027,"},{"line_number":32,"context_line":"            metavar\u003d\u0027\u003cparent_provider_uuid\u003e\u0027,"},{"line_number":33,"context_line":"            help\u003d\u0027UUID of the parent provider.\u0027"},{"line_number":34,"context_line":"                 \u0027 Omit for no parent.\u0027"}],"source_content_type":"text/x-python","patch_set":31,"id":"5f7c97a3_74087326","line":31,"range":{"start_line":31,"start_character":30,"end_line":31,"end_character":35},"in_reply_to":"5f7c97a3_f1c5885d","updated":"2018-07-02 11:47:16.000000000","message":"Done","commit_id":"d6503fa23fb9e3dfdddf8fc81737d774e9e57f17"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d9374fe7bf16a451fd37f9320e8df1415a1ff8cd","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            required\u003dTrue"},{"line_number":209,"context_line":"        )"},{"line_number":210,"context_line":"        parser.add_argument("},{"line_number":211,"context_line":"            \u0027--parent-provider-uuid\u0027,"},{"line_number":212,"context_line":"            metavar\u003d\u0027\u003cparent_provider_uuid\u003e\u0027,"},{"line_number":213,"context_line":"            help\u003d\u0027UUID of the parent provider.\u0027"},{"line_number":214,"context_line":"                 \u0027 Can only be set if the resource provider had no parent yet.\u0027"}],"source_content_type":"text/x-python","patch_set":31,"id":"5f7c97a3_518c7c38","line":211,"range":{"start_line":211,"start_character":30,"end_line":211,"end_character":35},"updated":"2018-06-29 19:39:55.000000000","message":"ditto","commit_id":"d6503fa23fb9e3dfdddf8fc81737d774e9e57f17"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"cab4f71914284b6785000679a809efe7465ff8b8","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            required\u003dTrue"},{"line_number":209,"context_line":"        )"},{"line_number":210,"context_line":"        parser.add_argument("},{"line_number":211,"context_line":"            \u0027--parent-provider-uuid\u0027,"},{"line_number":212,"context_line":"            metavar\u003d\u0027\u003cparent_provider_uuid\u003e\u0027,"},{"line_number":213,"context_line":"            help\u003d\u0027UUID of the parent provider.\u0027"},{"line_number":214,"context_line":"                 \u0027 Can only be set if the resource provider had no parent yet.\u0027"}],"source_content_type":"text/x-python","patch_set":31,"id":"5f7c97a3_140fbf2f","line":211,"range":{"start_line":211,"start_character":30,"end_line":211,"end_character":35},"in_reply_to":"5f7c97a3_518c7c38","updated":"2018-07-02 11:47:16.000000000","message":"Done","commit_id":"d6503fa23fb9e3dfdddf8fc81737d774e9e57f17"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b32c3ea3870a4ea2ad669a02b393173264fc32f8","unresolved":false,"context_lines":[{"line_number":32,"context_line":"            metavar\u003d\u0027\u003cparent_provider\u003e\u0027,"},{"line_number":33,"context_line":"            help\u003d\u0027UUID of the parent provider.\u0027"},{"line_number":34,"context_line":"                 \u0027 Omit for no parent.\u0027"},{"line_number":35,"context_line":"                 \u0027 This param requires at least\u0027"},{"line_number":36,"context_line":"                 \u0027 --os-placement-api-version 1.14.\u0027"},{"line_number":37,"context_line":"        )"},{"line_number":38,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":34,"id":"5f7c97a3_0800fc34","line":35,"range":{"start_line":35,"start_character":24,"end_line":35,"end_character":29},"updated":"2018-07-02 14:03:46.000000000","message":"nit: option - here and below","commit_id":"5f162ba45f34bd29c6f31955c7f4f2973d549444"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3fa319c89a2fe816f11d01bad8b94f48b16f008e","unresolved":false,"context_lines":[{"line_number":32,"context_line":"            metavar\u003d\u0027\u003cparent_provider\u003e\u0027,"},{"line_number":33,"context_line":"            help\u003d\u0027UUID of the parent provider.\u0027"},{"line_number":34,"context_line":"                 \u0027 Omit for no parent.\u0027"},{"line_number":35,"context_line":"                 \u0027 This param requires at least\u0027"},{"line_number":36,"context_line":"                 \u0027 --os-placement-api-version 1.14.\u0027"},{"line_number":37,"context_line":"        )"},{"line_number":38,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":34,"id":"5f7c97a3_de4b9e25","line":35,"range":{"start_line":35,"start_character":24,"end_line":35,"end_character":29},"in_reply_to":"5f7c97a3_0800fc34","updated":"2018-07-02 14:49:32.000000000","message":"Done","commit_id":"5f162ba45f34bd29c6f31955c7f4f2973d549444"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b32c3ea3870a4ea2ad669a02b393173264fc32f8","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            help\u003d\u0027UUID of the parent provider.\u0027"},{"line_number":34,"context_line":"                 \u0027 Omit for no parent.\u0027"},{"line_number":35,"context_line":"                 \u0027 This param requires at least\u0027"},{"line_number":36,"context_line":"                 \u0027 --os-placement-api-version 1.14.\u0027"},{"line_number":37,"context_line":"        )"},{"line_number":38,"context_line":"        parser.add_argument("},{"line_number":39,"context_line":"            \u0027--uuid\u0027,"}],"source_content_type":"text/x-python","patch_set":34,"id":"5f7c97a3_88916cfa","line":36,"range":{"start_line":36,"start_character":19,"end_line":36,"end_character":50},"updated":"2018-07-02 14:03:46.000000000","message":"``--os-placement-api-version 1.14`` here and below","commit_id":"5f162ba45f34bd29c6f31955c7f4f2973d549444"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3fa319c89a2fe816f11d01bad8b94f48b16f008e","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            help\u003d\u0027UUID of the parent provider.\u0027"},{"line_number":34,"context_line":"                 \u0027 Omit for no parent.\u0027"},{"line_number":35,"context_line":"                 \u0027 This param requires at least\u0027"},{"line_number":36,"context_line":"                 \u0027 --os-placement-api-version 1.14.\u0027"},{"line_number":37,"context_line":"        )"},{"line_number":38,"context_line":"        parser.add_argument("},{"line_number":39,"context_line":"            \u0027--uuid\u0027,"}],"source_content_type":"text/x-python","patch_set":34,"id":"5f7c97a3_7e5ccaef","line":36,"range":{"start_line":36,"start_character":19,"end_line":36,"end_character":50},"in_reply_to":"5f7c97a3_88916cfa","updated":"2018-07-02 14:49:32.000000000","message":"Done","commit_id":"5f162ba45f34bd29c6f31955c7f4f2973d549444"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b32c3ea3870a4ea2ad669a02b393173264fc32f8","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            \u0027--in-tree\u0027,"},{"line_number":115,"context_line":"            metavar\u003d\u0027\u003cin_tree\u003e\u0027,"},{"line_number":116,"context_line":"            help\u003d\u0027Restrict listing to the same \"provider tree\"\u0027"},{"line_number":117,"context_line":"                 \u0027 as the specified provider.\u0027"},{"line_number":118,"context_line":"                 \u0027 This param requires at least\u0027"},{"line_number":119,"context_line":"                 \u0027 --os-placement-api-version 1.14.\u0027"},{"line_number":120,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":34,"id":"5f7c97a3_a8622814","line":117,"range":{"start_line":117,"start_character":36,"end_line":117,"end_character":44},"updated":"2018-07-02 14:03:46.000000000","message":"provider UUID","commit_id":"5f162ba45f34bd29c6f31955c7f4f2973d549444"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3fa319c89a2fe816f11d01bad8b94f48b16f008e","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            \u0027--in-tree\u0027,"},{"line_number":115,"context_line":"            metavar\u003d\u0027\u003cin_tree\u003e\u0027,"},{"line_number":116,"context_line":"            help\u003d\u0027Restrict listing to the same \"provider tree\"\u0027"},{"line_number":117,"context_line":"                 \u0027 as the specified provider.\u0027"},{"line_number":118,"context_line":"                 \u0027 This param requires at least\u0027"},{"line_number":119,"context_line":"                 \u0027 --os-placement-api-version 1.14.\u0027"},{"line_number":120,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":34,"id":"5f7c97a3_3e5652d0","line":117,"range":{"start_line":117,"start_character":36,"end_line":117,"end_character":44},"in_reply_to":"5f7c97a3_a8622814","updated":"2018-07-02 14:49:32.000000000","message":"Done","commit_id":"5f162ba45f34bd29c6f31955c7f4f2973d549444"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b32c3ea3870a4ea2ad669a02b393173264fc32f8","unresolved":false,"context_lines":[{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        fields \u003d (\u0027uuid\u0027, \u0027name\u0027, \u0027generation\u0027)"},{"line_number":181,"context_line":"        if self.compare_version(version.ge(\u00271.14\u0027)):"},{"line_number":182,"context_line":"            fields +\u003d (\u0027root_provider_uuid\u0027, \u0027parent_provider_uuid\u0027)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        if parsed_args.allocations:"},{"line_number":185,"context_line":"            allocs_url \u003d ALLOCATIONS_URL.format(uuid\u003dparsed_args.uuid)"}],"source_content_type":"text/x-python","patch_set":34,"id":"5f7c97a3_88488c8a","line":182,"range":{"start_line":182,"start_character":46,"end_line":182,"end_character":66},"updated":"2018-07-02 14:03:46.000000000","message":"Huh the api reference doesn\u0027t list this as new in 1.14 for show:\n\nhttps://developer.openstack.org/api-ref/placement/#show-resource-provider\n\nProbably just a bug in the api reference.","commit_id":"5f162ba45f34bd29c6f31955c7f4f2973d549444"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3fa319c89a2fe816f11d01bad8b94f48b16f008e","unresolved":false,"context_lines":[{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        fields \u003d (\u0027uuid\u0027, \u0027name\u0027, \u0027generation\u0027)"},{"line_number":181,"context_line":"        if self.compare_version(version.ge(\u00271.14\u0027)):"},{"line_number":182,"context_line":"            fields +\u003d (\u0027root_provider_uuid\u0027, \u0027parent_provider_uuid\u0027)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        if parsed_args.allocations:"},{"line_number":185,"context_line":"            allocs_url \u003d ALLOCATIONS_URL.format(uuid\u003dparsed_args.uuid)"}],"source_content_type":"text/x-python","patch_set":34,"id":"5f7c97a3_5e59cefa","line":182,"range":{"start_line":182,"start_character":46,"end_line":182,"end_character":66},"in_reply_to":"5f7c97a3_88488c8a","updated":"2018-07-02 14:49:32.000000000","message":"https://review.openstack.org/#/c/579577/","commit_id":"5f162ba45f34bd29c6f31955c7f4f2973d549444"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b32c3ea3870a4ea2ad669a02b393173264fc32f8","unresolved":false,"context_lines":[{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        url \u003d BASE_URL + \u0027/\u0027 + parsed_args.uuid"},{"line_number":225,"context_line":"        data \u003d {}"},{"line_number":226,"context_line":"        if \u0027name\u0027 in parsed_args and parsed_args.name:"},{"line_number":227,"context_line":"            data[\u0027name\u0027] \u003d parsed_args.name"},{"line_number":228,"context_line":"        # Not knowing the previous state of a resource the client cannot catch"},{"line_number":229,"context_line":"        # it, but if the user tries to re-parent a resource provider the server"}],"source_content_type":"text/x-python","patch_set":34,"id":"5f7c97a3_4837d4ff","line":226,"range":{"start_line":226,"start_character":8,"end_line":226,"end_character":53},"updated":"2018-07-02 14:03:46.000000000","message":"The --name option is marked as required - so do we need to check this, or drop the requirement to specify --name if we also have --parent-provider?","commit_id":"5f162ba45f34bd29c6f31955c7f4f2973d549444"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3fa319c89a2fe816f11d01bad8b94f48b16f008e","unresolved":false,"context_lines":[{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        url \u003d BASE_URL + \u0027/\u0027 + parsed_args.uuid"},{"line_number":225,"context_line":"        data \u003d {}"},{"line_number":226,"context_line":"        if \u0027name\u0027 in parsed_args and parsed_args.name:"},{"line_number":227,"context_line":"            data[\u0027name\u0027] \u003d parsed_args.name"},{"line_number":228,"context_line":"        # Not knowing the previous state of a resource the client cannot catch"},{"line_number":229,"context_line":"        # it, but if the user tries to re-parent a resource provider the server"}],"source_content_type":"text/x-python","patch_set":34,"id":"5f7c97a3_7e012ab5","line":226,"range":{"start_line":226,"start_character":8,"end_line":226,"end_character":53},"in_reply_to":"5f7c97a3_4837d4ff","updated":"2018-07-02 14:49:32.000000000","message":"It\u0027s required in the API, but we can assume it\u0027s set here and remove the condition.","commit_id":"5f162ba45f34bd29c6f31955c7f4f2973d549444"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a71a0f30bd96a335f0abfc44894e678e17894e6e","unresolved":false,"context_lines":[{"line_number":32,"context_line":"            metavar\u003d\u0027\u003cparent_provider\u003e\u0027,"},{"line_number":33,"context_line":"            help\u003d\u0027UUID of the parent provider.\u0027"},{"line_number":34,"context_line":"                 \u0027 Omit for no parent.\u0027"},{"line_number":35,"context_line":"                 \u0027 This optiona requires at least\u0027"},{"line_number":36,"context_line":"                 \u0027 ``--os-placement-api-version 1.14``.\u0027"},{"line_number":37,"context_line":"        )"},{"line_number":38,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":36,"id":"5f7c97a3_de25dec0","line":35,"range":{"start_line":35,"start_character":30,"end_line":35,"end_character":31},"updated":"2018-07-02 15:08:04.000000000","message":"typo!","commit_id":"11aecdadbe6a2b3d384d87914e83c5481efef460"}],"osc_placement/tests/functional/test_resource_provider.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"6609089e2ce186f0e958c66befd503b9ec3feebc","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        self.assertEqual("},{"line_number":254,"context_line":"            set([rp[\u0027uuid\u0027] for rp in retrieved]),"},{"line_number":255,"context_line":"            set([rp1[\u0027uuid\u0027], rp2[\u0027uuid\u0027], rp3[\u0027uuid\u0027]])"},{"line_number":256,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_29da594a","line":256,"updated":"2018-05-11 13:18:47.000000000","message":"Add a test for deleting a parent. Likely will need to comment the assertion out until https://bugs.launchpad.net/nova/+bug/1770636 is fixed, but worth putting a test in here anyway.","commit_id":"fb72375af9e6d5ff560b59c480003c63d40c6f81"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"4b3366566dd073d80a2573a1fb4f722e64fd16f1","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        self.assertEqual("},{"line_number":254,"context_line":"            set([rp[\u0027uuid\u0027] for rp in retrieved]),"},{"line_number":255,"context_line":"            set([rp1[\u0027uuid\u0027], rp2[\u0027uuid\u0027], rp3[\u0027uuid\u0027]])"},{"line_number":256,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f7c97a3_76a6cead","line":256,"in_reply_to":"5f7c97a3_29da594a","updated":"2018-05-14 13:57:13.000000000","message":"Done","commit_id":"fb72375af9e6d5ff560b59c480003c63d40c6f81"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0280526333e106cee971219b6b77cad5c6a43689","unresolved":false,"context_lines":[{"line_number":266,"context_line":"        # having children the proper error code is 409 Conflict but today we"},{"line_number":267,"context_line":"        # just get an internal server error. Replace \u0027assert 500\u0027 with"},{"line_number":268,"context_line":"        # \u0027assert 409\u0027 when bug #1770636 is fixed."},{"line_number":269,"context_line":"        self.assertIn(\u0027500\u0027, exc.output.decode(\u0027utf-8\u0027))"},{"line_number":270,"context_line":"        # self.assertIn(\u0027HTTP 409\u0027, exc.output.decode(\u0027utf-8\u0027))"}],"source_content_type":"text/x-python","patch_set":26,"id":"5f7c97a3_f9b9137c","line":269,"updated":"2018-06-28 15:27:05.000000000","message":"This has changed to a 409: https://review.openstack.org/#/c/577726/","commit_id":"45511837dbb57319696d150eb6e76080cfb01f87"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"cab4f71914284b6785000679a809efe7465ff8b8","unresolved":false,"context_lines":[{"line_number":266,"context_line":"        # having children the proper error code is 409 Conflict but today we"},{"line_number":267,"context_line":"        # just get an internal server error. Replace \u0027assert 500\u0027 with"},{"line_number":268,"context_line":"        # \u0027assert 409\u0027 when bug #1770636 is fixed."},{"line_number":269,"context_line":"        self.assertIn(\u0027500\u0027, exc.output.decode(\u0027utf-8\u0027))"},{"line_number":270,"context_line":"        # self.assertIn(\u0027HTTP 409\u0027, exc.output.decode(\u0027utf-8\u0027))"}],"source_content_type":"text/x-python","patch_set":26,"id":"5f7c97a3_b427ebb5","line":269,"in_reply_to":"5f7c97a3_f9b9137c","updated":"2018-07-02 11:47:16.000000000","message":"Done by Matt.","commit_id":"45511837dbb57319696d150eb6e76080cfb01f87"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b32c3ea3870a4ea2ad669a02b393173264fc32f8","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    def test_resource_provider_set(self):"},{"line_number":199,"context_line":"        created \u003d self.resource_provider_create()"},{"line_number":200,"context_line":"        updated \u003d self.resource_provider_set("},{"line_number":201,"context_line":"            created[\u0027uuid\u0027], name\u003d\u0027some_new_name\u0027)"},{"line_number":202,"context_line":"        self.assertIn(\u0027root_provider_uuid\u0027, updated)"},{"line_number":203,"context_line":"        self.assertIn(\u0027parent_provider_uuid\u0027, updated)"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"5f7c97a3_43efb71c","line":201,"range":{"start_line":201,"start_character":29,"end_line":201,"end_character":49},"updated":"2018-07-02 14:03:46.000000000","message":"If we make","commit_id":"5f162ba45f34bd29c6f31955c7f4f2973d549444"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b32c3ea3870a4ea2ad669a02b393173264fc32f8","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        wannabe_child \u003d self.resource_provider_create()"},{"line_number":226,"context_line":"        child \u003d self.resource_provider_set("},{"line_number":227,"context_line":"            wannabe_child[\u0027uuid\u0027],"},{"line_number":228,"context_line":"            name\u003d\u0027mandatory_name_1\u0027,"},{"line_number":229,"context_line":"            parent_provider_uuid\u003dparent[\u0027uuid\u0027])"},{"line_number":230,"context_line":"        self.assertEqual(child[\u0027parent_provider_uuid\u0027], parent[\u0027uuid\u0027])"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"5f7c97a3_e388436c","line":228,"range":{"start_line":228,"start_character":12,"end_line":228,"end_character":36},"updated":"2018-07-02 14:03:46.000000000","message":"If we make --name optional then we could drop this to test that it\u0027s indeed optional.","commit_id":"5f162ba45f34bd29c6f31955c7f4f2973d549444"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c5680a8be9c45fffc8fc77152a4d8adda2bfabde","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        wannabe_child \u003d self.resource_provider_create()"},{"line_number":226,"context_line":"        child \u003d self.resource_provider_set("},{"line_number":227,"context_line":"            wannabe_child[\u0027uuid\u0027],"},{"line_number":228,"context_line":"            name\u003d\u0027mandatory_name_1\u0027,"},{"line_number":229,"context_line":"            parent_provider_uuid\u003dparent[\u0027uuid\u0027])"},{"line_number":230,"context_line":"        self.assertEqual(child[\u0027parent_provider_uuid\u0027], parent[\u0027uuid\u0027])"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"5f7c97a3_035c5f4a","line":228,"range":{"start_line":228,"start_character":12,"end_line":228,"end_character":36},"in_reply_to":"5f7c97a3_03e3ff07","updated":"2018-07-02 14:34:26.000000000","message":"Ack, good catch. I\u0027ll address the other nits in here and then approve.","commit_id":"5f162ba45f34bd29c6f31955c7f4f2973d549444"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f156564b3b394115c76e87f51569dcd66ee29f57","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        wannabe_child \u003d self.resource_provider_create()"},{"line_number":226,"context_line":"        child \u003d self.resource_provider_set("},{"line_number":227,"context_line":"            wannabe_child[\u0027uuid\u0027],"},{"line_number":228,"context_line":"            name\u003d\u0027mandatory_name_1\u0027,"},{"line_number":229,"context_line":"            parent_provider_uuid\u003dparent[\u0027uuid\u0027])"},{"line_number":230,"context_line":"        self.assertEqual(child[\u0027parent_provider_uuid\u0027], parent[\u0027uuid\u0027])"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"5f7c97a3_03e3ff07","line":228,"range":{"start_line":228,"start_character":12,"end_line":228,"end_character":36},"in_reply_to":"5f7c97a3_e388436c","updated":"2018-07-02 14:12:29.000000000","message":"we cannot make name optional as it is not optional on the REST API https://developer.openstack.org/api-ref/placement/#update-resource-provider","commit_id":"5f162ba45f34bd29c6f31955c7f4f2973d549444"}],"osc_placement/version.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b32c3ea3870a4ea2ad669a02b393173264fc32f8","unresolved":false,"context_lines":[{"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":"    \u00271.14\u0027"},{"line_number":32,"context_line":"]"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"5f7c97a3_c3e2e730","line":30,"updated":"2018-07-02 14:03:46.000000000","message":"Could we leave a comment that 1.13 is intentionally not implemented?","commit_id":"5f162ba45f34bd29c6f31955c7f4f2973d549444"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3fa319c89a2fe816f11d01bad8b94f48b16f008e","unresolved":false,"context_lines":[{"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":"    \u00271.14\u0027"},{"line_number":32,"context_line":"]"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"5f7c97a3_5e278e64","line":30,"in_reply_to":"5f7c97a3_c3e2e730","updated":"2018-07-02 14:49:32.000000000","message":"Done","commit_id":"5f162ba45f34bd29c6f31955c7f4f2973d549444"}],"releasenotes/notes/microversion-1.14-support-nested-resource-providers-296961cc93ef30e8.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a71a0f30bd96a335f0abfc44894e678e17894e6e","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Support is added for the `1.14`_ placement API microversion by adding"},{"line_number":5,"context_line":"    the ``root_provider_uuid`` ``parent_provider_uuid`` to the output of"},{"line_number":6,"context_line":"    resource provider list/show/create/set commands. Also resource provider"},{"line_number":7,"context_line":"    create/set commands now has a new optional parameter ``--parent-provider UUID``."},{"line_number":8,"context_line":"    And resource provider list has a new optional parameter ``--in-tree UUID``."}],"source_content_type":"text/x-yaml","patch_set":35,"id":"5f7c97a3_de12befd","line":5,"range":{"start_line":5,"start_character":30,"end_line":5,"end_character":31},"updated":"2018-07-02 15:08:04.000000000","message":"and","commit_id":"294994aeb5af3f5d976216cbfef3f670c405d016"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a71a0f30bd96a335f0abfc44894e678e17894e6e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Support is added for the `1.14`_ placement API microversion by adding"},{"line_number":5,"context_line":"    the ``root_provider_uuid`` ``parent_provider_uuid`` to the output of"},{"line_number":6,"context_line":"    resource provider list/show/create/set commands. Also resource provider"},{"line_number":7,"context_line":"    create/set commands now has a new optional parameter ``--parent-provider UUID``."},{"line_number":8,"context_line":"    And resource provider list has a new optional parameter ``--in-tree UUID``."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    .. _1.14: https://docs.openstack.org/nova/latest/user/placement.html#add-nested-resource-providers"}],"source_content_type":"text/x-yaml","patch_set":35,"id":"5f7c97a3_7eb84ae7","line":7,"range":{"start_line":7,"start_character":28,"end_line":7,"end_character":31},"updated":"2018-07-02 15:08:04.000000000","message":"have","commit_id":"294994aeb5af3f5d976216cbfef3f670c405d016"}]}
