)]}'
{"ceilometer/storage/sqlalchemy/models.py":[{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"1e50ecc8d0866517e87f2cd77ba8359cd5d65a0c","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    user_id \u003d Column(String(255), ForeignKey(\u0027user.id\u0027))"},{"line_number":128,"context_line":"    project_id \u003d Column(String(255), ForeignKey(\u0027project.id\u0027))"},{"line_number":129,"context_line":"    resource_id \u003d Column(String(255), ForeignKey(\u0027resource.id\u0027))"},{"line_number":130,"context_line":"    resource_metadata \u003d Column(JSONEncodedDict(5000))"},{"line_number":131,"context_line":"    counter_type \u003d Column(String(255))"},{"line_number":132,"context_line":"    counter_unit \u003d Column(String(255))"},{"line_number":133,"context_line":"    counter_volume \u003d Column(Float(53))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2F2HA%3D","line":130,"updated":"2013-07-22 08:22:36.000000000","message":"Is there any special reason to chose 5000? What\u0027s the problem with the original VARCHAR JSONEncodedDict?","commit_id":"4962f83681b26e8209ef4613ea60cb11bfe64762"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"58e1089b9bcdf2f7f191f2871eaf8065da81578f","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    user_id \u003d Column(String(255), ForeignKey(\u0027user.id\u0027))"},{"line_number":128,"context_line":"    project_id \u003d Column(String(255), ForeignKey(\u0027project.id\u0027))"},{"line_number":129,"context_line":"    resource_id \u003d Column(String(255), ForeignKey(\u0027resource.id\u0027))"},{"line_number":130,"context_line":"    resource_metadata \u003d Column(JSONEncodedDict(5000))"},{"line_number":131,"context_line":"    counter_type \u003d Column(String(255))"},{"line_number":132,"context_line":"    counter_unit \u003d Column(String(255))"},{"line_number":133,"context_line":"    counter_volume \u003d Column(Float(53))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FubQ%3D","line":130,"in_reply_to":"AAAAQn%2F%2F1wM%3D","updated":"2013-07-24 12:09:49.000000000","message":"Does the original VARCHAR type support arbitrary amounts of text? We don\u0027t have any control over how big the metadata is, so I\u0027m not comfortable fixing the column width if we can avoid it. It may be that the mismatch in this case should be handled by adding another migration to fix the existing column, rather than changing the model.","commit_id":"4962f83681b26e8209ef4613ea60cb11bfe64762"},{"author":{"_account_id":6507,"name":"Shturm Svetlana","email":"svetlana.v.shturm@gmail.com","username":"sshturm"},"change_message_id":"955ff18292bb8e2a33d132af402bddf63deea3fd","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    user_id \u003d Column(String(255), ForeignKey(\u0027user.id\u0027))"},{"line_number":128,"context_line":"    project_id \u003d Column(String(255), ForeignKey(\u0027project.id\u0027))"},{"line_number":129,"context_line":"    resource_id \u003d Column(String(255), ForeignKey(\u0027resource.id\u0027))"},{"line_number":130,"context_line":"    resource_metadata \u003d Column(JSONEncodedDict(5000))"},{"line_number":131,"context_line":"    counter_type \u003d Column(String(255))"},{"line_number":132,"context_line":"    counter_unit \u003d Column(String(255))"},{"line_number":133,"context_line":"    counter_volume \u003d Column(Float(53))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2F1wM%3D","line":130,"in_reply_to":"AAAAQn%2F%2F2HA%3D","updated":"2013-07-22 11:04:46.000000000","message":"Actual state of models has a difference with database state.\nWe should have one structure in all places (models, migrations). This patch syncs models with database state (columns types, length of columns, indexes and another constraints). In the future it can be using by alembic library. I have a test that checks models and migrations. All differences had been found by it. (It depends from  migrations patchs (11-13 migrations)).","commit_id":"4962f83681b26e8209ef4613ea60cb11bfe64762"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"b0d9fb5e52606eeb90c7671de5ff3b5d780e41c3","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    user_id \u003d Column(String(255), ForeignKey(\u0027user.id\u0027))"},{"line_number":128,"context_line":"    project_id \u003d Column(String(255), ForeignKey(\u0027project.id\u0027))"},{"line_number":129,"context_line":"    resource_id \u003d Column(String(255), ForeignKey(\u0027resource.id\u0027))"},{"line_number":130,"context_line":"    resource_metadata \u003d Column(JSONEncodedDict(5000))"},{"line_number":131,"context_line":"    counter_type \u003d Column(String(255))"},{"line_number":132,"context_line":"    counter_unit \u003d Column(String(255))"},{"line_number":133,"context_line":"    counter_volume \u003d Column(Float(53))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2Fs5g%3D","line":130,"in_reply_to":"AAAAQn%2F%2Fs60%3D","updated":"2013-07-24 19:36:24.000000000","message":"Thanks for filling in those details. I opened https://bugs.launchpad.net/ceilometer/+bug/1204638 to change that column type to text in a later changeset.","commit_id":"4962f83681b26e8209ef4613ea60cb11bfe64762"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"207cde630b38c873f014e3b8833386297ed136be","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    user_id \u003d Column(String(255), ForeignKey(\u0027user.id\u0027))"},{"line_number":128,"context_line":"    project_id \u003d Column(String(255), ForeignKey(\u0027project.id\u0027))"},{"line_number":129,"context_line":"    resource_id \u003d Column(String(255), ForeignKey(\u0027resource.id\u0027))"},{"line_number":130,"context_line":"    resource_metadata \u003d Column(JSONEncodedDict(5000))"},{"line_number":131,"context_line":"    counter_type \u003d Column(String(255))"},{"line_number":132,"context_line":"    counter_unit \u003d Column(String(255))"},{"line_number":133,"context_line":"    counter_volume \u003d Column(Float(53))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2Fs60%3D","line":130,"in_reply_to":"AAAAQn%2F%2FuD0%3D","updated":"2013-07-24 19:23:18.000000000","message":"About VarChar. It is limited by max size, probably here is reasonable to use TEXT.\n\nBut could we fix it after syncing models?","commit_id":"4962f83681b26e8209ef4613ea60cb11bfe64762"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"8f9fec63c2f362da1684b246699114628b41f545","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    user_id \u003d Column(String(255), ForeignKey(\u0027user.id\u0027))"},{"line_number":128,"context_line":"    project_id \u003d Column(String(255), ForeignKey(\u0027project.id\u0027))"},{"line_number":129,"context_line":"    resource_id \u003d Column(String(255), ForeignKey(\u0027resource.id\u0027))"},{"line_number":130,"context_line":"    resource_metadata \u003d Column(JSONEncodedDict(5000))"},{"line_number":131,"context_line":"    counter_type \u003d Column(String(255))"},{"line_number":132,"context_line":"    counter_unit \u003d Column(String(255))"},{"line_number":133,"context_line":"    counter_volume \u003d Column(Float(53))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FuD0%3D","line":130,"in_reply_to":"AAAAQn%2F%2FuWs%3D","updated":"2013-07-24 14:04:57.000000000","message":"I understand the concept of incremental changes.\n\nPlease answer the question I posed above.","commit_id":"4962f83681b26e8209ef4613ea60cb11bfe64762"},{"author":{"_account_id":6507,"name":"Shturm Svetlana","email":"svetlana.v.shturm@gmail.com","username":"sshturm"},"change_message_id":"063925fdfd27f642f8feaa74db618ff2a9b517ea","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    user_id \u003d Column(String(255), ForeignKey(\u0027user.id\u0027))"},{"line_number":128,"context_line":"    project_id \u003d Column(String(255), ForeignKey(\u0027project.id\u0027))"},{"line_number":129,"context_line":"    resource_id \u003d Column(String(255), ForeignKey(\u0027resource.id\u0027))"},{"line_number":130,"context_line":"    resource_metadata \u003d Column(JSONEncodedDict(5000))"},{"line_number":131,"context_line":"    counter_type \u003d Column(String(255))"},{"line_number":132,"context_line":"    counter_unit \u003d Column(String(255))"},{"line_number":133,"context_line":"    counter_volume \u003d Column(Float(53))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FuWs%3D","line":130,"in_reply_to":"AAAAQn%2F%2FubQ%3D","updated":"2013-07-24 12:31:55.000000000","message":"We would like to implement this BP using baby steps:\nOur steps are:\n1) Sync models to DB state\n2) Sync DB state in different backbends\n3) Add test that check that all is synced\n4) Analyze of current models\n5) Migrations that fixed state\n\nAs we don\u0027t change behavior by syncing models we should do it firstly and avoid migrations until we add tests that checks models and schemas.","commit_id":"4962f83681b26e8209ef4613ea60cb11bfe64762"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"45ab0693d9d618a53d5ab24658c4d7464628c396","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    \"\"\""},{"line_number":206,"context_line":"    __tablename__ \u003d \u0027unique_name\u0027"},{"line_number":207,"context_line":"    __table_args__ \u003d ("},{"line_number":208,"context_line":"        Index(\u0027ix_unique_name_key\u0027, \u0027key\u0027),"},{"line_number":209,"context_line":"    )"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2F1zw%3D","line":208,"updated":"2013-07-22 10:47:13.000000000","message":"I miss the point of this change.","commit_id":"4962f83681b26e8209ef4613ea60cb11bfe64762"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"52dab66692db5fd28a976a13176f0d00db196266","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    \"\"\""},{"line_number":206,"context_line":"    __tablename__ \u003d \u0027unique_name\u0027"},{"line_number":207,"context_line":"    __table_args__ \u003d ("},{"line_number":208,"context_line":"        Index(\u0027ix_unique_name_key\u0027, \u0027key\u0027),"},{"line_number":209,"context_line":"    )"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FeCk%3D","line":208,"in_reply_to":"AAAAQn%2F%2F1vg%3D","updated":"2013-07-30 17:27:44.000000000","message":"the unique flag was removed below... should we not be passing in  unique flag to index? ie Index(\u0027name\u0027,\u0027key\u0027, unique\u003dTrue)","commit_id":"4962f83681b26e8209ef4613ea60cb11bfe64762"},{"author":{"_account_id":6507,"name":"Shturm Svetlana","email":"svetlana.v.shturm@gmail.com","username":"sshturm"},"change_message_id":"955ff18292bb8e2a33d132af402bddf63deea3fd","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    \"\"\""},{"line_number":206,"context_line":"    __tablename__ \u003d \u0027unique_name\u0027"},{"line_number":207,"context_line":"    __table_args__ \u003d ("},{"line_number":208,"context_line":"        Index(\u0027ix_unique_name_key\u0027, \u0027key\u0027),"},{"line_number":209,"context_line":"    )"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2F1vg%3D","line":208,"in_reply_to":"AAAAQn%2F%2F1zw%3D","updated":"2013-07-22 11:04:46.000000000","message":"It needs for understanding that this table has indexes. Also it needs in  test that will check equality of models to database state.","commit_id":"4962f83681b26e8209ef4613ea60cb11bfe64762"},{"author":{"_account_id":6507,"name":"Shturm Svetlana","email":"svetlana.v.shturm@gmail.com","username":"sshturm"},"change_message_id":"4b95dd6f2d662eac83bd64028320db5b79d4a7ab","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    \"\"\""},{"line_number":206,"context_line":"    __tablename__ \u003d \u0027unique_name\u0027"},{"line_number":207,"context_line":"    __table_args__ \u003d ("},{"line_number":208,"context_line":"        Index(\u0027ix_unique_name_key\u0027, \u0027key\u0027),"},{"line_number":209,"context_line":"    )"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FT2A%3D","line":208,"in_reply_to":"AAAAQn%2F%2FeCk%3D","updated":"2013-08-02 05:40:05.000000000","message":"All changes had done as it presented in database. There is no UniqueConstraint in database after migrations for this table.","commit_id":"4962f83681b26e8209ef4613ea60cb11bfe64762"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"45ab0693d9d618a53d5ab24658c4d7464628c396","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        Index(\u0027ix_trait_t_string\u0027, \u0027t_string\u0027),"},{"line_number":248,"context_line":"        Index(\u0027ix_trait_t_datetime\u0027, \u0027t_datetime\u0027),"},{"line_number":249,"context_line":"        Index(\u0027ix_trait_t_type\u0027, \u0027t_type\u0027),"},{"line_number":250,"context_line":"        Index(\u0027ix_trait_t_float\u0027, \u0027t_float\u0027),"},{"line_number":251,"context_line":"    )"},{"line_number":252,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":253,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2F1z0%3D","line":250,"updated":"2013-07-22 10:47:13.000000000","message":"I miss the point of this change.","commit_id":"4962f83681b26e8209ef4613ea60cb11bfe64762"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"d8d645f6946bc942bd1dde19edf0094647c7bc75","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        Index(\u0027ix_trait_t_string\u0027, \u0027t_string\u0027),"},{"line_number":248,"context_line":"        Index(\u0027ix_trait_t_datetime\u0027, \u0027t_datetime\u0027),"},{"line_number":249,"context_line":"        Index(\u0027ix_trait_t_type\u0027, \u0027t_type\u0027),"},{"line_number":250,"context_line":"        Index(\u0027ix_trait_t_float\u0027, \u0027t_float\u0027),"},{"line_number":251,"context_line":"    )"},{"line_number":252,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":253,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FXdM%3D","line":250,"in_reply_to":"AAAAQn%2F%2F1vc%3D","updated":"2013-08-01 10:10:25.000000000","message":"Yeah but why declaring Index manually when Index\u003dTrue does the same automatically for us?","commit_id":"4962f83681b26e8209ef4613ea60cb11bfe64762"},{"author":{"_account_id":6507,"name":"Shturm Svetlana","email":"svetlana.v.shturm@gmail.com","username":"sshturm"},"change_message_id":"955ff18292bb8e2a33d132af402bddf63deea3fd","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        Index(\u0027ix_trait_t_string\u0027, \u0027t_string\u0027),"},{"line_number":248,"context_line":"        Index(\u0027ix_trait_t_datetime\u0027, \u0027t_datetime\u0027),"},{"line_number":249,"context_line":"        Index(\u0027ix_trait_t_type\u0027, \u0027t_type\u0027),"},{"line_number":250,"context_line":"        Index(\u0027ix_trait_t_float\u0027, \u0027t_float\u0027),"},{"line_number":251,"context_line":"    )"},{"line_number":252,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":253,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2F1vc%3D","line":250,"in_reply_to":"AAAAQn%2F%2F1z0%3D","updated":"2013-07-22 11:04:46.000000000","message":"The same.","commit_id":"4962f83681b26e8209ef4613ea60cb11bfe64762"},{"author":{"_account_id":6507,"name":"Shturm Svetlana","email":"svetlana.v.shturm@gmail.com","username":"sshturm"},"change_message_id":"4b95dd6f2d662eac83bd64028320db5b79d4a7ab","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        Index(\u0027ix_trait_t_string\u0027, \u0027t_string\u0027),"},{"line_number":248,"context_line":"        Index(\u0027ix_trait_t_datetime\u0027, \u0027t_datetime\u0027),"},{"line_number":249,"context_line":"        Index(\u0027ix_trait_t_type\u0027, \u0027t_type\u0027),"},{"line_number":250,"context_line":"        Index(\u0027ix_trait_t_float\u0027, \u0027t_float\u0027),"},{"line_number":251,"context_line":"    )"},{"line_number":252,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue)"},{"line_number":253,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FTyY%3D","line":250,"in_reply_to":"AAAAQn%2F%2FXdM%3D","updated":"2013-08-02 05:40:05.000000000","message":"There is no difference how it will be declared. But a using __table_args__ makes it visible.\nMore then there are some tables where indexes declared by this way. I think we should have main concept in this for each table.","commit_id":"4962f83681b26e8209ef4613ea60cb11bfe64762"}]}
