)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"801e894ffdc50fb141af2a0ed1c4234a77bb2e35","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"3d125d39_9e00ac8c","updated":"2025-05-01 17:57:28.000000000","message":"But I tested that in my sandbox and this seems to work as expected overall 😊","commit_id":"12254cfc65616d0a2f86a2fe50cacc51c8773a76"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"2ebc2ea07e71c00d4d9b222fff97aa8989a32336","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"35c2be4d_df156704","updated":"2025-05-01 17:56:54.000000000","message":"I need to work on unit tests before it will be ready for the review.","commit_id":"12254cfc65616d0a2f86a2fe50cacc51c8773a76"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"d72ccba8c36022b83f23d6779a52638a07dedc28","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"f547154c_d6baf5b1","updated":"2025-05-28 08:36:37.000000000","message":"This one would be really nice to have, as current behaviour is really very annoying, if you wanna control a minor version of datastores, but want to avoid burden of building a backup image each time","commit_id":"0c4cfe8874bf95c18ac7a5d0d80e59af6a2807f0"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"e6fd2905cd4327da8785a9dde377032b4eafcb21","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"fcc996f1_372a811d","updated":"2025-06-27 07:28:29.000000000","message":"this code being depend on https://review.opendev.org/c/openstack/trove/+/948657.\n\nlet\u0027s wait until above patch merged","commit_id":"0751219b262fa0772a5338f5820b5fba8f20575a"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"552354dcc8695d7683460f4f9006c66fc41f9f58","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"00d8d735_24de170b","in_reply_to":"fcc996f1_372a811d","updated":"2025-07-06 15:21:26.000000000","message":"Hello Bo, now merged.","commit_id":"0751219b262fa0772a5338f5820b5fba8f20575a"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"1f4cada4513e8e333c8411d12668ad0b6788ea8a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"4e3d07cf_a863d5b2","updated":"2025-07-15 02:19:35.000000000","message":"hello, LGTM, however i recently add a new script[0] which is used to pull images once the instance started in trove guest image. Are we able to adapt this script?\n[0]: https://github.com/openstack/trove/blob/master/integration/scripts/files/elements/guest-agent/install.d/guest-agent-source-install/50-trove-image-loader","commit_id":"0398aa71c3689d37148edab7d78bf94e7de53f12"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"d50aecfc7e13c585bbd4cde17116fd48b2853df2","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":11,"id":"79c1b05d_55b4b665","in_reply_to":"06483537_a6149cba","updated":"2025-07-23 02:48:50.000000000","message":"yes, you are right. currently, there is no test for this script.\nMaybe we don\u0027t need to consider this case in that script ?","commit_id":"0398aa71c3689d37148edab7d78bf94e7de53f12"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"0db2359920c4c0eb305a89a9a0b4bb7e9cf8ec41","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":11,"id":"06483537_a6149cba","in_reply_to":"4e3d07cf_a863d5b2","updated":"2025-07-20 18:36:19.000000000","message":"sorry, frankly speaking right now I barely have time for looking into this at the moment.\n\nAlso, doing this kind of thing in bash sounds not as best idea. It\u0027s possible ofc, but I\u0027d assume there\u0027s no test coverage for this script existing?","commit_id":"0398aa71c3689d37148edab7d78bf94e7de53f12"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"c0b23c72973f7f5d4069285a1c275653d5ee6605","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":11,"id":"2a6926b0_bb169f76","in_reply_to":"79c1b05d_55b4b665","updated":"2025-07-23 07:14:11.000000000","message":"Um, not sore so far... But maybe we can do it in follow-up if this is needed? Or please feel free to adjust/edit my patch to your taste 😊\n\nI guess I will be able to look into this no earlier then in 2-3 weeks :(","commit_id":"0398aa71c3689d37148edab7d78bf94e7de53f12"},{"author":{"_account_id":36080,"name":"Erkin Mussurmankulov","display_name":"Eric","email":"mangust404@gmail.com","username":"mongoose404","status":"PS Cloud services employee"},"change_message_id":"8601b93018d924ef02f394d76559de79dbb70255","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"01c976ce_b0858bf3","updated":"2026-03-09 18:20:44.000000000","message":"Right now, we don\u0027t use swift backups in our production anymore, only cinder backups, but this patch LGTM.\n\nI think will may return to images-based backups when S3 may be used besides of swift. Incremental backups feature is unbeatable in a question of storage economy 😊\n\np.s. I think we should add a test case for this feature too.","commit_id":"76c49d29172f06906e50371bd48238bba1d76dd6"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"0ac5e2fe052c1723384faed704361fed3cb19a1f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"634e28e1_8426d15d","updated":"2026-03-15 06:07:21.000000000","message":"recheck","commit_id":"76c49d29172f06906e50371bd48238bba1d76dd6"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"512b5a7fc567f274c2dda11ee954c35a95189da9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"077a1dc4_47e1d85b","in_reply_to":"01c976ce_b0858bf3","updated":"2026-03-13 02:38:36.000000000","message":"The CI is passing, which means docker_util.get_image_registry is working properly. Let\u0027s merge it.","commit_id":"76c49d29172f06906e50371bd48238bba1d76dd6"}],"trove/guestagent/datastore/service.py":[{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"f397e5cdfcab6b9991aac6dc421122a4af23c1c3","unresolved":true,"context_lines":[{"line_number":450,"context_line":"                     f\u0027{image}:{ds_version}\u0027)"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"        registry \u003d docker_util.get_image_registry(self.docker_client, image)"},{"line_number":453,"context_line":"        if not registry:"},{"line_number":454,"context_line":"            # NOTE: When image is not found, we want to attempt finding"},{"line_number":455,"context_line":"            #       an image with the same major tag, not exact same as for"},{"line_number":456,"context_line":"            #       datastore. Ie, mariadb 10.11.9 datastore can have backup"},{"line_number":457,"context_line":"            #       image tagged as 10.11."},{"line_number":458,"context_line":"            LOG.warning(f\"Image {image} was not found in registry\")"},{"line_number":459,"context_line":"            image_tag \u003d image.split(\u0027:\u0027)[-1]"},{"line_number":460,"context_line":"            tag_version \u003d image_tag.split(\u0027.\u0027)"},{"line_number":461,"context_line":"            # NOTE: In case we\u0027re having a \"latest\" tag or already reach major"},{"line_number":462,"context_line":"            #       version with iteration, we exit with error."},{"line_number":463,"context_line":"            if len(tag_version) \u003d\u003d 1:"},{"line_number":464,"context_line":"                raise exception.TroveError("},{"line_number":465,"context_line":"                    \u0027No backup image found with expected tags\u0027)"},{"line_number":466,"context_line":"            return self.get_backup_image(\u0027.\u0027.join(tag_version[:-1]))"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"        return registry.image_name"},{"line_number":469,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"aeccb39a_94f8378c","line":466,"range":{"start_line":453,"start_character":8,"end_line":466,"end_character":68},"updated":"2025-07-07 01:19:26.000000000","message":"Hi, I think we should handle in case that tag is: latest.\nWhat do you think about this?","commit_id":"0398aa71c3689d37148edab7d78bf94e7de53f12"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"49deb7afcb353480d41f35b0169a1e4a49e8eb62","unresolved":true,"context_lines":[{"line_number":450,"context_line":"                     f\u0027{image}:{ds_version}\u0027)"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"        registry \u003d docker_util.get_image_registry(self.docker_client, image)"},{"line_number":453,"context_line":"        if not registry:"},{"line_number":454,"context_line":"            # NOTE: When image is not found, we want to attempt finding"},{"line_number":455,"context_line":"            #       an image with the same major tag, not exact same as for"},{"line_number":456,"context_line":"            #       datastore. Ie, mariadb 10.11.9 datastore can have backup"},{"line_number":457,"context_line":"            #       image tagged as 10.11."},{"line_number":458,"context_line":"            LOG.warning(f\"Image {image} was not found in registry\")"},{"line_number":459,"context_line":"            image_tag \u003d image.split(\u0027:\u0027)[-1]"},{"line_number":460,"context_line":"            tag_version \u003d image_tag.split(\u0027.\u0027)"},{"line_number":461,"context_line":"            # NOTE: In case we\u0027re having a \"latest\" tag or already reach major"},{"line_number":462,"context_line":"            #       version with iteration, we exit with error."},{"line_number":463,"context_line":"            if len(tag_version) \u003d\u003d 1:"},{"line_number":464,"context_line":"                raise exception.TroveError("},{"line_number":465,"context_line":"                    \u0027No backup image found with expected tags\u0027)"},{"line_number":466,"context_line":"            return self.get_backup_image(\u0027.\u0027.join(tag_version[:-1]))"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"        return registry.image_name"},{"line_number":469,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"f23ad7fd_47b9fe1f","line":466,"range":{"start_line":453,"start_character":8,"end_line":466,"end_character":68},"in_reply_to":"46114796_446fdd11","updated":"2025-09-08 06:13:24.000000000","message":"I think the latest tag is already handled. if the image contains the latest tag, the `len(tag_version) \u003d\u003d 1` will be true which will cause the function to raise an exception.\n\nadditionally， In which case do you need to use latest tag in your registry? i think this may cause confusion when we have multiple datastore versions.","commit_id":"0398aa71c3689d37148edab7d78bf94e7de53f12"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"0db2359920c4c0eb305a89a9a0b4bb7e9cf8ec41","unresolved":true,"context_lines":[{"line_number":450,"context_line":"                     f\u0027{image}:{ds_version}\u0027)"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"        registry \u003d docker_util.get_image_registry(self.docker_client, image)"},{"line_number":453,"context_line":"        if not registry:"},{"line_number":454,"context_line":"            # NOTE: When image is not found, we want to attempt finding"},{"line_number":455,"context_line":"            #       an image with the same major tag, not exact same as for"},{"line_number":456,"context_line":"            #       datastore. Ie, mariadb 10.11.9 datastore can have backup"},{"line_number":457,"context_line":"            #       image tagged as 10.11."},{"line_number":458,"context_line":"            LOG.warning(f\"Image {image} was not found in registry\")"},{"line_number":459,"context_line":"            image_tag \u003d image.split(\u0027:\u0027)[-1]"},{"line_number":460,"context_line":"            tag_version \u003d image_tag.split(\u0027.\u0027)"},{"line_number":461,"context_line":"            # NOTE: In case we\u0027re having a \"latest\" tag or already reach major"},{"line_number":462,"context_line":"            #       version with iteration, we exit with error."},{"line_number":463,"context_line":"            if len(tag_version) \u003d\u003d 1:"},{"line_number":464,"context_line":"                raise exception.TroveError("},{"line_number":465,"context_line":"                    \u0027No backup image found with expected tags\u0027)"},{"line_number":466,"context_line":"            return self.get_backup_image(\u0027.\u0027.join(tag_version[:-1]))"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"        return registry.image_name"},{"line_number":469,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"d718a758_4e42f460","line":466,"range":{"start_line":453,"start_character":8,"end_line":466,"end_character":68},"in_reply_to":"aeccb39a_94f8378c","updated":"2025-07-20 18:36:19.000000000","message":"Um, I don\u0027t see a `latest` tag existing for mariadb/mysql/postgres.\n\nAre you sure we need to handle `latest`?","commit_id":"0398aa71c3689d37148edab7d78bf94e7de53f12"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"1b7a5623f1a2e2afb6e54f13b33e85f4d3c5169e","unresolved":true,"context_lines":[{"line_number":450,"context_line":"                     f\u0027{image}:{ds_version}\u0027)"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"        registry \u003d docker_util.get_image_registry(self.docker_client, image)"},{"line_number":453,"context_line":"        if not registry:"},{"line_number":454,"context_line":"            # NOTE: When image is not found, we want to attempt finding"},{"line_number":455,"context_line":"            #       an image with the same major tag, not exact same as for"},{"line_number":456,"context_line":"            #       datastore. Ie, mariadb 10.11.9 datastore can have backup"},{"line_number":457,"context_line":"            #       image tagged as 10.11."},{"line_number":458,"context_line":"            LOG.warning(f\"Image {image} was not found in registry\")"},{"line_number":459,"context_line":"            image_tag \u003d image.split(\u0027:\u0027)[-1]"},{"line_number":460,"context_line":"            tag_version \u003d image_tag.split(\u0027.\u0027)"},{"line_number":461,"context_line":"            # NOTE: In case we\u0027re having a \"latest\" tag or already reach major"},{"line_number":462,"context_line":"            #       version with iteration, we exit with error."},{"line_number":463,"context_line":"            if len(tag_version) \u003d\u003d 1:"},{"line_number":464,"context_line":"                raise exception.TroveError("},{"line_number":465,"context_line":"                    \u0027No backup image found with expected tags\u0027)"},{"line_number":466,"context_line":"            return self.get_backup_image(\u0027.\u0027.join(tag_version[:-1]))"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"        return registry.image_name"},{"line_number":469,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"46114796_446fdd11","line":466,"range":{"start_line":453,"start_character":8,"end_line":466,"end_character":68},"in_reply_to":"d718a758_4e42f460","updated":"2025-07-22 01:26:53.000000000","message":"Of course, in some case, we. can\u0027t see latest tag, but let\u0027s think when we use local registry (in many case by business policy) to security and fully custom\n\nbtw, in my environments, I use local registry ^^","commit_id":"0398aa71c3689d37148edab7d78bf94e7de53f12"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"032d5030d4f8a829df62744da7002c2102e09f07","unresolved":true,"context_lines":[{"line_number":450,"context_line":"                     f\u0027{image}:{ds_version}\u0027)"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"        registry \u003d docker_util.get_image_registry(self.docker_client, image)"},{"line_number":453,"context_line":"        if not registry:"},{"line_number":454,"context_line":"            # NOTE: When image is not found, we want to attempt finding"},{"line_number":455,"context_line":"            #       an image with the same major tag, not exact same as for"},{"line_number":456,"context_line":"            #       datastore. Ie, mariadb 10.11.9 datastore can have backup"},{"line_number":457,"context_line":"            #       image tagged as 10.11."},{"line_number":458,"context_line":"            LOG.warning(f\"Image {image} was not found in registry\")"},{"line_number":459,"context_line":"            image_tag \u003d image.split(\u0027:\u0027)[-1]"},{"line_number":460,"context_line":"            tag_version \u003d image_tag.split(\u0027.\u0027)"},{"line_number":461,"context_line":"            # NOTE: In case we\u0027re having a \"latest\" tag or already reach major"},{"line_number":462,"context_line":"            #       version with iteration, we exit with error."},{"line_number":463,"context_line":"            if len(tag_version) \u003d\u003d 1:"},{"line_number":464,"context_line":"                raise exception.TroveError("},{"line_number":465,"context_line":"                    \u0027No backup image found with expected tags\u0027)"},{"line_number":466,"context_line":"            return self.get_backup_image(\u0027.\u0027.join(tag_version[:-1]))"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"        return registry.image_name"},{"line_number":469,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"c1e49fc4_be323aec","line":466,"range":{"start_line":453,"start_character":8,"end_line":466,"end_character":68},"in_reply_to":"f23ad7fd_47b9fe1f","updated":"2026-03-09 17:36:26.000000000","message":"Sorry, I got a bit disconnected from the discussion.\n\nBut I am indeed not sure about what `latest` is gonna represent.\n\nCurrently idea of the patch is actually to avoid the need to have a backup image per each minor version, which is operational issue for us.","commit_id":"0398aa71c3689d37148edab7d78bf94e7de53f12"}]}
