)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"c6b9dc6b6dd05d1a3faf87155ac5b4ce2ddc3686","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"DB: add support for volume_type_id by BDMS"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add volume_type_id to the block_device_mappings database entry."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Partial-bug: #1400310"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3a961159_8e219bb6","line":9,"updated":"2014-12-10 06:51:26.000000000","message":"see something in the bug report, could you please add more info on why this should be done? thanks","commit_id":"939d89992fd9b30cb769b37cb6d09f357053ded6"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"c6aacc2c34a36031553bdfb5ebe5160591de797d","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add volume_type_id to the block_device_mappings database entry."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"When booting and instance and creating a volume from the image,"},{"line_number":12,"context_line":"we would like to also be able to specify the volume type. In"},{"line_number":13,"context_line":"order to be able to do that we first need support in"},{"line_number":14,"context_line":"the database."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3a961159_d3754a98","line":11,"updated":"2015-01-20 07:14:35.000000000","message":"s/and/an ?","commit_id":"c850543945c7556d46c9866c59b9d48a2a07d42d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"9f70a9e550bed1401a3f0a189fc5307c1b1e6d79","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add volume_type_id to the block_device_mappings database entry."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"When booting and instance and creating a volume from the image,"},{"line_number":12,"context_line":"we would like to also be able to specify the volume type. In"},{"line_number":13,"context_line":"order to be able to do that we first need support in"},{"line_number":14,"context_line":"the database."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1a930d6b_eb4a5226","line":11,"in_reply_to":"3a961159_d3754a98","updated":"2015-01-21 15:31:45.000000000","message":"Done","commit_id":"c850543945c7556d46c9866c59b9d48a2a07d42d"}],"nova/block_device.py":[{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"0a5679691172ef6dae35abc09ef5aa2c3d67c576","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                     \u0027guest_format\u0027, \u0027device_type\u0027, \u0027disk_bus\u0027, \u0027boot_index\u0027,"},{"line_number":46,"context_line":"                     \u0027device_name\u0027, \u0027delete_on_termination\u0027, \u0027snapshot_id\u0027,"},{"line_number":47,"context_line":"                     \u0027volume_id\u0027, \u0027volume_size\u0027, \u0027image_id\u0027, \u0027no_device\u0027,"},{"line_number":48,"context_line":"                     \u0027connection_info\u0027, \u0027volume_type\u0027])"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"bdm_db_only_fields \u003d set([\u0027id\u0027, \u0027instance_uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":26,"id":"1aca2d91_5410264e","line":48,"updated":"2015-05-08 03:20:32.000000000","message":"you may need to add this field in to api json schema in https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/schemas/v3/block_device_mapping.py","commit_id":"344575112d606971d36337317385ed988073e62c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"617d07ba9fafaa650ad2fa8204d0bd9dbe386d6d","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                     \u0027guest_format\u0027, \u0027device_type\u0027, \u0027disk_bus\u0027, \u0027boot_index\u0027,"},{"line_number":46,"context_line":"                     \u0027device_name\u0027, \u0027delete_on_termination\u0027, \u0027snapshot_id\u0027,"},{"line_number":47,"context_line":"                     \u0027volume_id\u0027, \u0027volume_size\u0027, \u0027image_id\u0027, \u0027no_device\u0027,"},{"line_number":48,"context_line":"                     \u0027connection_info\u0027, \u0027volume_type\u0027])"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"bdm_db_only_fields \u003d set([\u0027id\u0027, \u0027instance_uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":26,"id":"5ad58531_96ecd290","line":48,"in_reply_to":"1aca2d91_5410264e","updated":"2015-05-11 20:47:38.000000000","message":"Done","commit_id":"344575112d606971d36337317385ed988073e62c"}],"nova/db/sqlalchemy/migrate_repo/versions/273_add_volume_type_id.py":[{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"da1eacf8e23d3e07d3984232c3fdd443f0efc38d","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def upgrade(engine):"},{"line_number":22,"context_line":"    \"\"\"Function adds volume_type_id field.\"\"\""},{"line_number":23,"context_line":"    volume_type_id \u003d Column(String)"},{"line_number":24,"context_line":"    meta \u003d MetaData(bind\u003dengine)"},{"line_number":25,"context_line":"    bdms \u003d Table(\u0027block_device_mapping\u0027, meta, autoload\u003dTrue)"},{"line_number":26,"context_line":"    shadow_bdms \u003d Table(\u0027shadow_block_device_mapping\u0027, meta, autoload\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa81d914_37161456","line":23,"updated":"2015-01-30 14:11:51.000000000","message":"Unused variable (unconditionally replaced below).","commit_id":"443d7bb508c4b25be50ac78b804519fb1df335ee"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a39064390a8507a22df063d6961027e8383921d6","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def upgrade(engine):"},{"line_number":22,"context_line":"    \"\"\"Function adds volume_type_id field.\"\"\""},{"line_number":23,"context_line":"    volume_type_id \u003d Column(String)"},{"line_number":24,"context_line":"    meta \u003d MetaData(bind\u003dengine)"},{"line_number":25,"context_line":"    bdms \u003d Table(\u0027block_device_mapping\u0027, meta, autoload\u003dTrue)"},{"line_number":26,"context_line":"    shadow_bdms \u003d Table(\u0027shadow_block_device_mapping\u0027, meta, autoload\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_51bdac67","line":23,"in_reply_to":"fa81d914_37161456","updated":"2015-02-02 17:52:33.000000000","message":"Done","commit_id":"443d7bb508c4b25be50ac78b804519fb1df335ee"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"da1eacf8e23d3e07d3984232c3fdd443f0efc38d","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    meta \u003d MetaData(bind\u003dengine)"},{"line_number":25,"context_line":"    bdms \u003d Table(\u0027block_device_mapping\u0027, meta, autoload\u003dTrue)"},{"line_number":26,"context_line":"    shadow_bdms \u003d Table(\u0027shadow_block_device_mapping\u0027, meta, autoload\u003dTrue)"},{"line_number":27,"context_line":"    volume_type_id \u003d Column(\u0027volume_type_id\u0027, String(36), nullable\u003dTrue)"},{"line_number":28,"context_line":"    if not hasattr(bdms.c, \u0027volume_type_id\u0027):"},{"line_number":29,"context_line":"        bdms.create_column(volume_type_id)"},{"line_number":30,"context_line":"    if not hasattr(shadow_bdms.c, \u0027volume_type_id\u0027):"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa81d914_82677ce8","line":27,"updated":"2015-01-30 14:11:51.000000000","message":"FYI: the explicit nullable here had me hunting through the docs because it\u0027s not explicit in the model. Not a big deal, but it might be better to be consistent: explicit nullable in both places, or omitted in both places.","commit_id":"443d7bb508c4b25be50ac78b804519fb1df335ee"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a39064390a8507a22df063d6961027e8383921d6","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    meta \u003d MetaData(bind\u003dengine)"},{"line_number":25,"context_line":"    bdms \u003d Table(\u0027block_device_mapping\u0027, meta, autoload\u003dTrue)"},{"line_number":26,"context_line":"    shadow_bdms \u003d Table(\u0027shadow_block_device_mapping\u0027, meta, autoload\u003dTrue)"},{"line_number":27,"context_line":"    volume_type_id \u003d Column(\u0027volume_type_id\u0027, String(36), nullable\u003dTrue)"},{"line_number":28,"context_line":"    if not hasattr(bdms.c, \u0027volume_type_id\u0027):"},{"line_number":29,"context_line":"        bdms.create_column(volume_type_id)"},{"line_number":30,"context_line":"    if not hasattr(shadow_bdms.c, \u0027volume_type_id\u0027):"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_f435aedb","line":27,"in_reply_to":"fa81d914_82677ce8","updated":"2015-02-02 17:52:33.000000000","message":"my understanding that this is the default value. there may be cases when the user doe not set this","commit_id":"443d7bb508c4b25be50ac78b804519fb1df335ee"}],"nova/db/sqlalchemy/migrate_repo/versions/293_add_volume_type.py":[{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"1d39c06769e9369afda3ec9eb2444f19868e4243","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    if not hasattr(bdms.c, \u0027volume_type\u0027):"},{"line_number":28,"context_line":"        bdms.create_column(volume_type)"},{"line_number":29,"context_line":"    if not hasattr(shadow_bdms.c, \u0027volume_type\u0027):"},{"line_number":30,"context_line":"        shadow_bdms.create_column(volume_type.copy())"}],"source_content_type":"text/x-python","patch_set":26,"id":"1aca2d91_b9e893b5","line":30,"updated":"2015-05-08 02:53:15.000000000","message":"do we need to handle downgrade?\nshould remove that column, I am not should we need to remove. just a concern.","commit_id":"344575112d606971d36337317385ed988073e62c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"617d07ba9fafaa650ad2fa8204d0bd9dbe386d6d","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    if not hasattr(bdms.c, \u0027volume_type\u0027):"},{"line_number":28,"context_line":"        bdms.create_column(volume_type)"},{"line_number":29,"context_line":"    if not hasattr(shadow_bdms.c, \u0027volume_type\u0027):"},{"line_number":30,"context_line":"        shadow_bdms.create_column(volume_type.copy())"}],"source_content_type":"text/x-python","patch_set":26,"id":"5ad58531_d6993a21","line":30,"in_reply_to":"1aca2d91_b9e893b5","updated":"2015-05-11 20:47:38.000000000","message":"as far as i understand downgrade is no longer supported across nova and all other projects","commit_id":"344575112d606971d36337317385ed988073e62c"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"3cd40c842b9868de8e2f9c3549e21240cfc9a110","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    if not hasattr(bdms.c, \u0027volume_type\u0027):"},{"line_number":28,"context_line":"        bdms.create_column(volume_type)"},{"line_number":29,"context_line":"    if not hasattr(shadow_bdms.c, \u0027volume_type\u0027):"},{"line_number":30,"context_line":"        shadow_bdms.create_column(volume_type.copy())"}],"source_content_type":"text/x-python","patch_set":26,"id":"5ad58531_810c8a43","line":30,"in_reply_to":"5ad58531_d6993a21","updated":"2015-05-11 21:24:33.000000000","message":"Yes, downgrade support has been removed.","commit_id":"344575112d606971d36337317385ed988073e62c"}],"nova/db/sqlalchemy/models.py":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"758dcd58f0f2a41b743a9dd761bdb6cdf2bd15d8","unresolved":false,"context_lines":[{"line_number":637,"context_line":"    no_device \u003d Column(Boolean)"},{"line_number":638,"context_line":""},{"line_number":639,"context_line":"    connection_info \u003d Column(MediumText())"},{"line_number":640,"context_line":"    volume_type_id \u003d Column(String(36))"},{"line_number":641,"context_line":""},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"class IscsiTarget(BASE, NovaBase):"}],"source_content_type":"text/x-python","patch_set":25,"id":"3acd31a7_c986e564","line":640,"updated":"2015-05-03 11:05:26.000000000","message":"since you are adding the db field as nullable\u003dTrue, shouldn\u0027t nullable\u003dTrue also be passed here?","commit_id":"2120c968cfdce9db7843a748d326ac64b923bef0"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8a1f5c79fee44a06f4d1304a2a903fae0ff92930","unresolved":false,"context_lines":[{"line_number":637,"context_line":"    no_device \u003d Column(Boolean)"},{"line_number":638,"context_line":""},{"line_number":639,"context_line":"    connection_info \u003d Column(MediumText())"},{"line_number":640,"context_line":"    volume_type_id \u003d Column(String(36))"},{"line_number":641,"context_line":""},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"class IscsiTarget(BASE, NovaBase):"}],"source_content_type":"text/x-python","patch_set":25,"id":"1aca2d91_04a40d55","line":640,"in_reply_to":"3acd31a7_c986e564","updated":"2015-05-06 14:15:32.000000000","message":"i think that the default is True","commit_id":"2120c968cfdce9db7843a748d326ac64b923bef0"},{"author":{"_account_id":13630,"name":"Luo Gangyi","email":"luogangyi@corp.netease.com","username":"luogangyi"},"change_message_id":"f5de627eb1101d598f6be6243b1e58408497a382","unresolved":false,"context_lines":[{"line_number":596,"context_line":"    no_device \u003d Column(Boolean)"},{"line_number":597,"context_line":""},{"line_number":598,"context_line":"    connection_info \u003d Column(MediumText())"},{"line_number":599,"context_line":"    volume_type \u003d Column(String(36))"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"class SecurityGroupInstanceAssociation(BASE, NovaBase):"}],"source_content_type":"text/x-python","patch_set":28,"id":"7a016987_47ae2199","line":599,"updated":"2015-05-19 15:37:52.000000000","message":"Hi gary,\n\u0027volume_type\u0027 refers to volume_type_name or volume_type_id in cinder?\nIf it refers to volume_type_name , I think it should be defined as  Column(String(255))","commit_id":"fc43348b98cd47aff7818bc56486c48903c811d4"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"2b743a7a8d7da502b0ac3d2d827e0be8e03c47cf","unresolved":false,"context_lines":[{"line_number":596,"context_line":"    no_device \u003d Column(Boolean)"},{"line_number":597,"context_line":""},{"line_number":598,"context_line":"    connection_info \u003d Column(MediumText())"},{"line_number":599,"context_line":"    volume_type \u003d Column(String(36))"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"class SecurityGroupInstanceAssociation(BASE, NovaBase):"}],"source_content_type":"text/x-python","patch_set":28,"id":"7a016987_eadb2d4d","line":599,"in_reply_to":"7a016987_47ae2199","updated":"2015-05-25 06:50:05.000000000","message":"Hi,\nThis is the volume_type_id so it should be 36","commit_id":"fc43348b98cd47aff7818bc56486c48903c811d4"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"4113893d71c67d6d2b56b21a12a7c8a5ff1f8a26","unresolved":false,"context_lines":[{"line_number":596,"context_line":"    no_device \u003d Column(Boolean)"},{"line_number":597,"context_line":""},{"line_number":598,"context_line":"    connection_info \u003d Column(MediumText())"},{"line_number":599,"context_line":"    volume_type \u003d Column(String(36))"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"class SecurityGroupInstanceAssociation(BASE, NovaBase):"}],"source_content_type":"text/x-python","patch_set":30,"id":"3afb71cf_f193f6a1","line":599,"updated":"2015-06-05 15:07:43.000000000","message":"It would be nice to be consistent. This Column is added with nullable\u003dTrue in the db migration script and also object model. It would be nice for it to be nullable\u003dTrue here as well.","commit_id":"cd2825a06918289a91735d3cc2eb87aaaee0254f"}],"nova/tests/unit/db/test_migrations.py":[{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"c6aacc2c34a36031553bdfb5ebe5160591de797d","unresolved":false,"context_lines":[{"line_number":561,"context_line":"        self.assertColumnNotExists(engine, \u0027compute_nodes\u0027, \u0027host\u0027)"},{"line_number":562,"context_line":"        self.assertColumnNotExists(engine, \u0027shadow_compute_nodes\u0027, \u0027host\u0027)"},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"    def _check_269(self, engine, data):"},{"line_number":565,"context_line":"        self.assertColumnExists(engine, \u0027pci_devices\u0027, \u0027numa_node\u0027)"},{"line_number":566,"context_line":"        self.assertColumnExists(engine, \u0027shadow_pci_devices\u0027, \u0027numa_node\u0027)"},{"line_number":567,"context_line":"        pci_devices \u003d oslodbutils.get_table(engine, \u0027pci_devices\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_935bc221","line":564,"updated":"2015-01-20 07:14:35.000000000","message":"please don\u0027t touch no related lines.","commit_id":"c850543945c7556d46c9866c59b9d48a2a07d42d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"9f70a9e550bed1401a3f0a189fc5307c1b1e6d79","unresolved":false,"context_lines":[{"line_number":561,"context_line":"        self.assertColumnNotExists(engine, \u0027compute_nodes\u0027, \u0027host\u0027)"},{"line_number":562,"context_line":"        self.assertColumnNotExists(engine, \u0027shadow_compute_nodes\u0027, \u0027host\u0027)"},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"    def _check_269(self, engine, data):"},{"line_number":565,"context_line":"        self.assertColumnExists(engine, \u0027pci_devices\u0027, \u0027numa_node\u0027)"},{"line_number":566,"context_line":"        self.assertColumnExists(engine, \u0027shadow_pci_devices\u0027, \u0027numa_node\u0027)"},{"line_number":567,"context_line":"        pci_devices \u003d oslodbutils.get_table(engine, \u0027pci_devices\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a930d6b_4b8d267b","line":564,"in_reply_to":"3a961159_935bc221","updated":"2015-01-21 15:31:45.000000000","message":"Done","commit_id":"c850543945c7556d46c9866c59b9d48a2a07d42d"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"f7ba00080d14b87765d655035c7ab9e33ed4e089","unresolved":false,"context_lines":[{"line_number":698,"context_line":"        self.assertEqual(\u0027ssh\u0027, keypair.type)"},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"    def test_migration_273(self):"},{"line_number":701,"context_line":"        self.assertColumnExists(engine, \u0027block_device_mapping\u0027,"},{"line_number":702,"context_line":"                                \u0027volume_type_id\u0027)"},{"line_number":703,"context_line":"        bdms \u003d oslodbutils.get_table(engine, \u0027block_device_mapping\u0027)"},{"line_number":704,"context_line":"        self.assertIsInstance(bdms.c.volume_type_id.type,"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa81d914_457c0721","line":701,"updated":"2015-01-28 20:30:03.000000000","message":"F821 undefined name \u0027engine\u0027","commit_id":"f6dbab9b41c575159e99b6113b612c80801763ec"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"f7ba00080d14b87765d655035c7ab9e33ed4e089","unresolved":false,"context_lines":[{"line_number":700,"context_line":"    def test_migration_273(self):"},{"line_number":701,"context_line":"        self.assertColumnExists(engine, \u0027block_device_mapping\u0027,"},{"line_number":702,"context_line":"                                \u0027volume_type_id\u0027)"},{"line_number":703,"context_line":"        bdms \u003d oslodbutils.get_table(engine, \u0027block_device_mapping\u0027)"},{"line_number":704,"context_line":"        self.assertIsInstance(bdms.c.volume_type_id.type,"},{"line_number":705,"context_line":"                              sqlalchemy.types.String)"},{"line_number":706,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa81d914_059a0f63","line":703,"updated":"2015-01-28 20:30:03.000000000","message":"ditto","commit_id":"f6dbab9b41c575159e99b6113b612c80801763ec"}]}
