)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":31737,"name":"Hirotaka Wakabayashi","email":"hiwkby@yahoo.com","username":"hiwkby"},"change_message_id":"3b0d8e7389d57c2a900a53acd345fc76325ef395","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e8377443_e5f691a7","updated":"2023-06-13 17:13:58.000000000","message":"Hi Bo, Thanks for the patch! Sorry for my late response, Please see my comment in the storyboard.","commit_id":"c03e590066fac2dddb68487b925fe371b90f76b6"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"14ff33992144e9f0b7f56f33e31f3a97bc3835eb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"59f05bc9_beba2b77","updated":"2023-06-14 06:41:07.000000000","message":"I submit a new patch： https://review.opendev.org/c/openstack/trove/+/886044， this PS enables the E125 check. could you help to review it? thanks.","commit_id":"c03e590066fac2dddb68487b925fe371b90f76b6"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"7d1d2e636c92ba78aefc1d133212a254802fcd01","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"6c78c553_b798ad54","updated":"2023-06-13 12:03:35.000000000","message":"this change seems to affect the configuration. we need a release note for this change.","commit_id":"c03e590066fac2dddb68487b925fe371b90f76b6"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"4ee95b1942cadbcc867e008f1d6eb7b35f2e2fcf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"12d79794_dea729f3","in_reply_to":"993b8128_5e50ac91","updated":"2023-06-28 01:31:29.000000000","message":"We should listen more feedback before add new commit to ignore break logic and make trove more complex with options not need.","commit_id":"c03e590066fac2dddb68487b925fe371b90f76b6"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"bd412c5f185b7098c1fef0101e49d7632b8ddfb6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"993b8128_5e50ac91","in_reply_to":"e8377443_e5f691a7","updated":"2023-06-28 01:29:04.000000000","message":"I will update docs about this config (backup_docker_image), so I think, we don\u0027t need this commit: https://review.opendev.org/c/openstack/trove/+/886619. What do you think about this?","commit_id":"c03e590066fac2dddb68487b925fe371b90f76b6"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"62de4f27bd55e26b16b53a02dde9bb81271d9d42","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"c08c5ab3_b89a9eac","updated":"2023-06-29 07:45:30.000000000","message":"we also need to update the description here: https://github.com/openstack/trove/blob/master/trove/common/cfg.py#L666\n\nAs this commit changes the config opts, we also need a release note for this commit.","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"9f8e03797dbb49fb5bc4d95ee3112f724a64b113","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"cccbabec_0b79e027","updated":"2023-07-27 05:49:43.000000000","message":"CI failed when create backup with error message:  \"manifest for 172.24.5.1:4000/trove-datastores/db-backup-mysql:1.1.0 not found\"","commit_id":"9b99623923a4b9e16dfa0da562a141061f7c9dcd"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"572d83fcc4375365c994197b7731abc5ceb67b20","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"e3001f4f_e0339058","updated":"2023-07-27 09:04:06.000000000","message":"/recheck","commit_id":"35cbd150544bf455aa185b9d8705d765208acbb0"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"1957d704ddc9fe950a4bc5ed3d8f6f2b37fe52b3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"93dcc8b6_3cb70a02","updated":"2023-07-27 09:05:51.000000000","message":"stop re-check before fixing this issue","commit_id":"35cbd150544bf455aa185b9d8705d765208acbb0"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"2925966cea0d93a47ea4cf108f1fe0292c214725","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"2181b1c2_7f0729c8","updated":"2023-07-27 10:07:25.000000000","message":"also need to update this description: https://github.com/openstack/trove/blob/master/trove/common/cfg.py#L660","commit_id":"6456f638852f75c53b25b136bcfa1279ab876a02"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"632a2a608f18915598b5361fbc24f810c8840153","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"37e8f9aa_d30dc398","updated":"2023-09-01 05:59:56.000000000","message":"Hi; Bo, i updated this commit, could you help to review it? thanks in advance.","commit_id":"1c38b03564b5757084d9b0a6859165da830fea35"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"3a2bfbfdb3d134093dec5a0d269379dd9a07e77c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"f46a2464_c482439a","updated":"2023-09-01 02:03:27.000000000","message":"recheck","commit_id":"1c38b03564b5757084d9b0a6859165da830fea35"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"b595b410ccdd9e80836fad800767ac64057b1458","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"70f47154_b5624b2b","updated":"2023-09-06 02:55:06.000000000","message":"Done, thanks","commit_id":"697001f6d4355426e99f37b1832e413f7e9d6183"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"1930bc0739bc5242f97cebb9bb9babd7fbbfed9a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"f25546f5_cd1901cf","updated":"2023-09-06 02:56:52.000000000","message":"LGTM!","commit_id":"697001f6d4355426e99f37b1832e413f7e9d6183"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"a589291e80c14460552f41e042273feea9bdfc9c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"3cc935af_1a360e4b","in_reply_to":"f25546f5_cd1901cf","updated":"2023-09-06 02:59:08.000000000","message":"ok, I will merge this commit after the CI passed.","commit_id":"697001f6d4355426e99f37b1832e413f7e9d6183"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"dc3e9095ebb357a402762fddea957fa6d362a716","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"f4316fe7_984f3b15","updated":"2023-09-13 06:35:44.000000000","message":"It\u0027s too late to merge this commit now, as bobcat will be released at 15th September.  I am going to merge this commit at the next cycle.","commit_id":"94cbbea34fcb6f0f36e49abe80bb06c99ec33969"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"53732edd9901c53a9a8be64f31cc3016e8b767f8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"15f948fa_eda81125","updated":"2023-09-08 07:16:34.000000000","message":"recheck","commit_id":"94cbbea34fcb6f0f36e49abe80bb06c99ec33969"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"0b49c04e8b34c20cec631c173a2826db1adedf30","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"a24a0ec1_8f224d7a","updated":"2023-09-13 06:17:42.000000000","message":"recheck timeout","commit_id":"94cbbea34fcb6f0f36e49abe80bb06c99ec33969"}],"doc/source/admin/run_trove_in_production.rst":[{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"62de4f27bd55e26b16b53a02dde9bb81271d9d42","unresolved":true,"context_lines":[{"line_number":302,"context_line":"      docker_image \u003d your-registry/your-repo/mysql"},{"line_number":303,"context_line":"      backup_docker_image \u003d your-registry/your-repo/db-backup-mysql"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"How to make Trove with multiple version database"},{"line_number":306,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":307,"context_line":"Default when trove run backup image, trove guest agent pulls container images with tag "},{"line_number":308,"context_line":"by default, but it will not work when we have multiple version of database engine."}],"source_content_type":"text/x-rst","patch_set":4,"id":"44401d57_8fdf380e","line":305,"updated":"2023-06-29 07:45:30.000000000","message":"As i am not a native english speaker, just a advice here. not sure i am right.\n\nHow to make Trove backup work with multiple versions for each datastore?","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"cd5cf675872994ce868115df9d10d2b5bf16aefb","unresolved":false,"context_lines":[{"line_number":302,"context_line":"      docker_image \u003d your-registry/your-repo/mysql"},{"line_number":303,"context_line":"      backup_docker_image \u003d your-registry/your-repo/db-backup-mysql"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"How to make Trove with multiple version database"},{"line_number":306,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":307,"context_line":"Default when trove run backup image, trove guest agent pulls container images with tag "},{"line_number":308,"context_line":"by default, but it will not work when we have multiple version of database engine."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fe7f37ad_047d169a","line":305,"in_reply_to":"44401d57_8fdf380e","updated":"2023-07-07 08:02:39.000000000","message":"Done","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"62de4f27bd55e26b16b53a02dde9bb81271d9d42","unresolved":true,"context_lines":[{"line_number":304,"context_line":""},{"line_number":305,"context_line":"How to make Trove with multiple version database"},{"line_number":306,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":307,"context_line":"Default when trove run backup image, trove guest agent pulls container images with tag "},{"line_number":308,"context_line":"by default, but it will not work when we have multiple version of database engine."},{"line_number":309,"context_line":"So, to trove guest agent can run backup/restore, you need some docker image with tag"},{"line_number":310,"context_line":"- that is datastore version of datastore to do make trove work."}],"source_content_type":"text/x-rst","patch_set":4,"id":"624fd863_62e5425a","line":307,"updated":"2023-06-29 07:45:30.000000000","message":"remove default?","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"cd5cf675872994ce868115df9d10d2b5bf16aefb","unresolved":false,"context_lines":[{"line_number":304,"context_line":""},{"line_number":305,"context_line":"How to make Trove with multiple version database"},{"line_number":306,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":307,"context_line":"Default when trove run backup image, trove guest agent pulls container images with tag "},{"line_number":308,"context_line":"by default, but it will not work when we have multiple version of database engine."},{"line_number":309,"context_line":"So, to trove guest agent can run backup/restore, you need some docker image with tag"},{"line_number":310,"context_line":"- that is datastore version of datastore to do make trove work."}],"source_content_type":"text/x-rst","patch_set":4,"id":"06f61501_e9947530","line":307,"in_reply_to":"624fd863_62e5425a","updated":"2023-07-07 08:02:39.000000000","message":"Done","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"62de4f27bd55e26b16b53a02dde9bb81271d9d42","unresolved":true,"context_lines":[{"line_number":305,"context_line":"How to make Trove with multiple version database"},{"line_number":306,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":307,"context_line":"Default when trove run backup image, trove guest agent pulls container images with tag "},{"line_number":308,"context_line":"by default, but it will not work when we have multiple version of database engine."},{"line_number":309,"context_line":"So, to trove guest agent can run backup/restore, you need some docker image with tag"},{"line_number":310,"context_line":"- that is datastore version of datastore to do make trove work."},{"line_number":311,"context_line":"Such as:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"16326e75_2ea7882b","line":308,"range":{"start_line":308,"start_character":55,"end_line":308,"end_character":62},"updated":"2023-06-29 07:45:30.000000000","message":"versions?","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"cd5cf675872994ce868115df9d10d2b5bf16aefb","unresolved":false,"context_lines":[{"line_number":305,"context_line":"How to make Trove with multiple version database"},{"line_number":306,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":307,"context_line":"Default when trove run backup image, trove guest agent pulls container images with tag "},{"line_number":308,"context_line":"by default, but it will not work when we have multiple version of database engine."},{"line_number":309,"context_line":"So, to trove guest agent can run backup/restore, you need some docker image with tag"},{"line_number":310,"context_line":"- that is datastore version of datastore to do make trove work."},{"line_number":311,"context_line":"Such as:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1e37920b_3247b7ed","line":308,"range":{"start_line":308,"start_character":55,"end_line":308,"end_character":62},"in_reply_to":"16326e75_2ea7882b","updated":"2023-07-07 08:02:39.000000000","message":"Done","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"62de4f27bd55e26b16b53a02dde9bb81271d9d42","unresolved":true,"context_lines":[{"line_number":306,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":307,"context_line":"Default when trove run backup image, trove guest agent pulls container images with tag "},{"line_number":308,"context_line":"by default, but it will not work when we have multiple version of database engine."},{"line_number":309,"context_line":"So, to trove guest agent can run backup/restore, you need some docker image with tag"},{"line_number":310,"context_line":"- that is datastore version of datastore to do make trove work."},{"line_number":311,"context_line":"Such as:"},{"line_number":312,"context_line":"If you have datastore manager is mariadb with name is MariaDB and have 2 datastore versions:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"f19e45b3_ddbb1feb","line":309,"range":{"start_line":309,"start_character":4,"end_line":309,"end_character":7},"updated":"2023-06-29 07:45:30.000000000","message":"to make the ?","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"cd5cf675872994ce868115df9d10d2b5bf16aefb","unresolved":false,"context_lines":[{"line_number":306,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":307,"context_line":"Default when trove run backup image, trove guest agent pulls container images with tag "},{"line_number":308,"context_line":"by default, but it will not work when we have multiple version of database engine."},{"line_number":309,"context_line":"So, to trove guest agent can run backup/restore, you need some docker image with tag"},{"line_number":310,"context_line":"- that is datastore version of datastore to do make trove work."},{"line_number":311,"context_line":"Such as:"},{"line_number":312,"context_line":"If you have datastore manager is mariadb with name is MariaDB and have 2 datastore versions:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"46b1df15_9838a2a8","line":309,"range":{"start_line":309,"start_character":4,"end_line":309,"end_character":7},"in_reply_to":"f19e45b3_ddbb1feb","updated":"2023-07-07 08:02:39.000000000","message":"Done","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"62de4f27bd55e26b16b53a02dde9bb81271d9d42","unresolved":true,"context_lines":[{"line_number":309,"context_line":"So, to trove guest agent can run backup/restore, you need some docker image with tag"},{"line_number":310,"context_line":"- that is datastore version of datastore to do make trove work."},{"line_number":311,"context_line":"Such as:"},{"line_number":312,"context_line":"If you have datastore manager is mariadb with name is MariaDB and have 2 datastore versions:"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"  .. code-block:: bash"},{"line_number":315,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1391c90d_b53e0e52","line":312,"updated":"2023-06-29 07:45:30.000000000","message":"if you have a datastore manager called MariaDB with 2 datastore versions ?","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"cd5cf675872994ce868115df9d10d2b5bf16aefb","unresolved":false,"context_lines":[{"line_number":309,"context_line":"So, to trove guest agent can run backup/restore, you need some docker image with tag"},{"line_number":310,"context_line":"- that is datastore version of datastore to do make trove work."},{"line_number":311,"context_line":"Such as:"},{"line_number":312,"context_line":"If you have datastore manager is mariadb with name is MariaDB and have 2 datastore versions:"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"  .. code-block:: bash"},{"line_number":315,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"c6f1dceb_772fc5e8","line":312,"in_reply_to":"1391c90d_b53e0e52","updated":"2023-07-07 08:02:39.000000000","message":"Done","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"62de4f27bd55e26b16b53a02dde9bb81271d9d42","unresolved":true,"context_lines":[{"line_number":321,"context_line":"      | ee988cc3-bb30-4aaf-9837-e90a34f60d37 | 10.4 | 10.4    |"},{"line_number":322,"context_line":"      +--------------------------------------+------+---------+"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"we need have 2 docker backup image with tag are: 10.3 \u0026 10.4. Example:"},{"line_number":325,"context_line":"your-registry/your-repo/db-backup-mysql:10.3 \u0026 your-registry/your-repo/db-backup-mysql:10.4"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"When trove-guestagent to do backup/restore, it will pull this image with tag equal datastore version."}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf30801a_75efd316","line":324,"range":{"start_line":324,"start_character":0,"end_line":324,"end_character":69},"updated":"2023-06-29 07:45:30.000000000","message":"we need the docker backup image to have two tags which are 10.3 \u0026 10.4 ?","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"cd5cf675872994ce868115df9d10d2b5bf16aefb","unresolved":false,"context_lines":[{"line_number":321,"context_line":"      | ee988cc3-bb30-4aaf-9837-e90a34f60d37 | 10.4 | 10.4    |"},{"line_number":322,"context_line":"      +--------------------------------------+------+---------+"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"we need have 2 docker backup image with tag are: 10.3 \u0026 10.4. Example:"},{"line_number":325,"context_line":"your-registry/your-repo/db-backup-mysql:10.3 \u0026 your-registry/your-repo/db-backup-mysql:10.4"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"When trove-guestagent to do backup/restore, it will pull this image with tag equal datastore version."}],"source_content_type":"text/x-rst","patch_set":4,"id":"11307f1e_58cbc214","line":324,"range":{"start_line":324,"start_character":0,"end_line":324,"end_character":69},"in_reply_to":"bf30801a_75efd316","updated":"2023-07-07 08:02:39.000000000","message":"Done","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"62de4f27bd55e26b16b53a02dde9bb81271d9d42","unresolved":true,"context_lines":[{"line_number":322,"context_line":"      +--------------------------------------+------+---------+"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"we need have 2 docker backup image with tag are: 10.3 \u0026 10.4. Example:"},{"line_number":325,"context_line":"your-registry/your-repo/db-backup-mysql:10.3 \u0026 your-registry/your-repo/db-backup-mysql:10.4"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"When trove-guestagent to do backup/restore, it will pull this image with tag equal datastore version."},{"line_number":328,"context_line":"You should config backup_docker_image option instead by use default value."}],"source_content_type":"text/x-rst","patch_set":4,"id":"798e007d_a5f6029d","line":325,"range":{"start_line":325,"start_character":81,"end_line":325,"end_character":86},"updated":"2023-06-29 07:45:30.000000000","message":"mariadb","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"62de4f27bd55e26b16b53a02dde9bb81271d9d42","unresolved":true,"context_lines":[{"line_number":322,"context_line":"      +--------------------------------------+------+---------+"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"we need have 2 docker backup image with tag are: 10.3 \u0026 10.4. Example:"},{"line_number":325,"context_line":"your-registry/your-repo/db-backup-mysql:10.3 \u0026 your-registry/your-repo/db-backup-mysql:10.4"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"When trove-guestagent to do backup/restore, it will pull this image with tag equal datastore version."},{"line_number":328,"context_line":"You should config backup_docker_image option instead by use default value."}],"source_content_type":"text/x-rst","patch_set":4,"id":"c50d21cd_03fe1f7e","line":325,"range":{"start_line":325,"start_character":34,"end_line":325,"end_character":39},"updated":"2023-06-29 07:45:30.000000000","message":"mariadb","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"cd5cf675872994ce868115df9d10d2b5bf16aefb","unresolved":false,"context_lines":[{"line_number":322,"context_line":"      +--------------------------------------+------+---------+"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"we need have 2 docker backup image with tag are: 10.3 \u0026 10.4. Example:"},{"line_number":325,"context_line":"your-registry/your-repo/db-backup-mysql:10.3 \u0026 your-registry/your-repo/db-backup-mysql:10.4"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"When trove-guestagent to do backup/restore, it will pull this image with tag equal datastore version."},{"line_number":328,"context_line":"You should config backup_docker_image option instead by use default value."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1e3370da_ffa31bf8","line":325,"range":{"start_line":325,"start_character":81,"end_line":325,"end_character":86},"in_reply_to":"798e007d_a5f6029d","updated":"2023-07-07 08:02:39.000000000","message":"Done","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"cd5cf675872994ce868115df9d10d2b5bf16aefb","unresolved":false,"context_lines":[{"line_number":322,"context_line":"      +--------------------------------------+------+---------+"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"we need have 2 docker backup image with tag are: 10.3 \u0026 10.4. Example:"},{"line_number":325,"context_line":"your-registry/your-repo/db-backup-mysql:10.3 \u0026 your-registry/your-repo/db-backup-mysql:10.4"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"When trove-guestagent to do backup/restore, it will pull this image with tag equal datastore version."},{"line_number":328,"context_line":"You should config backup_docker_image option instead by use default value."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9fa94341_28cdce4b","line":325,"range":{"start_line":325,"start_character":34,"end_line":325,"end_character":39},"in_reply_to":"c50d21cd_03fe1f7e","updated":"2023-07-07 08:02:39.000000000","message":"Done","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"62de4f27bd55e26b16b53a02dde9bb81271d9d42","unresolved":true,"context_lines":[{"line_number":324,"context_line":"we need have 2 docker backup image with tag are: 10.3 \u0026 10.4. Example:"},{"line_number":325,"context_line":"your-registry/your-repo/db-backup-mysql:10.3 \u0026 your-registry/your-repo/db-backup-mysql:10.4"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"When trove-guestagent to do backup/restore, it will pull this image with tag equal datastore version."},{"line_number":328,"context_line":"You should config backup_docker_image option instead by use default value."},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"Initialize Trove Database"}],"source_content_type":"text/x-rst","patch_set":4,"id":"25e4edf6_307bcc38","line":327,"range":{"start_line":327,"start_character":22,"end_line":327,"end_character":24},"updated":"2023-06-29 07:45:30.000000000","message":"When trove-guestagent performs the backup/restore task, It will pull this image with a tag equals the datastore version","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"cd5cf675872994ce868115df9d10d2b5bf16aefb","unresolved":false,"context_lines":[{"line_number":324,"context_line":"we need have 2 docker backup image with tag are: 10.3 \u0026 10.4. Example:"},{"line_number":325,"context_line":"your-registry/your-repo/db-backup-mysql:10.3 \u0026 your-registry/your-repo/db-backup-mysql:10.4"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"When trove-guestagent to do backup/restore, it will pull this image with tag equal datastore version."},{"line_number":328,"context_line":"You should config backup_docker_image option instead by use default value."},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"Initialize Trove Database"}],"source_content_type":"text/x-rst","patch_set":4,"id":"6b7b0ffd_4b814e58","line":327,"range":{"start_line":327,"start_character":22,"end_line":327,"end_character":24},"in_reply_to":"25e4edf6_307bcc38","updated":"2023-07-07 08:02:39.000000000","message":"Done","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"62de4f27bd55e26b16b53a02dde9bb81271d9d42","unresolved":true,"context_lines":[{"line_number":325,"context_line":"your-registry/your-repo/db-backup-mysql:10.3 \u0026 your-registry/your-repo/db-backup-mysql:10.4"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"When trove-guestagent to do backup/restore, it will pull this image with tag equal datastore version."},{"line_number":328,"context_line":"You should config backup_docker_image option instead by use default value."},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"Initialize Trove Database"},{"line_number":331,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":4,"id":"f0f3bc2f_eaeae470","line":328,"updated":"2023-06-29 07:45:30.000000000","message":"using the ?","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"cd5cf675872994ce868115df9d10d2b5bf16aefb","unresolved":false,"context_lines":[{"line_number":325,"context_line":"your-registry/your-repo/db-backup-mysql:10.3 \u0026 your-registry/your-repo/db-backup-mysql:10.4"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"When trove-guestagent to do backup/restore, it will pull this image with tag equal datastore version."},{"line_number":328,"context_line":"You should config backup_docker_image option instead by use default value."},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"Initialize Trove Database"},{"line_number":331,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":4,"id":"72545da5_2ca4680b","line":328,"in_reply_to":"f0f3bc2f_eaeae470","updated":"2023-07-07 08:02:39.000000000","message":"Done","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"1aff05cd9c291a17b3ac9df11b1f2ca509bbf749","unresolved":true,"context_lines":[{"line_number":304,"context_line":""},{"line_number":305,"context_line":"How to make Trove work with multiple versions for each datastore?"},{"line_number":306,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":307,"context_line":"When trove run backup/restore image, trove guest agent pulls container images with tag "},{"line_number":308,"context_line":"is datastore version of database instance running."},{"line_number":309,"context_line":"So, to make the trove guest agent can run backup/restore, you need some docker image with tag"},{"line_number":310,"context_line":"- that is datastore version of datastore to do make trove work."},{"line_number":311,"context_line":"Such as:"}],"source_content_type":"text/x-rst","patch_set":9,"id":"c8ea5453_afdfc894","line":308,"range":{"start_line":307,"start_character":0,"end_line":308,"end_character":50},"updated":"2023-07-27 10:06:01.000000000","message":"When Trove runs a backup/restore image, the Trove guest agent pulls container images with tags matching the datastore version of the database instance running.\n\ntranslate by chatGPT  😊","commit_id":"35cbd150544bf455aa185b9d8705d765208acbb0"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"ccb3d1710acfb44250de1bdab2933639031e4d63","unresolved":false,"context_lines":[{"line_number":304,"context_line":""},{"line_number":305,"context_line":"How to make Trove work with multiple versions for each datastore?"},{"line_number":306,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":307,"context_line":"When trove run backup/restore image, trove guest agent pulls container images with tag "},{"line_number":308,"context_line":"is datastore version of database instance running."},{"line_number":309,"context_line":"So, to make the trove guest agent can run backup/restore, you need some docker image with tag"},{"line_number":310,"context_line":"- that is datastore version of datastore to do make trove work."},{"line_number":311,"context_line":"Such as:"}],"source_content_type":"text/x-rst","patch_set":9,"id":"6ab29bfa_499abc6d","line":308,"range":{"start_line":307,"start_character":0,"end_line":308,"end_character":50},"in_reply_to":"c8ea5453_afdfc894","updated":"2023-07-28 07:47:13.000000000","message":"done","commit_id":"35cbd150544bf455aa185b9d8705d765208acbb0"}],"releasenotes/notes/separate-backup-docker-image-884165.yaml":[{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"1aff05cd9c291a17b3ac9df11b1f2ca509bbf749","unresolved":true,"context_lines":[{"line_number":5,"context_line":"    and set tag for backup docker image with tag is datastore version"},{"line_number":6,"context_line":"    Example:"},{"line_number":7,"context_line":"     `example.domain:port/backup-mariadb:10.4`"},{"line_number":8,"context_line":"    "},{"line_number":9,"context_line":""},{"line_number":10,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":10,"id":"5c41774d_929b0e87","line":8,"updated":"2023-07-27 10:06:01.000000000","message":"i think we need improve this sentence. for example, Add support for multiple datastore versions for each datastore? then add details here.  we can also refer to other release notes to link the story here.","commit_id":"6456f638852f75c53b25b136bcfa1279ab876a02"}],"trove/guestagent/datastore/mysql/service.py":[{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"1957d704ddc9fe950a4bc5ed3d8f6f2b37fe52b3","unresolved":true,"context_lines":[{"line_number":64,"context_line":"        \"\"\"Get the actual container image based on datastore version."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        For example, this method converts openstacktrove/db-backup-mysql:1.0.0"},{"line_number":67,"context_line":"        to openstacktrove/db-backup-mysql5.7:1.0.0"},{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        image \u003d cfg.get_configuration_property(\u0027backup_docker_image\u0027)"},{"line_number":70,"context_line":"        name, tag \u003d image.rsplit(\u0027:\u0027, 1)"}],"source_content_type":"text/x-python","patch_set":9,"id":"6336cdf2_16c21191","side":"PARENT","line":67,"updated":"2023-07-27 09:05:51.000000000","message":"this code breaks our CI tests, the docker registry only contains \"db-backup-mysql5.7:1.0.0\" and \"db-backup-mysql8.0:1.0.0\" image.  this commit remove this logic, so it gets the image from the config file directly which is db-backup-mysql:1.0.0 that not included in the docker registry.","commit_id":"ee3ba2375bdeaf41d39e569ec3551aacf1118ec8"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"ca36f6b65510bd8a9dc6145129ed579df1983d35","unresolved":true,"context_lines":[{"line_number":64,"context_line":"        \"\"\"Get the actual container image based on datastore version."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        For example, this method converts openstacktrove/db-backup-mysql:1.0.0"},{"line_number":67,"context_line":"        to openstacktrove/db-backup-mysql5.7:1.0.0"},{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        image \u003d cfg.get_configuration_property(\u0027backup_docker_image\u0027)"},{"line_number":70,"context_line":"        name, tag \u003d image.rsplit(\u0027:\u0027, 1)"}],"source_content_type":"text/x-python","patch_set":9,"id":"733cf963_65e00850","side":"PARENT","line":67,"in_reply_to":"33267ba4_a4d4cd35","updated":"2023-07-28 01:56:29.000000000","message":"@wu.chunyang the error in log, I don\u0027t know why. Can you help me debug that error?","commit_id":"ee3ba2375bdeaf41d39e569ec3551aacf1118ec8"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"1b7d3055b31eae1b122f3079cb5bc0dab0de38e5","unresolved":true,"context_lines":[{"line_number":64,"context_line":"        \"\"\"Get the actual container image based on datastore version."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        For example, this method converts openstacktrove/db-backup-mysql:1.0.0"},{"line_number":67,"context_line":"        to openstacktrove/db-backup-mysql5.7:1.0.0"},{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        image \u003d cfg.get_configuration_property(\u0027backup_docker_image\u0027)"},{"line_number":70,"context_line":"        name, tag \u003d image.rsplit(\u0027:\u0027, 1)"}],"source_content_type":"text/x-python","patch_set":9,"id":"19c4cbd0_483e25cb","side":"PARENT","line":67,"in_reply_to":"33267ba4_a4d4cd35","updated":"2023-07-28 01:51:05.000000000","message":"why it doesn\u0027t work?","commit_id":"ee3ba2375bdeaf41d39e569ec3551aacf1118ec8"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"1aff05cd9c291a17b3ac9df11b1f2ca509bbf749","unresolved":true,"context_lines":[{"line_number":64,"context_line":"        \"\"\"Get the actual container image based on datastore version."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        For example, this method converts openstacktrove/db-backup-mysql:1.0.0"},{"line_number":67,"context_line":"        to openstacktrove/db-backup-mysql5.7:1.0.0"},{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        image \u003d cfg.get_configuration_property(\u0027backup_docker_image\u0027)"},{"line_number":70,"context_line":"        name, tag \u003d image.rsplit(\u0027:\u0027, 1)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7874065f_df21d111","side":"PARENT","line":67,"in_reply_to":"3d281605_2f71c8ae","updated":"2023-07-27 10:06:01.000000000","message":"I think, we may need to keep this function for compatibility. when the image url contains the tag, we get the backup image using this function. and we can also add a comment on this function for deprecation.","commit_id":"ee3ba2375bdeaf41d39e569ec3551aacf1118ec8"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"f8dff801d4a85048e73e265e64b6d43624246c91","unresolved":true,"context_lines":[{"line_number":64,"context_line":"        \"\"\"Get the actual container image based on datastore version."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        For example, this method converts openstacktrove/db-backup-mysql:1.0.0"},{"line_number":67,"context_line":"        to openstacktrove/db-backup-mysql5.7:1.0.0"},{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        image \u003d cfg.get_configuration_property(\u0027backup_docker_image\u0027)"},{"line_number":70,"context_line":"        name, tag \u003d image.rsplit(\u0027:\u0027, 1)"}],"source_content_type":"text/x-python","patch_set":9,"id":"bfb8fb93_a7dbf4e6","side":"PARENT","line":67,"in_reply_to":"3fc533bb_a69407fb","updated":"2023-07-28 09:54:58.000000000","message":"I really don\u0027t understand why we need this convert before,\n___\nI don\u0027t know too, at that time, I was suppose to  work for kolla project, not for trove project.\n\nDo you mind that i update this commit? i will keep the compatibility for this patch.","commit_id":"ee3ba2375bdeaf41d39e569ec3551aacf1118ec8"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"d7568368227a82d5dd193758e6e477fb45d22947","unresolved":true,"context_lines":[{"line_number":64,"context_line":"        \"\"\"Get the actual container image based on datastore version."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        For example, this method converts openstacktrove/db-backup-mysql:1.0.0"},{"line_number":67,"context_line":"        to openstacktrove/db-backup-mysql5.7:1.0.0"},{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        image \u003d cfg.get_configuration_property(\u0027backup_docker_image\u0027)"},{"line_number":70,"context_line":"        name, tag \u003d image.rsplit(\u0027:\u0027, 1)"}],"source_content_type":"text/x-python","patch_set":9,"id":"6953206c_c422fde3","side":"PARENT","line":67,"in_reply_to":"6336cdf2_16c21191","updated":"2023-07-27 09:09:57.000000000","message":"Where you can see this log? Can you send me link to log?","commit_id":"ee3ba2375bdeaf41d39e569ec3551aacf1118ec8"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"e64d1260605f60f679a292bf7a04ed6bf75099e9","unresolved":true,"context_lines":[{"line_number":64,"context_line":"        \"\"\"Get the actual container image based on datastore version."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        For example, this method converts openstacktrove/db-backup-mysql:1.0.0"},{"line_number":67,"context_line":"        to openstacktrove/db-backup-mysql5.7:1.0.0"},{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        image \u003d cfg.get_configuration_property(\u0027backup_docker_image\u0027)"},{"line_number":70,"context_line":"        name, tag \u003d image.rsplit(\u0027:\u0027, 1)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3d281605_2f71c8ae","side":"PARENT","line":67,"in_reply_to":"6953206c_c422fde3","updated":"2023-07-27 09:49:32.000000000","message":"click the link from the zuul\u0027s comment, from example: click the jobs from the latest zuul\u0027s comment: \ntrove-tempest https://zuul.opendev.org/t/openstack/build/a754e5e8cfd646c99b409a84639ce8a1 : FAILURE in 1h 31m 57s (non-voting)\n\n\ntrove-tempest jobs tests the mysql 5.7 base actions and backups. \n\nwhen you click the link, you can find the log by clicking logs-\u003econtroller-\u003elogs-\u003escreen-tr-cond.txt  in order.\n\nfinally, the will see the trove-conductor.log, the error message is here:https://zuul.opendev.org/t/openstack/build/a754e5e8cfd646c99b409a84639ce8a1/log/controller/logs/screen-tr-cond.txt#697","commit_id":"ee3ba2375bdeaf41d39e569ec3551aacf1118ec8"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"2c003ab3ad05006fb0cc6987e91f5c764c4c6c0a","unresolved":true,"context_lines":[{"line_number":64,"context_line":"        \"\"\"Get the actual container image based on datastore version."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        For example, this method converts openstacktrove/db-backup-mysql:1.0.0"},{"line_number":67,"context_line":"        to openstacktrove/db-backup-mysql5.7:1.0.0"},{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        image \u003d cfg.get_configuration_property(\u0027backup_docker_image\u0027)"},{"line_number":70,"context_line":"        name, tag \u003d image.rsplit(\u0027:\u0027, 1)"}],"source_content_type":"text/x-python","patch_set":9,"id":"799e0f1e_626b8016","side":"PARENT","line":67,"in_reply_to":"733cf963_65e00850","updated":"2023-07-28 02:15:40.000000000","message":"As i explained in this comment. you shouldn\u0027t remove this function. instead, you should add some logic here like: if the image contains tag, we use the current code directly, otherwise, we call super().get_backup_image","commit_id":"ee3ba2375bdeaf41d39e569ec3551aacf1118ec8"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"7f8d33573f523d0f60cf29d53d6887149cfe6c22","unresolved":true,"context_lines":[{"line_number":64,"context_line":"        \"\"\"Get the actual container image based on datastore version."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        For example, this method converts openstacktrove/db-backup-mysql:1.0.0"},{"line_number":67,"context_line":"        to openstacktrove/db-backup-mysql5.7:1.0.0"},{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        image \u003d cfg.get_configuration_property(\u0027backup_docker_image\u0027)"},{"line_number":70,"context_line":"        name, tag \u003d image.rsplit(\u0027:\u0027, 1)"}],"source_content_type":"text/x-python","patch_set":9,"id":"33267ba4_a4d4cd35","side":"PARENT","line":67,"in_reply_to":"7874065f_df21d111","updated":"2023-07-28 01:29:16.000000000","message":"this function not work. because if we config `backup_docker_image \u003d hubexample.domain:port/repo/image:tag`.","commit_id":"ee3ba2375bdeaf41d39e569ec3551aacf1118ec8"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"92a9973b4b13f756b789d49aa469edddb7942dc6","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        \"\"\"Get the actual container image based on datastore version."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        For example, this method converts openstacktrove/db-backup-mysql:1.0.0"},{"line_number":67,"context_line":"        to openstacktrove/db-backup-mysql5.7:1.0.0"},{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        image \u003d cfg.get_configuration_property(\u0027backup_docker_image\u0027)"},{"line_number":70,"context_line":"        name, tag \u003d image.rsplit(\u0027:\u0027, 1)"}],"source_content_type":"text/x-python","patch_set":9,"id":"817226f4_0bfe6784","side":"PARENT","line":67,"in_reply_to":"799e0f1e_626b8016","updated":"2023-07-28 05:44:55.000000000","message":"I think this function must be remove. because it make we maintain more images in others format, it not being goal of this patch.\n\nwhy we need this convert?","commit_id":"ee3ba2375bdeaf41d39e569ec3551aacf1118ec8"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"d60b176852775e95ed55b580d9ff2c9e383f84f8","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        \"\"\"Get the actual container image based on datastore version."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        For example, this method converts openstacktrove/db-backup-mysql:1.0.0"},{"line_number":67,"context_line":"        to openstacktrove/db-backup-mysql5.7:1.0.0"},{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        image \u003d cfg.get_configuration_property(\u0027backup_docker_image\u0027)"},{"line_number":70,"context_line":"        name, tag \u003d image.rsplit(\u0027:\u0027, 1)"}],"source_content_type":"text/x-python","patch_set":9,"id":"b1e1302a_9b44a568","side":"PARENT","line":67,"in_reply_to":"817226f4_0bfe6784","updated":"2023-07-28 05:57:14.000000000","message":"I don\u0027t want to break the compatibility. though we may need to maintain more image formats, it is worth to do this.","commit_id":"ee3ba2375bdeaf41d39e569ec3551aacf1118ec8"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"7d177d09fabae6d8b3e7f352eeac06552c8f94dd","unresolved":true,"context_lines":[{"line_number":64,"context_line":"        \"\"\"Get the actual container image based on datastore version."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        For example, this method converts openstacktrove/db-backup-mysql:1.0.0"},{"line_number":67,"context_line":"        to openstacktrove/db-backup-mysql5.7:1.0.0"},{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        image \u003d cfg.get_configuration_property(\u0027backup_docker_image\u0027)"},{"line_number":70,"context_line":"        name, tag \u003d image.rsplit(\u0027:\u0027, 1)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fc533bb_a69407fb","side":"PARENT","line":67,"in_reply_to":"b1e1302a_9b44a568","updated":"2023-07-28 07:06:34.000000000","message":"I really don\u0027t understand why we need this convert before, I see this function not is common for all database engine, and I can\u0027t make it run with old function and new logic.\nif we config `backup_docker_image \u003d example.domain/repo/image-name`\nThe rstrip function will raise an error.\n\nthe break the compatibility is need and being important now.","commit_id":"ee3ba2375bdeaf41d39e569ec3551aacf1118ec8"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"5accaa0f1f26218727a1365621c4472e56743651","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        \"\"\"Get the actual container image based on datastore version."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        For example, this method converts openstacktrove/db-backup-mysql:1.0.0"},{"line_number":67,"context_line":"        to openstacktrove/db-backup-mysql5.7:1.0.0"},{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        image \u003d cfg.get_configuration_property(\u0027backup_docker_image\u0027)"},{"line_number":70,"context_line":"        name, tag \u003d image.rsplit(\u0027:\u0027, 1)"}],"source_content_type":"text/x-python","patch_set":9,"id":"323aff0e_bb843fd6","side":"PARENT","line":67,"in_reply_to":"bfb8fb93_a7dbf4e6","updated":"2023-07-31 01:33:51.000000000","message":"Yes, you can.\nBut, I think we should break the compatibility with old logic because it never be changed if we do that.","commit_id":"ee3ba2375bdeaf41d39e569ec3551aacf1118ec8"}],"trove/guestagent/datastore/mysql_common/service.py":[{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"7d1d2e636c92ba78aefc1d133212a254802fcd01","unresolved":true,"context_lines":[{"line_number":418,"context_line":"        \"\"\"Revoke a user\u0027s permission to use a given database.\"\"\""},{"line_number":419,"context_line":"        user \u003d self._get_user(username, hostname)"},{"line_number":420,"context_line":"        with mysql_util.SqlClient("},{"line_number":421,"context_line":"                self.mysql_app.get_engine(), use_flush\u003dTrue) as client:"},{"line_number":422,"context_line":"            r \u003d sql_query.Revoke(database\u003ddatabase,"},{"line_number":423,"context_line":"                                 user\u003duser.name,"},{"line_number":424,"context_line":"                                 host\u003duser.host)"}],"source_content_type":"text/x-python","patch_set":2,"id":"d01bb712_21b93e9c","line":421,"updated":"2023-06-13 12:03:35.000000000","message":"remove those unnecessary  blank.","commit_id":"c03e590066fac2dddb68487b925fe371b90f76b6"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"d4a53ded12f33b75f8c6e397d8b0f4622fcc6f72","unresolved":true,"context_lines":[{"line_number":418,"context_line":"        \"\"\"Revoke a user\u0027s permission to use a given database.\"\"\""},{"line_number":419,"context_line":"        user \u003d self._get_user(username, hostname)"},{"line_number":420,"context_line":"        with mysql_util.SqlClient("},{"line_number":421,"context_line":"                self.mysql_app.get_engine(), use_flush\u003dTrue) as client:"},{"line_number":422,"context_line":"            r \u003d sql_query.Revoke(database\u003ddatabase,"},{"line_number":423,"context_line":"                                 user\u003duser.name,"},{"line_number":424,"context_line":"                                 host\u003duser.host)"}],"source_content_type":"text/x-python","patch_set":2,"id":"478aa032_d69bedba","line":421,"in_reply_to":"b5254a51_aded1fbc","updated":"2023-06-14 06:30:49.000000000","message":"After reviewing the PEP8 documentation, you are correct. However, it is recommended to follow the principle of \"one commit, one thing\". In this case, the commit should focus on fixing the issue related to backups. i will proposal a new patch to do this later, and enable E125 check in our ci jobs.","commit_id":"c03e590066fac2dddb68487b925fe371b90f76b6"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"1ae5bae718e98b270070c7cc0c2b6a3bcb4ba4cf","unresolved":true,"context_lines":[{"line_number":418,"context_line":"        \"\"\"Revoke a user\u0027s permission to use a given database.\"\"\""},{"line_number":419,"context_line":"        user \u003d self._get_user(username, hostname)"},{"line_number":420,"context_line":"        with mysql_util.SqlClient("},{"line_number":421,"context_line":"                self.mysql_app.get_engine(), use_flush\u003dTrue) as client:"},{"line_number":422,"context_line":"            r \u003d sql_query.Revoke(database\u003ddatabase,"},{"line_number":423,"context_line":"                                 user\u003duser.name,"},{"line_number":424,"context_line":"                                 host\u003duser.host)"}],"source_content_type":"text/x-python","patch_set":2,"id":"b5254a51_aded1fbc","line":421,"in_reply_to":"d01bb712_21b93e9c","updated":"2023-06-14 03:51:50.000000000","message":"this is not unnecessary blank. I following it with PEP8","commit_id":"c03e590066fac2dddb68487b925fe371b90f76b6"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"7d1d2e636c92ba78aefc1d133212a254802fcd01","unresolved":true,"context_lines":[{"line_number":692,"context_line":"        user_token \u003d context.auth_token"},{"line_number":693,"context_line":"        auth_url \u003d CONF.service_credentials.auth_url"},{"line_number":694,"context_line":"        user_tenant \u003d context.project_id"},{"line_number":695,"context_line":"        backup_image \u003d self.get_backup_image()"},{"line_number":696,"context_line":"        ds_version \u003d CONF.datastore_version"},{"line_number":697,"context_line":"        image \u003d (f\u0027{backup_image}:latest\u0027 if not ds_version else"},{"line_number":698,"context_line":"                 f\u0027{backup_image}:{ds_version}\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"f903b6ef_3ba54267","line":695,"updated":"2023-06-13 12:03:35.000000000","message":"backup_image should be something like: 172.16.87.174:4000/trove-datastores/db-backup-mariadb:1.1.0,, why we need append a ds_version tag to this full image url?  I infer that you want to get a image like: 172.16.87.174:4000/trove-datastores/db-backup-mariadb:{ds_version}? if so we also need to update configure docs.","commit_id":"c03e590066fac2dddb68487b925fe371b90f76b6"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"1ae5bae718e98b270070c7cc0c2b6a3bcb4ba4cf","unresolved":true,"context_lines":[{"line_number":692,"context_line":"        user_token \u003d context.auth_token"},{"line_number":693,"context_line":"        auth_url \u003d CONF.service_credentials.auth_url"},{"line_number":694,"context_line":"        user_tenant \u003d context.project_id"},{"line_number":695,"context_line":"        backup_image \u003d self.get_backup_image()"},{"line_number":696,"context_line":"        ds_version \u003d CONF.datastore_version"},{"line_number":697,"context_line":"        image \u003d (f\u0027{backup_image}:latest\u0027 if not ds_version else"},{"line_number":698,"context_line":"                 f\u0027{backup_image}:{ds_version}\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"593df675_19172488","line":695,"in_reply_to":"f903b6ef_3ba54267","updated":"2023-06-14 03:51:50.000000000","message":"yup","commit_id":"c03e590066fac2dddb68487b925fe371b90f76b6"}],"trove/guestagent/datastore/postgres/service.py":[{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"62de4f27bd55e26b16b53a02dde9bb81271d9d42","unresolved":true,"context_lines":[{"line_number":14,"context_line":"from collections import OrderedDict"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import psycopg2"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from oslo_log import log as logging"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from trove.common import cfg"}],"source_content_type":"text/x-python","patch_set":4,"id":"3524367b_de19d8c4","line":17,"updated":"2023-06-29 07:45:30.000000000","message":"remove this blank.following the principle:\nH306: import in alphabeical order\n\nImports should be grouped in the following order:\nstandard library imports\nrelated third party imports\nlocal application/library specific imports\nput a blank line between each group of imports.","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"cd5cf675872994ce868115df9d10d2b5bf16aefb","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from collections import OrderedDict"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import psycopg2"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from oslo_log import log as logging"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from trove.common import cfg"}],"source_content_type":"text/x-python","patch_set":4,"id":"af990dfa_74139cd4","line":17,"in_reply_to":"3524367b_de19d8c4","updated":"2023-07-07 08:02:39.000000000","message":"Done","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"62de4f27bd55e26b16b53a02dde9bb81271d9d42","unresolved":true,"context_lines":[{"line_number":257,"context_line":"        backup_id \u003d backup_info[\u0027id\u0027]"},{"line_number":258,"context_line":"        storage_driver \u003d CONF.storage_strategy"},{"line_number":259,"context_line":"        backup_driver \u003d self.get_backup_strategy()"},{"line_number":260,"context_line":"        backup_image \u003d self.get_backup_image()"},{"line_number":261,"context_line":"        ds_version \u003d CONF.datastore_version"},{"line_number":262,"context_line":"        image \u003d (f\u0027{backup_image}:latest\u0027 if not ds_version else"},{"line_number":263,"context_line":"                 f\u0027{backup_image}:{ds_version}\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"73d94129_0d39f199","line":260,"updated":"2023-06-29 07:45:30.000000000","message":"I prefer to move the \"get image tag\" logic to the get_backup_image function. backup_image should contain the image tag already here.","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"0b4ddc004f155f33e6f41f3861ef3fa43309c1f5","unresolved":true,"context_lines":[{"line_number":257,"context_line":"        backup_id \u003d backup_info[\u0027id\u0027]"},{"line_number":258,"context_line":"        storage_driver \u003d CONF.storage_strategy"},{"line_number":259,"context_line":"        backup_driver \u003d self.get_backup_strategy()"},{"line_number":260,"context_line":"        backup_image \u003d self.get_backup_image()"},{"line_number":261,"context_line":"        ds_version \u003d CONF.datastore_version"},{"line_number":262,"context_line":"        image \u003d (f\u0027{backup_image}:latest\u0027 if not ds_version else"},{"line_number":263,"context_line":"                 f\u0027{backup_image}:{ds_version}\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"6ec22901_6102662a","line":260,"in_reply_to":"032e0def_a35fec41","updated":"2023-07-21 01:36:39.000000000","message":"remember to add a release note as well,thanks","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"af24371b73ebe7be1a4f76a13938d19e41ae080b","unresolved":true,"context_lines":[{"line_number":257,"context_line":"        backup_id \u003d backup_info[\u0027id\u0027]"},{"line_number":258,"context_line":"        storage_driver \u003d CONF.storage_strategy"},{"line_number":259,"context_line":"        backup_driver \u003d self.get_backup_strategy()"},{"line_number":260,"context_line":"        backup_image \u003d self.get_backup_image()"},{"line_number":261,"context_line":"        ds_version \u003d CONF.datastore_version"},{"line_number":262,"context_line":"        image \u003d (f\u0027{backup_image}:latest\u0027 if not ds_version else"},{"line_number":263,"context_line":"                 f\u0027{backup_image}:{ds_version}\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff56f78d_96b84760","line":260,"in_reply_to":"510d9bb0_d8a73fab","updated":"2023-07-25 01:59:14.000000000","message":"the get_backup_image function gets the image from the config file, if the operators upgrade the trove to a newer version, then it will be failed to create a new backup for a new instance without changing their guest-agent.conf file.\n\nthough this will not affect the already running instance, I don\u0027t want to break the upgrade for operator.","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"a358f044e7f900de90d7471f352f5f22a40a6ace","unresolved":true,"context_lines":[{"line_number":257,"context_line":"        backup_id \u003d backup_info[\u0027id\u0027]"},{"line_number":258,"context_line":"        storage_driver \u003d CONF.storage_strategy"},{"line_number":259,"context_line":"        backup_driver \u003d self.get_backup_strategy()"},{"line_number":260,"context_line":"        backup_image \u003d self.get_backup_image()"},{"line_number":261,"context_line":"        ds_version \u003d CONF.datastore_version"},{"line_number":262,"context_line":"        image \u003d (f\u0027{backup_image}:latest\u0027 if not ds_version else"},{"line_number":263,"context_line":"                 f\u0027{backup_image}:{ds_version}\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"510d9bb0_d8a73fab","line":260,"in_reply_to":"6ec22901_6102662a","updated":"2023-07-25 01:45:53.000000000","message":"I think we don\u0027t need add some compatible logic here to make exist cluster config can run. the change `backup_image \u003d self.get_backup_image()` not make any effect to exist clusters/ instances because the guest config file being injected when init, not in running.\nWe just need update new glance image that have this change for exist datastore versions. - this is important.\n\nDo you think about this?","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"cd5cf675872994ce868115df9d10d2b5bf16aefb","unresolved":true,"context_lines":[{"line_number":257,"context_line":"        backup_id \u003d backup_info[\u0027id\u0027]"},{"line_number":258,"context_line":"        storage_driver \u003d CONF.storage_strategy"},{"line_number":259,"context_line":"        backup_driver \u003d self.get_backup_strategy()"},{"line_number":260,"context_line":"        backup_image \u003d self.get_backup_image()"},{"line_number":261,"context_line":"        ds_version \u003d CONF.datastore_version"},{"line_number":262,"context_line":"        image \u003d (f\u0027{backup_image}:latest\u0027 if not ds_version else"},{"line_number":263,"context_line":"                 f\u0027{backup_image}:{ds_version}\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"86b2078e_3e05e619","line":260,"in_reply_to":"73d94129_0d39f199","updated":"2023-07-07 08:02:39.000000000","message":"I don\u0027t think that. I just try re-use functions instead by write new function not really need. It also like when we start a new container database.","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"0c308be20aca9148e1998459fee445b6abcf4e45","unresolved":true,"context_lines":[{"line_number":257,"context_line":"        backup_id \u003d backup_info[\u0027id\u0027]"},{"line_number":258,"context_line":"        storage_driver \u003d CONF.storage_strategy"},{"line_number":259,"context_line":"        backup_driver \u003d self.get_backup_strategy()"},{"line_number":260,"context_line":"        backup_image \u003d self.get_backup_image()"},{"line_number":261,"context_line":"        ds_version \u003d CONF.datastore_version"},{"line_number":262,"context_line":"        image \u003d (f\u0027{backup_image}:latest\u0027 if not ds_version else"},{"line_number":263,"context_line":"                 f\u0027{backup_image}:{ds_version}\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"032e0def_a35fec41","line":260,"in_reply_to":"86b2078e_3e05e619","updated":"2023-07-21 01:36:09.000000000","message":"Now, the CI failed with this patch, should we add some compatible logic here? as this change breaks the exist cluster config, this is not what we want. we can check if the image url in the config file contains the tag, if contains, then we use that tag directly for compatibility. if not, we use the `ds_version` for the tag?","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"e482ed5c91f2fc78ef36614e4343c513c4b67612","unresolved":true,"context_lines":[{"line_number":257,"context_line":"        backup_id \u003d backup_info[\u0027id\u0027]"},{"line_number":258,"context_line":"        storage_driver \u003d CONF.storage_strategy"},{"line_number":259,"context_line":"        backup_driver \u003d self.get_backup_strategy()"},{"line_number":260,"context_line":"        backup_image \u003d self.get_backup_image()"},{"line_number":261,"context_line":"        ds_version \u003d CONF.datastore_version"},{"line_number":262,"context_line":"        image \u003d (f\u0027{backup_image}:latest\u0027 if not ds_version else"},{"line_number":263,"context_line":"                 f\u0027{backup_image}:{ds_version}\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fb0aa9a6_d8f1e798","line":260,"in_reply_to":"ff56f78d_96b84760","updated":"2023-07-25 02:11:59.000000000","message":"nit: if the operators upgrade the trove to a newer version（include the guest image）","commit_id":"1e849cf29306182942dff9b721f496c8a56be663"}],"trove/guestagent/datastore/service.py":[{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"2c003ab3ad05006fb0cc6987e91f5c764c4c6c0a","unresolved":true,"context_lines":[{"line_number":416,"context_line":"        self.reset_configuration(config_contents)"},{"line_number":417,"context_line":"        self.start_db(update_db\u003dTrue, ds_version\u003dds_version)"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"    def _image_has_tag(self, image):"},{"line_number":420,"context_line":"        \"\"\""},{"line_number":421,"context_line":"        Whether docker_image being config with tag"},{"line_number":422,"context_line":"            \"example.domain:5000/repo/image_name:tag\","}],"source_content_type":"text/x-python","patch_set":10,"id":"b85a3756_531ad21e","line":419,"updated":"2023-07-28 02:15:40.000000000","message":"this should be a static method. and it\u0027s better to add a unit test to test this function.","commit_id":"6456f638852f75c53b25b136bcfa1279ab876a02"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"f8dff801d4a85048e73e265e64b6d43624246c91","unresolved":true,"context_lines":[{"line_number":432,"context_line":"        Returns:"},{"line_number":433,"context_line":"            - True if match"},{"line_number":434,"context_line":"        \"\"\""},{"line_number":435,"context_line":"        if DOKCER_IMAGE_RE.match(image):"},{"line_number":436,"context_line":"            return True"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":13,"id":"41f265a2_8c87b978","line":435,"updated":"2023-07-28 09:54:58.000000000","message":"I think this is a little bit complex here. just return image.split(\u0027/\u0027)[-1].find(\u0027:\u0027) \u003e 0, all the case above can work properly.","commit_id":"e8130b60b4441cba62b7c35409da49590e74c2ee"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"f621baa8f02788714e452df6f13e453b6b0cf8e1","unresolved":true,"context_lines":[{"line_number":432,"context_line":"        Returns:"},{"line_number":433,"context_line":"            - True if match"},{"line_number":434,"context_line":"        \"\"\""},{"line_number":435,"context_line":"        if DOKCER_IMAGE_RE.match(image):"},{"line_number":436,"context_line":"            return True"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":13,"id":"aeecca06_7e0f21ac","line":435,"in_reply_to":"21ae881f_8a82aaa1","updated":"2023-07-31 02:39:44.000000000","message":"\u003e we need add a deprecation release note for as least one cycle in advance\n\nah. ok. I understood.","commit_id":"e8130b60b4441cba62b7c35409da49590e74c2ee"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"5accaa0f1f26218727a1365621c4472e56743651","unresolved":true,"context_lines":[{"line_number":432,"context_line":"        Returns:"},{"line_number":433,"context_line":"            - True if match"},{"line_number":434,"context_line":"        \"\"\""},{"line_number":435,"context_line":"        if DOKCER_IMAGE_RE.match(image):"},{"line_number":436,"context_line":"            return True"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":13,"id":"b27854be_b7d3a0f4","line":435,"in_reply_to":"41f265a2_8c87b978","updated":"2023-07-31 01:33:51.000000000","message":"this like as hard code. we see wrong code, but we don\u0027t remove(fix) it, we doing maintain it, I don\u0027t like that.\nyou shouldn\u0027t do that and always think we need keep old logic, you know it wrong though. I see that you\u0027re working on your feelings.\neach we do upgrade version of something, the change configurations, re-config is required and normal.","commit_id":"e8130b60b4441cba62b7c35409da49590e74c2ee"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"622665e6b68645f6493cfaed6af63d508610c34a","unresolved":true,"context_lines":[{"line_number":432,"context_line":"        Returns:"},{"line_number":433,"context_line":"            - True if match"},{"line_number":434,"context_line":"        \"\"\""},{"line_number":435,"context_line":"        if DOKCER_IMAGE_RE.match(image):"},{"line_number":436,"context_line":"            return True"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":13,"id":"21ae881f_8a82aaa1","line":435,"in_reply_to":"b27854be_b7d3a0f4","updated":"2023-07-31 02:37:34.000000000","message":"if we have to break compatibility, we need add a deprecation release note for as least one cycle in advance,  and add some warning log for cloud administrator. we don\u0027t break compatibility directly, as our downstream may not be aware of this.\nPlease do not break compatibility easily unless there are some significant features.","commit_id":"e8130b60b4441cba62b7c35409da49590e74c2ee"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"f8dff801d4a85048e73e265e64b6d43624246c91","unresolved":true,"context_lines":[{"line_number":441,"context_line":"        image \u003d cfg.get_configuration_property(\u0027backup_docker_image\u0027)"},{"line_number":442,"context_line":"        if not self._image_has_tag(image):"},{"line_number":443,"context_line":"            ds_version \u003d CONF.datastore_version"},{"line_number":444,"context_line":"            image \u003d (f\u0027{image}:latest\u0027 if not ds_version else"},{"line_number":445,"context_line":"                     f\u0027{image}:{ds_version}\u0027)"},{"line_number":446,"context_line":"        return image"},{"line_number":447,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"0d873d19_48fb2a37","line":444,"updated":"2023-07-28 09:54:58.000000000","message":"In which case ds_verion is false?","commit_id":"e8130b60b4441cba62b7c35409da49590e74c2ee"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"5accaa0f1f26218727a1365621c4472e56743651","unresolved":true,"context_lines":[{"line_number":441,"context_line":"        image \u003d cfg.get_configuration_property(\u0027backup_docker_image\u0027)"},{"line_number":442,"context_line":"        if not self._image_has_tag(image):"},{"line_number":443,"context_line":"            ds_version \u003d CONF.datastore_version"},{"line_number":444,"context_line":"            image \u003d (f\u0027{image}:latest\u0027 if not ds_version else"},{"line_number":445,"context_line":"                     f\u0027{image}:{ds_version}\u0027)"},{"line_number":446,"context_line":"        return image"},{"line_number":447,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"d457d68f_af708fd0","line":444,"in_reply_to":"0d873d19_48fb2a37","updated":"2023-07-31 01:33:51.000000000","message":"when anybody change logic of generate to trove-guestagent.conf file.","commit_id":"e8130b60b4441cba62b7c35409da49590e74c2ee"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"622665e6b68645f6493cfaed6af63d508610c34a","unresolved":true,"context_lines":[{"line_number":441,"context_line":"        image \u003d cfg.get_configuration_property(\u0027backup_docker_image\u0027)"},{"line_number":442,"context_line":"        if not self._image_has_tag(image):"},{"line_number":443,"context_line":"            ds_version \u003d CONF.datastore_version"},{"line_number":444,"context_line":"            image \u003d (f\u0027{image}:latest\u0027 if not ds_version else"},{"line_number":445,"context_line":"                     f\u0027{image}:{ds_version}\u0027)"},{"line_number":446,"context_line":"        return image"},{"line_number":447,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"75eea39a_ec754f8d","line":444,"in_reply_to":"d457d68f_af708fd0","updated":"2023-07-31 02:37:34.000000000","message":"ds_version was generated by trove task-manager and was injected to the instance. so we may not need to consider this case.","commit_id":"e8130b60b4441cba62b7c35409da49590e74c2ee"},{"author":{"_account_id":28691,"name":"Bo Tran","email":"ministry.96.nd@gmail.com","username":"ministry"},"change_message_id":"7d4b9af849d4c8d762e7832d240ed36b0973f503","unresolved":true,"context_lines":[{"line_number":416,"context_line":"        self.start_db(update_db\u003dTrue, ds_version\u003dds_version)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"    @staticmethod"},{"line_number":419,"context_line":"    def _image_has_tag(image: str):"},{"line_number":420,"context_line":"        \"\"\""},{"line_number":421,"context_line":"        Whether docker_image being config with tag"},{"line_number":422,"context_line":"            \"example.domain:5000/repo/image_name:tag\","}],"source_content_type":"text/x-python","patch_set":18,"id":"9a6df5df_340025c6","line":419,"range":{"start_line":419,"start_character":22,"end_line":419,"end_character":34},"updated":"2023-09-04 07:06:43.000000000","message":"I think it should be used \u0027image\u0027 (not include type return) as function parameter to sync with old style code.","commit_id":"1c38b03564b5757084d9b0a6859165da830fea35"},{"author":{"_account_id":26285,"name":"wu.chunyang","email":"wchy1001@gmail.com","username":"wu.chunyang"},"change_message_id":"b595b410ccdd9e80836fad800767ac64057b1458","unresolved":false,"context_lines":[{"line_number":416,"context_line":"        self.start_db(update_db\u003dTrue, ds_version\u003dds_version)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"    @staticmethod"},{"line_number":419,"context_line":"    def _image_has_tag(image: str):"},{"line_number":420,"context_line":"        \"\"\""},{"line_number":421,"context_line":"        Whether docker_image being config with tag"},{"line_number":422,"context_line":"            \"example.domain:5000/repo/image_name:tag\","}],"source_content_type":"text/x-python","patch_set":18,"id":"1fe98cac_4029fc08","line":419,"range":{"start_line":419,"start_character":22,"end_line":419,"end_character":34},"in_reply_to":"9a6df5df_340025c6","updated":"2023-09-06 02:55:06.000000000","message":"Done","commit_id":"1c38b03564b5757084d9b0a6859165da830fea35"}]}
