)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"278ba989d7d21ece098cf86f28bd37f7cdd48734","unresolved":false,"context_lines":[{"line_number":14,"context_line":"Bump master (train development) to 19"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I1386c535bc8ff4519e6b0bb879026b05c930b791"},{"line_number":17,"context_line":"Sem-Ver: api-break"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7faddb67_b6dd7842","line":17,"range":{"start_line":17,"start_character":9,"end_line":17,"end_character":18},"updated":"2019-08-14 15:15:44.000000000","message":"wasn\u0027t this supposed to be \"major\"?","commit_id":"b4e3cb65ad2e04f0f5b94dcaf1fa951d01bfb025"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"bb6b0813f1f904917dcde03cb5caaba51e2b7353","unresolved":false,"context_lines":[{"line_number":14,"context_line":"Bump master (train development) to 19"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I1386c535bc8ff4519e6b0bb879026b05c930b791"},{"line_number":17,"context_line":"Sem-Ver: api-break"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7faddb67_228ff32a","line":17,"range":{"start_line":17,"start_character":9,"end_line":17,"end_character":18},"in_reply_to":"7faddb67_56cbe451","updated":"2019-08-15 09:43:15.000000000","message":"yep, unfortunately that seems to be the case and we need to have the api-break flag in the commit message even we\u0027re not breaking any APIs.","commit_id":"b4e3cb65ad2e04f0f5b94dcaf1fa951d01bfb025"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"21150aad80ab43ba5568b45ea87178d85b2c1013","unresolved":false,"context_lines":[{"line_number":14,"context_line":"Bump master (train development) to 19"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I1386c535bc8ff4519e6b0bb879026b05c930b791"},{"line_number":17,"context_line":"Sem-Ver: api-break"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7faddb67_56cbe451","line":17,"range":{"start_line":17,"start_character":9,"end_line":17,"end_character":18},"in_reply_to":"7faddb67_b6dd7842","updated":"2019-08-14 15:22:04.000000000","message":"According to the spec, it looks like api-break is the flag that tells PBR that a major version bump is needed. Check out bullet 9 in the spec here:\n\nhttps://specs.openstack.org/openstack/oslo-specs/specs/juno/pbr-semver.html#new-post-version-rules","commit_id":"b4e3cb65ad2e04f0f5b94dcaf1fa951d01bfb025"}],"glance/db/sqlalchemy/alembic_migrations/data_migrations/train_migrate01_backend_to_store.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"12bc78908e5d4cb341d20b01ab742f382807cf2f","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    \"\"\"Replace \u0027backend\u0027 with \u0027store\u0027 in meta_data column of image_locations\"\"\""},{"line_number":37,"context_line":"    sql_query \u003d (\"UPDATE image_locations SET meta_data \u003d REPLACE(meta_data, \""},{"line_number":38,"context_line":"                 \"\u0027\\\"backend\\\":\u0027, \u0027\\\"store\\\":\u0027) where INSTR(meta_data, \""},{"line_number":39,"context_line":"                 \" \u0027\\\"backend\\\":\u0027) \u003e 0\")"},{"line_number":40,"context_line":"    with engine.connect() as con:"},{"line_number":41,"context_line":"        migrated_rows \u003d con.execute(sql_query)"},{"line_number":42,"context_line":"        return migrated_rows.rowcount"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_cca84a8d","line":39,"updated":"2019-08-05 13:50:54.000000000","message":"My devstack db has this for one of the location meta_data:\n{\"store\": \"three\", \"backend\": \"three\"}\n(probably from testing the lazy-update function).  This will give it:\n{\"store\": \"three\", \"store\": \"three\"}\nwhich I guess is fine as long as the values are the same ... I wonder if we need to worry about this.","commit_id":"5361257dd429d44607870a99c1555b3c24a27d80"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"854e165505521ab084380a6e02c2864f53cd5c71","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    \"\"\"Replace \u0027backend\u0027 with \u0027store\u0027 in meta_data column of image_locations\"\"\""},{"line_number":37,"context_line":"    sql_query \u003d (\"UPDATE image_locations SET meta_data \u003d REPLACE(meta_data, \""},{"line_number":38,"context_line":"                 \"\u0027\\\"backend\\\":\u0027, \u0027\\\"store\\\":\u0027) where INSTR(meta_data, \""},{"line_number":39,"context_line":"                 \" \u0027\\\"backend\\\":\u0027) \u003e 0\")"},{"line_number":40,"context_line":"    with engine.connect() as con:"},{"line_number":41,"context_line":"        migrated_rows \u003d con.execute(sql_query)"},{"line_number":42,"context_line":"        return migrated_rows.rowcount"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_779f964f","line":39,"in_reply_to":"7faddb67_cca84a8d","updated":"2019-08-06 05:50:02.000000000","message":"This will not cause any issue, the reason you endup with this situation is, you created this image before upgrading to store 1.0.0. and after upgrading you end up calling image-list or image-show call which has lazily added store:\u003c\u003e to metadata. As this patch is now dependent on vocabulary correction it will add store instead of backend to metadata.\n\nStandard practice should be, before upgrading to store 1.0.0 we should run migration script.","commit_id":"5361257dd429d44607870a99c1555b3c24a27d80"},{"author":{"_account_id":14107,"name":"zhurong","email":"aaronzhu1121@gmail.com","username":"zhurong"},"change_message_id":"fdb66c1ae913d49e18ca2c463dc5354ea89ea4da","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    are running in the background as it\u0027s being called."},{"line_number":24,"context_line":"    \"\"\""},{"line_number":25,"context_line":"    sql_query \u003d (\"select meta_data from image_locations where \""},{"line_number":26,"context_line":"                 \"INSTR(meta_data, \u0027\\\"backend\\\":\u0027) \u003e 0\")"},{"line_number":27,"context_line":"    with engine.connect() as con:"},{"line_number":28,"context_line":"        metadata_backend \u003d con.execute(sql_query)"},{"line_number":29,"context_line":"        if metadata_backend.rowcount \u003e 0:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_a9285285","line":26,"range":{"start_line":26,"start_character":18,"end_line":26,"end_character":23},"updated":"2019-08-21 09:19:20.000000000","message":"INSTR can not excute under postgresql, it will cause a error.\nThis is mean glance will not support PG?\nMore log message can check here:\nhttps://storage.gra1.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/logs_50/677650/1/check/aodh-dsvm-tempest-plugin-postgresql/5c8492c/logs/devstacklog.txt.gz","commit_id":"b4e3cb65ad2e04f0f5b94dcaf1fa951d01bfb025"}],"glance/tests/functional/db/migrations/test_train_migrate01.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"12bc78908e5d4cb341d20b01ab742f382807cf2f","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"class TestTrainMigrate01_EmptyDBMixin(test_migrations.AlembicMigrationsMixin):"},{"line_number":103,"context_line":"    \"\"\"This mixin is used to create an initial glance database and upgrade it"},{"line_number":104,"context_line":"    up to the ocata_expand01 revision."},{"line_number":105,"context_line":"    \"\"\""},{"line_number":106,"context_line":"    def _get_revisions(self, config):"},{"line_number":107,"context_line":"        return test_migrations.AlembicMigrationsMixin._get_revisions("}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_29f55057","line":104,"range":{"start_line":104,"start_character":14,"end_line":104,"end_character":19},"updated":"2019-08-05 13:50:54.000000000","message":"s/ocata/train/","commit_id":"5361257dd429d44607870a99c1555b3c24a27d80"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"854e165505521ab084380a6e02c2864f53cd5c71","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"class TestTrainMigrate01_EmptyDBMixin(test_migrations.AlembicMigrationsMixin):"},{"line_number":103,"context_line":"    \"\"\"This mixin is used to create an initial glance database and upgrade it"},{"line_number":104,"context_line":"    up to the ocata_expand01 revision."},{"line_number":105,"context_line":"    \"\"\""},{"line_number":106,"context_line":"    def _get_revisions(self, config):"},{"line_number":107,"context_line":"        return test_migrations.AlembicMigrationsMixin._get_revisions("}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_57dcdae2","line":104,"range":{"start_line":104,"start_character":14,"end_line":104,"end_character":19},"in_reply_to":"7faddb67_29f55057","updated":"2019-08-06 05:50:02.000000000","message":"Done","commit_id":"5361257dd429d44607870a99c1555b3c24a27d80"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"12bc78908e5d4cb341d20b01ab742f382807cf2f","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"class TestTrainMigrate01_EmptyDBMySQL(TestTrainMigrate01_EmptyDBMixin,"},{"line_number":129,"context_line":"                                      test_base.MySQLOpportunisticTestCase):"},{"line_number":130,"context_line":"    \"\"\"This test runs the Ocata data migrations on an empty databse.\"\"\""},{"line_number":131,"context_line":"    pass"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_c9e7dcab","line":130,"range":{"start_line":130,"start_character":26,"end_line":130,"end_character":31},"updated":"2019-08-05 13:50:54.000000000","message":"Train","commit_id":"5361257dd429d44607870a99c1555b3c24a27d80"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"854e165505521ab084380a6e02c2864f53cd5c71","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"class TestTrainMigrate01_EmptyDBMySQL(TestTrainMigrate01_EmptyDBMixin,"},{"line_number":129,"context_line":"                                      test_base.MySQLOpportunisticTestCase):"},{"line_number":130,"context_line":"    \"\"\"This test runs the Ocata data migrations on an empty databse.\"\"\""},{"line_number":131,"context_line":"    pass"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_77d796c0","line":130,"range":{"start_line":130,"start_character":26,"end_line":130,"end_character":31},"in_reply_to":"7faddb67_c9e7dcab","updated":"2019-08-06 05:50:02.000000000","message":"Done","commit_id":"5361257dd429d44607870a99c1555b3c24a27d80"}]}
