)]}'
{"monasca_api/common/repositories/sqla/models.py":[{"author":{"_account_id":26702,"name":"Nicolas Seyvet","email":"nseyvet@op5.com","username":"nseyvet"},"change_message_id":"f87da2b26a2b6fda3b895e5a733166bbc0c5d930","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":"    metadata \u003d MetaData()"},{"line_number":40,"context_line":"    create_a_model(metadata)"},{"line_number":41,"context_line":"    create_aa_model(metadata)"},{"line_number":42,"context_line":"    create_ad_model(metadata)"},{"line_number":43,"context_line":"    create_am_model(metadata)"},{"line_number":44,"context_line":"    create_nm_model(metadata)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_e1869066","line":41,"updated":"2018-04-24 14:21:01.000000000","message":"What is the difference between create_a_model and create_aa_model? Could the name be more specific to which model this function is for?","commit_id":"0458b63ebddee9b9e7755e88d289aef74dd813ed"},{"author":{"_account_id":12542,"name":"Johannes Grassler","email":"jgr-launchpad@btw23.de","username":"jgrassler"},"change_message_id":"ba2aa23e5c4343c11ba0652f08d0b6e8c6dece3b","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    \"\"\""},{"line_number":39,"context_line":"    metadata \u003d MetaData()"},{"line_number":40,"context_line":"    create_a_model(metadata)"},{"line_number":41,"context_line":"    create_aa_model(metadata)"},{"line_number":42,"context_line":"    create_ad_model(metadata)"},{"line_number":43,"context_line":"    create_am_model(metadata)"},{"line_number":44,"context_line":"    create_nm_model(metadata)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_7436a553","line":41,"in_reply_to":"9f6a8fd7_e1869066","updated":"2018-04-25 13:13:32.000000000","message":"It certainly could be, but I didn\u0027t create these methods, I merely call them (they are defined below my code). Given how long some of the table names themselves are, the method names would become rather unwieldy...","commit_id":"0458b63ebddee9b9e7755e88d289aef74dd813ed"}],"monasca_api/db/alembic.ini":[{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"7d35e2bd7505845c8ac5ba7bc64b85a1a0bac71a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# A generic, single database configuration."},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"[alembic]"},{"line_number":4,"context_line":"# path to migration scripts"}],"source_content_type":"text/x-properties","patch_set":4,"id":"9f6a8fd7_04ba49dd","line":1,"updated":"2018-04-30 10:53:00.000000000","message":"I noticed Neutron puts this in a migration sub-folder. Should we structure this in a similar way Eg.\n\nhttps://github.com/openstack/neutron/blob/master/neutron/db/migration/alembic.ini","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"},{"author":{"_account_id":12542,"name":"Johannes Grassler","email":"jgr-launchpad@btw23.de","username":"jgrassler"},"change_message_id":"a701b6b9bee4faf2aeaf122992b37bd9a7e8f143","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# A generic, single database configuration."},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"[alembic]"},{"line_number":4,"context_line":"# path to migration scripts"}],"source_content_type":"text/x-properties","patch_set":4,"id":"9f6a8fd7_d87160e0","line":1,"in_reply_to":"9f6a8fd7_04ba49dd","updated":"2018-05-02 15:42:25.000000000","message":"I think in our case it\u0027s ok like this - we didn\u0027t have a `db` module at all before we introduced this and I\u0027d rather keep the module name short than needlessly introduce another module. We keep the remaining database stuff in common.repositories anyway, so there\u0027s no overlap anyway.","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"7d35e2bd7505845c8ac5ba7bc64b85a1a0bac71a","unresolved":false,"context_lines":[{"line_number":35,"context_line":"# are written from script.py.mako"},{"line_number":36,"context_line":"# output_encoding \u003d utf-8"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"# sqlalchemy.url \u003d driver://user:pass@localhost/dbname"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"# Logging configuration"}],"source_content_type":"text/x-properties","patch_set":4,"id":"9f6a8fd7_242d0d46","line":38,"range":{"start_line":38,"start_character":2,"end_line":38,"end_character":16},"updated":"2018-04-30 10:53:00.000000000","message":"Will this be set via a Monasca config file?","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"},{"author":{"_account_id":12542,"name":"Johannes Grassler","email":"jgr-launchpad@btw23.de","username":"jgrassler"},"change_message_id":"a701b6b9bee4faf2aeaf122992b37bd9a7e8f143","unresolved":false,"context_lines":[{"line_number":35,"context_line":"# are written from script.py.mako"},{"line_number":36,"context_line":"# output_encoding \u003d utf-8"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"# sqlalchemy.url \u003d driver://user:pass@localhost/dbname"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"# Logging configuration"}],"source_content_type":"text/x-properties","patch_set":4,"id":"9f6a8fd7_9829a89c","line":38,"range":{"start_line":38,"start_character":2,"end_line":38,"end_character":16},"in_reply_to":"9f6a8fd7_242d0d46","updated":"2018-05-02 15:42:25.000000000","message":"Yes. env.py draws this from the regular Monasca configuration file. Any setting we hardcode here would be nonsensical anyway.","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"}],"monasca_api/db/alembic/README":[{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"7d35e2bd7505845c8ac5ba7bc64b85a1a0bac71a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Generic single-database configuration."}],"source_content_type":"application/octet-stream","patch_set":4,"id":"9f6a8fd7_e4a95590","line":1,"range":{"start_line":1,"start_character":37,"end_line":1,"end_character":38},"updated":"2018-04-30 10:53:00.000000000","message":"It would be great if we could add a little more here.","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"},{"author":{"_account_id":12542,"name":"Johannes Grassler","email":"jgr-launchpad@btw23.de","username":"jgrassler"},"change_message_id":"a701b6b9bee4faf2aeaf122992b37bd9a7e8f143","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Generic single-database configuration."}],"source_content_type":"application/octet-stream","patch_set":4,"id":"9f6a8fd7_1317bb53","line":1,"range":{"start_line":1,"start_character":37,"end_line":1,"end_character":38},"in_reply_to":"9f6a8fd7_e4a95590","updated":"2018-05-02 15:42:25.000000000","message":"Indeed. Done :-)\n\nAlso, I moved it up to the db/ directory since that\u0027s where `alembic revision` needs to be run.","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"}],"monasca_api/db/alembic/env.py":[{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"7d35e2bd7505845c8ac5ba7bc64b85a1a0bac71a","unresolved":false,"context_lines":[{"line_number":49,"context_line":"# This line sets up loggers basically."},{"line_number":50,"context_line":"fileConfig(config.config_file_name)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"# add your model\u0027s MetaData object here"},{"line_number":53,"context_line":"# for \u0027autogenerate\u0027 support"},{"line_number":54,"context_line":"# from myapp import mymodel"},{"line_number":55,"context_line":"# target_metadata \u003d mymodel.Base.metadata"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_c43a1133","line":52,"range":{"start_line":52,"start_character":2,"end_line":52,"end_character":5},"updated":"2018-04-30 10:53:00.000000000","message":"Should we remove these comments?","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"},{"author":{"_account_id":12542,"name":"Johannes Grassler","email":"jgr-launchpad@btw23.de","username":"jgrassler"},"change_message_id":"a701b6b9bee4faf2aeaf122992b37bd9a7e8f143","unresolved":false,"context_lines":[{"line_number":49,"context_line":"# This line sets up loggers basically."},{"line_number":50,"context_line":"fileConfig(config.config_file_name)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"# add your model\u0027s MetaData object here"},{"line_number":53,"context_line":"# for \u0027autogenerate\u0027 support"},{"line_number":54,"context_line":"# from myapp import mymodel"},{"line_number":55,"context_line":"# target_metadata \u003d mymodel.Base.metadata"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_ee21fea0","line":52,"range":{"start_line":52,"start_character":2,"end_line":52,"end_character":5},"in_reply_to":"9f6a8fd7_c43a1133","updated":"2018-05-02 15:42:25.000000000","message":"Some of them, yes. I removed the nonsensical ones now.","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"}],"monasca_api/db/alembic/versions/00597b5c8325_initial.py":[{"author":{"_account_id":26702,"name":"Nicolas Seyvet","email":"nseyvet@op5.com","username":"nseyvet"},"change_message_id":"f87da2b26a2b6fda3b895e5a733166bbc0c5d930","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                    {\u0027name\u0027: \u0027EXPIRE\u0027}])"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    op.create_table("},{"line_number":93,"context_line":"        \u0027alarm_definition\u0027,"},{"line_number":94,"context_line":"        sa.Column(\u0027id\u0027,"},{"line_number":95,"context_line":"                  sa.String(length\u003d36),"},{"line_number":96,"context_line":"                  nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_e1a3f0b0","line":93,"range":{"start_line":93,"start_character":8,"end_line":93,"end_character":27},"updated":"2018-04-24 14:21:01.000000000","message":"It is difficult to read how many tables are created. Most of the fields names and tables names are defined inline as Strings.  Could those be separated in Constants or a Dictionary for example so as to highlight better the list of tables, and respective columns?","commit_id":"0458b63ebddee9b9e7755e88d289aef74dd813ed"},{"author":{"_account_id":12542,"name":"Johannes Grassler","email":"jgr-launchpad@btw23.de","username":"jgrassler"},"change_message_id":"ba2aa23e5c4343c11ba0652f08d0b6e8c6dece3b","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                    {\u0027name\u0027: \u0027EXPIRE\u0027}])"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    op.create_table("},{"line_number":93,"context_line":"        \u0027alarm_definition\u0027,"},{"line_number":94,"context_line":"        sa.Column(\u0027id\u0027,"},{"line_number":95,"context_line":"                  sa.String(length\u003d36),"},{"line_number":96,"context_line":"                  nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f6a8fd7_147969c6","line":93,"range":{"start_line":93,"start_character":8,"end_line":93,"end_character":27},"in_reply_to":"9f6a8fd7_e1a3f0b0","updated":"2018-04-25 13:13:32.000000000","message":"It would be possible to separate some things out, but then it would be even harder to read since you\u0027d need to scroll back and forth a lot to find all the information being used for a table.\n\nFor a quick overview of what is being created you can either grep the file for create_table or look at the `downgrade()` methods where all the tables being created are simply being dropped (since `downgrade()` performs the opposite operation of the migration in question).","commit_id":"0458b63ebddee9b9e7755e88d289aef74dd813ed"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"7d35e2bd7505845c8ac5ba7bc64b85a1a0bac71a","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                    {\u0027name\u0027: \u0027PAGERDUTY\u0027}])"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    stream_action_types \u003d op.create_table("},{"line_number":80,"context_line":"        \u0027stream_actions_action_type\u0027,"},{"line_number":81,"context_line":"        sa.Column(\u0027name\u0027,"},{"line_number":82,"context_line":"                  sa.String(length\u003d20),"},{"line_number":83,"context_line":"                  nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_4435a1f6","line":80,"range":{"start_line":80,"start_character":26,"end_line":80,"end_character":37},"updated":"2018-04-30 10:53:00.000000000","message":"Where\u0027s this one coming from? I don\u0027t see it in the devstack file:\n\nhttps://github.com/openstack/monasca-api/blob/master/devstack/files/schema/mon_mysql.sql","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"},{"author":{"_account_id":12542,"name":"Johannes Grassler","email":"jgr-launchpad@btw23.de","username":"jgrassler"},"change_message_id":"a701b6b9bee4faf2aeaf122992b37bd9a7e8f143","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                    {\u0027name\u0027: \u0027PAGERDUTY\u0027}])"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    stream_action_types \u003d op.create_table("},{"line_number":80,"context_line":"        \u0027stream_actions_action_type\u0027,"},{"line_number":81,"context_line":"        sa.Column(\u0027name\u0027,"},{"line_number":82,"context_line":"                  sa.String(length\u003d20),"},{"line_number":83,"context_line":"                  nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_2e37f6b2","line":80,"range":{"start_line":80,"start_character":26,"end_line":80,"end_character":37},"in_reply_to":"9f6a8fd7_4435a1f6","updated":"2018-05-02 15:42:25.000000000","message":"Yes. It\u0027s not in `master`. This migration is a migration for the SQL script as found in git revision 00597b5c8325664c2c534625525f59232d243d66 (see comment at the top). The idea behind this is having a dedicated migration for the changes introduced by every git revision. That way we can stamp the current in-database schema with the alembic revision for the git revision it was created from and proceed incrementally with regular migrations from that point onward.","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"7d35e2bd7505845c8ac5ba7bc64b85a1a0bac71a","unresolved":false,"context_lines":[{"line_number":363,"context_line":"        sa.Column(\u0027threshold\u0027,"},{"line_number":364,"context_line":"                  sa.dialects.mysql.DOUBLE(),"},{"line_number":365,"context_line":"                  nullable\u003dFalse),"},{"line_number":366,"context_line":"        sa.Column(\u0027period\u0027,"},{"line_number":367,"context_line":"                  sa.Integer(),"},{"line_number":368,"context_line":"                  nullable\u003dFalse),"},{"line_number":369,"context_line":"        sa.Column(\u0027periods\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_27e8af14","line":366,"updated":"2018-04-30 10:53:00.000000000","message":"Do we want this to be displayed with 11 digits or is that not supported?\nhttps://github.com/openstack/monasca-api/blob/master/devstack/files/schema/mon_mysql.sql#L150","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"},{"author":{"_account_id":12542,"name":"Johannes Grassler","email":"jgr-launchpad@btw23.de","username":"jgrassler"},"change_message_id":"a701b6b9bee4faf2aeaf122992b37bd9a7e8f143","unresolved":false,"context_lines":[{"line_number":363,"context_line":"        sa.Column(\u0027threshold\u0027,"},{"line_number":364,"context_line":"                  sa.dialects.mysql.DOUBLE(),"},{"line_number":365,"context_line":"                  nullable\u003dFalse),"},{"line_number":366,"context_line":"        sa.Column(\u0027period\u0027,"},{"line_number":367,"context_line":"                  sa.Integer(),"},{"line_number":368,"context_line":"                  nullable\u003dFalse),"},{"line_number":369,"context_line":"        sa.Column(\u0027periods\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_ae21c64f","line":366,"in_reply_to":"9f6a8fd7_27e8af14","updated":"2018-05-02 15:42:25.000000000","message":"For me it worked out to 11 digits without specifying it explicitly - at least that\u0027s what I got when I ran the migration.","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"7d35e2bd7505845c8ac5ba7bc64b85a1a0bac71a","unresolved":false,"context_lines":[{"line_number":366,"context_line":"        sa.Column(\u0027period\u0027,"},{"line_number":367,"context_line":"                  sa.Integer(),"},{"line_number":368,"context_line":"                  nullable\u003dFalse),"},{"line_number":369,"context_line":"        sa.Column(\u0027periods\u0027,"},{"line_number":370,"context_line":"                  sa.Integer(),"},{"line_number":371,"context_line":"                  nullable\u003dFalse),"},{"line_number":372,"context_line":"        sa.Column(\u0027created_at\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_47eda323","line":369,"range":{"start_line":369,"start_character":19,"end_line":369,"end_character":26},"updated":"2018-04-30 10:53:00.000000000","message":"Same as above.","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"},{"author":{"_account_id":12542,"name":"Johannes Grassler","email":"jgr-launchpad@btw23.de","username":"jgrassler"},"change_message_id":"a701b6b9bee4faf2aeaf122992b37bd9a7e8f143","unresolved":false,"context_lines":[{"line_number":366,"context_line":"        sa.Column(\u0027period\u0027,"},{"line_number":367,"context_line":"                  sa.Integer(),"},{"line_number":368,"context_line":"                  nullable\u003dFalse),"},{"line_number":369,"context_line":"        sa.Column(\u0027periods\u0027,"},{"line_number":370,"context_line":"                  sa.Integer(),"},{"line_number":371,"context_line":"                  nullable\u003dFalse),"},{"line_number":372,"context_line":"        sa.Column(\u0027created_at\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_2ed3763a","line":369,"range":{"start_line":369,"start_character":19,"end_line":369,"end_character":26},"in_reply_to":"9f6a8fd7_47eda323","updated":"2018-05-02 15:42:25.000000000","message":"Same here, see previous comment.","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"7d35e2bd7505845c8ac5ba7bc64b85a1a0bac71a","unresolved":false,"context_lines":[{"line_number":369,"context_line":"        sa.Column(\u0027periods\u0027,"},{"line_number":370,"context_line":"                  sa.Integer(),"},{"line_number":371,"context_line":"                  nullable\u003dFalse),"},{"line_number":372,"context_line":"        sa.Column(\u0027created_at\u0027,"},{"line_number":373,"context_line":"                  sa.DateTime(),"},{"line_number":374,"context_line":"                  nullable\u003dFalse),"},{"line_number":375,"context_line":"        sa.Column(\u0027updated_at\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_87b41b37","line":372,"range":{"start_line":372,"start_character":17,"end_line":372,"end_character":19},"updated":"2018-04-30 10:53:00.000000000","message":"Looks like we\u0027re missing `is_deterministic`?  https://github.com/openstack/monasca-api/blob/master/devstack/files/schema/mon_mysql.sql#L152\n\n\nEdit: Ah - I see. This is defined in an upgrade.","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"7d35e2bd7505845c8ac5ba7bc64b85a1a0bac71a","unresolved":false,"context_lines":[{"line_number":383,"context_line":"        \u0027sub_alarm_definition_dimension\u0027,"},{"line_number":384,"context_line":"        sa.Column(\u0027sub_alarm_definition_id\u0027,"},{"line_number":385,"context_line":"                  sa.String(length\u003d36),"},{"line_number":386,"context_line":"                  sa.ForeignKey(\u0027sub_alarm_definition.id\u0027, ondelete\u003d\u0027CASCADE\u0027,"},{"line_number":387,"context_line":"                                name\u003d\u0027fk_sub_alarm_definition_dimension\u0027),"},{"line_number":388,"context_line":"                  nullable\u003dFalse,"},{"line_number":389,"context_line":"                  server_default\u003d\u0027\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_67bea700","line":386,"range":{"start_line":386,"start_character":21,"end_line":386,"end_character":31},"updated":"2018-04-30 10:53:00.000000000","message":"We don\u0027t need to specify that this references `sub_alarm_definition`?\n\nhttps://github.com/openstack/monasca-api/blob/master/devstack/files/schema/mon_mysql.sql#L164","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"},{"author":{"_account_id":12542,"name":"Johannes Grassler","email":"jgr-launchpad@btw23.de","username":"jgrassler"},"change_message_id":"a701b6b9bee4faf2aeaf122992b37bd9a7e8f143","unresolved":false,"context_lines":[{"line_number":383,"context_line":"        \u0027sub_alarm_definition_dimension\u0027,"},{"line_number":384,"context_line":"        sa.Column(\u0027sub_alarm_definition_id\u0027,"},{"line_number":385,"context_line":"                  sa.String(length\u003d36),"},{"line_number":386,"context_line":"                  sa.ForeignKey(\u0027sub_alarm_definition.id\u0027, ondelete\u003d\u0027CASCADE\u0027,"},{"line_number":387,"context_line":"                                name\u003d\u0027fk_sub_alarm_definition_dimension\u0027),"},{"line_number":388,"context_line":"                  nullable\u003dFalse,"},{"line_number":389,"context_line":"                  server_default\u003d\u0027\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_cee19afe","line":386,"range":{"start_line":386,"start_character":21,"end_line":386,"end_character":31},"in_reply_to":"9f6a8fd7_67bea700","updated":"2018-05-02 15:42:25.000000000","message":"We do. That\u0027s what the first argument (\u0027sub_alarm_definition.id\u0027 aka \u0027\u003ctarget table name\u003e.\u003ccolumn name\u003e\u0027) is for.","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"d71ce0006216522ee6e9ded3ddcef66aae75cd40","unresolved":false,"context_lines":[{"line_number":383,"context_line":"        \u0027sub_alarm_definition_dimension\u0027,"},{"line_number":384,"context_line":"        sa.Column(\u0027sub_alarm_definition_id\u0027,"},{"line_number":385,"context_line":"                  sa.String(length\u003d36),"},{"line_number":386,"context_line":"                  sa.ForeignKey(\u0027sub_alarm_definition.id\u0027, ondelete\u003d\u0027CASCADE\u0027,"},{"line_number":387,"context_line":"                                name\u003d\u0027fk_sub_alarm_definition_dimension\u0027),"},{"line_number":388,"context_line":"                  nullable\u003dFalse,"},{"line_number":389,"context_line":"                  server_default\u003d\u0027\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_ad3b0bc6","line":386,"range":{"start_line":386,"start_character":21,"end_line":386,"end_character":31},"in_reply_to":"9f6a8fd7_cee19afe","updated":"2018-05-02 16:11:49.000000000","message":"Got it, thanks!","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"7d35e2bd7505845c8ac5ba7bc64b85a1a0bac71a","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                  nullable\u003dFalse),"},{"line_number":407,"context_line":"        sa.Column(\u0027alarm_id\u0027,"},{"line_number":408,"context_line":"                  sa.dialects.mysql.VARCHAR(length\u003d36, charset\u003d\u0027utf8mb4\u0027,"},{"line_number":409,"context_line":"                                            collation\u003d\u0027utf8mb4_unicode_ci\u0027),"},{"line_number":410,"context_line":"                  sa.ForeignKey(\u0027alarm.id\u0027, ondelete\u003d\u0027CASCADE\u0027,"},{"line_number":411,"context_line":"                                name\u003d\u0027fk_sub_alarm\u0027),"},{"line_number":412,"context_line":"                  nullable\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_a7727f7b","line":409,"range":{"start_line":409,"start_character":55,"end_line":409,"end_character":73},"updated":"2018-04-30 10:53:00.000000000","message":"It looks like in other tables you rely on the default charset and collate settings, but here they are explicit. Is there a reason for that?","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"},{"author":{"_account_id":12542,"name":"Johannes Grassler","email":"jgr-launchpad@btw23.de","username":"jgrassler"},"change_message_id":"a701b6b9bee4faf2aeaf122992b37bd9a7e8f143","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                  nullable\u003dFalse),"},{"line_number":407,"context_line":"        sa.Column(\u0027alarm_id\u0027,"},{"line_number":408,"context_line":"                  sa.dialects.mysql.VARCHAR(length\u003d36, charset\u003d\u0027utf8mb4\u0027,"},{"line_number":409,"context_line":"                                            collation\u003d\u0027utf8mb4_unicode_ci\u0027),"},{"line_number":410,"context_line":"                  sa.ForeignKey(\u0027alarm.id\u0027, ondelete\u003d\u0027CASCADE\u0027,"},{"line_number":411,"context_line":"                                name\u003d\u0027fk_sub_alarm\u0027),"},{"line_number":412,"context_line":"                  nullable\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_ae946645","line":409,"range":{"start_line":409,"start_character":55,"end_line":409,"end_character":73},"in_reply_to":"9f6a8fd7_a7727f7b","updated":"2018-05-02 15:42:25.000000000","message":"Yes, the SQL script schema being a bit inconsistent as well in that regard :-/\n\nTake a close look at the SQL script schema - it\u0027s got a default charset of latin1 for this table and a explicit UTF8 charset for all fields...\n\nSo this is the \"I wanted to match the SQL script as closely as possible\" thing I mentioned earlier. To later resolve these inconsistencies cleanly with a migration we need to make sure every database out in the field (both the ones fully created by migrations and the ones created by applying the legacy schema) have exactly the same inconsistencies.","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"7d35e2bd7505845c8ac5ba7bc64b85a1a0bac71a","unresolved":false,"context_lines":[{"line_number":428,"context_line":"        sa.Column(\u0027updated_at\u0027,"},{"line_number":429,"context_line":"                  sa.DateTime(),"},{"line_number":430,"context_line":"                  nullable\u003dFalse),"},{"line_number":431,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":432,"context_line":"        mysql_charset\u003d\u0027latin1\u0027)"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"    op.create_table("}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_07456b17","line":431,"updated":"2018-04-30 10:53:00.000000000","message":"Looks like we are missing `state`?\n\nhttps://github.com/openstack/monasca-api/blob/master/devstack/files/schema/mon_mysql.sql#L174\n\nEdit: I see this is added in an upgrade.","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"7d35e2bd7505845c8ac5ba7bc64b85a1a0bac71a","unresolved":false,"context_lines":[{"line_number":440,"context_line":"        mysql_charset\u003d\u0027latin1\u0027)"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"    op.create_table("},{"line_number":443,"context_line":"        \u0027stream_definition\u0027,"},{"line_number":444,"context_line":"        sa.Column(\u0027id\u0027,"},{"line_number":445,"context_line":"                  sa.String(length\u003d36),"},{"line_number":446,"context_line":"                  nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_671a2718","line":443,"range":{"start_line":443,"start_character":9,"end_line":443,"end_character":26},"updated":"2018-04-30 10:53:00.000000000","message":"Can\u0027t see this in the devstack schema, is this created by the events API or is there another schema somewhere I\u0027m missing?","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"},{"author":{"_account_id":12542,"name":"Johannes Grassler","email":"jgr-launchpad@btw23.de","username":"jgrassler"},"change_message_id":"a701b6b9bee4faf2aeaf122992b37bd9a7e8f143","unresolved":false,"context_lines":[{"line_number":440,"context_line":"        mysql_charset\u003d\u0027latin1\u0027)"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"    op.create_table("},{"line_number":443,"context_line":"        \u0027stream_definition\u0027,"},{"line_number":444,"context_line":"        sa.Column(\u0027id\u0027,"},{"line_number":445,"context_line":"                  sa.String(length\u003d36),"},{"line_number":446,"context_line":"                  nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_4e7caaea","line":443,"range":{"start_line":443,"start_character":9,"end_line":443,"end_character":26},"in_reply_to":"9f6a8fd7_671a2718","updated":"2018-05-02 15:42:25.000000000","message":"It has been removed (git revisions 30181b42434bdde0c40abd086e903600b24e9684 and d8b80149885016ede0ee403cf9bb07f9b7253297 - we\u0027ve got alembic migrations for both of these) but it was present in the initial revision of the SQL script.","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"7d35e2bd7505845c8ac5ba7bc64b85a1a0bac71a","unresolved":false,"context_lines":[{"line_number":573,"context_line":"    op.delete_table(\u0027alarm_definition_severity\u0027)"},{"line_number":574,"context_line":"    op.delete_table(\u0027notification_method_type\u0027)"},{"line_number":575,"context_line":"    op.delete_table(\u0027stream_actions_action_type\u0027)"},{"line_number":576,"context_line":"    op.delete_table(\u0027alarm\u0027)"},{"line_number":577,"context_line":"    op.delete_table(\u0027alarm_action\u0027)"},{"line_number":578,"context_line":"    op.delete_table(\u0027alarm_definition\u0027)"},{"line_number":579,"context_line":"    op.delete_table(\u0027alarm_metric\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_e7e5d7dd","line":576,"updated":"2018-04-30 10:53:00.000000000","message":"femtonit: Doesn\u0027t match the order of creation above.","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"},{"author":{"_account_id":12542,"name":"Johannes Grassler","email":"jgr-launchpad@btw23.de","username":"jgrassler"},"change_message_id":"a701b6b9bee4faf2aeaf122992b37bd9a7e8f143","unresolved":false,"context_lines":[{"line_number":573,"context_line":"    op.delete_table(\u0027alarm_definition_severity\u0027)"},{"line_number":574,"context_line":"    op.delete_table(\u0027notification_method_type\u0027)"},{"line_number":575,"context_line":"    op.delete_table(\u0027stream_actions_action_type\u0027)"},{"line_number":576,"context_line":"    op.delete_table(\u0027alarm\u0027)"},{"line_number":577,"context_line":"    op.delete_table(\u0027alarm_action\u0027)"},{"line_number":578,"context_line":"    op.delete_table(\u0027alarm_definition\u0027)"},{"line_number":579,"context_line":"    op.delete_table(\u0027alarm_metric\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_6ee40ead","line":576,"in_reply_to":"9f6a8fd7_e7e5d7dd","updated":"2018-05-02 15:42:25.000000000","message":"Now \"femtonit\" is a nice term :-)\n\nAlso, it should be `drop_table()` not `delete_table()`. Fixed that now.","commit_id":"6b6d43d1549e06543900331ccea693752fe52984"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"e45a6eb280c287103ebe9b6287ad7482ea227071","unresolved":false,"context_lines":[{"line_number":429,"context_line":"                  sa.DateTime(),"},{"line_number":430,"context_line":"                  nullable\u003dFalse),"},{"line_number":431,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":432,"context_line":"        mysql_charset\u003d\u0027latin1\u0027)"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"    op.create_table("},{"line_number":435,"context_line":"        \u0027schema_migrations\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_d2bf2a5e","line":432,"range":{"start_line":432,"start_character":23,"end_line":432,"end_character":29},"updated":"2018-06-06 14:43:44.000000000","message":"Nit: The default database charset is \u0027utf8\u0027.","commit_id":"01348b3a5e97e40eb9b1e644a5b318e69bfb76a1"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"b04c1cbdc74ddde0789f649954f6a0649fd44a1d","unresolved":false,"context_lines":[{"line_number":429,"context_line":"                  sa.DateTime(),"},{"line_number":430,"context_line":"                  nullable\u003dFalse),"},{"line_number":431,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":432,"context_line":"        mysql_charset\u003d\u0027latin1\u0027)"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"    op.create_table("},{"line_number":435,"context_line":"        \u0027schema_migrations\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_8af7165a","line":432,"range":{"start_line":432,"start_character":23,"end_line":432,"end_character":29},"in_reply_to":"5f7c97a3_3bb41bd1","updated":"2018-06-07 15:53:50.000000000","message":"Here the result of diff for \u0027sub_alarm\u0027 table schema between current devstack and `alembic upgrade head` http://paste.openstack.org/show/722905/\n\nAre you sure that initial database has \u0027latin1\u0027?\nhttps://git.openstack.org/cgit/openstack/monasca-api/tree/devstack/files/schema/mon_mysql.sql?id\u003d00597b5c8325664c2c534625525f59232d243d66#n20","commit_id":"01348b3a5e97e40eb9b1e644a5b318e69bfb76a1"},{"author":{"_account_id":12542,"name":"Johannes Grassler","email":"jgr-launchpad@btw23.de","username":"jgrassler"},"change_message_id":"a56a5219d31b2a181f3cfa34c5d3e782f2810859","unresolved":false,"context_lines":[{"line_number":429,"context_line":"                  sa.DateTime(),"},{"line_number":430,"context_line":"                  nullable\u003dFalse),"},{"line_number":431,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":432,"context_line":"        mysql_charset\u003d\u0027latin1\u0027)"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"    op.create_table("},{"line_number":435,"context_line":"        \u0027schema_migrations\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_ad546c55","line":432,"range":{"start_line":432,"start_character":23,"end_line":432,"end_character":29},"in_reply_to":"5f7c97a3_8af7165a","updated":"2018-06-07 16:19:51.000000000","message":"Well...it\u0027s unspecified, so it\u0027ll end up being whatever the system default is, which appears to be latin1 on my Devstack instance. For now I removed the ALTER command that explicitly sets utf8 plus collation from 0cce983d957a_deterministic_alarms.py for that much is definitely wrong.\n\nI\u0027ll need to give this some more thought, but I think it\u0027s best to just leave the bits where the schema leaves it up to the system default alone. In that case, I\u0027ll also need to go through all the migrations with a fine comb and check whether I\u0027m setting latin1 explicitly anywhere it actually creeps in via system default.\n\nI\u0027ll give this a little more thought tomorrow.","commit_id":"01348b3a5e97e40eb9b1e644a5b318e69bfb76a1"},{"author":{"_account_id":12542,"name":"Johannes Grassler","email":"jgr-launchpad@btw23.de","username":"jgrassler"},"change_message_id":"ee5f6a89e2d473799a230344a45b1fab6d0d2050","unresolved":false,"context_lines":[{"line_number":429,"context_line":"                  sa.DateTime(),"},{"line_number":430,"context_line":"                  nullable\u003dFalse),"},{"line_number":431,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":432,"context_line":"        mysql_charset\u003d\u0027latin1\u0027)"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"    op.create_table("},{"line_number":435,"context_line":"        \u0027schema_migrations\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_3bb41bd1","line":432,"range":{"start_line":432,"start_character":23,"end_line":432,"end_character":29},"in_reply_to":"5f7c97a3_d2bf2a5e","updated":"2018-06-07 14:22:50.000000000","message":"Weird. That shouldn\u0027t happen anymore as of revision 0cce983d957a which performs the conversion (in the initial schema revision it\u0027s latin1). I\u0027ll try to figure out why exactly\n\n```\n    conn.execute(\n        sa.sql.text(\n            \u0027ALTER table sub_alarm CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci\u0027))\n\n```\n\ndoesn\u0027t work...","commit_id":"01348b3a5e97e40eb9b1e644a5b318e69bfb76a1"}]}
