)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"475c7d57aaac29343bf71e93955e209e1b7addfb","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sudipta Biswas \u003csbiswas7@in.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-06-17 21:58:32 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"The \u0027scheduled_at\u0027 field is a part of the Nova instances."},{"line_number":8,"context_line":"Currently, the \u0027scheduled_at\u0027 field is no longer updated"},{"line_number":9,"context_line":"by the Nova scheduler, instead the \u0027launched_at\u0027 field is"},{"line_number":10,"context_line":"updated for the same purpose. The \u0027scheduled_at\u0027 column is"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"fa32b979_8912f655","line":7,"updated":"2015-06-17 16:35:11.000000000","message":"The first line of your message needs to be short and separated from the rest by a blank line.","commit_id":"28af8ac180df95f4af7a8eeb26de75f02996e450"}],"nova/db/sqlalchemy/migrate_repo/versions/296_drop_scheduled_at_column.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ab024152fb460b1d43e0d5f43626b819633071de","unresolved":false,"context_lines":[{"line_number":18,"context_line":"def upgrade(migrate_engine):"},{"line_number":19,"context_line":"    meta \u003d MetaData(bind\u003dmigrate_engine)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    # Drop the column that contains the scheduled_at value for an instance"},{"line_number":22,"context_line":"    instances_table \u003d Table(\u0027instances\u0027, meta, autoload\u003dTrue)"},{"line_number":23,"context_line":"    shadow_instances_table \u003d Table(\u0027shadow_instances\u0027, meta, autoload\u003dTrue)"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_55ea1575","line":21,"updated":"2015-06-18 13:52:34.000000000","message":"You can\u0027t do this, at least not right now. All changes to nova\u0027s schema must be additive only. That means they must expand but not contract the database and be apply-able to a currently running system without breaking it.\n\nSo, just drop this migration, remove it from the model (as you have) and put a comment there to say that this column is still present but needs to be removed.","commit_id":"49e2278b7599a90316f528e047853b8a5c3a38d0"}],"nova/db/sqlalchemy/models.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ab024152fb460b1d43e0d5f43626b819633071de","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"    reservation_id \u003d Column(String(255))"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    scheduled_at \u003d Column(DateTime)"},{"line_number":276,"context_line":"    launched_at \u003d Column(DateTime)"},{"line_number":277,"context_line":"    terminated_at \u003d Column(DateTime)"},{"line_number":278,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_f58c89db","side":"PARENT","line":275,"updated":"2015-06-18 13:52:34.000000000","message":"Please replace this with a comment about the fact that scheduled_at is still in the database and can be removed in M.","commit_id":"a96dc64afb52e070cef03f2b91f2bcb63560f095"}],"nova/objects/instance.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"475c7d57aaac29343bf71e93955e209e1b7addfb","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        \u0027reservation_id\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        \u0027scheduled_at\u0027: fields.DateTimeField(nullable\u003dTrue),"},{"line_number":198,"context_line":"        \u0027launched_at\u0027: fields.DateTimeField(nullable\u003dTrue),"},{"line_number":199,"context_line":"        \u0027terminated_at\u0027: fields.DateTimeField(nullable\u003dTrue),"},{"line_number":200,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_e9eaa20e","side":"PARENT","line":197,"updated":"2015-06-17 16:35:11.000000000","message":"This breaks the rules. I think your blueprint asserts that this field has not been used for some time, right? That means we should be able to remove it, but we can\u0027t without technically breaking compatibility. I think you will see the partial-ncpu job fail when trying to do some operations (although you might get lucky).\n\nIf an older node sends this field to a newer node, and this field is set to anything (even None, which it will be based on the code I think), the newer node will fail.\n\nSo, I think you just need to leave this here, put a comment above it that it\u0027s deprecated, and leave it until Instance v2.0.\n\nFor now, just make _from_db_object() set it to None by default all the time.","commit_id":"a96dc64afb52e070cef03f2b91f2bcb63560f095"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"6725af8db6e359161334848dc22e3267056b6005","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        \u0027reservation_id\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        \u0027scheduled_at\u0027: fields.DateTimeField(nullable\u003dTrue),"},{"line_number":198,"context_line":"        \u0027launched_at\u0027: fields.DateTimeField(nullable\u003dTrue),"},{"line_number":199,"context_line":"        \u0027terminated_at\u0027: fields.DateTimeField(nullable\u003dTrue),"},{"line_number":200,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_e483a754","side":"PARENT","line":197,"in_reply_to":"fa32b979_e9eaa20e","updated":"2015-06-17 16:59:27.000000000","message":"I think i have addressed it now. Reinstated that field and did as above!","commit_id":"a96dc64afb52e070cef03f2b91f2bcb63560f095"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c65a75c0e664f3adc5cf4f510e840ca2808e7608","unresolved":false,"context_lines":[{"line_number":799,"context_line":"        updates \u003d {}"},{"line_number":800,"context_line":"        changes \u003d self.obj_what_changed()"},{"line_number":801,"context_line":""},{"line_number":802,"context_line":"        for field in self.fields:"},{"line_number":803,"context_line":"            # NOTE(danms): For object fields, we construct and call a"},{"line_number":804,"context_line":"            # helper method like self._save_$attrname()"},{"line_number":805,"context_line":"            if (self.obj_attr_is_set(field) and"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a4dcd0f_ce6c260b","line":802,"updated":"2015-08-03 18:01:31.000000000","message":"Should probably make sure to discard the field here as it is no longer in the model. If you don\u0027t discard it, then we\u0027ll try to pass it to instance_update, which I assume will fail. Same for create().","commit_id":"5d5475dc4d99dc3166e976eadae4d1c9af747a9f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"dae6ca8f1cbbdf52659a1e20997a94fec3dbb0d7","unresolved":false,"context_lines":[{"line_number":804,"context_line":"        for field in self.fields:"},{"line_number":805,"context_line":"            # NOTE(danms): For object fields, we construct and call a"},{"line_number":806,"context_line":"            # helper method like self._save_$attrname()"},{"line_number":807,"context_line":"            if field \u003d\u003d \u0027scheduled_at\u0027:"},{"line_number":808,"context_line":"                # NOTE(sbiswas7): Since \u0027scheduled_at\u0027 is removed from models,"},{"line_number":809,"context_line":"                # we need to discard it."},{"line_number":810,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a4dcd0f_6d1ab719","line":807,"updated":"2015-08-03 18:40:45.000000000","message":"I think it would be cleaner to remove it from changes, if it\u0027s in there.","commit_id":"416fabf3938f70cdcb53d06a3aad6bc06e337ff1"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"56eafc3b31ef4e25eff92e5c248abec6db96259a","unresolved":false,"context_lines":[{"line_number":804,"context_line":"        for field in self.fields:"},{"line_number":805,"context_line":"            # NOTE(danms): For object fields, we construct and call a"},{"line_number":806,"context_line":"            # helper method like self._save_$attrname()"},{"line_number":807,"context_line":"            if field \u003d\u003d \u0027scheduled_at\u0027:"},{"line_number":808,"context_line":"                # NOTE(sbiswas7): Since \u0027scheduled_at\u0027 is removed from models,"},{"line_number":809,"context_line":"                # we need to discard it."},{"line_number":810,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a4dcd0f_b9d8eb54","line":807,"in_reply_to":"1a4dcd0f_6d1ab719","updated":"2015-08-04 07:11:47.000000000","message":"Done","commit_id":"416fabf3938f70cdcb53d06a3aad6bc06e337ff1"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"6e1ae70356165f5f1e5f430e4c9f831c459a43ba","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        \u0027reservation_id\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        # NOTE(sbiswas7): this field is depcrecated,"},{"line_number":162,"context_line":"        # will be removed in instance v2.0"},{"line_number":163,"context_line":"        \u0027scheduled_at\u0027: fields.DateTimeField(nullable\u003dTrue),"},{"line_number":164,"context_line":"        \u0027launched_at\u0027: fields.DateTimeField(nullable\u003dTrue),"},{"line_number":165,"context_line":"        \u0027terminated_at\u0027: fields.DateTimeField(nullable\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a4dcd0f_47042fbf","line":162,"updated":"2015-08-04 21:53:10.000000000","message":"I do wonder if this breaks the online schema migration system, but we need to be able to do this kind of thing, so I think this forces the issue, which is good.","commit_id":"5e9df4baf97fd1f495b81d3b8b612e24f344b325"}],"nova/tests/unit/db/test_migrations.py":[{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"127731afc2501d6d36b2172180d7f718c9fde164","unresolved":false,"context_lines":[{"line_number":773,"context_line":"        # DB at a later release."},{"line_number":774,"context_line":"        column_whitelist \u003d {\u0027instances\u0027: [\u0027scheduled_at\u0027]}"},{"line_number":775,"context_line":"        for element in diff:"},{"line_number":776,"context_line":"            # Assuming that the diff structure will remain constant"},{"line_number":777,"context_line":"            # The 4th element in the diff is always the Column object"},{"line_number":778,"context_line":"            for key, values in column_whitelist.iteritems():"},{"line_number":779,"context_line":"                table_name \u003d element[3].table.name"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a4dcd0f_dd013e6c","line":776,"updated":"2015-08-07 22:20:31.000000000","message":"There\u0027s no need to \"assume\" as this is a fully public and documented API, at  http://alembic.readthedocs.org/en/rel_0_7/api.html#alembic.autogenerate.compare_metadata, which is also referred to in the oslo.db documentation, though with a broken link, at http://docs.openstack.org/developer/oslo.db/api/sqlalchemy/test_migrations.html#oslo_db.sqlalchemy.test_migrations.ModelsMigrationsSync.filter_metadata_diff.   Second, the assumption is incorrect.  There are a variety of structures here and not all of them are even four elements.\n\nI don\u0027t have an answer at the moment why this patch isn\u0027t breaking the gate and how this got merged, but it certainly is breaking in my upstream tests; here\u0027s a few failures in nova test_migrations, there\u0027s a lot more if I keep it running: http://paste.openstack.org/show/412236/","commit_id":"5e9df4baf97fd1f495b81d3b8b612e24f344b325"}]}
