)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bc529c428a65f72665510fe8e0b8b326ef8e3f5c","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2018-04-23 16:10:36 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"RP delete inventories (v1.5)"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I4be95feeadcbf82ab23fa2709b72db4d4203c1e7"},{"line_number":10,"context_line":"Partially-Implements: blueprint placement-osc-plugin-rocky"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"9f6a8fd7_cf2e2f91","line":8,"updated":"2018-04-23 15:01:20.000000000","message":"Let\u0027s add an UpgradeImpact tag to this commit message as a reminder that we will need a major version release for this.","commit_id":"c0a492cf2386070e7c245c1dce96d2de05ff32d2"}],"osc_placement/resources/inventory.py":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"148d6c5853193c845a3aad1fc396716bb7bd3900","unresolved":false,"context_lines":[{"line_number":245,"context_line":"    def take_action(self, parsed_args):"},{"line_number":246,"context_line":"        http \u003d self.app.client_manager.placement"},{"line_number":247,"context_line":"        url \u003d PER_CLASS_URL"},{"line_number":248,"context_line":"        params \u003d {\u0027uuid\u0027: parsed_args.uuid,"},{"line_number":249,"context_line":"                  \u0027resource_class\u0027: parsed_args.resource_class}"},{"line_number":250,"context_line":"        if parsed_args.resource_class is None:"},{"line_number":251,"context_line":"            self.check_version(version.ge(\u00271.5\u0027))"},{"line_number":252,"context_line":"            url \u003d BASE_URL"},{"line_number":253,"context_line":"            params \u003d {\u0027uuid\u0027: parsed_args.uuid}"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        http.request(\u0027DELETE\u0027, url.format(**params))"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"df7087c5_799b4c72","line":253,"range":{"start_line":248,"start_character":0,"end_line":253,"end_character":47},"updated":"2018-03-23 07:51:47.000000000","message":"Small thing:\nperhaps the logic would be more straight forward like this:\nurl \u003d BASE_URL\nparams \u003d {\u0027uuid\u0027: parsed_args.uuid}\nif parsed_args.resource_class:\n    self.check_version(version.ge(\u00271.5\u0027))\n    url \u003d PER_CLASS_URL\n    params[\u0027resource_class\u0027] \u003d parsed_args.resource_class","commit_id":"3748afcaf1e413fe642a21cf46f1b4fbacff14a7"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1170671aa4f94f65f85c38a32e77e018ad3fad6d","unresolved":false,"context_lines":[{"line_number":245,"context_line":"    def take_action(self, parsed_args):"},{"line_number":246,"context_line":"        http \u003d self.app.client_manager.placement"},{"line_number":247,"context_line":"        url \u003d PER_CLASS_URL"},{"line_number":248,"context_line":"        params \u003d {\u0027uuid\u0027: parsed_args.uuid,"},{"line_number":249,"context_line":"                  \u0027resource_class\u0027: parsed_args.resource_class}"},{"line_number":250,"context_line":"        if parsed_args.resource_class is None:"},{"line_number":251,"context_line":"            self.check_version(version.ge(\u00271.5\u0027))"},{"line_number":252,"context_line":"            url \u003d BASE_URL"},{"line_number":253,"context_line":"            params \u003d {\u0027uuid\u0027: parsed_args.uuid}"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        http.request(\u0027DELETE\u0027, url.format(**params))"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"bf659307_5de34b34","line":253,"range":{"start_line":248,"start_character":0,"end_line":253,"end_character":47},"in_reply_to":"df7087c5_2fd4a21f","updated":"2018-03-26 06:42:05.000000000","message":"Ok, I missed that part of the api ref, sorry for noting","commit_id":"3748afcaf1e413fe642a21cf46f1b4fbacff14a7"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"a95fde3ce304a130d9f78d38bae0d22ffe3ecc69","unresolved":false,"context_lines":[{"line_number":245,"context_line":"    def take_action(self, parsed_args):"},{"line_number":246,"context_line":"        http \u003d self.app.client_manager.placement"},{"line_number":247,"context_line":"        url \u003d PER_CLASS_URL"},{"line_number":248,"context_line":"        params \u003d {\u0027uuid\u0027: parsed_args.uuid,"},{"line_number":249,"context_line":"                  \u0027resource_class\u0027: parsed_args.resource_class}"},{"line_number":250,"context_line":"        if parsed_args.resource_class is None:"},{"line_number":251,"context_line":"            self.check_version(version.ge(\u00271.5\u0027))"},{"line_number":252,"context_line":"            url \u003d BASE_URL"},{"line_number":253,"context_line":"            params \u003d {\u0027uuid\u0027: parsed_args.uuid}"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        http.request(\u0027DELETE\u0027, url.format(**params))"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"df7087c5_2fd4a21f","line":253,"range":{"start_line":248,"start_character":0,"end_line":253,"end_character":47},"in_reply_to":"df7087c5_799b4c72","updated":"2018-03-23 10:33:15.000000000","message":"Did not get your comment.\nIt is required to have resource class as parameter for delete\nuntil 1.5.\nIf version is greater than 1.5 it\u0027s possible to skip resource class parameter.\nIn your piece of code I see the inverted logic.","commit_id":"3748afcaf1e413fe642a21cf46f1b4fbacff14a7"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"ed5a5bc2cba41f0568661258425ff714ffb8ca02","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        parser.add_argument("},{"line_number":238,"context_line":"            \u0027--resource-class\u0027,"},{"line_number":239,"context_line":"            metavar\u003d\u0027\u003cresource_class\u003e\u0027,"},{"line_number":240,"context_line":"            required\u003dself.compare_version(version.lt(\u00271.5\u0027)),"},{"line_number":241,"context_line":"            help\u003dRC_HELP"},{"line_number":242,"context_line":"        )"},{"line_number":243,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"bf659307_0331f40b","line":240,"range":{"start_line":240,"start_character":12,"end_line":240,"end_character":61},"updated":"2018-03-26 08:33:30.000000000","message":"As I see this causes the doc generation to fail with \"AttributeError: \u0027NoneType\u0027 object has no attribute \u0027client_manager\u0027\"\n\nI don\u0027t understand really the underlying problem but if you move the version check to a statement like this:\nis_resource_class_required \u003d self.compare_version(version.lt(\u00271.5\u0027))\n\nand then just change the add_argument to use that variable:\nparser.add_argument(\n            \u0027--resource-class\u0027,\n            metavar\u003d\u0027\u003cresource_class\u003e\u0027,\n            required\u003dis_resource_class_required,","commit_id":"e3dfe457b7b337e7b89607a389714da231fca9eb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"52ac8cbbbd204fd45e992cfa15dff5dea2e7f26d","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            help\u003d\u0027UUID of the resource provider\u0027"},{"line_number":236,"context_line":"        )"},{"line_number":237,"context_line":"        parser.add_argument("},{"line_number":238,"context_line":"            \u0027--resource-class\u0027,"},{"line_number":239,"context_line":"            metavar\u003d\u0027\u003cresource_class\u003e\u0027,"},{"line_number":240,"context_line":"            required\u003dself.compare_version(version.lt(\u00271.5\u0027)),"},{"line_number":241,"context_line":"            help\u003dRC_HELP"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf659307_3094e036","line":238,"updated":"2018-04-12 19:27:54.000000000","message":"Isn\u0027t this a backward incompatible change? So before I could do:\n\n  openstack resource provider inventory delete 9b1213e8-e57c-48f0-86f9-890aead37c9b VCPU\n\nBut now I have to do:\n\n  openstack resource provider inventory delete 9b1213e8-e57c-48f0-86f9-890aead37c9b --resource-class VCPU\n\nRight? Otherwise it will fail if I pass in \"VCPU\" as an argument rather than an option.\n\nI\u0027m not sure how we workaround that unless we just say it\u0027s going to be a breaking change and we have to release it with a major version bump. It needs a release note either way.","commit_id":"cc07aaec0ca2a893084d817730fcde9f0339e64c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c55f207014fb284480e42c86f3b1841d09072955","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            help\u003d\u0027UUID of the resource provider\u0027"},{"line_number":236,"context_line":"        )"},{"line_number":237,"context_line":"        parser.add_argument("},{"line_number":238,"context_line":"            \u0027--resource-class\u0027,"},{"line_number":239,"context_line":"            metavar\u003d\u0027\u003cresource_class\u003e\u0027,"},{"line_number":240,"context_line":"            required\u003dself.compare_version(version.lt(\u00271.5\u0027)),"},{"line_number":241,"context_line":"            help\u003dRC_HELP"}],"source_content_type":"text/x-python","patch_set":13,"id":"9f6a8fd7_e7a7d2bc","line":238,"in_reply_to":"9f6a8fd7_789374fb","updated":"2018-04-20 01:30:14.000000000","message":"To be clear, a major version bump isn\u0027t the end of the world if it\u0027s absolutely the right way to do this, but I wanted to point out some alternatives while we had the options.","commit_id":"cc07aaec0ca2a893084d817730fcde9f0339e64c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5411b822535460aba1903ea946af40330b4b7bfd","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            help\u003d\u0027UUID of the resource provider\u0027"},{"line_number":236,"context_line":"        )"},{"line_number":237,"context_line":"        parser.add_argument("},{"line_number":238,"context_line":"            \u0027--resource-class\u0027,"},{"line_number":239,"context_line":"            metavar\u003d\u0027\u003cresource_class\u003e\u0027,"},{"line_number":240,"context_line":"            required\u003dself.compare_version(version.lt(\u00271.5\u0027)),"},{"line_number":241,"context_line":"            help\u003dRC_HELP"}],"source_content_type":"text/x-python","patch_set":13,"id":"9f6a8fd7_c4e376d8","line":238,"in_reply_to":"9f6a8fd7_bb2c6102","updated":"2018-04-23 14:47:48.000000000","message":"\u003e One thing I realized that client version is firmly coupled with server version by now. So each microvesion bump \u003d\u003d client version bump.\n\nI\u0027m not sure what you mean. The client should be graceful about handling older deployments that don\u0027t have the newer microversions. For example, I should be able to take osc-placement from Rocky and use it against the placement API from Pike. Have we broken that somehow? osc(-placement) is opt-in for microversions that the user wants to use, so we shouldn\u0027t be requiring anything like minimum versions of the placement API service to use the client code unless the user tries to opt into a new microversion that the server doesn\u0027t support.","commit_id":"cc07aaec0ca2a893084d817730fcde9f0339e64c"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"d1c3c70c45b53a77ab93373a8298a92f82223f5d","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            help\u003d\u0027UUID of the resource provider\u0027"},{"line_number":236,"context_line":"        )"},{"line_number":237,"context_line":"        parser.add_argument("},{"line_number":238,"context_line":"            \u0027--resource-class\u0027,"},{"line_number":239,"context_line":"            metavar\u003d\u0027\u003cresource_class\u003e\u0027,"},{"line_number":240,"context_line":"            required\u003dself.compare_version(version.lt(\u00271.5\u0027)),"},{"line_number":241,"context_line":"            help\u003dRC_HELP"}],"source_content_type":"text/x-python","patch_set":13,"id":"9f6a8fd7_bb2c6102","line":238,"in_reply_to":"9f6a8fd7_e7a7d2bc","updated":"2018-04-23 13:18:50.000000000","message":"One thing I realized that client version is firmly coupled with server version by now. So each microvesion bump \u003d\u003d client version bump. Probably it is not the best solution and need to be fixed in a follow-up. I\u0027ve added release notes\nbut not sure what to do with versions.","commit_id":"cc07aaec0ca2a893084d817730fcde9f0339e64c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6f1a1464a7e435474707a19532e67e791a272f4f","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            help\u003d\u0027UUID of the resource provider\u0027"},{"line_number":236,"context_line":"        )"},{"line_number":237,"context_line":"        parser.add_argument("},{"line_number":238,"context_line":"            \u0027--resource-class\u0027,"},{"line_number":239,"context_line":"            metavar\u003d\u0027\u003cresource_class\u003e\u0027,"},{"line_number":240,"context_line":"            required\u003dself.compare_version(version.lt(\u00271.5\u0027)),"},{"line_number":241,"context_line":"            help\u003dRC_HELP"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf659307_90dccce4","line":238,"in_reply_to":"bf659307_3094e036","updated":"2018-04-12 19:33:05.000000000","message":"Alternatively, and this might be kind of gross, but could we handle the required nature of the argument based on the microversion in the take_action() method? So \u003c 1.5 fails if the argument isn\u0027t specified and \u003e\u003d 1.5 uses it if specified, but if not specified, just deletes all inventory.\n\nAnother alternative is we leave it as a requirement argument but add a special \"all\" value or something which when specified requires \u003e\u003d 1.5 and means delete all inventory. This option is a bit more \"safe\" in that the user is opting into the behavior to delete all inventory even though it\u0027s still a required argument. I agree --resource-class is cleaner as an option, but it would be a breaking change and require a major version bump when releasing it. We could leave a TODO to change it if/when we wanted to make another breaking change?","commit_id":"cc07aaec0ca2a893084d817730fcde9f0339e64c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6e6be9b3493603b6e14426f571c2477e480e6b11","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            help\u003d\u0027UUID of the resource provider\u0027"},{"line_number":236,"context_line":"        )"},{"line_number":237,"context_line":"        parser.add_argument("},{"line_number":238,"context_line":"            \u0027--resource-class\u0027,"},{"line_number":239,"context_line":"            metavar\u003d\u0027\u003cresource_class\u003e\u0027,"},{"line_number":240,"context_line":"            required\u003dself.compare_version(version.lt(\u00271.5\u0027)),"},{"line_number":241,"context_line":"            help\u003dRC_HELP"}],"source_content_type":"text/x-python","patch_set":13,"id":"9f6a8fd7_789374fb","line":238,"in_reply_to":"bf659307_90dccce4","updated":"2018-04-19 12:26:38.000000000","message":"If we want to keep backward compatibility then I think we can go with Matt\u0027s suggestion to handle the version in take_action. But I don\u0027t think it is a big deal to bump the major version and do a nice CLI in return.","commit_id":"cc07aaec0ca2a893084d817730fcde9f0339e64c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6e6be9b3493603b6e14426f571c2477e480e6b11","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        parser.add_argument("},{"line_number":238,"context_line":"            \u0027--resource-class\u0027,"},{"line_number":239,"context_line":"            metavar\u003d\u0027\u003cresource_class\u003e\u0027,"},{"line_number":240,"context_line":"            required\u003dself.compare_version(version.lt(\u00271.5\u0027)),"},{"line_number":241,"context_line":"            help\u003dRC_HELP"},{"line_number":242,"context_line":"        )"},{"line_number":243,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9f6a8fd7_38d3bc62","line":240,"updated":"2018-04-19 12:26:38.000000000","message":"Could you please add a comment here or to the class doc that --resource-class is only required before 1.5 as in 1.5 when the --resource-class is not provided it means that the complete inventory is deleted.","commit_id":"f05cce1a3e8fae484c6c50b434f372474200f615"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"d1c3c70c45b53a77ab93373a8298a92f82223f5d","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        parser.add_argument("},{"line_number":238,"context_line":"            \u0027--resource-class\u0027,"},{"line_number":239,"context_line":"            metavar\u003d\u0027\u003cresource_class\u003e\u0027,"},{"line_number":240,"context_line":"            required\u003dself.compare_version(version.lt(\u00271.5\u0027)),"},{"line_number":241,"context_line":"            help\u003dRC_HELP"},{"line_number":242,"context_line":"        )"},{"line_number":243,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9f6a8fd7_fb4c19c9","line":240,"in_reply_to":"9f6a8fd7_38d3bc62","updated":"2018-04-23 13:18:50.000000000","message":"Done","commit_id":"f05cce1a3e8fae484c6c50b434f372474200f615"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6e6be9b3493603b6e14426f571c2477e480e6b11","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def take_action(self, parsed_args):"},{"line_number":247,"context_line":"        http \u003d self.app.client_manager.placement"},{"line_number":248,"context_line":"        url \u003d PER_CLASS_URL"},{"line_number":249,"context_line":"        params \u003d {\u0027uuid\u0027: parsed_args.uuid,"},{"line_number":250,"context_line":"                  \u0027resource_class\u0027: parsed_args.resource_class}"},{"line_number":251,"context_line":"        if parsed_args.resource_class is None:"},{"line_number":252,"context_line":"            url \u003d BASE_URL"},{"line_number":253,"context_line":"            params \u003d {\u0027uuid\u0027: parsed_args.uuid}"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        http.request(\u0027DELETE\u0027, url.format(**params))"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9f6a8fd7_18e118ff","line":253,"range":{"start_line":248,"start_character":0,"end_line":253,"end_character":47},"updated":"2018-04-19 12:26:38.000000000","message":"The if could be inverted to simplify the code a bit.\n\n        url \u003d PER_CLASS_URL\n        params \u003d {\u0027uuid\u0027: parsed_args.uuid}\n        if parsed_args.resource_class is not None:\n            params[\u0027resource_class\u0027] \u003d parsed_args.resource_class","commit_id":"f05cce1a3e8fae484c6c50b434f372474200f615"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"d1c3c70c45b53a77ab93373a8298a92f82223f5d","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def take_action(self, parsed_args):"},{"line_number":247,"context_line":"        http \u003d self.app.client_manager.placement"},{"line_number":248,"context_line":"        url \u003d PER_CLASS_URL"},{"line_number":249,"context_line":"        params \u003d {\u0027uuid\u0027: parsed_args.uuid,"},{"line_number":250,"context_line":"                  \u0027resource_class\u0027: parsed_args.resource_class}"},{"line_number":251,"context_line":"        if parsed_args.resource_class is None:"},{"line_number":252,"context_line":"            url \u003d BASE_URL"},{"line_number":253,"context_line":"            params \u003d {\u0027uuid\u0027: parsed_args.uuid}"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        http.request(\u0027DELETE\u0027, url.format(**params))"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9f6a8fd7_bbc8e121","line":253,"range":{"start_line":248,"start_character":0,"end_line":253,"end_character":47},"in_reply_to":"9f6a8fd7_18e118ff","updated":"2018-04-23 13:18:50.000000000","message":"Done","commit_id":"f05cce1a3e8fae484c6c50b434f372474200f615"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bc529c428a65f72665510fe8e0b8b326ef8e3f5c","unresolved":false,"context_lines":[{"line_number":218,"context_line":"    \"\"\"Delete the inventory."},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    Depending on the resource class argument presence, it can"},{"line_number":221,"context_line":"    delete inventory for a given resource provider or for a resource"},{"line_number":222,"context_line":"    provider/class pair."},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    Delete all inventories for given resource provider"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f6a8fd7_646aaaed","line":221,"range":{"start_line":221,"start_character":11,"end_line":221,"end_character":20},"updated":"2018-04-23 15:01:20.000000000","message":"all inventory","commit_id":"c0a492cf2386070e7c245c1dce96d2de05ff32d2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bc529c428a65f72665510fe8e0b8b326ef8e3f5c","unresolved":false,"context_lines":[{"line_number":222,"context_line":"    provider/class pair."},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    Delete all inventories for given resource provider"},{"line_number":225,"context_line":"    requires at least --os-placement-api-version 1.5."},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    \"\"\""},{"line_number":228,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"9f6a8fd7_a44d229b","line":225,"range":{"start_line":225,"start_character":22,"end_line":225,"end_character":52},"updated":"2018-04-23 15:01:20.000000000","message":"Can we format this like: ``--os-placement-api-version 1.5`` so it renders the \"--\" properly in docs?\n\nhttp://logs.openstack.org/42/514642/15/check/build-openstack-sphinx-docs/7389e23/html/cli/index.html#resource-provider-inventory-delete","commit_id":"c0a492cf2386070e7c245c1dce96d2de05ff32d2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bc529c428a65f72665510fe8e0b8b326ef8e3f5c","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            metavar\u003d\u0027\u003cresource_class\u003e\u0027,"},{"line_number":240,"context_line":"            required\u003dself.compare_version(version.lt(\u00271.5\u0027)),"},{"line_number":241,"context_line":"            help\u003d(RC_HELP +"},{"line_number":242,"context_line":"                  \u0027\\n\\n This argument can be skipped starting \u0027"},{"line_number":243,"context_line":"                  \u0027``--os-placement-api-version 1.5``. If it is skipped all \u0027"},{"line_number":244,"context_line":"                  \u0027inventories of the specified resource provider \u0027"},{"line_number":245,"context_line":"                  \u0027will be deleted\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f6a8fd7_c431365c","line":242,"range":{"start_line":242,"start_character":23,"end_line":242,"end_character":24},"updated":"2018-04-23 15:01:20.000000000","message":"s/ //","commit_id":"c0a492cf2386070e7c245c1dce96d2de05ff32d2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bc529c428a65f72665510fe8e0b8b326ef8e3f5c","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            metavar\u003d\u0027\u003cresource_class\u003e\u0027,"},{"line_number":240,"context_line":"            required\u003dself.compare_version(version.lt(\u00271.5\u0027)),"},{"line_number":241,"context_line":"            help\u003d(RC_HELP +"},{"line_number":242,"context_line":"                  \u0027\\n\\n This argument can be skipped starting \u0027"},{"line_number":243,"context_line":"                  \u0027``--os-placement-api-version 1.5``. If it is skipped all \u0027"},{"line_number":244,"context_line":"                  \u0027inventories of the specified resource provider \u0027"},{"line_number":245,"context_line":"                  \u0027will be deleted\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f6a8fd7_04ee4eb3","line":242,"range":{"start_line":242,"start_character":53,"end_line":242,"end_character":61},"updated":"2018-04-23 15:01:20.000000000","message":"starting with","commit_id":"c0a492cf2386070e7c245c1dce96d2de05ff32d2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bc529c428a65f72665510fe8e0b8b326ef8e3f5c","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            required\u003dself.compare_version(version.lt(\u00271.5\u0027)),"},{"line_number":241,"context_line":"            help\u003d(RC_HELP +"},{"line_number":242,"context_line":"                  \u0027\\n\\n This argument can be skipped starting \u0027"},{"line_number":243,"context_line":"                  \u0027``--os-placement-api-version 1.5``. If it is skipped all \u0027"},{"line_number":244,"context_line":"                  \u0027inventories of the specified resource provider \u0027"},{"line_number":245,"context_line":"                  \u0027will be deleted\u0027)"},{"line_number":246,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f6a8fd7_04540e20","line":243,"range":{"start_line":243,"start_character":64,"end_line":243,"end_character":71},"updated":"2018-04-23 15:01:20.000000000","message":"omitted","commit_id":"c0a492cf2386070e7c245c1dce96d2de05ff32d2"}],"osc_placement/tests/functional/test_inventory.py":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"148d6c5853193c845a3aad1fc396716bb7bd3900","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        self.assertEqual(32, inv[\u0027VCPU\u0027][\u0027total\u0027])"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"class TestInventory15(base.BaseTestCase):"},{"line_number":205,"context_line":"    VERSION \u003d \u00271.5\u0027"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    def test_delete_all_inventories(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"df7087c5_79d7ccef","line":204,"range":{"start_line":204,"start_character":0,"end_line":204,"end_character":41},"updated":"2018-03-23 07:51:47.000000000","message":"I miss here a test for deleting inventories for one specific resource class like:\nopenstack --os-placement-api-version 1.5 resource provider inventory delete \u003crp_uuid\u003e  --resource_class CUSTOM_P_CLASS","commit_id":"3748afcaf1e413fe642a21cf46f1b4fbacff14a7"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"a95fde3ce304a130d9f78d38bae0d22ffe3ecc69","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        self.assertEqual(32, inv[\u0027VCPU\u0027][\u0027total\u0027])"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"class TestInventory15(base.BaseTestCase):"},{"line_number":205,"context_line":"    VERSION \u003d \u00271.5\u0027"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    def test_delete_all_inventories(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"df7087c5_85890e76","line":204,"range":{"start_line":204,"start_character":0,"end_line":204,"end_character":41},"in_reply_to":"df7087c5_79d7ccef","updated":"2018-03-23 10:33:15.000000000","message":"will add.","commit_id":"3748afcaf1e413fe642a21cf46f1b4fbacff14a7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bc529c428a65f72665510fe8e0b8b326ef8e3f5c","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                      exc.output.decode(\u0027utf-8\u0027))"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def test_fail_delete_all_inventories(self):"},{"line_number":67,"context_line":"        self.assertCommandFailed("},{"line_number":68,"context_line":"            \u0027argument --resource-class is required\u0027,"},{"line_number":69,"context_line":"            self.resource_inventory_delete,"},{"line_number":70,"context_line":"            \u0027fake_uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f6a8fd7_e42b1a92","line":67,"updated":"2018-04-23 15:01:20.000000000","message":"A comment about why this fails would be useful (because microversion \u003c 1.5 and --resource-class isn\u0027t specified).","commit_id":"c0a492cf2386070e7c245c1dce96d2de05ff32d2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bc529c428a65f72665510fe8e0b8b326ef8e3f5c","unresolved":false,"context_lines":[{"line_number":205,"context_line":"class TestInventory15(TestInventory):"},{"line_number":206,"context_line":"    VERSION \u003d \u00271.5\u0027"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    def test_delete_all_inventories(self):"},{"line_number":209,"context_line":"        rp \u003d self.resource_provider_create()"},{"line_number":210,"context_line":"        self.resource_inventory_set(rp[\u0027uuid\u0027], \u0027MEMORY_MB\u003d16\u0027, \u0027VCPU\u003d32\u0027)"},{"line_number":211,"context_line":"        self.resource_inventory_delete(rp[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f6a8fd7_440c4640","line":208,"updated":"2018-04-23 15:01:20.000000000","message":"We should probably also test that you can still delete specific inventories if passing --resource-class and it only deletes the resource class inventory for what is specified, not the entire provider.","commit_id":"c0a492cf2386070e7c245c1dce96d2de05ff32d2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"541e0ef148ec101a866ddce24e9f497332f1d519","unresolved":false,"context_lines":[{"line_number":205,"context_line":"class TestInventory15(TestInventory):"},{"line_number":206,"context_line":"    VERSION \u003d \u00271.5\u0027"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    def test_delete_all_inventories(self):"},{"line_number":209,"context_line":"        rp \u003d self.resource_provider_create()"},{"line_number":210,"context_line":"        self.resource_inventory_set(rp[\u0027uuid\u0027], \u0027MEMORY_MB\u003d16\u0027, \u0027VCPU\u003d32\u0027)"},{"line_number":211,"context_line":"        self.resource_inventory_delete(rp[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f6a8fd7_664bee86","line":208,"in_reply_to":"9f6a8fd7_440c4640","updated":"2018-05-01 17:25:49.000000000","message":"test_inventory_delete in the parent class will test that for us with 1.5 so we should be OK.","commit_id":"c0a492cf2386070e7c245c1dce96d2de05ff32d2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"541e0ef148ec101a866ddce24e9f497332f1d519","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        self.resource_inventory_delete(rp[\u0027uuid\u0027])"},{"line_number":212,"context_line":"        self.assertEqual([], self.resource_inventory_list(rp[\u0027uuid\u0027]))"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    def test_fail_delete_all_inventories(self):"},{"line_number":215,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f6a8fd7_2645f670","line":214,"range":{"start_line":214,"start_character":8,"end_line":214,"end_character":40},"updated":"2018-05-01 17:25:49.000000000","message":"We can probably just remove this and rename the test in the parent class to be test_delete_all_inventories to show it fails if \u003c 1.5.","commit_id":"c0a492cf2386070e7c245c1dce96d2de05ff32d2"}],"osc_placement/version.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"52ac8cbbbd204fd45e992cfa15dff5dea2e7f26d","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    \"\"\"Extract version from a command object.\"\"\""},{"line_number":96,"context_line":"    try:"},{"line_number":97,"context_line":"        version \u003d obj.app.client_manager.placement.api_version"},{"line_number":98,"context_line":"    except AttributeError:"},{"line_number":99,"context_line":"        version \u003d SUPPORTED_VERSIONS[0]"},{"line_number":100,"context_line":"    return version"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"bf659307_d0c9e4ab","line":98,"range":{"start_line":98,"start_character":11,"end_line":98,"end_character":25},"updated":"2018-04-12 19:27:54.000000000","message":"When would we get this? When --os-placement-api-version is not specified on the command line? In that case we default to the base version, 1.0. Makes sense, could use a comment though.","commit_id":"cc07aaec0ca2a893084d817730fcde9f0339e64c"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"d1c3c70c45b53a77ab93373a8298a92f82223f5d","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    \"\"\"Extract version from a command object.\"\"\""},{"line_number":96,"context_line":"    try:"},{"line_number":97,"context_line":"        version \u003d obj.app.client_manager.placement.api_version"},{"line_number":98,"context_line":"    except AttributeError:"},{"line_number":99,"context_line":"        version \u003d SUPPORTED_VERSIONS[0]"},{"line_number":100,"context_line":"    return version"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"9f6a8fd7_3b57f15a","line":98,"range":{"start_line":98,"start_character":11,"end_line":98,"end_character":25},"in_reply_to":"bf659307_d0c9e4ab","updated":"2018-04-23 13:18:50.000000000","message":"for the docs only. When --os-placement-api-vesion is not specified a default value for api_version in http.py is used.\nthat need to be fixed the future.","commit_id":"cc07aaec0ca2a893084d817730fcde9f0339e64c"}],"releasenotes/notes/microversion-1.5-0c6342c887669b8e.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bc529c428a65f72665510fe8e0b8b326ef8e3f5c","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 ``openstack resource provider delete`` command now supports microversion"},{"line_number":5,"context_line":"    `1.5`_. Specifically it is possible to delete all inventories of"},{"line_number":6,"context_line":"    the specified resource provider. The resource class positional"},{"line_number":7,"context_line":"    argument was replaced with the ``--resource-class`` optional"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"9f6a8fd7_e4731a15","line":4,"range":{"start_line":4,"start_character":38,"end_line":4,"end_character":44},"updated":"2018-04-23 15:01:20.000000000","message":"inventory delete, right?","commit_id":"c0a492cf2386070e7c245c1dce96d2de05ff32d2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"541e0ef148ec101a866ddce24e9f497332f1d519","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The ``openstack resource provider delete`` command now supports microversion"},{"line_number":5,"context_line":"    `1.5`_. Specifically it is possible to delete all inventories of"},{"line_number":6,"context_line":"    the specified resource provider. The resource class positional"},{"line_number":7,"context_line":"    argument was replaced with the ``--resource-class`` optional"},{"line_number":8,"context_line":"    argument."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    See the `command documentation`__ for more details."},{"line_number":11,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":15,"id":"9f6a8fd7_e6237ebd","line":8,"range":{"start_line":6,"start_character":37,"end_line":8,"end_character":13},"updated":"2018-05-01 17:25:49.000000000","message":"This should go into an upgrade release note section.","commit_id":"c0a492cf2386070e7c245c1dce96d2de05ff32d2"}]}
