)]}'
{"specs/wallaby/approved/glance/expose_task_show_api.rst":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"4da2a1138669266e2816eb03ce63223f5b546a5a","unresolved":true,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":":impacts: API documentation needs to be updated."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":":how: New endpoint /v2/messages/{task_id} will hit the database and will fetch"},{"line_number":32,"context_line":"      particular task details and show it to the user."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":":alternatives: Expose task show API to all the users. At the moment task API\u0027s"}],"source_content_type":"text/x-rst","patch_set":2,"id":"8fa5a53b_09b24d93","line":31,"range":{"start_line":31,"start_character":19,"end_line":31,"end_character":41},"updated":"2020-12-17 16:11:14.000000000","message":"Suggestion: if we make \u0027messages\u0027 a sub-resource of an image, this would be more user-friendly.  What I mean is something like:\n\n  /v2/images/{image_id}/messages\n\nwhich would return a list of messages associated with the image, or the most recent message, something like that.  For now, the API would just look at the image for whether os_glance_import_task is defined on the image, and if so, grab the task with that uuid and display the info described above.\n\nOtherwise, the user has to know to look in the os_glance_import_task to get the uuid, and then use that uuid with the \"messages\" (not \"tasks\") API, which is a bit confusing.  Also, breaking the explicit connection between the image metadata and the uuid to retrieve the message will give us some flexibility for future features that might need to display a message.","commit_id":"7b107a9a5937cd70627495345a999301e77d2754"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"664396237bc0cb3ad001210450d743e56151cdca","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":":impacts: API documentation needs to be updated."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":":how: New endpoint /v2/messages/{task_id} will hit the database and will fetch"},{"line_number":32,"context_line":"      particular task details and show it to the user."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":":alternatives: Expose task show API to all the users. At the moment task API\u0027s"}],"source_content_type":"text/x-rst","patch_set":2,"id":"85e00cdc_7ed088e7","line":31,"range":{"start_line":31,"start_character":19,"end_line":31,"end_character":41},"in_reply_to":"8fa5a53b_09b24d93","updated":"2020-12-18 07:17:31.000000000","message":"Done","commit_id":"7b107a9a5937cd70627495345a999301e77d2754"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e075c61685fca9ab263836a269b0c16a08d3e4e0","unresolved":true,"context_lines":[{"line_number":10,"context_line":"https://blueprints.launchpad.net/glance/+spec/messages-api"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The image service now supports importing images or copying existing images"},{"line_number":13,"context_line":"in multiple glance stores using task flow, but there is restriction that"},{"line_number":14,"context_line":"only one import operation or copy operation is permitted on image to avoid"},{"line_number":15,"context_line":"race condition."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"50850ce5_bd1afc67","line":13,"range":{"start_line":13,"start_character":32,"end_line":13,"end_character":41},"updated":"2021-01-07 16:52:40.000000000","message":"maybe say \"glance tasks\" instead (because that\u0027s the source of the problem you describe at line 20)","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fa938d61300dd9967be397496024ccb527d4518c","unresolved":false,"context_lines":[{"line_number":10,"context_line":"https://blueprints.launchpad.net/glance/+spec/messages-api"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The image service now supports importing images or copying existing images"},{"line_number":13,"context_line":"in multiple glance stores using task flow, but there is restriction that"},{"line_number":14,"context_line":"only one import operation or copy operation is permitted on image to avoid"},{"line_number":15,"context_line":"race condition."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"d4bb593b_9ee721c8","line":13,"range":{"start_line":13,"start_character":32,"end_line":13,"end_character":41},"in_reply_to":"50850ce5_bd1afc67","updated":"2021-01-08 04:34:56.000000000","message":"Done","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e075c61685fca9ab263836a269b0c16a08d3e4e0","unresolved":true,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The image service now supports importing images or copying existing images"},{"line_number":13,"context_line":"in multiple glance stores using task flow, but there is restriction that"},{"line_number":14,"context_line":"only one import operation or copy operation is permitted on image to avoid"},{"line_number":15,"context_line":"race condition."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":3,"id":"acff0bf1_f4a47c83","line":14,"range":{"start_line":14,"start_character":57,"end_line":14,"end_character":65},"updated":"2021-01-07 16:52:40.000000000","message":"maybe \"simultaneously on an image\"","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fa938d61300dd9967be397496024ccb527d4518c","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The image service now supports importing images or copying existing images"},{"line_number":13,"context_line":"in multiple glance stores using task flow, but there is restriction that"},{"line_number":14,"context_line":"only one import operation or copy operation is permitted on image to avoid"},{"line_number":15,"context_line":"race condition."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":3,"id":"b27b24a7_c5af576b","line":14,"range":{"start_line":14,"start_character":57,"end_line":14,"end_character":65},"in_reply_to":"acff0bf1_f4a47c83","updated":"2021-01-08 04:34:56.000000000","message":"Done","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e075c61685fca9ab263836a269b0c16a08d3e4e0","unresolved":true,"context_lines":[{"line_number":20,"context_line":"Task API\u0027s are not available to normal users. In Victoria we have fixed"},{"line_number":21,"context_line":"race condition while copying existing images in  multiple stores which uses"},{"line_number":22,"context_line":"\"task-id\" to obtain lock on the image to prevent other import operations on"},{"line_number":23,"context_line":"the same image. The additional property \"os_glance_import_task\" will be used"},{"line_number":24,"context_line":"to store \"task id\". We are updating \u0027message\u0027 property of the task which"},{"line_number":25,"context_line":"helps calculate time based on last updated time of task to burst the lock"},{"line_number":26,"context_line":"as well as show how much data has been copied of that image. Copying"}],"source_content_type":"text/x-rst","patch_set":3,"id":"6b6c4835_a392f31b","line":23,"range":{"start_line":23,"start_character":31,"end_line":23,"end_character":39},"updated":"2021-01-07 16:52:40.000000000","message":"image property","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fa938d61300dd9967be397496024ccb527d4518c","unresolved":false,"context_lines":[{"line_number":20,"context_line":"Task API\u0027s are not available to normal users. In Victoria we have fixed"},{"line_number":21,"context_line":"race condition while copying existing images in  multiple stores which uses"},{"line_number":22,"context_line":"\"task-id\" to obtain lock on the image to prevent other import operations on"},{"line_number":23,"context_line":"the same image. The additional property \"os_glance_import_task\" will be used"},{"line_number":24,"context_line":"to store \"task id\". We are updating \u0027message\u0027 property of the task which"},{"line_number":25,"context_line":"helps calculate time based on last updated time of task to burst the lock"},{"line_number":26,"context_line":"as well as show how much data has been copied of that image. Copying"}],"source_content_type":"text/x-rst","patch_set":3,"id":"6755d4e8_aed1dcad","line":23,"range":{"start_line":23,"start_character":31,"end_line":23,"end_character":39},"in_reply_to":"6b6c4835_a392f31b","updated":"2021-01-08 04:34:56.000000000","message":"Done","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e075c61685fca9ab263836a269b0c16a08d3e4e0","unresolved":true,"context_lines":[{"line_number":24,"context_line":"to store \"task id\". We are updating \u0027message\u0027 property of the task which"},{"line_number":25,"context_line":"helps calculate time based on last updated time of task to burst the lock"},{"line_number":26,"context_line":"as well as show how much data has been copied of that image. Copying"},{"line_number":27,"context_line":"operation may take a long and normal user can be clueless about when lock"},{"line_number":28,"context_line":"will be busted or why his (other) requests are rejected without contacting to"},{"line_number":29,"context_line":"the administrator."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa4bf05a_71ab6ed8","line":27,"range":{"start_line":27,"start_character":19,"end_line":27,"end_character":25},"updated":"2021-01-07 16:52:40.000000000","message":"a long time","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fa938d61300dd9967be397496024ccb527d4518c","unresolved":false,"context_lines":[{"line_number":24,"context_line":"to store \"task id\". We are updating \u0027message\u0027 property of the task which"},{"line_number":25,"context_line":"helps calculate time based on last updated time of task to burst the lock"},{"line_number":26,"context_line":"as well as show how much data has been copied of that image. Copying"},{"line_number":27,"context_line":"operation may take a long and normal user can be clueless about when lock"},{"line_number":28,"context_line":"will be busted or why his (other) requests are rejected without contacting to"},{"line_number":29,"context_line":"the administrator."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"a9f71632_7bfa6a9f","line":27,"range":{"start_line":27,"start_character":19,"end_line":27,"end_character":25},"in_reply_to":"fa4bf05a_71ab6ed8","updated":"2021-01-08 04:34:56.000000000","message":"Done","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a1da30a6db14dccc627b6dd98fc3879469020004","unresolved":true,"context_lines":[{"line_number":37,"context_line":"to the user. This new API will be available to all users without any"},{"line_number":38,"context_line":"restrictions. If import/copying operation is completed or yet to start"},{"line_number":39,"context_line":"which means if `os_glance_import_task` is not yet set to image in that"},{"line_number":40,"context_line":"case the API will return HTTP 404 response back to the user."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"More details on this API can be found in the REST API section of this spec."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"d309316d_c0eeca75","line":40,"updated":"2021-01-07 18:26:04.000000000","message":"If you think about this from the perspective of some automated code that is watching, it can be difficult to use this effectively. Basically, you need a client-side state machine *and* sufficiently-granular polling to catch each state. You need to see this /messages go through this sequence in order to deduce that the operation has completed:\n\n 404 -\u003e 200 -\u003e 404\n\nIf you miss the 200, you may poll forever and not notice that you missed that it finished. If you miss the first 404, you might deduce that something else is running, that your task is queued, and will be processed afterwards. If you miss the second 404, you might not notice that your operation completed and someone else started another one, which will cause you to keep polling until that one has completed.\n\nPoint being, I think it would be better if we always return 200, and leave the \"nothing is running\" determination to the client by examining the results.","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fa938d61300dd9967be397496024ccb527d4518c","unresolved":true,"context_lines":[{"line_number":37,"context_line":"to the user. This new API will be available to all users without any"},{"line_number":38,"context_line":"restrictions. If import/copying operation is completed or yet to start"},{"line_number":39,"context_line":"which means if `os_glance_import_task` is not yet set to image in that"},{"line_number":40,"context_line":"case the API will return HTTP 404 response back to the user."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"More details on this API can be found in the REST API section of this spec."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7c0d8e19_2f84126f","line":40,"in_reply_to":"d309316d_c0eeca75","updated":"2021-01-08 04:34:56.000000000","message":"Makes sense.","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e075c61685fca9ab263836a269b0c16a08d3e4e0","unresolved":true,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"This spec does not propose any changes to the data model. Rather the approach"},{"line_number":64,"context_line":"herein can maintain all new stateful data either in memory or within the"},{"line_number":65,"context_line":"existing schema used by glance. However store identifier will be stored as"},{"line_number":66,"context_line":"a metadata in the location object."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"REST API impact"},{"line_number":69,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7f6aea7e_7ecd4194","line":66,"range":{"start_line":65,"start_character":32,"end_line":66,"end_character":34},"updated":"2021-01-07 16:52:40.000000000","message":"This sentence doesn\u0027t seem to belong here.","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fa938d61300dd9967be397496024ccb527d4518c","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"This spec does not propose any changes to the data model. Rather the approach"},{"line_number":64,"context_line":"herein can maintain all new stateful data either in memory or within the"},{"line_number":65,"context_line":"existing schema used by glance. However store identifier will be stored as"},{"line_number":66,"context_line":"a metadata in the location object."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"REST API impact"},{"line_number":69,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9c8b1269_2f736eff","line":66,"range":{"start_line":65,"start_character":32,"end_line":66,"end_character":34},"in_reply_to":"7f6aea7e_7ecd4194","updated":"2021-01-08 04:34:56.000000000","message":"Correct, removed!!","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e075c61685fca9ab263836a269b0c16a08d3e4e0","unresolved":true,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"**New API**"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"* Show task information of task associated with given image."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"**Common Response Codes**"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"468ab915_7a93048f","line":73,"range":{"start_line":73,"start_character":2,"end_line":73,"end_character":60},"updated":"2021-01-07 16:52:40.000000000","message":"I suggest making this more generic, like \"Show messages associated with the given image, for example, information about an in-progress import task associated with the image.\"","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fa938d61300dd9967be397496024ccb527d4518c","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"**New API**"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"* Show task information of task associated with given image."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"**Common Response Codes**"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"4ca71261_05129882","line":73,"range":{"start_line":73,"start_character":2,"end_line":73,"end_character":60},"in_reply_to":"468ab915_7a93048f","updated":"2021-01-08 04:34:56.000000000","message":"Done","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a1da30a6db14dccc627b6dd98fc3879469020004","unresolved":true,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"**Common Response Codes**"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"* Failure: `400 Bad Request` with details."},{"line_number":78,"context_line":"* Not Found: `404 Not Found` with details."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"**API Version**"}],"source_content_type":"text/x-rst","patch_set":3,"id":"8883bd24_43db39f3","line":77,"updated":"2021-01-07 18:26:04.000000000","message":"Under what circumstances could a GET on a valid URL with no parameters return this?","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fa938d61300dd9967be397496024ccb527d4518c","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"**Common Response Codes**"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"* Failure: `400 Bad Request` with details."},{"line_number":78,"context_line":"* Not Found: `404 Not Found` with details."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"**API Version**"}],"source_content_type":"text/x-rst","patch_set":3,"id":"b96fd399_64117180","line":77,"in_reply_to":"8883bd24_43db39f3","updated":"2021-01-08 04:34:56.000000000","message":"No valid URL will return this, removing this in new revision.","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e075c61685fca9ab263836a269b0c16a08d3e4e0","unresolved":true,"context_lines":[{"line_number":82,"context_line":"All URLS will be under the v2 Glance API.  If it is not explicitly specified"},{"line_number":83,"context_line":"assume /v2/\u003curl\u003e"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"**[New API] Get task information associated with image**"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Show task information of task associated with given image::"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"c191788f_517ae856","line":85,"range":{"start_line":85,"start_character":16,"end_line":85,"end_character":32},"updated":"2021-01-07 16:52:40.000000000","message":"if you accept the above suggestion, this would say \"messages\"","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fa938d61300dd9967be397496024ccb527d4518c","unresolved":false,"context_lines":[{"line_number":82,"context_line":"All URLS will be under the v2 Glance API.  If it is not explicitly specified"},{"line_number":83,"context_line":"assume /v2/\u003curl\u003e"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"**[New API] Get task information associated with image**"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Show task information of task associated with given image::"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"edbe57c6_48fca8f0","line":85,"range":{"start_line":85,"start_character":16,"end_line":85,"end_character":32},"in_reply_to":"c191788f_517ae856","updated":"2021-01-08 04:34:56.000000000","message":"Done","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e075c61685fca9ab263836a269b0c16a08d3e4e0","unresolved":true,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"**[New API] Get task information associated with image**"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Show task information of task associated with given image::"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    GET /v2/images/{image_id}/messages"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5895b305_517c56fc","line":87,"range":{"start_line":87,"start_character":5,"end_line":87,"end_character":29},"updated":"2021-01-07 16:52:40.000000000","message":"messages","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fa938d61300dd9967be397496024ccb527d4518c","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"**[New API] Get task information associated with image**"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Show task information of task associated with given image::"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    GET /v2/images/{image_id}/messages"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"dc449f84_3b48038f","line":87,"range":{"start_line":87,"start_character":5,"end_line":87,"end_character":29},"in_reply_to":"5895b305_517c56fc","updated":"2021-01-08 04:34:56.000000000","message":"Done","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e075c61685fca9ab263836a269b0c16a08d3e4e0","unresolved":true,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"This API takes no query parameters and when authorized returns a task"},{"line_number":92,"context_line":"information associated with given image. If it does not found any task"},{"line_number":93,"context_line":"associated with the image then returns HTTP 404 Not Found response."},{"line_number":94,"context_line":"Example of the valid response::"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    {"}],"source_content_type":"text/x-rst","patch_set":3,"id":"c0c78b10_95d7f652","line":93,"updated":"2021-01-07 16:52:40.000000000","message":"See my comment at line 126.  (Just flagging that this description would need a revision if you decide to modify the response.)","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fa938d61300dd9967be397496024ccb527d4518c","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"This API takes no query parameters and when authorized returns a task"},{"line_number":92,"context_line":"information associated with given image. If it does not found any task"},{"line_number":93,"context_line":"associated with the image then returns HTTP 404 Not Found response."},{"line_number":94,"context_line":"Example of the valid response::"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    {"}],"source_content_type":"text/x-rst","patch_set":3,"id":"8aca23e0_a2f2cc84","line":93,"in_reply_to":"c0c78b10_95d7f652","updated":"2021-01-08 04:34:56.000000000","message":"Done","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a1da30a6db14dccc627b6dd98fc3879469020004","unresolved":true,"context_lines":[{"line_number":104,"context_line":"            \"updated_at\": \"2020-12-18T05:25:39.000000\","},{"line_number":105,"context_line":"            \"deleted_at\": null,"},{"line_number":106,"context_line":"            \"deleted\": false,"},{"line_number":107,"context_line":"            \"input\": {"},{"line_number":108,"context_line":"                \"image_id\": \"829c729b-ebc4-4cc7-a164-6f43f1149b17\","},{"line_number":109,"context_line":"                \"import_req\": {"},{"line_number":110,"context_line":"                    \"method\": {\"name\": \"copy-image\"},"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9cc9859d_6bd467c8","line":107,"updated":"2021-01-07 18:26:04.000000000","message":"Can we add request-id in here? Without the request-id, the client has to look at the content here and decide \"is this my request?\" and \"if it\u0027s not, is it good enough to satisfy what I wanted even if my request was dropped?\"\n\nIn some cases it may be better to to the latter, but it\u0027s definitely more difficult and harder to do properly. In any situation where we need to report whether something worked or not, we need to know whether what we asked for succeeded or not.\n\nAs an example, imagine two nova computes that both ask for automatic copying of images to their respective stores. One compute node has a typo in its config which causes it to always ask for copying the image to the wrong place. However, since the end-user always boots lots of instances at the same time, there\u0027s usually an opportunity for the correctly-configured nova-compute to end up copying the image to the right place by luck. Without knowing that what it\u0027s asking for is not working, nova-compute can\u0027t log that its requests are failing. The operator occasionally gets reports from the user about things failing to boot (when they boot one instance and it lands on the broken node), but \"most of the time\" the problem seems to work itself out.","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fa938d61300dd9967be397496024ccb527d4518c","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            \"updated_at\": \"2020-12-18T05:25:39.000000\","},{"line_number":105,"context_line":"            \"deleted_at\": null,"},{"line_number":106,"context_line":"            \"deleted\": false,"},{"line_number":107,"context_line":"            \"input\": {"},{"line_number":108,"context_line":"                \"image_id\": \"829c729b-ebc4-4cc7-a164-6f43f1149b17\","},{"line_number":109,"context_line":"                \"import_req\": {"},{"line_number":110,"context_line":"                    \"method\": {\"name\": \"copy-image\"},"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3763753e_e4fee0db","line":107,"in_reply_to":"9cc9859d_6bd467c8","updated":"2021-01-08 04:34:56.000000000","message":"Sounds good to me, will add it in new revision","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e075c61685fca9ab263836a269b0c16a08d3e4e0","unresolved":true,"context_lines":[{"line_number":123,"context_line":"            \"message\": \"Copied 15 MiB\""},{"line_number":124,"context_line":"        }"},{"line_number":125,"context_line":"    }"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Response codes:"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"* 200 -- Upon authorization and successful request. The response body"}],"source_content_type":"text/x-rst","patch_set":3,"id":"998d3a97_a45930d8","line":126,"updated":"2021-01-07 16:52:40.000000000","message":"Not sure if this is a good suggestion or not.  How about if the response is wrapped like this:\n\n    {\n        \"messages\": [\n            {\n                 \"task\": {\n                     \"id\": etc, as above\n            }\n         ]\n    }\n\nThis would future proof us for the situation where there are multiple messages for a single image, and they wouldn\u0027t all have to be task-based because \"messages\" is a list of JSON objects.\n\nI was thinking that maybe the task response should be filtered, but my second thought is you are correct here, returning the full response provides enough information to really be able to troubleshoot a problem without exposing any system-sensitive info.  Plus, we\u0027ve got documentation elsewhere (I think) that explains how to read a task-show response.","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fa938d61300dd9967be397496024ccb527d4518c","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            \"message\": \"Copied 15 MiB\""},{"line_number":124,"context_line":"        }"},{"line_number":125,"context_line":"    }"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Response codes:"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"* 200 -- Upon authorization and successful request. The response body"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3393a052_3e6a711c","line":126,"in_reply_to":"090983e5_9e5fedce","updated":"2021-01-08 04:34:56.000000000","message":"Done","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d1029b8130ca7349d7438067232a2433b6e07ff3","unresolved":true,"context_lines":[{"line_number":123,"context_line":"            \"message\": \"Copied 15 MiB\""},{"line_number":124,"context_line":"        }"},{"line_number":125,"context_line":"    }"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Response codes:"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"* 200 -- Upon authorization and successful request. The response body"}],"source_content_type":"text/x-rst","patch_set":3,"id":"b2d16187_6b843383","line":126,"in_reply_to":"3393a052_3e6a711c","updated":"2021-01-08 23:14:09.000000000","message":"There\u0027s a task_time_to_live setting (TTL after reaching a final state) that\u0027s operator controlled, default setting is 48 hours.\n\nIf we go this direction (that is, just dump all tasks associated with the image), the messages API doesn\u0027t even need to check the os_glance_import_task property, so that property will revert to its original lock-holding purpose.  From the user perspective, they\u0027ll just be interested in the \"status\" field of each task.  Or would there be a reason to be interested only in the os_glance_import_task?","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a1da30a6db14dccc627b6dd98fc3879469020004","unresolved":true,"context_lines":[{"line_number":123,"context_line":"            \"message\": \"Copied 15 MiB\""},{"line_number":124,"context_line":"        }"},{"line_number":125,"context_line":"    }"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Response codes:"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"* 200 -- Upon authorization and successful request. The response body"}],"source_content_type":"text/x-rst","patch_set":3,"id":"090983e5_9e5fedce","line":126,"in_reply_to":"8937547d_cd45501a","updated":"2021-01-07 18:26:04.000000000","message":"I agree with this, because of the argument I made above. Having to poll this API at sufficient speed and determine that \"404 means my thing is done if I saw it was running earlier\" is fragile. By making this a list, we can show all tasks from the past 24 hours or something, including completed ones. Thus, if I kick something off and then am unable to poll for a few minutes, I can still go back and determine that it was completed.","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"3c851e7eefd1859b8a25120c942c3938df720599","unresolved":true,"context_lines":[{"line_number":123,"context_line":"            \"message\": \"Copied 15 MiB\""},{"line_number":124,"context_line":"        }"},{"line_number":125,"context_line":"    }"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Response codes:"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"* 200 -- Upon authorization and successful request. The response body"}],"source_content_type":"text/x-rst","patch_set":3,"id":"8937547d_cd45501a","line":126,"in_reply_to":"998d3a97_a45930d8","updated":"2021-01-07 17:01:34.000000000","message":"Just noticed that i missed a closing brace above.  What i mean is:\n\n    {\n        \"messages\": [\n            {\n                 \"task\": {\n                     \"id\": etc, as above\n                 }\n            }\n         ]\n    }\n\nI know that seems kind of overkill on the braces, but the idea is that we want the \"messages\" to be a list of JSON objects as opposed to being a named field of a JSON \"messages\" object.  Or maybe the best thing is to not worry about the future but just return a task object as in your original example.","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2e2f0eea6b69dd0f3dd966db8a75da481097decf","unresolved":true,"context_lines":[{"line_number":123,"context_line":"            \"message\": \"Copied 15 MiB\""},{"line_number":124,"context_line":"        }"},{"line_number":125,"context_line":"    }"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Response codes:"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"* 200 -- Upon authorization and successful request. The response body"}],"source_content_type":"text/x-rst","patch_set":3,"id":"b1a53c3d_89ac734d","line":126,"in_reply_to":"b2d16187_6b843383","updated":"2021-01-08 23:23:59.000000000","message":"First off, definitely agree we should leverage the TTL and just show anything not expired.\n\nSecond, if request-id is in the structure, then that\u0027s probably the most useful thing to know which task is the one you care about.\n\nHowever, since we have the task-id, it wouldn\u0027t be terrible to add something into the structure like \"holds-lock\": True, which we calculate as \"my id \u003d\u003d task lock id\". Just so you can see \"okay this is the task that is currently doing something, or holding up everything else.\"","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e075c61685fca9ab263836a269b0c16a08d3e4e0","unresolved":true,"context_lines":[{"line_number":214,"context_line":"As mentioned in the \u0027work items\u0027 section, we\u0027ll need to ensure the glance docs"},{"line_number":215,"context_line":"are update for:"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"* The new get task information from image REST API."},{"line_number":218,"context_line":"* Overall glance multi-store documentation to educate deployers on the"},{"line_number":219,"context_line":"  feature and how/when it\u0027s used."},{"line_number":220,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"0e58754e_533edbc2","line":217,"range":{"start_line":217,"start_character":6,"end_line":217,"end_character":30},"updated":"2021-01-07 16:52:40.000000000","message":"get messages","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fa938d61300dd9967be397496024ccb527d4518c","unresolved":false,"context_lines":[{"line_number":214,"context_line":"As mentioned in the \u0027work items\u0027 section, we\u0027ll need to ensure the glance docs"},{"line_number":215,"context_line":"are update for:"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"* The new get task information from image REST API."},{"line_number":218,"context_line":"* Overall glance multi-store documentation to educate deployers on the"},{"line_number":219,"context_line":"  feature and how/when it\u0027s used."},{"line_number":220,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"2412889c_c0fc9e08","line":217,"range":{"start_line":217,"start_character":6,"end_line":217,"end_character":30},"in_reply_to":"0e58754e_533edbc2","updated":"2021-01-08 04:34:56.000000000","message":"Done","commit_id":"d0e856fd062a77333d368fb0ebd4c8c57370e129"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d1029b8130ca7349d7438067232a2433b6e07ff3","unresolved":true,"context_lines":[{"line_number":37,"context_line":"to the user. This new API will be available to all users without any"},{"line_number":38,"context_line":"restrictions. If import/copying operation is completed or yet to start"},{"line_number":39,"context_line":"which means if `os_glance_import_task` is not yet set to image in that"},{"line_number":40,"context_line":"case the API will return HTTP 200 response with message \"No message"},{"line_number":41,"context_line":"associated with the image.\" back to the user."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"More details on this API can be found in the REST API section of this spec."},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"4c247b06_62d1ad1b","line":41,"range":{"start_line":40,"start_character":43,"end_line":41,"end_character":44},"updated":"2021-01-08 23:14:09.000000000","message":"Reading Dan\u0027s comments on PS3, I got the impression that he\u0027d like to see all the non-expired tasks associated with this image in the response, not just the one in the os_glance_import_task property.  So maybe instead of the \"No message\" string, if there are no messages for this image, just return the response\n\n  {\n      \"messages\": []\n  }","commit_id":"e4e52b4d21730c6701f0f92fd67cfc5a864fdfab"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2e2f0eea6b69dd0f3dd966db8a75da481097decf","unresolved":true,"context_lines":[{"line_number":37,"context_line":"to the user. This new API will be available to all users without any"},{"line_number":38,"context_line":"restrictions. If import/copying operation is completed or yet to start"},{"line_number":39,"context_line":"which means if `os_glance_import_task` is not yet set to image in that"},{"line_number":40,"context_line":"case the API will return HTTP 200 response with message \"No message"},{"line_number":41,"context_line":"associated with the image.\" back to the user."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"More details on this API can be found in the REST API section of this spec."},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"beb10921_326f6e04","line":41,"range":{"start_line":40,"start_character":43,"end_line":41,"end_character":44},"in_reply_to":"4c247b06_62d1ad1b","updated":"2021-01-08 23:23:59.000000000","message":"Correct, I think if there\u0027s nothing (unexpired), then an empty list is the right thing to return. TBH, I struggled with the \"messages\" suggested phrasing anyway, since we\u0027re returning pretty complex structures already. Messages may be in them, but they themselves aren\u0027t messages. Shouldn\u0027t this really be {\"tasks\": []} and make the url be $image_id/tasks?","commit_id":"e4e52b4d21730c6701f0f92fd67cfc5a864fdfab"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"0ef55b3809a1ec7a54d387fe53daa0518f08a602","unresolved":true,"context_lines":[{"line_number":37,"context_line":"to the user. This new API will be available to all users without any"},{"line_number":38,"context_line":"restrictions. If import/copying operation is completed or yet to start"},{"line_number":39,"context_line":"which means if `os_glance_import_task` is not yet set to image in that"},{"line_number":40,"context_line":"case the API will return HTTP 200 response with message \"No message"},{"line_number":41,"context_line":"associated with the image.\" back to the user."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"More details on this API can be found in the REST API section of this spec."},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"cfe28c9f_dac906fc","line":41,"range":{"start_line":40,"start_character":43,"end_line":41,"end_character":44},"in_reply_to":"beb10921_326f6e04","updated":"2021-01-09 23:16:13.000000000","message":"I like this suggestion.  I was originally thinking we\u0027d just display the message from the task or something, but returning the task objects looks like the correct thing for what we\u0027re trying to accomplish, so might as well identify the resource correctly.  (Sorry, Abhishek!)","commit_id":"e4e52b4d21730c6701f0f92fd67cfc5a864fdfab"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"8cffd12adf9b946e6461292d905e28ba563f6077","unresolved":false,"context_lines":[{"line_number":37,"context_line":"to the user. This new API will be available to all users without any"},{"line_number":38,"context_line":"restrictions. If import/copying operation is completed or yet to start"},{"line_number":39,"context_line":"which means if `os_glance_import_task` is not yet set to image in that"},{"line_number":40,"context_line":"case the API will return HTTP 200 response with message \"No message"},{"line_number":41,"context_line":"associated with the image.\" back to the user."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"More details on this API can be found in the REST API section of this spec."},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bc5ff10d_f04c419d","line":41,"range":{"start_line":40,"start_character":43,"end_line":41,"end_character":44},"in_reply_to":"cfe28c9f_dac906fc","updated":"2021-01-12 06:23:07.000000000","message":"Done","commit_id":"e4e52b4d21730c6701f0f92fd67cfc5a864fdfab"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d1029b8130ca7349d7438067232a2433b6e07ff3","unresolved":true,"context_lines":[{"line_number":91,"context_line":"This API takes no query parameters and when authorized returns"},{"line_number":92,"context_line":"messages associated with given image. If it does not found any"},{"line_number":93,"context_line":"message associated with the image then it will return \"No message"},{"line_number":94,"context_line":"associated with the image.\"."},{"line_number":95,"context_line":"Example of the valid response::"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    {"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ae22ecd5_c2c58ae0","line":94,"updated":"2021-01-08 23:14:09.000000000","message":"(or empty message list, if you decide to go that way)","commit_id":"e4e52b4d21730c6701f0f92fd67cfc5a864fdfab"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"8cffd12adf9b946e6461292d905e28ba563f6077","unresolved":false,"context_lines":[{"line_number":91,"context_line":"This API takes no query parameters and when authorized returns"},{"line_number":92,"context_line":"messages associated with given image. If it does not found any"},{"line_number":93,"context_line":"message associated with the image then it will return \"No message"},{"line_number":94,"context_line":"associated with the image.\"."},{"line_number":95,"context_line":"Example of the valid response::"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    {"}],"source_content_type":"text/x-rst","patch_set":4,"id":"26b83b2c_3aa00a70","line":94,"in_reply_to":"ae22ecd5_c2c58ae0","updated":"2021-01-12 06:23:07.000000000","message":"Done","commit_id":"e4e52b4d21730c6701f0f92fd67cfc5a864fdfab"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d1029b8130ca7349d7438067232a2433b6e07ff3","unresolved":true,"context_lines":[{"line_number":97,"context_line":"    {"},{"line_number":98,"context_line":"        \"messages\": ["},{"line_number":99,"context_line":"            {"},{"line_number":100,"context_line":"                \"task\": {"},{"line_number":101,"context_line":"                    \"id\": \"ee22890e-8948-4ea6-9668-831f973c84f5\","},{"line_number":102,"context_line":"                    \"type\": \"api_image_import\","},{"line_number":103,"context_line":"                    \"status\": \"processing\","}],"source_content_type":"text/x-rst","patch_set":4,"id":"d52e960c_6b21f6ea","line":100,"updated":"2021-01-08 23:14:09.000000000","message":"The task schema also contains \"schema\" and \"self\".  I think it makes sense not to include either here (\"self\" will be useless because non-admins can\u0027t make the call successfully), and \"schema\" won\u0027t be helpful because it specifies that there must be a \"self\" field.  If it would be helpful to have a schema, though, we could change the schema to make \u0027self\u0027 optional.","commit_id":"e4e52b4d21730c6701f0f92fd67cfc5a864fdfab"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2e2f0eea6b69dd0f3dd966db8a75da481097decf","unresolved":true,"context_lines":[{"line_number":97,"context_line":"    {"},{"line_number":98,"context_line":"        \"messages\": ["},{"line_number":99,"context_line":"            {"},{"line_number":100,"context_line":"                \"task\": {"},{"line_number":101,"context_line":"                    \"id\": \"ee22890e-8948-4ea6-9668-831f973c84f5\","},{"line_number":102,"context_line":"                    \"type\": \"api_image_import\","},{"line_number":103,"context_line":"                    \"status\": \"processing\","}],"source_content_type":"text/x-rst","patch_set":4,"id":"3e892077_c3bb2cae","line":100,"in_reply_to":"d52e960c_6b21f6ea","updated":"2021-01-08 23:23:59.000000000","message":"But admins *could* follow self, so I dunno, I wouldn\u0027t say it\u0027s not useful to include that, but I\u0027m not overly opinionated about it.","commit_id":"e4e52b4d21730c6701f0f92fd67cfc5a864fdfab"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"0ef55b3809a1ec7a54d387fe53daa0518f08a602","unresolved":true,"context_lines":[{"line_number":108,"context_line":"                    \"deleted_at\": null,"},{"line_number":109,"context_line":"                    \"deleted\": false,"},{"line_number":110,"context_line":"                    \"input\": {"},{"line_number":111,"context_line":"                        \"image_id\": \"829c729b-ebc4-4cc7-a164-6f43f1149b17\","},{"line_number":112,"context_line":"                        \"import_req\": {"},{"line_number":113,"context_line":"                            \"method\": {\"name\": \"copy-image\"},"},{"line_number":114,"context_line":"                            \"all_stores\": true,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"e2b9af08_70fe2a7b","line":111,"range":{"start_line":111,"start_character":24,"end_line":111,"end_character":74},"updated":"2021-01-09 23:16:13.000000000","message":"Just noticed this ... the image-id is in the input JSON blob and hence isn\u0027t indexable.  (Dan is going to say WTF? The reason is that the original  import workflow only created the image after the data had been uploaded so that users wouldn\u0027t have a bunch of empty images hanging around. That\u0027s also why the task-list call doesn\u0027t have an image_id filter.)\n\nI think we\u0027ll need to add this as an indexable column to the DB.  Not sure whether we need to change the task schema to expose it as a new task field or not.","commit_id":"e4e52b4d21730c6701f0f92fd67cfc5a864fdfab"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"8cffd12adf9b946e6461292d905e28ba563f6077","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                    \"deleted_at\": null,"},{"line_number":109,"context_line":"                    \"deleted\": false,"},{"line_number":110,"context_line":"                    \"input\": {"},{"line_number":111,"context_line":"                        \"image_id\": \"829c729b-ebc4-4cc7-a164-6f43f1149b17\","},{"line_number":112,"context_line":"                        \"import_req\": {"},{"line_number":113,"context_line":"                            \"method\": {\"name\": \"copy-image\"},"},{"line_number":114,"context_line":"                            \"all_stores\": true,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"a1ac247c_a504b03c","line":111,"range":{"start_line":111,"start_character":24,"end_line":111,"end_character":74},"in_reply_to":"e2b9af08_70fe2a7b","updated":"2021-01-12 06:23:07.000000000","message":"Done","commit_id":"e4e52b4d21730c6701f0f92fd67cfc5a864fdfab"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d1029b8130ca7349d7438067232a2433b6e07ff3","unresolved":true,"context_lines":[{"line_number":125,"context_line":"                    \"result\": null,"},{"line_number":126,"context_line":"                    \"message\": \"Copied 15 MiB\""},{"line_number":127,"context_line":"                },"},{"line_number":128,"context_line":"                \"request-id\": \"openstack-request-id\""},{"line_number":129,"context_line":"            }"},{"line_number":130,"context_line":"        ]"},{"line_number":131,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":4,"id":"0cfe55d1_cff2eb88","line":128,"range":{"start_line":128,"start_character":16,"end_line":128,"end_character":28},"updated":"2021-01-08 23:14:09.000000000","message":"I\u0027m not against this, but how are we going to populate it?  I take it what Dan\u0027s asking for is the request-id of the import request that resulted in the task being generated?  I don\u0027t think we have anywhere to store that in the task table currently.  (That\u0027s not a reason not to add it, I\u0027m just flagging a database change.)","commit_id":"e4e52b4d21730c6701f0f92fd67cfc5a864fdfab"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2e2f0eea6b69dd0f3dd966db8a75da481097decf","unresolved":true,"context_lines":[{"line_number":125,"context_line":"                    \"result\": null,"},{"line_number":126,"context_line":"                    \"message\": \"Copied 15 MiB\""},{"line_number":127,"context_line":"                },"},{"line_number":128,"context_line":"                \"request-id\": \"openstack-request-id\""},{"line_number":129,"context_line":"            }"},{"line_number":130,"context_line":"        ]"},{"line_number":131,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":4,"id":"293b7f3b_8cde50a0","line":128,"range":{"start_line":128,"start_character":16,"end_line":128,"end_character":28},"in_reply_to":"0cfe55d1_cff2eb88","updated":"2021-01-08 23:23:59.000000000","message":"I didn\u0027t look to see if we did or not, but if we don\u0027t I\u0027d say it\u0027s definitely better to add it. Both for this case, as well as just general tracking down of \"what started this thing?\" type operator forensics.\n\nIt\u0027s going to suck if we need to add it, but I think it\u0027s worth it.","commit_id":"e4e52b4d21730c6701f0f92fd67cfc5a864fdfab"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"f878e83a7e993ed0032669a34a19f2a468d8b08a","unresolved":true,"context_lines":[{"line_number":125,"context_line":"                    \"result\": null,"},{"line_number":126,"context_line":"                    \"message\": \"Copied 15 MiB\""},{"line_number":127,"context_line":"                },"},{"line_number":128,"context_line":"                \"request-id\": \"openstack-request-id\""},{"line_number":129,"context_line":"            }"},{"line_number":130,"context_line":"        ]"},{"line_number":131,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fc3418b8_754bab48","line":128,"range":{"start_line":128,"start_character":16,"end_line":128,"end_character":28},"in_reply_to":"293b7f3b_8cde50a0","updated":"2021-01-11 05:12:44.000000000","message":"If we decides to do so, do we need migration script? (probably not)\nI still think we should stick to our initial purpose to show task which is associated with os_glance_import_task property.","commit_id":"e4e52b4d21730c6701f0f92fd67cfc5a864fdfab"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"8cffd12adf9b946e6461292d905e28ba563f6077","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                    \"result\": null,"},{"line_number":126,"context_line":"                    \"message\": \"Copied 15 MiB\""},{"line_number":127,"context_line":"                },"},{"line_number":128,"context_line":"                \"request-id\": \"openstack-request-id\""},{"line_number":129,"context_line":"            }"},{"line_number":130,"context_line":"        ]"},{"line_number":131,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":4,"id":"b5626563_c33efb7a","line":128,"range":{"start_line":128,"start_character":16,"end_line":128,"end_character":28},"in_reply_to":"47f469ce_1ff3871b","updated":"2021-01-12 06:23:07.000000000","message":"Done","commit_id":"e4e52b4d21730c6701f0f92fd67cfc5a864fdfab"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fed4a74b9bd9a6f96356b0466cb196b7df852759","unresolved":true,"context_lines":[{"line_number":125,"context_line":"                    \"result\": null,"},{"line_number":126,"context_line":"                    \"message\": \"Copied 15 MiB\""},{"line_number":127,"context_line":"                },"},{"line_number":128,"context_line":"                \"request-id\": \"openstack-request-id\""},{"line_number":129,"context_line":"            }"},{"line_number":130,"context_line":"        ]"},{"line_number":131,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":4,"id":"47f469ce_1ff3871b","line":128,"range":{"start_line":128,"start_character":16,"end_line":128,"end_character":28},"in_reply_to":"fc3418b8_754bab48","updated":"2021-01-11 14:44:05.000000000","message":"Just looking this morning, it doesn\u0027t seem like we have request_id in the Task or TaskInfo models, so yeah, we\u0027d need a migration for it. I _do_ think it\u0027s worthwhile.\n\nThe os_glance_import_task property does not really help a client that is competing with others - it doesn\u0027t know what its task_id was, or whether it won against a competing request. All it can do is, after a 20x response from import, re-GET the image and look at the task_id. It still has to guess whether that was _its_ task or not.","commit_id":"e4e52b4d21730c6701f0f92fd67cfc5a864fdfab"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"60046595ffbf67c534875d5a476aaeacfc64f32a","unresolved":true,"context_lines":[{"line_number":10,"context_line":"https://blueprints.launchpad.net/glance/+spec/messages-api"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The image service now supports importing images or copying existing images"},{"line_number":13,"context_line":"in multiple glance stores using glance tasks, but there is restriction that"},{"line_number":14,"context_line":"only one import operation or copy operation is permitted simultaneously on"},{"line_number":15,"context_line":"an image to avoid race condition."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"4aeb31cc_3f7559df","line":13,"range":{"start_line":13,"start_character":59,"end_line":13,"end_character":70},"updated":"2021-01-12 21:14:58.000000000","message":"\"a restriction\"","commit_id":"6ab00d35d79d324d252eff0579ba745070d14b73"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"60046595ffbf67c534875d5a476aaeacfc64f32a","unresolved":true,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Task API\u0027s are not available to normal users. In Victoria we have fixed"},{"line_number":21,"context_line":"race condition while copying existing images in  multiple stores which uses"},{"line_number":22,"context_line":"\"task-id\" to obtain lock on the image to prevent other import operations on"},{"line_number":23,"context_line":"the same image. The additional image property \"os_glance_import_task\" will"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5ecb8551_3afc00e7","line":20,"range":{"start_line":20,"start_character":66,"end_line":20,"end_character":71},"updated":"2021-01-12 21:14:58.000000000","message":"\"fixed a\"","commit_id":"6ab00d35d79d324d252eff0579ba745070d14b73"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"60046595ffbf67c534875d5a476aaeacfc64f32a","unresolved":true,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Task API\u0027s are not available to normal users. In Victoria we have fixed"},{"line_number":21,"context_line":"race condition while copying existing images in  multiple stores which uses"},{"line_number":22,"context_line":"\"task-id\" to obtain lock on the image to prevent other import operations on"},{"line_number":23,"context_line":"the same image. The additional image property \"os_glance_import_task\" will"}],"source_content_type":"text/x-rst","patch_set":5,"id":"f04df470_15f15d0e","line":20,"range":{"start_line":20,"start_character":5,"end_line":20,"end_character":10},"updated":"2021-01-12 21:14:58.000000000","message":"APIs","commit_id":"6ab00d35d79d324d252eff0579ba745070d14b73"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"60046595ffbf67c534875d5a476aaeacfc64f32a","unresolved":true,"context_lines":[{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Task API\u0027s are not available to normal users. In Victoria we have fixed"},{"line_number":21,"context_line":"race condition while copying existing images in  multiple stores which uses"},{"line_number":22,"context_line":"\"task-id\" to obtain lock on the image to prevent other import operations on"},{"line_number":23,"context_line":"the same image. The additional image property \"os_glance_import_task\" will"},{"line_number":24,"context_line":"be used to store \"task id\". We are updating \u0027message\u0027 property of the task"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7583690c_7666c879","line":21,"range":{"start_line":21,"start_character":47,"end_line":21,"end_character":49},"updated":"2021-01-12 21:14:58.000000000","message":"s/  / /","commit_id":"6ab00d35d79d324d252eff0579ba745070d14b73"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"60046595ffbf67c534875d5a476aaeacfc64f32a","unresolved":true,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Task API\u0027s are not available to normal users. In Victoria we have fixed"},{"line_number":21,"context_line":"race condition while copying existing images in  multiple stores which uses"},{"line_number":22,"context_line":"\"task-id\" to obtain lock on the image to prevent other import operations on"},{"line_number":23,"context_line":"the same image. The additional image property \"os_glance_import_task\" will"},{"line_number":24,"context_line":"be used to store \"task id\". We are updating \u0027message\u0027 property of the task"},{"line_number":25,"context_line":"which helps calculate time based on last updated time of task to burst the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5b17435b_ca12ff82","line":22,"range":{"start_line":22,"start_character":20,"end_line":22,"end_character":24},"updated":"2021-01-12 21:14:58.000000000","message":"\"a lock\"","commit_id":"6ab00d35d79d324d252eff0579ba745070d14b73"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"60046595ffbf67c534875d5a476aaeacfc64f32a","unresolved":true,"context_lines":[{"line_number":26,"context_line":"lock as well as show how much data has been copied of that image. Copying"},{"line_number":27,"context_line":"operation may take a long time and normal user can be clueless about when lock"},{"line_number":28,"context_line":"will be busted or why his (other) requests are rejected without contacting to"},{"line_number":29,"context_line":"the administrator."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Proposed chage"},{"line_number":32,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"da790603_850b41f0","line":29,"updated":"2021-01-12 21:14:58.000000000","message":"You know, reading this again, I\u0027m wondering if the above is just too much detail since we\u0027re exposing all the unexpired tasks now, instead of just the one related to the lock.","commit_id":"6ab00d35d79d324d252eff0579ba745070d14b73"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"faa757a539930f6625ed100a976b74676077a0bc","unresolved":true,"context_lines":[{"line_number":34,"context_line":"Add new fields `image_id`, `request_id` and `user` fields to tasks database"},{"line_number":35,"context_line":"and new API `/v2/images/{id}/tasks` which will fetch the tasks associated"},{"line_number":36,"context_line":"with `image_id` of that image and returns it to the user. This new API will"},{"line_number":37,"context_line":"return all tasks associated with image which are not expired. This expiration"},{"line_number":38,"context_line":"time is calculated at the creation of task using `task_time_to_live`"},{"line_number":39,"context_line":"configuration parameter defined in glance-api.conf file. This new API will be"},{"line_number":40,"context_line":"available to all users without any restrictions. If active task is not present"},{"line_number":41,"context_line":"for given image then it will return empty list to user."}],"source_content_type":"text/x-rst","patch_set":5,"id":"427ecf96_962210a8","line":38,"range":{"start_line":37,"start_character":62,"end_line":38,"end_character":42},"updated":"2021-01-12 22:04:27.000000000","message":"i think that it\u0027s null until the task reaches a final state and then gets assigned -- it\u0027s used for harvesting completed tasks, so it\u0027s kind of an atypical TTL.","commit_id":"6ab00d35d79d324d252eff0579ba745070d14b73"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"25c2d16f932b4e8133069ef2df318c4b2bfb8276","unresolved":true,"context_lines":[{"line_number":34,"context_line":"Add new fields `image_id`, `request_id` and `user` fields to tasks database"},{"line_number":35,"context_line":"and new API `/v2/images/{id}/tasks` which will fetch the tasks associated"},{"line_number":36,"context_line":"with `image_id` of that image and returns it to the user. This new API will"},{"line_number":37,"context_line":"return all tasks associated with image which are not expired. This expiration"},{"line_number":38,"context_line":"time is calculated at the creation of task using `task_time_to_live`"},{"line_number":39,"context_line":"configuration parameter defined in glance-api.conf file. This new API will be"},{"line_number":40,"context_line":"available to all users without any restrictions. If active task is not present"},{"line_number":41,"context_line":"for given image then it will return empty list to user."}],"source_content_type":"text/x-rst","patch_set":5,"id":"e51c1748_521e80f9","line":38,"range":{"start_line":37,"start_character":62,"end_line":38,"end_character":42},"in_reply_to":"427ecf96_962210a8","updated":"2021-01-12 23:08:29.000000000","message":"I think your point is that expires_at in the structure will be null until it\u0027s ... gone?\n\nI\u0027ll nuke that from the structure and we can amend the spec after, if he was actually planning to forward-calculate it or something.","commit_id":"6ab00d35d79d324d252eff0579ba745070d14b73"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"faa757a539930f6625ed100a976b74676077a0bc","unresolved":true,"context_lines":[{"line_number":45,"context_line":"being performed on the image."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"The `user` field is an alternate to `request_id` field. In general client tools"},{"line_number":48,"context_line":"can access/generate request-ids but possibility normal users don\u0027t have access"},{"line_number":49,"context_line":"to the request-ids, in this case the `user` field will help them to identify"},{"line_number":50,"context_line":"them their particular task and its status. So from now on the tasks will"},{"line_number":51,"context_line":"have either `request-id` or `user` or both associated with it."},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"af2de969_97b652e6","line":49,"range":{"start_line":48,"start_character":32,"end_line":49,"end_character":18},"updated":"2021-01-12 22:04:27.000000000","message":"You don\u0027t have to mention it, but I think this would be useful for Horizon, too, so I\u0027m glad you\u0027re adding it.","commit_id":"6ab00d35d79d324d252eff0579ba745070d14b73"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"25c2d16f932b4e8133069ef2df318c4b2bfb8276","unresolved":true,"context_lines":[{"line_number":45,"context_line":"being performed on the image."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"The `user` field is an alternate to `request_id` field. In general client tools"},{"line_number":48,"context_line":"can access/generate request-ids but possibility normal users don\u0027t have access"},{"line_number":49,"context_line":"to the request-ids, in this case the `user` field will help them to identify"},{"line_number":50,"context_line":"them their particular task and its status. So from now on the tasks will"},{"line_number":51,"context_line":"have either `request-id` or `user` or both associated with it."},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"546da6fa_cbe03777","line":49,"range":{"start_line":48,"start_character":32,"end_line":49,"end_character":18},"in_reply_to":"af2de969_97b652e6","updated":"2021-01-12 23:08:29.000000000","message":"I guess I\u0027d expect horizon to want the req-id as much as anything, but...I have no idea really :)","commit_id":"6ab00d35d79d324d252eff0579ba745070d14b73"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"60046595ffbf67c534875d5a476aaeacfc64f32a","unresolved":true,"context_lines":[{"line_number":47,"context_line":"The `user` field is an alternate to `request_id` field. In general client tools"},{"line_number":48,"context_line":"can access/generate request-ids but possibility normal users don\u0027t have access"},{"line_number":49,"context_line":"to the request-ids, in this case the `user` field will help them to identify"},{"line_number":50,"context_line":"them their particular task and its status. So from now on the tasks will"},{"line_number":51,"context_line":"have either `request-id` or `user` or both associated with it."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"More details on this API can be found in the REST API section of this spec."}],"source_content_type":"text/x-rst","patch_set":5,"id":"07003832_7391a1b7","line":50,"range":{"start_line":50,"start_character":0,"end_line":50,"end_character":4},"updated":"2021-01-12 21:14:58.000000000","message":"s/them //","commit_id":"6ab00d35d79d324d252eff0579ba745070d14b73"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"60046595ffbf67c534875d5a476aaeacfc64f32a","unresolved":true,"context_lines":[{"line_number":71,"context_line":"Data model impact"},{"line_number":72,"context_line":"-----------------"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"This specs proposes to add `image_id`, `request-id` and `user` fields to tasks"},{"line_number":75,"context_line":"database table. Those will be null and does not require any migration script"},{"line_number":76,"context_line":"to add this information to existing records."},{"line_number":77,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9f483d6a_fdf8dd94","line":74,"range":{"start_line":74,"start_character":5,"end_line":74,"end_character":10},"updated":"2021-01-12 21:14:58.000000000","message":"s/specs/spec/","commit_id":"6ab00d35d79d324d252eff0579ba745070d14b73"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"60046595ffbf67c534875d5a476aaeacfc64f32a","unresolved":true,"context_lines":[{"line_number":72,"context_line":"-----------------"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"This specs proposes to add `image_id`, `request-id` and `user` fields to tasks"},{"line_number":75,"context_line":"database table. Those will be null and does not require any migration script"},{"line_number":76,"context_line":"to add this information to existing records."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9660fa75_d2002f7b","line":75,"range":{"start_line":75,"start_character":39,"end_line":75,"end_character":47},"updated":"2021-01-12 21:14:58.000000000","message":"\"do not\"","commit_id":"6ab00d35d79d324d252eff0579ba745070d14b73"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"60046595ffbf67c534875d5a476aaeacfc64f32a","unresolved":true,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"**[New API] Get tasks associated with image**"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Show messages associated with given image::"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    GET /v2/images/{image_id}/tasks"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9c70b3ce_f4f98626","line":97,"range":{"start_line":97,"start_character":5,"end_line":97,"end_character":13},"updated":"2021-01-12 21:14:58.000000000","message":"I think this comment was left over from before the s/messages/tasks/ conversion, so wasn\u0027t really supposed to change.","commit_id":"6ab00d35d79d324d252eff0579ba745070d14b73"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"60046595ffbf67c534875d5a476aaeacfc64f32a","unresolved":true,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"This API takes no query parameters and when authorized returns"},{"line_number":102,"context_line":"tasks associated with given image. If it does not found any"},{"line_number":103,"context_line":"active task associated with the image then it will return Empty list to"},{"line_number":104,"context_line":"the user."},{"line_number":105,"context_line":"Example of the valid response::"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"d90006b8_ebe7f385","line":103,"range":{"start_line":103,"start_character":58,"end_line":103,"end_character":63},"updated":"2021-01-12 21:14:58.000000000","message":"s/Empty/an empty/","commit_id":"6ab00d35d79d324d252eff0579ba745070d14b73"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"faa757a539930f6625ed100a976b74676077a0bc","unresolved":true,"context_lines":[{"line_number":231,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"As mentioned in the \u0027work items\u0027 section, we\u0027ll need to ensure the glance docs"},{"line_number":234,"context_line":"are update for:"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"* The new get tasks from image REST API."},{"line_number":237,"context_line":"* Overall glance multi-store documentation to educate deployers on the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"c807d940_4c0d27d1","line":234,"range":{"start_line":234,"start_character":4,"end_line":234,"end_character":10},"updated":"2021-01-12 22:04:27.000000000","message":"updated","commit_id":"6ab00d35d79d324d252eff0579ba745070d14b73"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"0e85f71ef6294ef4a7b69ac72548897c3acf21e6","unresolved":true,"context_lines":[{"line_number":4,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":7,"context_line":"New Image API /v2/images/{id}/tasks for task information"},{"line_number":8,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"https://blueprints.launchpad.net/glance/+spec/messages-api"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5983f029_91e8ee38","line":7,"range":{"start_line":7,"start_character":30,"end_line":7,"end_character":35},"updated":"2021-01-19 13:00:52.000000000","message":"\"task\" we are preventing multiple simultaneous tasks.","commit_id":"63fed859ca35aa068ccdc6effdcbae9c260d75e6"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"5ddf979b923b3c47ef15f419814a5234b996ac17","unresolved":true,"context_lines":[{"line_number":4,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":7,"context_line":"New Image API /v2/images/{id}/tasks for task information"},{"line_number":8,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"https://blueprints.launchpad.net/glance/+spec/messages-api"}],"source_content_type":"text/x-rst","patch_set":6,"id":"6a9f93e4_f77c63fd","line":7,"range":{"start_line":7,"start_character":30,"end_line":7,"end_character":35},"in_reply_to":"5983f029_91e8ee38","updated":"2021-01-19 18:59:41.000000000","message":"Sure, but see lines 36-37.  This gives you the list of unexpired tasks associated with the image, so I think \u0027tasks\u0027 is correct here.","commit_id":"63fed859ca35aa068ccdc6effdcbae9c260d75e6"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"93c26837daf04f068e4609d3d1573c51628a4946","unresolved":true,"context_lines":[{"line_number":4,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":7,"context_line":"New Image API /v2/images/{id}/tasks for task information"},{"line_number":8,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"https://blueprints.launchpad.net/glance/+spec/messages-api"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bbe21f26_b067bedf","line":7,"range":{"start_line":7,"start_character":30,"end_line":7,"end_character":35},"in_reply_to":"6a9f93e4_f77c63fd","updated":"2021-01-19 20:00:54.000000000","message":"Agreed, tasks. Even if we only ever enqueue one task for an image right now, the API should not need to change if we actually have a queue later.","commit_id":"63fed859ca35aa068ccdc6effdcbae9c260d75e6"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"5c78009474c82f6eb462e37206441b6525a8ed83","unresolved":true,"context_lines":[{"line_number":4,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":7,"context_line":"New Image API /v2/images/{id}/tasks for task information"},{"line_number":8,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"https://blueprints.launchpad.net/glance/+spec/messages-api"}],"source_content_type":"text/x-rst","patch_set":6,"id":"2b9dfa52_ad380952","line":7,"range":{"start_line":7,"start_character":30,"end_line":7,"end_character":35},"in_reply_to":"bbe21f26_b067bedf","updated":"2021-01-22 04:59:10.000000000","message":"Yes, the plan is actually to return all the tasks associated with that image id.","commit_id":"63fed859ca35aa068ccdc6effdcbae9c260d75e6"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"0e85f71ef6294ef4a7b69ac72548897c3acf21e6","unresolved":true,"context_lines":[{"line_number":32,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Add new fields `image_id`, `request_id` and `user` fields to tasks database"},{"line_number":35,"context_line":"and new API `/v2/images/{id}/tasks` which will fetch the tasks associated"},{"line_number":36,"context_line":"with `image_id` of that image and returns it to the user. This new API will"},{"line_number":37,"context_line":"return all tasks associated with image which are not expired. This expiration"},{"line_number":38,"context_line":"time is calculated at the creation of task using `task_time_to_live`"}],"source_content_type":"text/x-rst","patch_set":6,"id":"6036b0d1_48a2020d","line":35,"range":{"start_line":35,"start_character":29,"end_line":35,"end_character":34},"updated":"2021-01-19 13:00:52.000000000","message":"DITTO","commit_id":"63fed859ca35aa068ccdc6effdcbae9c260d75e6"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"5ddf979b923b3c47ef15f419814a5234b996ac17","unresolved":true,"context_lines":[{"line_number":34,"context_line":"Add new fields `image_id`, `request_id` and `user` fields to tasks database"},{"line_number":35,"context_line":"and new API `/v2/images/{id}/tasks` which will fetch the tasks associated"},{"line_number":36,"context_line":"with `image_id` of that image and returns it to the user. This new API will"},{"line_number":37,"context_line":"return all tasks associated with image which are not expired. This expiration"},{"line_number":38,"context_line":"time is calculated at the creation of task using `task_time_to_live`"},{"line_number":39,"context_line":"configuration parameter defined in glance-api.conf file. This new API will be"},{"line_number":40,"context_line":"available to all users without any restrictions. If active task is not present"},{"line_number":41,"context_line":"for given image then it will return empty list to user."}],"source_content_type":"text/x-rst","patch_set":6,"id":"f5bec728_d339aa2a","line":38,"range":{"start_line":37,"start_character":62,"end_line":38,"end_character":42},"updated":"2021-01-19 18:59:41.000000000","message":"This expiration time is calculated when the task reaches a final state of \u0027success\u0027 or \u0027failure\u0027\n\n@Dan: the expiration time has to do with autodeletion of completed tasks.  The tasks API doesn\u0027t have a task-delete call so that people aren\u0027t confused about deleting an in-flight tasks (the semantics of which are undefined) vs. deleting the task object in the DB.  But the deletion is done lazily when the user does a task-list call -- and since end users can\u0027t make that call, we\u0027ll need to come up with an alternate plan.","commit_id":"63fed859ca35aa068ccdc6effdcbae9c260d75e6"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"64d3561661eda9f57cb10c712947e9e724642fc5","unresolved":true,"context_lines":[{"line_number":34,"context_line":"Add new fields `image_id`, `request_id` and `user` fields to tasks database"},{"line_number":35,"context_line":"and new API `/v2/images/{id}/tasks` which will fetch the tasks associated"},{"line_number":36,"context_line":"with `image_id` of that image and returns it to the user. This new API will"},{"line_number":37,"context_line":"return all tasks associated with image which are not expired. This expiration"},{"line_number":38,"context_line":"time is calculated at the creation of task using `task_time_to_live`"},{"line_number":39,"context_line":"configuration parameter defined in glance-api.conf file. This new API will be"},{"line_number":40,"context_line":"available to all users without any restrictions. If active task is not present"},{"line_number":41,"context_line":"for given image then it will return empty list to user."}],"source_content_type":"text/x-rst","patch_set":6,"id":"9ace0716_d3994dc1","line":38,"range":{"start_line":37,"start_character":62,"end_line":38,"end_character":42},"in_reply_to":"c8690b23_96917936","updated":"2021-01-28 16:06:22.000000000","message":"Yes, you have grasped my point.  The filter now, fix later approach seems OK to me.","commit_id":"63fed859ca35aa068ccdc6effdcbae9c260d75e6"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"93c26837daf04f068e4609d3d1573c51628a4946","unresolved":true,"context_lines":[{"line_number":34,"context_line":"Add new fields `image_id`, `request_id` and `user` fields to tasks database"},{"line_number":35,"context_line":"and new API `/v2/images/{id}/tasks` which will fetch the tasks associated"},{"line_number":36,"context_line":"with `image_id` of that image and returns it to the user. This new API will"},{"line_number":37,"context_line":"return all tasks associated with image which are not expired. This expiration"},{"line_number":38,"context_line":"time is calculated at the creation of task using `task_time_to_live`"},{"line_number":39,"context_line":"configuration parameter defined in glance-api.conf file. This new API will be"},{"line_number":40,"context_line":"available to all users without any restrictions. If active task is not present"},{"line_number":41,"context_line":"for given image then it will return empty list to user."}],"source_content_type":"text/x-rst","patch_set":6,"id":"c8690b23_96917936","line":38,"range":{"start_line":37,"start_character":62,"end_line":38,"end_character":42},"in_reply_to":"f5bec728_d339aa2a","updated":"2021-01-19 20:00:54.000000000","message":"Ack on the origin time of the task expiration.\n\nHowever, I don\u0027t think anything about this spec is changing your concern about needing to expire those tasks, right? Is your point that we\u0027re likely not expiring them now, but if the user isn\u0027t looking they\u0027ll never notice? Meaning, unprivileged-for-the-tasks-api users will see the list of completed tasks grow with no way to expire them?\n\nIMHO, the easy solution is for us to just filter the list of tasks by (expiration_time \u003e now - expiration_ttl) in what we show them. Then leave the \"maybe never expiring tasks\" to a different fix, since I think you\u0027re saying that\u0027s already happening.","commit_id":"63fed859ca35aa068ccdc6effdcbae9c260d75e6"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"0e85f71ef6294ef4a7b69ac72548897c3acf21e6","unresolved":true,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Show tasks associated with given image::"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    GET /v2/images/{image_id}/tasks"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"This API takes no query parameters and when authorized returns"},{"line_number":102,"context_line":"tasks associated with given image. If it does not found any"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bf03f37b_9faeb7da","line":99,"range":{"start_line":99,"start_character":30,"end_line":99,"end_character":35},"updated":"2021-01-19 13:00:52.000000000","message":"DITTO","commit_id":"63fed859ca35aa068ccdc6effdcbae9c260d75e6"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"0e85f71ef6294ef4a7b69ac72548897c3acf21e6","unresolved":true,"context_lines":[{"line_number":105,"context_line":"Example of the valid response::"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    {"},{"line_number":108,"context_line":"        \"tasks\": ["},{"line_number":109,"context_line":"            {"},{"line_number":110,"context_line":"                \"task\": {"},{"line_number":111,"context_line":"                    \"id\": \"ee22890e-8948-4ea6-9668-831f973c84f5\","}],"source_content_type":"text/x-rst","patch_set":6,"id":"145f964c_3d2a02f6","line":108,"updated":"2021-01-19 13:00:52.000000000","message":"DITTO: as we prevent multiple simultaneous import tasks against any given image, we can probably clean this a bit and just return the task below instead of list of tasks with one element in it.","commit_id":"63fed859ca35aa068ccdc6effdcbae9c260d75e6"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9b10d86d16c2dde9b40bee1c87bb7892d8deb64d","unresolved":true,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Task API\u0027s are not available to normal users. In Victoria we have fixed"},{"line_number":21,"context_line":"race condition while copying existing images in  multiple stores which uses"},{"line_number":22,"context_line":"\"task-id\" to obtain lock on the image to prevent other import operations on"},{"line_number":23,"context_line":"the same image. The additional image property \"os_glance_import_task\" will"}],"source_content_type":"text/x-rst","patch_set":7,"id":"4ca762b1_6a3efd5a","line":20,"range":{"start_line":20,"start_character":8,"end_line":20,"end_character":9},"updated":"2021-01-28 17:44:05.000000000","message":"This should not be there. The rules are confusing, I know :)","commit_id":"cb4fab6e3511a4bbd40b098f56c939a0c842d45a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ac6d88f0c1324b3f5147bea894634178aa124b12","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Task API\u0027s are not available to normal users. In Victoria we have fixed"},{"line_number":21,"context_line":"race condition while copying existing images in  multiple stores which uses"},{"line_number":22,"context_line":"\"task-id\" to obtain lock on the image to prevent other import operations on"},{"line_number":23,"context_line":"the same image. The additional image property \"os_glance_import_task\" will"}],"source_content_type":"text/x-rst","patch_set":7,"id":"0d67bda8_6c3d4fc2","line":20,"range":{"start_line":20,"start_character":8,"end_line":20,"end_character":9},"in_reply_to":"4ca762b1_6a3efd5a","updated":"2021-02-04 13:41:05.000000000","message":"Done","commit_id":"cb4fab6e3511a4bbd40b098f56c939a0c842d45a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9b10d86d16c2dde9b40bee1c87bb7892d8deb64d","unresolved":true,"context_lines":[{"line_number":48,"context_line":"The `user` field is an alternate to `request_id` field. In general client tools"},{"line_number":49,"context_line":"can access/generate request-ids but possibility normal users don\u0027t have access"},{"line_number":50,"context_line":"to the request-ids, in this case the `user` field will help them to identify"},{"line_number":51,"context_line":"them their particular task and its status. So from now on the tasks will"},{"line_number":52,"context_line":"have either `request-id` or `user` or both associated with it."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"More details on this API can be found in the REST API section of this spec."}],"source_content_type":"text/x-rst","patch_set":7,"id":"296992e5_811ec7fc","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":5},"updated":"2021-01-28 17:44:05.000000000","message":"s/them //","commit_id":"cb4fab6e3511a4bbd40b098f56c939a0c842d45a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ac6d88f0c1324b3f5147bea894634178aa124b12","unresolved":false,"context_lines":[{"line_number":48,"context_line":"The `user` field is an alternate to `request_id` field. In general client tools"},{"line_number":49,"context_line":"can access/generate request-ids but possibility normal users don\u0027t have access"},{"line_number":50,"context_line":"to the request-ids, in this case the `user` field will help them to identify"},{"line_number":51,"context_line":"them their particular task and its status. So from now on the tasks will"},{"line_number":52,"context_line":"have either `request-id` or `user` or both associated with it."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"More details on this API can be found in the REST API section of this spec."}],"source_content_type":"text/x-rst","patch_set":7,"id":"cdf020ca_9b430e2a","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":5},"in_reply_to":"296992e5_811ec7fc","updated":"2021-02-04 13:41:05.000000000","message":"Done","commit_id":"cb4fab6e3511a4bbd40b098f56c939a0c842d45a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9b10d86d16c2dde9b40bee1c87bb7892d8deb64d","unresolved":true,"context_lines":[{"line_number":72,"context_line":"Data model impact"},{"line_number":73,"context_line":"-----------------"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"This specs proposes to add `image_id`, `request-id` and `user` fields to tasks"},{"line_number":76,"context_line":"database table. Those will be null and does not require any migration script"},{"line_number":77,"context_line":"to add this information to existing records."},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"02e2bcb7_d5daf472","line":75,"range":{"start_line":75,"start_character":5,"end_line":75,"end_character":10},"updated":"2021-01-28 17:44:05.000000000","message":"spec","commit_id":"cb4fab6e3511a4bbd40b098f56c939a0c842d45a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ac6d88f0c1324b3f5147bea894634178aa124b12","unresolved":false,"context_lines":[{"line_number":72,"context_line":"Data model impact"},{"line_number":73,"context_line":"-----------------"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"This specs proposes to add `image_id`, `request-id` and `user` fields to tasks"},{"line_number":76,"context_line":"database table. Those will be null and does not require any migration script"},{"line_number":77,"context_line":"to add this information to existing records."},{"line_number":78,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"86b16a29_03337381","line":75,"range":{"start_line":75,"start_character":5,"end_line":75,"end_character":10},"in_reply_to":"02e2bcb7_d5daf472","updated":"2021-02-04 13:41:05.000000000","message":"Done","commit_id":"cb4fab6e3511a4bbd40b098f56c939a0c842d45a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9b10d86d16c2dde9b40bee1c87bb7892d8deb64d","unresolved":true,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"**[New API] Get tasks associated with image**"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Show messages associated with given image::"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    GET /v2/images/{image_id}/tasks"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"e8ce093f_9a5d3263","line":98,"range":{"start_line":98,"start_character":5,"end_line":98,"end_character":13},"updated":"2021-01-28 17:44:05.000000000","message":"I think this got reverted, it was correct before.","commit_id":"cb4fab6e3511a4bbd40b098f56c939a0c842d45a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ac6d88f0c1324b3f5147bea894634178aa124b12","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"**[New API] Get tasks associated with image**"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Show messages associated with given image::"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    GET /v2/images/{image_id}/tasks"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"c99114f0_93f5e467","line":98,"range":{"start_line":98,"start_character":5,"end_line":98,"end_character":13},"in_reply_to":"e8ce093f_9a5d3263","updated":"2021-02-04 13:41:05.000000000","message":"Done","commit_id":"cb4fab6e3511a4bbd40b098f56c939a0c842d45a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9b10d86d16c2dde9b40bee1c87bb7892d8deb64d","unresolved":true,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"This API takes no query parameters and when authorized returns"},{"line_number":103,"context_line":"tasks associated with given image. If it does not found any"},{"line_number":104,"context_line":"active task associated with the image then it will return Empty list to"},{"line_number":105,"context_line":"the user."},{"line_number":106,"context_line":"Example of the valid response::"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"11569eba_cee50117","line":104,"range":{"start_line":104,"start_character":58,"end_line":104,"end_character":63},"updated":"2021-01-28 17:44:05.000000000","message":"empty","commit_id":"cb4fab6e3511a4bbd40b098f56c939a0c842d45a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ac6d88f0c1324b3f5147bea894634178aa124b12","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"This API takes no query parameters and when authorized returns"},{"line_number":103,"context_line":"tasks associated with given image. If it does not found any"},{"line_number":104,"context_line":"active task associated with the image then it will return Empty list to"},{"line_number":105,"context_line":"the user."},{"line_number":106,"context_line":"Example of the valid response::"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"314675c2_1347205f","line":104,"range":{"start_line":104,"start_character":58,"end_line":104,"end_character":63},"in_reply_to":"11569eba_cee50117","updated":"2021-02-04 13:41:05.000000000","message":"Done","commit_id":"cb4fab6e3511a4bbd40b098f56c939a0c842d45a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9b10d86d16c2dde9b40bee1c87bb7892d8deb64d","unresolved":true,"context_lines":[{"line_number":232,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"As mentioned in the \u0027work items\u0027 section, we\u0027ll need to ensure the glance docs"},{"line_number":235,"context_line":"are update for:"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"* The new get tasks from image REST API."},{"line_number":238,"context_line":"* Overall glance multi-store documentation to educate deployers on the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"99ba24c4_689af460","line":235,"range":{"start_line":235,"start_character":4,"end_line":235,"end_character":10},"updated":"2021-01-28 17:44:05.000000000","message":"updated","commit_id":"cb4fab6e3511a4bbd40b098f56c939a0c842d45a"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ac6d88f0c1324b3f5147bea894634178aa124b12","unresolved":false,"context_lines":[{"line_number":232,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"As mentioned in the \u0027work items\u0027 section, we\u0027ll need to ensure the glance docs"},{"line_number":235,"context_line":"are update for:"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"* The new get tasks from image REST API."},{"line_number":238,"context_line":"* Overall glance multi-store documentation to educate deployers on the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"588f061c_b7365fbc","line":235,"range":{"start_line":235,"start_character":4,"end_line":235,"end_character":10},"in_reply_to":"99ba24c4_689af460","updated":"2021-02-04 13:41:05.000000000","message":"Done","commit_id":"cb4fab6e3511a4bbd40b098f56c939a0c842d45a"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"d7d8efe6150a6756e6c494ed8e24f4e4b639e719","unresolved":true,"context_lines":[{"line_number":37,"context_line":"return all tasks associated with image which are not expired. This expiration"},{"line_number":38,"context_line":"time is calculated when task reaches a final state of `success` or `failure`"},{"line_number":39,"context_line":"using `task_time_to_live` configuration parameter defined in glance-api.conf"},{"line_number":40,"context_line":"file. This new API will be available to all users without any restrictions."},{"line_number":41,"context_line":"If active task is not present for given image then it will return empty"},{"line_number":42,"context_line":"list to user."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"85acff79_ee6ef26e","line":40,"range":{"start_line":40,"start_character":6,"end_line":40,"end_character":75},"updated":"2021-02-04 14:44:02.000000000","message":"This is no good. We should not let just anyone query about the tasks of any image.","commit_id":"124ff2ce3dc9bc123202521829b75fa5db879f7e"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"144609b128a2840c8bf308192b38979c283ea74d","unresolved":true,"context_lines":[{"line_number":37,"context_line":"return all tasks associated with image which are not expired. This expiration"},{"line_number":38,"context_line":"time is calculated when task reaches a final state of `success` or `failure`"},{"line_number":39,"context_line":"using `task_time_to_live` configuration parameter defined in glance-api.conf"},{"line_number":40,"context_line":"file. This new API will be available to all users without any restrictions."},{"line_number":41,"context_line":"If active task is not present for given image then it will return empty"},{"line_number":42,"context_line":"list to user."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"23f49f8b_75f21191","line":40,"range":{"start_line":40,"start_character":6,"end_line":40,"end_character":75},"in_reply_to":"10f6975a_5a222a6a","updated":"2021-02-04 16:51:22.000000000","message":"Yeah stating in the spec that we expose data \"without any restrictions\" is indeed concern for me.","commit_id":"124ff2ce3dc9bc123202521829b75fa5db879f7e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f5218218c2aec0887e8c164622e0d553590b27bb","unresolved":true,"context_lines":[{"line_number":37,"context_line":"return all tasks associated with image which are not expired. This expiration"},{"line_number":38,"context_line":"time is calculated when task reaches a final state of `success` or `failure`"},{"line_number":39,"context_line":"using `task_time_to_live` configuration parameter defined in glance-api.conf"},{"line_number":40,"context_line":"file. This new API will be available to all users without any restrictions."},{"line_number":41,"context_line":"If active task is not present for given image then it will return empty"},{"line_number":42,"context_line":"list to user."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"af9c4c09_048524df","line":40,"range":{"start_line":40,"start_character":6,"end_line":40,"end_character":75},"in_reply_to":"23f49f8b_75f21191","updated":"2021-02-04 17:22:00.000000000","message":"Seems like a reasonable thing to change. Given our tardiness here, I think it\u0027s quite appropriate to fix this wording in a follow-up, or Abhi can just fix it right before he approves.","commit_id":"124ff2ce3dc9bc123202521829b75fa5db879f7e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"54d31bae5448db811f565ff756e282fc8fb8e308","unresolved":true,"context_lines":[{"line_number":37,"context_line":"return all tasks associated with image which are not expired. This expiration"},{"line_number":38,"context_line":"time is calculated when task reaches a final state of `success` or `failure`"},{"line_number":39,"context_line":"using `task_time_to_live` configuration parameter defined in glance-api.conf"},{"line_number":40,"context_line":"file. This new API will be available to all users without any restrictions."},{"line_number":41,"context_line":"If active task is not present for given image then it will return empty"},{"line_number":42,"context_line":"list to user."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"10f6975a_5a222a6a","line":40,"range":{"start_line":40,"start_character":6,"end_line":40,"end_character":75},"in_reply_to":"85acff79_ee6ef26e","updated":"2021-02-04 14:52:45.000000000","message":"Agree that this sentence is too widely-scoped now that you point it out, but I think it\u0027s obvious that we\u0027re talking about \"anyone that can see the image can see its associated tasks via this sanitized interface.\"\n\nI don\u0027t really see any reason why that\u0027s a problem, are you asserting that it is, or just concerned over the potential \"anyone anywhere anyhow\" implication from the wording?","commit_id":"124ff2ce3dc9bc123202521829b75fa5db879f7e"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"d7d8efe6150a6756e6c494ed8e24f4e4b639e719","unresolved":true,"context_lines":[{"line_number":111,"context_line":"                \"task\": {"},{"line_number":112,"context_line":"                    \"id\": \"ee22890e-8948-4ea6-9668-831f973c84f5\","},{"line_number":113,"context_line":"                    \"image_id\": \"dddddddd-dddd-dddd-dddd-dddddddddddd\","},{"line_number":114,"context_line":"                    \"request-id\": \"rrrrrrr-rrrr-rrrr-rrrr-rrrrrrrrrrrr\","},{"line_number":115,"context_line":"                    \"user\": \"uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu\","},{"line_number":116,"context_line":"                    \"type\": \"api_image_import\","},{"line_number":117,"context_line":"                    \"status\": \"processing\","}],"source_content_type":"text/x-rst","patch_set":8,"id":"79f598a7_5172767e","line":114,"updated":"2021-02-04 14:44:02.000000000","message":"Which request-id is this?","commit_id":"124ff2ce3dc9bc123202521829b75fa5db879f7e"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"144609b128a2840c8bf308192b38979c283ea74d","unresolved":true,"context_lines":[{"line_number":111,"context_line":"                \"task\": {"},{"line_number":112,"context_line":"                    \"id\": \"ee22890e-8948-4ea6-9668-831f973c84f5\","},{"line_number":113,"context_line":"                    \"image_id\": \"dddddddd-dddd-dddd-dddd-dddddddddddd\","},{"line_number":114,"context_line":"                    \"request-id\": \"rrrrrrr-rrrr-rrrr-rrrr-rrrrrrrrrrrr\","},{"line_number":115,"context_line":"                    \"user\": \"uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu\","},{"line_number":116,"context_line":"                    \"type\": \"api_image_import\","},{"line_number":117,"context_line":"                    \"status\": \"processing\","}],"source_content_type":"text/x-rst","patch_set":8,"id":"41041267_5deb93a1","line":114,"in_reply_to":"04946502_9041e5a9","updated":"2021-02-04 16:51:22.000000000","message":"Yes, that does not explain it any better. Where is that request id coming from? If it\u0027s the request-id of the call initiating the task, it should be within the tasks[i][\u0027task\u0027][\u0027input\u0027][\u0027import_req\u0027] rather than at the tasks[i][\u0027task\u0027] root.\n\nNot convinced about the \u0027user\u0027 below either (or L:48-52). What about the user are we recording here? User name, user ID, user name + project, user + project + domain? Based on the example below I assume it\u0027s not referring to user-id which would be the unique identifier. How about when nova is doing the copy via admin scope? Do we record the nova calling user, nova service user or \u0027admin\u0027 there? What makes this user special from the owner that is already registered in the db and exposed on this model L:118?","commit_id":"124ff2ce3dc9bc123202521829b75fa5db879f7e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f5218218c2aec0887e8c164622e0d553590b27bb","unresolved":true,"context_lines":[{"line_number":111,"context_line":"                \"task\": {"},{"line_number":112,"context_line":"                    \"id\": \"ee22890e-8948-4ea6-9668-831f973c84f5\","},{"line_number":113,"context_line":"                    \"image_id\": \"dddddddd-dddd-dddd-dddd-dddddddddddd\","},{"line_number":114,"context_line":"                    \"request-id\": \"rrrrrrr-rrrr-rrrr-rrrr-rrrrrrrrrrrr\","},{"line_number":115,"context_line":"                    \"user\": \"uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu\","},{"line_number":116,"context_line":"                    \"type\": \"api_image_import\","},{"line_number":117,"context_line":"                    \"status\": \"processing\","}],"source_content_type":"text/x-rst","patch_set":8,"id":"92910430_6102936e","line":114,"in_reply_to":"41041267_5deb93a1","updated":"2021-02-04 17:22:00.000000000","message":"\u003eYes, that does not explain it any better. Where is that request id coming from? If it\u0027s the request-id of the call initiating the task, it should be within the tasks[i][\u0027task\u0027][\u0027input\u0027][\u0027import_req\u0027] rather than at the tasks[i][\u0027task\u0027] root.\n\nI disagree, as not all tasks would (or would forever) be import operations, so putting it under import_req would be inappropriate. Further, the request_id is not \"input\" to the task or action, so putting it there is also not appropriate.\n\n\u003e How about when nova is doing the copy via admin scope?\n\nNova does not copy the image with admin credentials, which is why we added the copy_image permission and did all that work to allow copy to be done without admin creds.\n\n\u003e What makes this user special from the owner that is already registered in the db and exposed on this model L:118?\n\nAs noted in the IRC logs I linked, user is user, owner is project. That\u0027s the distinction.\n\nI think Brian\u0027s suggestion of recording user here had to do with being able to know who started an operation. If your whole project can see the image, but multiple people can initiate operations on it, it would be helpful to know which task goes with which user activity. Maybe less important with the addition of the request_id, but definitely useful for tracking things down.","commit_id":"124ff2ce3dc9bc123202521829b75fa5db879f7e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"54d31bae5448db811f565ff756e282fc8fb8e308","unresolved":true,"context_lines":[{"line_number":111,"context_line":"                \"task\": {"},{"line_number":112,"context_line":"                    \"id\": \"ee22890e-8948-4ea6-9668-831f973c84f5\","},{"line_number":113,"context_line":"                    \"image_id\": \"dddddddd-dddd-dddd-dddd-dddddddddddd\","},{"line_number":114,"context_line":"                    \"request-id\": \"rrrrrrr-rrrr-rrrr-rrrr-rrrrrrrrrrrr\","},{"line_number":115,"context_line":"                    \"user\": \"uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu\","},{"line_number":116,"context_line":"                    \"type\": \"api_image_import\","},{"line_number":117,"context_line":"                    \"status\": \"processing\","}],"source_content_type":"text/x-rst","patch_set":8,"id":"04946502_9041e5a9","line":114,"in_reply_to":"79f598a7_5172767e","updated":"2021-02-04 14:52:45.000000000","message":"See L44","commit_id":"124ff2ce3dc9bc123202521829b75fa5db879f7e"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"d7d8efe6150a6756e6c494ed8e24f4e4b639e719","unresolved":true,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"* Add expand script for adding new fields to `tasks` database"},{"line_number":212,"context_line":"* Modify `tasks` data layer to use newly added fields"},{"line_number":213,"context_line":"* Modify `tasks` CRUD operations to use newly added fields"},{"line_number":214,"context_line":"* Add support for new API."},{"line_number":215,"context_line":"* Add python-glanceclient support"},{"line_number":216,"context_line":"* Add API documentation for new API"}],"source_content_type":"text/x-rst","patch_set":8,"id":"39a00d7b_d3dec434","line":213,"updated":"2021-02-04 14:44:02.000000000","message":"What are these new fields on the database? Or are these work items still here from earlier draft plans?","commit_id":"124ff2ce3dc9bc123202521829b75fa5db879f7e"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"e264c8462eabe2777378fb919d115b932b8ff1cc","unresolved":true,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"* Add expand script for adding new fields to `tasks` database"},{"line_number":212,"context_line":"* Modify `tasks` data layer to use newly added fields"},{"line_number":213,"context_line":"* Modify `tasks` CRUD operations to use newly added fields"},{"line_number":214,"context_line":"* Add support for new API."},{"line_number":215,"context_line":"* Add python-glanceclient support"},{"line_number":216,"context_line":"* Add API documentation for new API"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5ff94755_5a66733e","line":213,"in_reply_to":"27c2af52_dac67147","updated":"2021-02-04 18:10:02.000000000","message":"\u003e Discussion of the image uuid addition started here in this spec:\n\u003e \n\u003e https://review.opendev.org/c/openstack/glance-specs/+/763740/2/specs/wallaby/approved/glance/expose_task_show_api.rst#31\n\u003e \n\u003e Discussion of the request_id addition started here in this spec:\n\u003e \n\u003e https://review.opendev.org/c/openstack/glance-specs/+/763740/3/specs/wallaby/approved/glance/expose_task_show_api.rst#107\n\nThanks for pointing these out. I was wondering how I\u0027m apparently missing loads of review discussion. Only now after going back I realized that I had totally missed the \"show all XX previous comments\" link at the top of the list in this gerrit interface. Now I know what to watch for in future when wondering that \"there should be record of this in somewhere\". ;)","commit_id":"124ff2ce3dc9bc123202521829b75fa5db879f7e"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"144609b128a2840c8bf308192b38979c283ea74d","unresolved":true,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"* Add expand script for adding new fields to `tasks` database"},{"line_number":212,"context_line":"* Modify `tasks` data layer to use newly added fields"},{"line_number":213,"context_line":"* Modify `tasks` CRUD operations to use newly added fields"},{"line_number":214,"context_line":"* Add support for new API."},{"line_number":215,"context_line":"* Add python-glanceclient support"},{"line_number":216,"context_line":"* Add API documentation for new API"}],"source_content_type":"text/x-rst","patch_set":8,"id":"c4b6730a_1ff26daf","line":213,"in_reply_to":"2f4a3681_5c4da961","updated":"2021-02-04 16:51:22.000000000","message":"Clearly missing something as I don\u0027t see single comment on the spec discussing about these.","commit_id":"124ff2ce3dc9bc123202521829b75fa5db879f7e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"54d31bae5448db811f565ff756e282fc8fb8e308","unresolved":true,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"* Add expand script for adding new fields to `tasks` database"},{"line_number":212,"context_line":"* Modify `tasks` data layer to use newly added fields"},{"line_number":213,"context_line":"* Modify `tasks` CRUD operations to use newly added fields"},{"line_number":214,"context_line":"* Add support for new API."},{"line_number":215,"context_line":"* Add python-glanceclient support"},{"line_number":216,"context_line":"* Add API documentation for new API"}],"source_content_type":"text/x-rst","patch_set":8,"id":"2f4a3681_5c4da961","line":213,"in_reply_to":"39a00d7b_d3dec434","updated":"2021-02-04 14:52:45.000000000","message":"See L44 through L52 above. Also the previous discussion on this spec goes into this detail quite a bit.","commit_id":"124ff2ce3dc9bc123202521829b75fa5db879f7e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f5218218c2aec0887e8c164622e0d553590b27bb","unresolved":true,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"* Add expand script for adding new fields to `tasks` database"},{"line_number":212,"context_line":"* Modify `tasks` data layer to use newly added fields"},{"line_number":213,"context_line":"* Modify `tasks` CRUD operations to use newly added fields"},{"line_number":214,"context_line":"* Add support for new API."},{"line_number":215,"context_line":"* Add python-glanceclient support"},{"line_number":216,"context_line":"* Add API documentation for new API"}],"source_content_type":"text/x-rst","patch_set":8,"id":"27c2af52_dac67147","line":213,"in_reply_to":"c4b6730a_1ff26daf","updated":"2021-02-04 17:22:00.000000000","message":"You\u0027re right about the user field, my apologies, it was in IRC. Here is Brian bringing it up:\n\nhttp://eavesdrop.openstack.org/irclogs/%23openstack-glance/%23openstack-glance.2021-01-11.log.html#t2021-01-11T14:52:59\n\nDiscussion of the image uuid addition started here in this spec:\n\nhttps://review.opendev.org/c/openstack/glance-specs/+/763740/2/specs/wallaby/approved/glance/expose_task_show_api.rst#31\n\nDiscussion of the request_id addition started here in this spec:\n\nhttps://review.opendev.org/c/openstack/glance-specs/+/763740/3/specs/wallaby/approved/glance/expose_task_show_api.rst#107","commit_id":"124ff2ce3dc9bc123202521829b75fa5db879f7e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"2b6d23882fe9cef311320dc797e1932812b46da3","unresolved":true,"context_lines":[{"line_number":31,"context_line":"Proposed chage"},{"line_number":32,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Add new fields `image_id`, `request_id` and `user` fields to tasks database"},{"line_number":35,"context_line":"and new API `/v2/images/{id}/tasks` which will fetch the tasks associated"},{"line_number":36,"context_line":"with `image_id` of that image and returns it to the user. This new API will"},{"line_number":37,"context_line":"return all tasks associated with image which are not expired. This expiration"}],"source_content_type":"text/x-rst","patch_set":9,"id":"c2744cae_555dbbbd","line":34,"range":{"start_line":34,"start_character":45,"end_line":34,"end_character":49},"updated":"2021-02-11 14:19:43.000000000","message":"since this came up on an earlier PS, I think we should name this field \u0027user_id\u0027 so that it\u0027s obvious what\u0027s in there.  (At least that\u0027s what I\u0027ve been assuming would actually be stored there.)","commit_id":"e518123237e7882d4b31b5ba8bd068cbb5e28a89"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"1a49c14fda217af72ca790a412a5856295b03cb1","unresolved":true,"context_lines":[{"line_number":31,"context_line":"Proposed chage"},{"line_number":32,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Add new fields `image_id`, `request_id` and `user` fields to tasks database"},{"line_number":35,"context_line":"and new API `/v2/images/{id}/tasks` which will fetch the tasks associated"},{"line_number":36,"context_line":"with `image_id` of that image and returns it to the user. This new API will"},{"line_number":37,"context_line":"return all tasks associated with image which are not expired. This expiration"}],"source_content_type":"text/x-rst","patch_set":9,"id":"d452c9aa_557b3881","line":34,"range":{"start_line":34,"start_character":45,"end_line":34,"end_character":49},"in_reply_to":"c2744cae_555dbbbd","updated":"2021-02-12 04:49:33.000000000","message":"I will make sure to change it to user_id in implementation and documentation.\nAlso will push follow up patch to amend the this spec.","commit_id":"e518123237e7882d4b31b5ba8bd068cbb5e28a89"}],"specs/wallaby/approved/glance/task_discovery_api.rst":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b9d595a31641b0b1c6e955db5ddf5cf021673f37","unresolved":true,"context_lines":[{"line_number":15,"context_line":"          other import operations on the same image. We are updating \u0027message\u0027"},{"line_number":16,"context_line":"          property of the task which helps calculate time based on"},{"line_number":17,"context_line":"          last updated time of task to burst the lock as well as show how much"},{"line_number":18,"context_line":"          data has been copied of that image. Copying operation may takes"},{"line_number":19,"context_line":"          long and normal user can be clueless about when lock will be busted"},{"line_number":20,"context_line":"          or why his (other) requests are rejected without contacting to"},{"line_number":21,"context_line":"          the administrator."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"0d108238_5f46d064","line":19,"range":{"start_line":18,"start_character":64,"end_line":19,"end_character":14},"updated":"2020-12-10 13:48:40.000000000","message":"\"may take a long time\"","commit_id":"528ce40d9dd5f794c8fd39e54e6d42812ebc9914"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d5e6ec436c0dad80a1b2779b66516ccded71dc1a","unresolved":true,"context_lines":[{"line_number":24,"context_line":"           the particular task from database and shows it to user."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":":impacts: Add new API which will be available for all users."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":":how: Pass offset and chunk_size to ImageIterator in of rbd driver, which"},{"line_number":29,"context_line":"      will determine whether the request is a partial get. When the request"},{"line_number":30,"context_line":"      is partial, the data size returned will be chunk size."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":":alternatives: Expose task show API to all the users."},{"line_number":33,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9be98e2a_5a3838cd","line":30,"range":{"start_line":27,"start_character":0,"end_line":30,"end_character":60},"updated":"2020-12-10 14:36:07.000000000","message":"this seems to be part of a different spec?","commit_id":"528ce40d9dd5f794c8fd39e54e6d42812ebc9914"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b9d595a31641b0b1c6e955db5ddf5cf021673f37","unresolved":true,"context_lines":[{"line_number":29,"context_line":"      will determine whether the request is a partial get. When the request"},{"line_number":30,"context_line":"      is partial, the data size returned will be chunk size."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":":alternatives: Expose task show API to all the users."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":":timeline: Wallaby Milestone 2."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"92ffb2d2_8677d195","line":32,"updated":"2020-12-10 13:48:40.000000000","message":"Could you say some more about why this isn\u0027t a good alternative?  The discovery endpoint is supposed to expose information about the system that will helpful to users, not expose a particular resource, so I don\u0027t really like using the discovery endpoint for this.","commit_id":"528ce40d9dd5f794c8fd39e54e6d42812ebc9914"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ef613bec07926d26e30ccfd3fcf87bbc531313c6","unresolved":true,"context_lines":[{"line_number":29,"context_line":"      will determine whether the request is a partial get. When the request"},{"line_number":30,"context_line":"      is partial, the data size returned will be chunk size."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":":alternatives: Expose task show API to all the users."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":":timeline: Wallaby Milestone 2."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"0257ed49_a0729cd7","line":32,"in_reply_to":"7670858f_3be9f0ef","updated":"2020-12-10 14:42:23.000000000","message":"Sounds good to have /v2/messages/id endpoint\nI will add more information about how task_id is visible to user in new revision.","commit_id":"528ce40d9dd5f794c8fd39e54e6d42812ebc9914"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"34c793c1c6c8a025b9b2a165c0be4f4bfbf5ab1d","unresolved":true,"context_lines":[{"line_number":29,"context_line":"      will determine whether the request is a partial get. When the request"},{"line_number":30,"context_line":"      is partial, the data size returned will be chunk size."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":":alternatives: Expose task show API to all the users."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":":timeline: Wallaby Milestone 2."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ff76c6db_cb7fd67a","line":32,"in_reply_to":"92ffb2d2_8677d195","updated":"2020-12-10 14:16:47.000000000","message":"At the moment task API\u0027s are managed with two different policies;\n\n1. tasks_api_access\nand then\n2. crud level policies\n\nSo in this case we first need to expose tasks_api_access to all users (than admin) and then need to expose individual level policies to end user.\n\nThis might be confusing and need to document carefully otherwise default access will be provided to all task API\u0027s by mistake.","commit_id":"528ce40d9dd5f794c8fd39e54e6d42812ebc9914"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d5e6ec436c0dad80a1b2779b66516ccded71dc1a","unresolved":true,"context_lines":[{"line_number":29,"context_line":"      will determine whether the request is a partial get. When the request"},{"line_number":30,"context_line":"      is partial, the data size returned will be chunk size."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":":alternatives: Expose task show API to all the users."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":":timeline: Wallaby Milestone 2."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7670858f_3be9f0ef","line":32,"in_reply_to":"ff76c6db_cb7fd67a","updated":"2020-12-10 14:36:07.000000000","message":"That\u0027s a good point, I forgot about one policy protecting the entire API.  I guess we could split it into multiple policies, or we could introduce a new endpoint for a \"messages\" resource, something like:\n\n  /v2/messages/{id}\n\nit would grab the task and reformat it to only display the message.  One question: how does the user know the task_id in your proposal?  Is it in the image metadata?  (I don\u0027t remember)","commit_id":"528ce40d9dd5f794c8fd39e54e6d42812ebc9914"}]}
