)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"43f1c8fe7cb37e8d5c5fe2b0c9d69c99c244be2c","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add ComputeNode.mapped field"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is an integer that defaults to zero. This can be used by API services"},{"line_number":10,"context_line":"to efficiently query out records that have not yet been mapped for a"},{"line_number":11,"context_line":"HostMapping. This is an integer instead of a boolean in case we later need"},{"line_number":12,"context_line":"to do some other sort of mapping of these records and need to distinguish"},{"line_number":13,"context_line":"yet another level of mapped-ness."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3a1ff146_44512362","line":10,"updated":"2017-03-14 17:52:35.000000000","message":"s/query out/filter out/ :)","commit_id":"26744622d8c5891ac8f060030ced64d0a41510d9"}],"nova/db/sqlalchemy/migrate_repo/versions/358_add_compute_node_mapped.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"13a0fc7f9cbf3396c2ea273252588d507a3139e2","unresolved":false,"context_lines":[{"line_number":17,"context_line":"def upgrade(migrate_engine):"},{"line_number":18,"context_line":"    meta \u003d MetaData(bind\u003dmigrate_engine)"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    compute_nodes \u003d Table(\u0027compute_nodes\u0027, meta, autoload\u003dTrue)"},{"line_number":21,"context_line":"    mapped \u003d Column(\u0027mapped\u0027, Integer, default\u003d0, nullable\u003dFalse)"},{"line_number":22,"context_line":"    if not hasattr(compute_nodes.c, \u0027mapped\u0027):"},{"line_number":23,"context_line":"        compute_nodes.create_column(mapped)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_b1f8524b","line":20,"updated":"2017-02-27 22:37:05.000000000","message":"What about the shadow table?","commit_id":"5e76ae7044904577f8b96e48791cf88ed39fe72b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"43f1c8fe7cb37e8d5c5fe2b0c9d69c99c244be2c","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    for prefix in (\u0027\u0027, \u0027shadow_\u0027):"},{"line_number":21,"context_line":"        compute_nodes \u003d Table(\u0027%scompute_nodes\u0027 % prefix, meta, autoload\u003dTrue)"},{"line_number":22,"context_line":"        mapped \u003d Column(\u0027mapped\u0027, Integer, default\u003d0, nullable\u003dTrue)"},{"line_number":23,"context_line":"        if not hasattr(compute_nodes.c, \u0027mapped\u0027):"},{"line_number":24,"context_line":"            compute_nodes.create_column(mapped)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a1ff146_bf4ca077","line":22,"updated":"2017-03-14 17:52:35.000000000","message":"Why not make the column nullable\u003dFalse and add server_default\u003d\"0\" to have this in the CREATE TABLE DDL statement:\n\nhttp://docs.sqlalchemy.org/en/rel_0_9/core/metadata.html#sqlalchemy.schema.Column.params.server_default","commit_id":"26744622d8c5891ac8f060030ced64d0a41510d9"},{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"3e8998b2e0bf8477f9dc47b8eec4f92f159c3122","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    for prefix in (\u0027\u0027, \u0027shadow_\u0027):"},{"line_number":21,"context_line":"        compute_nodes \u003d Table(\u0027%scompute_nodes\u0027 % prefix, meta, autoload\u003dTrue)"},{"line_number":22,"context_line":"        mapped \u003d Column(\u0027mapped\u0027, Integer, default\u003d0, nullable\u003dTrue)"},{"line_number":23,"context_line":"        if not hasattr(compute_nodes.c, \u0027mapped\u0027):"},{"line_number":24,"context_line":"            compute_nodes.create_column(mapped)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_892759b5","line":22,"in_reply_to":"3a1ff146_bf4ca077","updated":"2017-03-20 16:23:28.000000000","message":"yes, putting \"default\" in a migration file is usually pointless since that\u0027s a python side rule.","commit_id":"26744622d8c5891ac8f060030ced64d0a41510d9"}],"nova/db/sqlalchemy/models.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"de66e472b21f9e1f6fd5fbb028bcea9af418dfc1","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    ram_allocation_ratio \u003d Column(Float, nullable\u003dTrue)"},{"line_number":178,"context_line":"    cpu_allocation_ratio \u003d Column(Float, nullable\u003dTrue)"},{"line_number":179,"context_line":"    disk_allocation_ratio \u003d Column(Float, nullable\u003dTrue)"},{"line_number":180,"context_line":"    mapped \u003d Column(Integer, nullable\u003dTrue, default\u003d0)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"class Certificate(BASE, NovaBase, models.SoftDeleteMixin):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_04dd10e0","line":180,"updated":"2017-03-20 17:01:04.000000000","message":"Given the next patch in the series which queries on this field, should we index it?\n\nhttps://review.openstack.org/#/c/427902/","commit_id":"26744622d8c5891ac8f060030ced64d0a41510d9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9fa27428f5311da46b07b94f8e53bae1573b5d23","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    ram_allocation_ratio \u003d Column(Float, nullable\u003dTrue)"},{"line_number":178,"context_line":"    cpu_allocation_ratio \u003d Column(Float, nullable\u003dTrue)"},{"line_number":179,"context_line":"    disk_allocation_ratio \u003d Column(Float, nullable\u003dTrue)"},{"line_number":180,"context_line":"    mapped \u003d Column(Integer, nullable\u003dTrue, default\u003d0)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"class Certificate(BASE, NovaBase, models.SoftDeleteMixin):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_0427d0ca","line":180,"in_reply_to":"1a1ced50_04dd10e0","updated":"2017-03-20 17:04:20.000000000","message":"No. It\u0027s only used as a temporary migration thing. There\u0027s no reason to add an index for a temporary field.","commit_id":"26744622d8c5891ac8f060030ced64d0a41510d9"}],"nova/objects/compute_node.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ea95563e3022c646e47eec658a244c4d2044efa5","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                        # It\u0027s not specified either on the controller"},{"line_number":206,"context_line":"                        value \u003d 1.0"},{"line_number":207,"context_line":"            elif key \u003d\u003d \u0027mapped\u0027:"},{"line_number":208,"context_line":"                value \u003d 0 if value is None else value"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"            setattr(compute, key, value)"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_89d4b920","line":208,"range":{"start_line":208,"start_character":26,"end_line":208,"end_character":42},"updated":"2017-03-20 16:30:40.000000000","message":"Do we have a test for this case?","commit_id":"26744622d8c5891ac8f060030ced64d0a41510d9"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"43f1c8fe7cb37e8d5c5fe2b0c9d69c99c244be2c","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                        # It\u0027s not specified either on the controller"},{"line_number":206,"context_line":"                        value \u003d 1.0"},{"line_number":207,"context_line":"            elif key \u003d\u003d \u0027mapped\u0027:"},{"line_number":208,"context_line":"                value \u003d 0 if value is None else value"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"            setattr(compute, key, value)"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a1ff146_1f469423","line":208,"updated":"2017-03-14 17:52:35.000000000","message":"Remind me again why we can\u0027t just set a default on the field and do:\n\n compute.obj_set_defaults()","commit_id":"26744622d8c5891ac8f060030ced64d0a41510d9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c9ec35b58ce6798ec3478fd26ae733d17fa24bde","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                        # It\u0027s not specified either on the controller"},{"line_number":206,"context_line":"                        value \u003d 1.0"},{"line_number":207,"context_line":"            elif key \u003d\u003d \u0027mapped\u0027:"},{"line_number":208,"context_line":"                value \u003d 0 if value is None else value"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"            setattr(compute, key, value)"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_09044948","line":208,"range":{"start_line":208,"start_character":26,"end_line":208,"end_character":42},"in_reply_to":"1a1ced50_89d4b920","updated":"2017-03-20 16:41:09.000000000","message":"This is not tested because of setting a default value in so many of the tests.\n\nI pulled this change down and did this:\n\nuser@ubuntu:~/git/nova$ git diff\ndiff --git a/nova/objects/compute_node.py b/nova/objects/compute_node.py\nindex 8be7d6b..2a45749 100644\n--- a/nova/objects/compute_node.py\n+++ b/nova/objects/compute_node.py\n@@ -205,7 +205,7 @@ class ComputeNode(base.NovaPersistentObject, base.NovaObject):\n                         # It\u0027s not specified either on the controller\n                         value \u003d 1.0\n             elif key \u003d\u003d \u0027mapped\u0027:\n-                value \u003d 0 if value is None else value\n+                value \u003d \u0027blow up\u0027 if value is None else value\n \n             setattr(compute, key, value)\n\n\nAnd nothing failed in nova.tests.unit.objects.test_compute_node or in the compute manager tests.","commit_id":"26744622d8c5891ac8f060030ced64d0a41510d9"}],"nova/tests/unit/db/test_db_api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ea95563e3022c646e47eec658a244c4d2044efa5","unresolved":false,"context_lines":[{"line_number":7812,"context_line":"                                 supported_instances\u003d\u0027\u0027,"},{"line_number":7813,"context_line":"                                 pci_stats\u003d\u0027\u0027,"},{"line_number":7814,"context_line":"                                 metrics\u003d\u0027\u0027,"},{"line_number":7815,"context_line":"                                 mapped\u003d0,"},{"line_number":7816,"context_line":"                                 extra_resources\u003d\u0027\u0027,"},{"line_number":7817,"context_line":"                                 cpu_allocation_ratio\u003d16.0,"},{"line_number":7818,"context_line":"                                 ram_allocation_ratio\u003d1.5,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_a930959f","line":7815,"updated":"2017-03-20 16:30:40.000000000","message":"Why even set this? It\u0027s nullable and default is 0 so why do we care to set it in the test?","commit_id":"26744622d8c5891ac8f060030ced64d0a41510d9"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"95da652402ce8e44e94f57c86c8b5aab62543ff6","unresolved":false,"context_lines":[{"line_number":7812,"context_line":"                                 supported_instances\u003d\u0027\u0027,"},{"line_number":7813,"context_line":"                                 pci_stats\u003d\u0027\u0027,"},{"line_number":7814,"context_line":"                                 metrics\u003d\u0027\u0027,"},{"line_number":7815,"context_line":"                                 mapped\u003d0,"},{"line_number":7816,"context_line":"                                 extra_resources\u003d\u0027\u0027,"},{"line_number":7817,"context_line":"                                 cpu_allocation_ratio\u003d16.0,"},{"line_number":7818,"context_line":"                                 ram_allocation_ratio\u003d1.5,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bff0334d_2664d421","line":7815,"in_reply_to":"1a1ced50_a930959f","updated":"2017-04-07 18:21:35.000000000","message":"Because SQLA will return it even if it\u0027s unset. if we don\u0027t set it to something here, we\u0027ll fail to pull it out.","commit_id":"26744622d8c5891ac8f060030ced64d0a41510d9"}],"nova/tests/unit/db/test_sqlalchemy_migration.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"43f1c8fe7cb37e8d5c5fe2b0c9d69c99c244be2c","unresolved":false,"context_lines":[{"line_number":304,"context_line":"                                  pd[\u0027address\u0027])"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        # blocker should not block on soft-deleted records"},{"line_number":307,"context_line":"        self.migration.upgrade(self.engine)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"class TestOcataCheck(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a1ff146_3f951040","side":"PARENT","line":307,"updated":"2017-03-14 17:52:35.000000000","message":"LOL, these tests were bound to be killed by either you or me at some point... they were the opposite of \"future proof\" :)","commit_id":"80af8a9dacf6fbd853b5b0e07ffb8bffac3aa8fa"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"95da652402ce8e44e94f57c86c8b5aab62543ff6","unresolved":false,"context_lines":[{"line_number":304,"context_line":"                                  pd[\u0027address\u0027])"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        # blocker should not block on soft-deleted records"},{"line_number":307,"context_line":"        self.migration.upgrade(self.engine)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"class TestOcataCheck(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bff0334d_a60ea438","side":"PARENT","line":307,"in_reply_to":"1a1ced50_69469dc0","updated":"2017-04-07 18:21:35.000000000","message":"Because we can\u0027t use the model against an old schema anymore at this point. It\u0027s the reason we added the blocker so that we could assume a sane schema beyond this. Since this test was in newton, it can come out post-newton, IMHO.","commit_id":"80af8a9dacf6fbd853b5b0e07ffb8bffac3aa8fa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d4e2e919a364c48b896db7c82dad2ba7e588bbe1","unresolved":false,"context_lines":[{"line_number":304,"context_line":"                                  pd[\u0027address\u0027])"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        # blocker should not block on soft-deleted records"},{"line_number":307,"context_line":"        self.migration.upgrade(self.engine)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"class TestOcataCheck(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_69469dc0","side":"PARENT","line":307,"in_reply_to":"3a1ff146_3f951040","updated":"2017-03-20 16:37:48.000000000","message":"Can someone explain why these tests are all removed? Normally this is the type of thing you should call out in the commit message.","commit_id":"80af8a9dacf6fbd853b5b0e07ffb8bffac3aa8fa"}],"nova/tests/unit/objects/test_compute_node.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ea95563e3022c646e47eec658a244c4d2044efa5","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    \u0027cpu_allocation_ratio\u0027: 16.0,"},{"line_number":91,"context_line":"    \u0027ram_allocation_ratio\u0027: 1.5,"},{"line_number":92,"context_line":"    \u0027disk_allocation_ratio\u0027: 1.0,"},{"line_number":93,"context_line":"    \u0027mapped\u0027: 0,"},{"line_number":94,"context_line":"    }"},{"line_number":95,"context_line":"# FIXME(sbauza) : For compatibility checking, to be removed once we are sure"},{"line_number":96,"context_line":"# that all computes are running latest DB version with host field in it."}],"source_content_type":"text/x-python","patch_set":3,"id":"1a1ced50_491c8112","line":93,"updated":"2017-03-20 16:30:40.000000000","message":"Similar question, why even set it if the object handles null?","commit_id":"26744622d8c5891ac8f060030ced64d0a41510d9"}]}
