)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"469bb2a0efdd87395daec4ec58e39bb64f1a9241","unresolved":false,"context_lines":[{"line_number":32,"context_line":"     name-of-my-fedora-image"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Partially implements blueprint libvirt-hardware-policy-from-libosinfo"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Change-Id: I1ab0c33f7ac4690b72a14e7748356a6ec22c9308"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a930d6b_f342f20e","line":35,"updated":"2015-01-23 15:25:42.000000000","message":"Please add the DocImpact flag here - this gives the doc guy a hint to update what you have defined above.","commit_id":"9c9a1d21f86f4a22e220d2c9fc5b96a4444c47d5"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"2112bc399af79a0b44bdf65390a47b1a50fe6a1f","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"  # glance image-update \\"},{"line_number":31,"context_line":"     --property os_name\u003dhttp://fedoraproject.org/fedora/21 \\"},{"line_number":32,"context_line":"     name-of-my-fedora-image"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"DocImpact"},{"line_number":35,"context_line":"Partially implements blueprint libvirt-hardware-policy-from-libosinfo"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"3afb71cf_1c2e30a5","line":32,"updated":"2015-06-09 16:50:56.000000000","message":"The code is using \u0027os_distro\u0027 rather than  \u0027os_name\u0027 now","commit_id":"84e20689764651706b990edb14471c2b91cd5850"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"bef40223e5c717f2143ed11fb33dd486d12c67a9","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"  # glance image-update \\"},{"line_number":31,"context_line":"     --property os_name\u003dhttp://fedoraproject.org/fedora/21 \\"},{"line_number":32,"context_line":"     name-of-my-fedora-image"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"DocImpact"},{"line_number":35,"context_line":"Partially implements blueprint libvirt-hardware-policy-from-libosinfo"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"3afb71cf_fe11f304","line":32,"in_reply_to":"3afb71cf_1c2e30a5","updated":"2015-06-10 03:38:34.000000000","message":"Done","commit_id":"84e20689764651706b990edb14471c2b91cd5850"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"1f7c26991c8bd105676fabf9038b6c3c03d2a06c","unresolved":false,"context_lines":[{"line_number":13,"context_line":"disabled, default system values will be used."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Users will be able to set the Operating system id or a short-id via"},{"line_number":16,"context_line":"the new os_name property in Glace image properties:"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"  # glance image-update \\"},{"line_number":19,"context_line":"     --property os_distro\u003dfedora21 \\"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"9a41bdd9_dc0b2a23","line":16,"updated":"2015-07-18 12:49:13.000000000","message":"Glace \u003d\u003e Glance","commit_id":"ad2362f130b57d6f329e026d970bbd02010409b4"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"a5eaa5c4ce0fd2272121166b417778432f539894","unresolved":false,"context_lines":[{"line_number":13,"context_line":"disabled, default system values will be used."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Users will be able to set the Operating system id or a short-id via"},{"line_number":16,"context_line":"the new os_name property in Glace image properties:"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"  # glance image-update \\"},{"line_number":19,"context_line":"     --property os_distro\u003dfedora21 \\"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"3a50d1a3_ac41faaa","line":16,"in_reply_to":"9a41bdd9_dc0b2a23","updated":"2015-07-22 19:26:51.000000000","message":"Done","commit_id":"ad2362f130b57d6f329e026d970bbd02010409b4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"88c85e33495dbb87ac28a2e45269f8175214a81d","unresolved":false,"context_lines":[{"line_number":20,"context_line":"     name-of-my-fedora-image"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  # glance image-update \\"},{"line_number":23,"context_line":"     --property os_distro\u003dhttp://fedoraproject.org/fedora/21 \\"},{"line_number":24,"context_line":"     name-of-my-fedora-image"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"DocImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"9a41bdd9_097723a0","line":23,"updated":"2015-07-17 21:21:22.000000000","message":"oops. s/os_distro/os_name/ here and above. :)","commit_id":"ad2362f130b57d6f329e026d970bbd02010409b4"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"a5eaa5c4ce0fd2272121166b417778432f539894","unresolved":false,"context_lines":[{"line_number":20,"context_line":"     name-of-my-fedora-image"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"  # glance image-update \\"},{"line_number":23,"context_line":"     --property os_distro\u003dhttp://fedoraproject.org/fedora/21 \\"},{"line_number":24,"context_line":"     name-of-my-fedora-image"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"DocImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"3a50d1a3_0c382e3c","line":23,"in_reply_to":"9a41bdd9_097723a0","updated":"2015-07-22 19:26:51.000000000","message":"According to the ImageMetaProps object, it\u0027s called os_distro...\nhttps://review.openstack.org/gitweb?p\u003dopenstack/nova.git;a\u003dblob;f\u003dnova/objects/image_meta.py;h\u003df9f90e9bb80c0428eea46309b36778e3b09a08c9;hb\u003dHEAD#l277","commit_id":"ad2362f130b57d6f329e026d970bbd02010409b4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"933bc85aec2da77e48ae6e0e2a2fa76f8376ff2b","unresolved":false,"context_lines":[{"line_number":23,"context_line":"     --property os_distro\u003dhttp://fedoraproject.org/fedora/21 \\"},{"line_number":24,"context_line":"     name-of-my-fedora-image"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"DocImpact"},{"line_number":27,"context_line":"Partially implements blueprint libvirt-hardware-policy-from-libosinfo"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Change-Id: I1ab0c33f7ac4690b72a14e7748356a6ec22c9308"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":32,"id":"3a57f1b5_55174bed","line":26,"updated":"2016-02-09 22:07:25.000000000","message":"What is the DocImpact for this? If you haven\u0027t already, you should probably push a reno patch for this change to point out that people that want to use this need to install the native libosinfo distro package, since right now we\u0027re spamming the n-cpu logs like crazy since devstack isn\u0027t installing it:\n\nhttps://bugs.launchpad.net/devstack/+bug/1543800","commit_id":"530f45dcba04bc4ea3d7a97d4798afddf9a21b58"}],"nova/tests/unit/virt/test_osinfo.py":[{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"7776aeac1cfcf60409a68b4e64c6832b9f86c0c1","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        self.img_meta \u003d {\u0027properties\u0027:"},{"line_number":30,"context_line":"                            {\u0027os_distro\u0027: \u0027fedora19\u0027,"},{"line_number":31,"context_line":"                             \u0027hw_disk_bus\u0027: \u0027ide\u0027,"},{"line_number":32,"context_line":"                             \u0027hw_vif_model\u0027: \u0027virtio\u0027}"},{"line_number":33,"context_line":"                        }"},{"line_number":34,"context_line":"        osinfo.libosinfo \u003d mock.Mock()"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"fa32b979_0745adb1","line":32,"updated":"2015-06-23 06:11:21.000000000","message":"Inconsistent { } style.  On one line it trails text and another line its by itself.","commit_id":"4d94f61e73d33145efe3cb05e7668728de306ac0"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"7776aeac1cfcf60409a68b4e64c6832b9f86c0c1","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        with mock.patch.object(osinfo, \u0027OsInfoOs\u0027,"},{"line_number":74,"context_line":"                               return_value\u003dtest_osinfo_obj):"},{"line_number":75,"context_line":"            osinfo_obj \u003d osinfo.HardwareProperties(img_meta)"},{"line_number":76,"context_line":"            self.assertEqual(osinfo_obj.network_model, \u0027virtio_1\u0027)"},{"line_number":77,"context_line":"            self.assertEqual(osinfo_obj.disk_bus, \u0027virtio_1\u0027)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def test_hardware_properties_conf_enabled_from_meta(self):"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa32b979_8701bd6c","line":76,"updated":"2015-06-23 06:11:21.000000000","message":"assertEqual should be (expected, actual)","commit_id":"4d94f61e73d33145efe3cb05e7668728de306ac0"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"7776aeac1cfcf60409a68b4e64c6832b9f86c0c1","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                               return_value\u003dtest_osinfo_obj):"},{"line_number":75,"context_line":"            osinfo_obj \u003d osinfo.HardwareProperties(img_meta)"},{"line_number":76,"context_line":"            self.assertEqual(osinfo_obj.network_model, \u0027virtio_1\u0027)"},{"line_number":77,"context_line":"            self.assertEqual(osinfo_obj.disk_bus, \u0027virtio_1\u0027)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def test_hardware_properties_conf_enabled_from_meta(self):"},{"line_number":80,"context_line":"        \"\"\"Verifies that HardwareProperties attributes are being set"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa32b979_47f41586","line":77,"updated":"2015-06-23 06:11:21.000000000","message":"assertEqual should be (expected, actual)","commit_id":"4d94f61e73d33145efe3cb05e7668728de306ac0"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"7776aeac1cfcf60409a68b4e64c6832b9f86c0c1","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        \"\"\""},{"line_number":83,"context_line":"        with mock.patch.object(osinfo.OsInfoDatabase, \u0027get_instance\u0027):"},{"line_number":84,"context_line":"            osinfo_obj \u003d osinfo.HardwareProperties(self.img_meta)"},{"line_number":85,"context_line":"            self.assertEqual(osinfo_obj.network_model, \u0027virtio\u0027)"},{"line_number":86,"context_line":"            self.assertEqual(osinfo_obj.disk_bus, \u0027ide\u0027)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def test_hardware_properties_none(self):"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa32b979_e7f2099a","line":85,"updated":"2015-06-23 06:11:21.000000000","message":"assertEqual should be (expected, actual)","commit_id":"4d94f61e73d33145efe3cb05e7668728de306ac0"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"7776aeac1cfcf60409a68b4e64c6832b9f86c0c1","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        with mock.patch.object(osinfo.OsInfoDatabase, \u0027get_instance\u0027):"},{"line_number":84,"context_line":"            osinfo_obj \u003d osinfo.HardwareProperties(self.img_meta)"},{"line_number":85,"context_line":"            self.assertEqual(osinfo_obj.network_model, \u0027virtio\u0027)"},{"line_number":86,"context_line":"            self.assertEqual(osinfo_obj.disk_bus, \u0027ide\u0027)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def test_hardware_properties_none(self):"},{"line_number":89,"context_line":"        \"\"\"Verifies that HardwareProperties attributes are None"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa32b979_07ee0db4","line":86,"updated":"2015-06-23 06:11:21.000000000","message":"assertEqual should be (expected, actual)","commit_id":"4d94f61e73d33145efe3cb05e7668728de306ac0"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"7776aeac1cfcf60409a68b4e64c6832b9f86c0c1","unresolved":false,"context_lines":[{"line_number":90,"context_line":"           if libosinfo is disabled and there are no image"},{"line_number":91,"context_line":"           properties set."},{"line_number":92,"context_line":"        \"\"\""},{"line_number":93,"context_line":"        self.flags(enabled\u003dFalse,"},{"line_number":94,"context_line":"                   group\u003d\u0027osinfo\u0027)"},{"line_number":95,"context_line":"        img_meta \u003d {\u0027properties\u0027:"},{"line_number":96,"context_line":"                       {\u0027os_distro\u0027: \u0027fedora19\u0027}"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa32b979_87b3fde8","line":93,"updated":"2015-06-23 06:11:21.000000000","message":"this can be a single line","commit_id":"4d94f61e73d33145efe3cb05e7668728de306ac0"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"88c85e33495dbb87ac28a2e45269f8175214a81d","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    def setUp(self):"},{"line_number":25,"context_line":"        super(LibvirtOsInfoTest, self).setUp()"},{"line_number":26,"context_line":"        self.img_meta \u003d {\u0027properties\u0027:"},{"line_number":27,"context_line":"                            {\u0027os_distro\u0027: \u0027fedora19\u0027,"},{"line_number":28,"context_line":"                             \u0027hw_disk_bus\u0027: \u0027ide\u0027,"},{"line_number":29,"context_line":"                             \u0027hw_vif_model\u0027: \u0027virtio\u0027}"},{"line_number":30,"context_line":"                        }"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a41bdd9_69afcfe3","line":27,"updated":"2015-07-17 21:21:22.000000000","message":"os_name please.","commit_id":"ad2362f130b57d6f329e026d970bbd02010409b4"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"5b7820afcd6ae9e8ad3de0adf851afcc386c2d87","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    def setUp(self):"},{"line_number":25,"context_line":"        super(LibvirtOsInfoTest, self).setUp()"},{"line_number":26,"context_line":"        self.img_meta \u003d {\u0027properties\u0027:"},{"line_number":27,"context_line":"                            {\u0027os_distro\u0027: \u0027fedora19\u0027,"},{"line_number":28,"context_line":"                             \u0027hw_disk_bus\u0027: \u0027ide\u0027,"},{"line_number":29,"context_line":"                             \u0027hw_vif_model\u0027: \u0027virtio\u0027}"},{"line_number":30,"context_line":"                        }"}],"source_content_type":"text/x-python","patch_set":21,"id":"3a50d1a3_75bfd5d0","line":27,"in_reply_to":"9a41bdd9_69afcfe3","updated":"2015-07-20 09:03:20.000000000","message":"os_distro is the name already defined by the ImageMetaProps object\n\nhttps://github.com/openstack/nova/blob/master/nova/objects/image_meta.py#L272","commit_id":"ad2362f130b57d6f329e026d970bbd02010409b4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"88c85e33495dbb87ac28a2e45269f8175214a81d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"           from libosinfo."},{"line_number":65,"context_line":"        \"\"\""},{"line_number":66,"context_line":"        img_meta \u003d {\u0027properties\u0027:"},{"line_number":67,"context_line":"                       {\u0027os_distro\u0027: \u0027fedora19\u0027}"},{"line_number":68,"context_line":"                   }"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        test_osinfo_obj \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a41bdd9_89aa53d1","line":67,"updated":"2015-07-17 21:21:22.000000000","message":"ditto.","commit_id":"ad2362f130b57d6f329e026d970bbd02010409b4"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"ab449ee96918ae4380c97aa0fa19e886083cc8c5","unresolved":false,"context_lines":[{"line_number":27,"context_line":"                            {\u0027os_distro\u0027: \u0027fedora19\u0027,"},{"line_number":28,"context_line":"                             \u0027hw_disk_bus\u0027: \u0027ide\u0027,"},{"line_number":29,"context_line":"                             \u0027hw_vif_model\u0027: \u0027virtio\u0027}"},{"line_number":30,"context_line":"                        }"},{"line_number":31,"context_line":"        osinfo.libosinfo \u003d mock.Mock()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def test_get_os(self):"}],"source_content_type":"text/x-python","patch_set":28,"id":"fa69d971_aa7a4b22","line":30,"range":{"start_line":30,"start_character":24,"end_line":30,"end_character":25},"updated":"2016-01-11 11:58:51.000000000","message":"You should define an nova.objects.ImageMeta instance here instead of a dict","commit_id":"f6ffc3ad11da65aae9bea1ce5c65c18531f2de1f"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"f5da529df96b85d7735563650149aa2e32f1ee94","unresolved":false,"context_lines":[{"line_number":27,"context_line":"                            {\u0027os_distro\u0027: \u0027fedora19\u0027,"},{"line_number":28,"context_line":"                             \u0027hw_disk_bus\u0027: \u0027ide\u0027,"},{"line_number":29,"context_line":"                             \u0027hw_vif_model\u0027: \u0027virtio\u0027}"},{"line_number":30,"context_line":"                        }"},{"line_number":31,"context_line":"        osinfo.libosinfo \u003d mock.Mock()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def test_get_os(self):"}],"source_content_type":"text/x-python","patch_set":28,"id":"fa69d971_447a8d89","line":30,"range":{"start_line":30,"start_character":24,"end_line":30,"end_character":25},"in_reply_to":"fa69d971_aa7a4b22","updated":"2016-01-11 18:29:46.000000000","message":"Done","commit_id":"f6ffc3ad11da65aae9bea1ce5c65c18531f2de1f"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"ab449ee96918ae4380c97aa0fa19e886083cc8c5","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        \"\"\""},{"line_number":64,"context_line":"        img_meta \u003d {\u0027properties\u0027:"},{"line_number":65,"context_line":"                       {\u0027os_distro\u0027: \u0027fedora19\u0027}"},{"line_number":66,"context_line":"                   }"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        test_osinfo_obj \u003d mock.Mock()"},{"line_number":69,"context_line":"        test_osinfo_obj.network_model.return_value \u003d \u0027virtio_1\u0027"}],"source_content_type":"text/x-python","patch_set":28,"id":"fa69d971_ea9a8361","line":66,"range":{"start_line":66,"start_character":19,"end_line":66,"end_character":20},"updated":"2016-01-11 11:58:51.000000000","message":"Again use objects here","commit_id":"f6ffc3ad11da65aae9bea1ce5c65c18531f2de1f"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"f5da529df96b85d7735563650149aa2e32f1ee94","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        \"\"\""},{"line_number":64,"context_line":"        img_meta \u003d {\u0027properties\u0027:"},{"line_number":65,"context_line":"                       {\u0027os_distro\u0027: \u0027fedora19\u0027}"},{"line_number":66,"context_line":"                   }"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        test_osinfo_obj \u003d mock.Mock()"},{"line_number":69,"context_line":"        test_osinfo_obj.network_model.return_value \u003d \u0027virtio_1\u0027"}],"source_content_type":"text/x-python","patch_set":28,"id":"fa69d971_8445e543","line":66,"range":{"start_line":66,"start_character":19,"end_line":66,"end_character":20},"in_reply_to":"fa69d971_ea9a8361","updated":"2016-01-11 18:29:46.000000000","message":"Done","commit_id":"f6ffc3ad11da65aae9bea1ce5c65c18531f2de1f"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"ab449ee96918ae4380c97aa0fa19e886083cc8c5","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                   }"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        test_osinfo_obj \u003d mock.Mock()"},{"line_number":69,"context_line":"        test_osinfo_obj.network_model.return_value \u003d \u0027virtio_1\u0027"},{"line_number":70,"context_line":"        test_osinfo_obj.disk_model.return_value \u003d \u0027virtio_1\u0027"},{"line_number":71,"context_line":"        with mock.patch.object(osinfo, \u0027OsInfo\u0027,"},{"line_number":72,"context_line":"                               return_value\u003dtest_osinfo_obj):"}],"source_content_type":"text/x-python","patch_set":28,"id":"fa69d971_ca31bf5a","line":69,"range":{"start_line":69,"start_character":62,"end_line":69,"end_character":63},"updated":"2016-01-11 11:58:51.000000000","message":"Lets try to use real models, as its slightly less confusing ie \u0027virtio\u0027 rather than \u0027virtio_1\u0027","commit_id":"f6ffc3ad11da65aae9bea1ce5c65c18531f2de1f"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"f5da529df96b85d7735563650149aa2e32f1ee94","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                   }"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        test_osinfo_obj \u003d mock.Mock()"},{"line_number":69,"context_line":"        test_osinfo_obj.network_model.return_value \u003d \u0027virtio_1\u0027"},{"line_number":70,"context_line":"        test_osinfo_obj.disk_model.return_value \u003d \u0027virtio_1\u0027"},{"line_number":71,"context_line":"        with mock.patch.object(osinfo, \u0027OsInfo\u0027,"},{"line_number":72,"context_line":"                               return_value\u003dtest_osinfo_obj):"}],"source_content_type":"text/x-python","patch_set":28,"id":"fa69d971_24751997","line":69,"range":{"start_line":69,"start_character":62,"end_line":69,"end_character":63},"in_reply_to":"fa69d971_ca31bf5a","updated":"2016-01-11 18:29:46.000000000","message":"Done","commit_id":"f6ffc3ad11da65aae9bea1ce5c65c18531f2de1f"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ec648c43c2e945b3f5dc5272fe2dcee95cd7193b","unresolved":false,"context_lines":[{"line_number":220,"context_line":"                help\u003d\u0027List of uid targets and ranges.\u0027"},{"line_number":221,"context_line":"                     \u0027Syntax is guest-uid:host-uid:count\u0027"},{"line_number":222,"context_line":"                     \u0027Maximum of 5 allowed.\u0027),"},{"line_number":223,"context_line":"    cfg.BoolOpt(\u0027hardware_config_enabled\u0027,"},{"line_number":224,"context_line":"                default\u003dTrue,"},{"line_number":225,"context_line":"                help\u003d\u0027Defines whether libosinfo should be used for hardware\u0027"},{"line_number":226,"context_line":"                     \u0027configuration.\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"3acd31a7_1a4e323b","line":223,"updated":"2015-05-05 06:34:37.000000000","message":"So it\u0027s probably my fault but this option can probably continue to live in virt/osinfo.py and perhaps create a new group of option \u0027osinfo\u0027. Like we do with guestfs BUT better to wait for others comments.","commit_id":"7c645168267749e06e8930b43e46b017494502c1"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"c5fa42fa1b14ba9a3596776fee565cf4a03c9e4e","unresolved":false,"context_lines":[{"line_number":222,"context_line":"    cfg.BoolOpt(\u0027hardware_config_enabled\u0027,"},{"line_number":223,"context_line":"                default\u003dTrue,"},{"line_number":224,"context_line":"                help\u003d\u0027Defines whether libosinfo should be used for hardware\u0027"},{"line_number":225,"context_line":"                     \u0027configuration.\u0027),"},{"line_number":226,"context_line":"    cfg.ListOpt(\u0027gid_maps\u0027,"},{"line_number":227,"context_line":"                default\u003d[],"},{"line_number":228,"context_line":"                help\u003d\u0027List of guid targets and ranges.\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afb71cf_775bfdf6","line":225,"updated":"2015-06-09 16:56:45.000000000","message":"I\u0027m thinking we could perhaps instead have the config option in the nova/virt/osinfo.py module instead, since that module is placed in a location suggesting it should be shared, not just in libvirt code. Then declare a new section. eg so we\u0027d end up with this in nova.conf\n\n [osinfo]\n enabled\u003dtrue\n\nTo turn on/off libosinfo/","commit_id":"84e20689764651706b990edb14471c2b91cd5850"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"bef40223e5c717f2143ed11fb33dd486d12c67a9","unresolved":false,"context_lines":[{"line_number":222,"context_line":"    cfg.BoolOpt(\u0027hardware_config_enabled\u0027,"},{"line_number":223,"context_line":"                default\u003dTrue,"},{"line_number":224,"context_line":"                help\u003d\u0027Defines whether libosinfo should be used for hardware\u0027"},{"line_number":225,"context_line":"                     \u0027configuration.\u0027),"},{"line_number":226,"context_line":"    cfg.ListOpt(\u0027gid_maps\u0027,"},{"line_number":227,"context_line":"                default\u003d[],"},{"line_number":228,"context_line":"                help\u003d\u0027List of guid targets and ranges.\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afb71cf_9949f962","line":225,"in_reply_to":"3afb71cf_775bfdf6","updated":"2015-06-10 03:38:34.000000000","message":"Done","commit_id":"84e20689764651706b990edb14471c2b91cd5850"}],"nova/virt/libvirt/osinfo.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"469bb2a0efdd87395daec4ec58e39bb64f1a9241","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"libvirt_hardware_opts \u003d ["},{"line_number":30,"context_line":"    cfg.StrOpt(\u0027hardware_config\u0027,"},{"line_number":31,"context_line":"                default\u003d\u0027default\u0027,"},{"line_number":32,"context_line":"                help\u003d\u0027Defines whether libosinfo should be used for hardware\u0027"},{"line_number":33,"context_line":"                     \u0027configuration. The acceptable values are:\u0027"},{"line_number":34,"context_line":"                     \u0027default - try to use libosinfo, otherwise fallback to\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a930d6b_5373c6e6","line":31,"updated":"2015-01-23 15:25:42.000000000","message":"I think that you need to add choices here. I think that the format is :\nchoices\u003d[\u0027default\u0027, \u0027fixed\u0027, \u0027libosinfo\u0027]","commit_id":"9c9a1d21f86f4a22e220d2c9fc5b96a4444c47d5"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"9147f86b451edbbe13824dfc136a69b80a04b0c6","unresolved":false,"context_lines":[{"line_number":191,"context_line":"            os_info_obj \u003d get_cached_os_info(img_props.os_name)"},{"line_number":192,"context_line":"        except (ImportError, OsInfoNotFound):"},{"line_number":193,"context_line":"            os_info_obj \u003d img_props.get_os_info()"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    return os_info_obj"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_552f8f3e","line":194,"updated":"2015-02-13 12:19:32.000000000","message":"I don\u0027t think this logic is correct.\n\nWe can\u0027t rely on the the \u0027os_name\u0027 image property being set. So we must *only* use libosinfo if it is set, otherwise we must always fallback to the traditional hardware config logic.","commit_id":"6ba4059c44774fb6743f7057c6665d04bb66a6d5"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"82b63c056d7b31cb48240b6c26ded681c19d0c99","unresolved":false,"context_lines":[{"line_number":191,"context_line":"            os_info_obj \u003d get_cached_os_info(img_props.os_name)"},{"line_number":192,"context_line":"        except (ImportError, OsInfoNotFound):"},{"line_number":193,"context_line":"            os_info_obj \u003d img_props.get_os_info()"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    return os_info_obj"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6ced46_bd4f85bd","line":194,"in_reply_to":"da86d52c_51176c54","updated":"2015-03-24 12:53:32.000000000","message":"Done","commit_id":"6ba4059c44774fb6743f7057c6665d04bb66a6d5"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"a2a20b1e5d9962c40e16172d92db468314255cc0","unresolved":false,"context_lines":[{"line_number":191,"context_line":"            os_info_obj \u003d get_cached_os_info(img_props.os_name)"},{"line_number":192,"context_line":"        except (ImportError, OsInfoNotFound):"},{"line_number":193,"context_line":"            os_info_obj \u003d img_props.get_os_info()"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    return os_info_obj"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_76ec8b93","line":194,"in_reply_to":"da86d52c_552f8f3e","updated":"2015-02-13 20:12:03.000000000","message":"At the moment, when hardware_config is set to \u0027default\u0027, and \u0027os_name\u0027 is not set, we will fall back to the traditional hardware config logic. (lines 191 and then 174)\n\nOr do you mean, we need to follow the same logic even if someone set \nhardware_config \u003d \u0027libosinfo\u0027 ?","commit_id":"6ba4059c44774fb6743f7057c6665d04bb66a6d5"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"119dd5a59e603ce51695647127db0ba90c0d5751","unresolved":false,"context_lines":[{"line_number":191,"context_line":"            os_info_obj \u003d get_cached_os_info(img_props.os_name)"},{"line_number":192,"context_line":"        except (ImportError, OsInfoNotFound):"},{"line_number":193,"context_line":"            os_info_obj \u003d img_props.get_os_info()"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    return os_info_obj"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_51176c54","line":194,"in_reply_to":"da86d52c_76ec8b93","updated":"2015-02-16 09:47:01.000000000","message":"Yes, we must always do fallback - there is also no guarantee that libosinfo has an entry for the os in question either. eg it might be a proprietary internal company OS","commit_id":"6ba4059c44774fb6743f7057c6665d04bb66a6d5"},{"author":{"_account_id":13869,"name":"Maxime Leroy","email":"maxime.leroy@6wind.com","username":"mleroy"},"change_message_id":"a02844d6e708db3c476069a134aa3d32361dffa1","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                     \u0027          fixed defaults.\u0027"},{"line_number":35,"context_line":"                     \u0027fixed - always use fixed defaults even if libosinfo\u0027"},{"line_number":36,"context_line":"                     \u0027        is installed\u0027),"},{"line_number":37,"context_line":"]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"CONF \u003d cfg.CONF"},{"line_number":40,"context_line":"CONF.register_opts(libvirt_hardware_opts, \u0027libvirt\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7aaa499b_da5fd1e3","line":37,"updated":"2015-04-14 16:25:01.000000000","message":"If libosinfo is enabled, it\u0027s not possible to use a specific driver for a glance image anymore.\n\nExample:\n   I want to use my fedora-20 image with the e1000 driver for the network device and use libosinfo  for other drivers.\n\n   glance image image-update --property os_name\u003dfedora21  --property hw_vif_model\u003de1000 name-of-my-fedora-image\n\nInstead of try using libosinfo and then fallback to fixed default,  we should first check if there are any specific property in the glance image like hw_vif_model. If not , try to use libosinfo. Not the opposite \n\nWhat do you think ?","commit_id":"42156cd29d8491a9db1894a956d10257e1818106"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"99e5d4dcae52f0b6022f28a53f1ae29530994a84","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                     \u0027          fixed defaults.\u0027"},{"line_number":35,"context_line":"                     \u0027fixed - always use fixed defaults even if libosinfo\u0027"},{"line_number":36,"context_line":"                     \u0027        is installed\u0027),"},{"line_number":37,"context_line":"]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"CONF \u003d cfg.CONF"},{"line_number":40,"context_line":"CONF.register_opts(libvirt_hardware_opts, \u0027libvirt\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"dac4157f_180c013a","line":37,"in_reply_to":"7aaa499b_da5fd1e3","updated":"2015-04-22 15:07:33.000000000","message":"isn\u0027t that the point of \"fixed\" ?","commit_id":"42156cd29d8491a9db1894a956d10257e1818106"},{"author":{"_account_id":13869,"name":"Maxime Leroy","email":"maxime.leroy@6wind.com","username":"mleroy"},"change_message_id":"b8f4d3a7ad1e5feea62c1378b0e729d1eb64a544","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                     \u0027          fixed defaults.\u0027"},{"line_number":35,"context_line":"                     \u0027fixed - always use fixed defaults even if libosinfo\u0027"},{"line_number":36,"context_line":"                     \u0027        is installed\u0027),"},{"line_number":37,"context_line":"]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"CONF \u003d cfg.CONF"},{"line_number":40,"context_line":"CONF.register_opts(libvirt_hardware_opts, \u0027libvirt\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab921fb_917da0e9","line":37,"in_reply_to":"bab921fb_462877e2","updated":"2015-04-24 15:06:48.000000000","message":"I agree, we need only one config option to disable/enable libosinfo.","commit_id":"42156cd29d8491a9db1894a956d10257e1818106"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"d8dc3dd036457bcdaf64bc744c9bac1aa9e17110","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                     \u0027          fixed defaults.\u0027"},{"line_number":35,"context_line":"                     \u0027fixed - always use fixed defaults even if libosinfo\u0027"},{"line_number":36,"context_line":"                     \u0027        is installed\u0027),"},{"line_number":37,"context_line":"]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"CONF \u003d cfg.CONF"},{"line_number":40,"context_line":"CONF.register_opts(libvirt_hardware_opts, \u0027libvirt\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab921fb_462877e2","line":37,"in_reply_to":"bab921fb_e561c83a","updated":"2015-04-24 13:20:42.000000000","message":"I agree, if hw_vif_model is set, we must always honour that. Only if missing do we then try libosinfo (if it is enabled), and failing that our built-in defaults.\n\nSo I think we only need a config option to turn on/off use of libosinfo really.","commit_id":"42156cd29d8491a9db1894a956d10257e1818106"},{"author":{"_account_id":13869,"name":"Maxime Leroy","email":"maxime.leroy@6wind.com","username":"mleroy"},"change_message_id":"3e964c15380dbb175a4b47fe7a522daa6caebb81","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                     \u0027          fixed defaults.\u0027"},{"line_number":35,"context_line":"                     \u0027fixed - always use fixed defaults even if libosinfo\u0027"},{"line_number":36,"context_line":"                     \u0027        is installed\u0027),"},{"line_number":37,"context_line":"]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"CONF \u003d cfg.CONF"},{"line_number":40,"context_line":"CONF.register_opts(libvirt_hardware_opts, \u0027libvirt\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab921fb_e561c83a","line":37,"in_reply_to":"dac4157f_180c013a","updated":"2015-04-24 13:14:56.000000000","message":"No \"fixed\" never uses libosinfo.\n\nThe vif model is selected with the following steps:\n\n- In fixed mode:\n   1. First try to get hw_vif_model from metadata glance image\n   2. If no hw_vif_model metadata, use virtio as default vif model\n\n- In libosinfo mode:\n    1. First, try to use libosinfo\n    2. If previous steps fails, try to get hw_vif_model glance metadata\n    3. If no hw_vif_model metadata, use virtio as default vif model\n\nInstead of that, I would prefer for libosinfo mode:\n    1. First, try to get hw_vif_model glance image\n    2. If no hw_vif_model metadata, try to use libosinfo\n    3. If previous steps fails, use virtio as default vif model","commit_id":"42156cd29d8491a9db1894a956d10257e1818106"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"99e5d4dcae52f0b6022f28a53f1ae29530994a84","unresolved":false,"context_lines":[{"line_number":171,"context_line":"    else:"},{"line_number":172,"context_line":"        try:"},{"line_number":173,"context_line":"            os_info_obj \u003d get_cached_os_info(img_props.os_name)"},{"line_number":174,"context_line":"        except (ImportError, OsInfoNotFound):"},{"line_number":175,"context_line":"            os_info_obj \u003d img_props"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    return os_info_obj"}],"source_content_type":"text/x-python","patch_set":6,"id":"dac4157f_5d382bef","line":174,"updated":"2015-04-22 15:07:33.000000000","message":"You should be able to use exception.NovaException only here please refer my comment on the previous patch","commit_id":"42156cd29d8491a9db1894a956d10257e1818106"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"9daac46b7613e04dcdb4b514155dbecd0324e101","unresolved":false,"context_lines":[{"line_number":22,"context_line":"libosinfo \u003d None"},{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"libvirt_hardware_opts \u003d ["},{"line_number":26,"context_line":"    cfg.BoolOpt(\u0027hardware_config_enabled\u0027,"},{"line_number":27,"context_line":"                default\u003dTrue,"},{"line_number":28,"context_line":"                help\u003d\u0027Defines whether libosinfo should be used for hardware\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"3acd31a7_0036e7e5","line":25,"updated":"2015-05-04 06:58:55.000000000","message":"This option should live in the driver module.","commit_id":"00aba7ebce23b6bafa0cae9d3cfa63a8179ae048"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ef27318e7ac5c148f0d2ea0d8aafbca3a0d098b9","unresolved":false,"context_lines":[{"line_number":22,"context_line":"libosinfo \u003d None"},{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"libvirt_hardware_opts \u003d ["},{"line_number":26,"context_line":"    cfg.BoolOpt(\u0027hardware_config_enabled\u0027,"},{"line_number":27,"context_line":"                default\u003dTrue,"},{"line_number":28,"context_line":"                help\u003d\u0027Defines whether libosinfo should be used for hardware\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"3acd31a7_20ac43ec","line":25,"in_reply_to":"3acd31a7_0036e7e5","updated":"2015-05-04 07:02:25.000000000","message":"Well actually there is no necessary to have this to live in the driver.","commit_id":"00aba7ebce23b6bafa0cae9d3cfa63a8179ae048"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"9daac46b7613e04dcdb4b514155dbecd0324e101","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        os_key \u003d self.img_props.get(\u0027os_name\u0027)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        # If libosinfo is disabled initialize an empty OsInfoOs object"},{"line_number":139,"context_line":"        if not CONF.libvirt.hardware_config_enabled:"},{"line_number":140,"context_line":"            os_key \u003d None"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        self.os_info_obj \u003d OsInfoOs(os_key)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3acd31a7_2037a3e4","line":139,"updated":"2015-05-04 06:58:55.000000000","message":"I guess we want to avoid to read an option inside a class definition. We should probably pass a new argument \u0027use_hardware_config\u0027 in the init method.\n\n  def __init__(self, image_meta, use_hardware_config\u003dFalse):\n    ...","commit_id":"00aba7ebce23b6bafa0cae9d3cfa63a8179ae048"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"4aa1029abe7a5128dfdd77a48ddaaf3f01c52174","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        os_key \u003d self.img_props.get(\u0027os_name\u0027)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        # If libosinfo is disabled initialize an empty OsInfoOs object"},{"line_number":139,"context_line":"        if not CONF.libvirt.hardware_config_enabled:"},{"line_number":140,"context_line":"            os_key \u003d None"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        self.os_info_obj \u003d OsInfoOs(os_key)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3acd31a7_4424d35e","line":139,"in_reply_to":"3acd31a7_2037a3e4","updated":"2015-05-05 04:25:25.000000000","message":"tbh, I don\u0027t see why is reading an option in a class is a bad design.\nHowever, it\u0027s not relevant due to your previous good point, that this module shouldn\u0027t be libvirt specific.","commit_id":"00aba7ebce23b6bafa0cae9d3cfa63a8179ae048"}],"nova/virt/osinfo.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"2ce33ef6676a1a9d5d295a2a66bd15afe59a720f","unresolved":false,"context_lines":[{"line_number":25,"context_line":"libosinfo_opts \u003d ["},{"line_number":26,"context_line":"    cfg.BoolOpt(\u0027enabled\u0027,"},{"line_number":27,"context_line":"                default\u003dTrue,"},{"line_number":28,"context_line":"                help\u003d\u0027Defines whether libosinfo should be used for hardware\u0027"},{"line_number":29,"context_line":"                     \u0027configuration.\u0027),"},{"line_number":30,"context_line":"    ]"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"fa32b979_a795e1e4","line":28,"updated":"2015-06-23 06:15:35.000000000","message":"missing space at the end of the line","commit_id":"4d94f61e73d33145efe3cb05e7668728de306ac0"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"7776aeac1cfcf60409a68b4e64c6832b9f86c0c1","unresolved":false,"context_lines":[{"line_number":119,"context_line":"class HardwareProperties(object):"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def __init__(self, image_meta):"},{"line_number":122,"context_line":"        # TODO(vladikr) Replaced image_meta ImageMetaProps object"},{"line_number":123,"context_line":"        #               when it is ready"},{"line_number":124,"context_line":"        self.img_props \u003d image_meta.get(\u0027properties\u0027, {})"},{"line_number":125,"context_line":"        os_key \u003d self.img_props.get(\u0027os_distro\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa32b979_879c5d5e","line":122,"updated":"2015-06-23 06:11:21.000000000","message":"s/Replaced/Replace","commit_id":"4d94f61e73d33145efe3cb05e7668728de306ac0"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"88c85e33495dbb87ac28a2e45269f8175214a81d","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def __init__(self, image_meta):"},{"line_number":110,"context_line":"        # TODO(vladikr) Replace image_meta ImageMetaProps object"},{"line_number":111,"context_line":"        #               when it is ready"},{"line_number":112,"context_line":"        self.img_props \u003d image_meta.get(\u0027properties\u0027, {})"},{"line_number":113,"context_line":"        os_key \u003d self.img_props.get(\u0027os_distro\u0027)"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"9a41bdd9_e9819f4e","line":111,"updated":"2015-07-17 21:21:22.000000000","message":"I believe it is now ready...","commit_id":"ad2362f130b57d6f329e026d970bbd02010409b4"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"a5eaa5c4ce0fd2272121166b417778432f539894","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def __init__(self, image_meta):"},{"line_number":110,"context_line":"        # TODO(vladikr) Replace image_meta ImageMetaProps object"},{"line_number":111,"context_line":"        #               when it is ready"},{"line_number":112,"context_line":"        self.img_props \u003d image_meta.get(\u0027properties\u0027, {})"},{"line_number":113,"context_line":"        os_key \u003d self.img_props.get(\u0027os_distro\u0027)"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"3a50d1a3_4c6ab6ef","line":111,"in_reply_to":"9a41bdd9_e9819f4e","updated":"2015-07-22 19:26:51.000000000","message":"Unfortunately, there are several bugs that are preventing us from using the object now.\nThis is all mentioned in the previous patchsets and review.\n\nIt all comes down to fact that we need this series to be merged prior to switching:\nhttps://review.openstack.org/#/q/status:open+project:openstack/nova+branch:master+topic:virtimageprops-17,n,z\n\nOnce this is merged, I\u0027ll send a patch to make the switch.","commit_id":"ad2362f130b57d6f329e026d970bbd02010409b4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"88c85e33495dbb87ac28a2e45269f8175214a81d","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        # TODO(vladikr) Replace image_meta ImageMetaProps object"},{"line_number":111,"context_line":"        #               when it is ready"},{"line_number":112,"context_line":"        self.img_props \u003d image_meta.get(\u0027properties\u0027, {})"},{"line_number":113,"context_line":"        os_key \u003d self.img_props.get(\u0027os_distro\u0027)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        self.os_info_obj \u003d OsInfoOs(os_key)"},{"line_number":116,"context_line":"        self.network_model \u003d self._get_network_model()"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a41bdd9_49b44b34","line":113,"updated":"2015-07-17 21:21:22.000000000","message":"ditto.","commit_id":"ad2362f130b57d6f329e026d970bbd02010409b4"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"88c85e33495dbb87ac28a2e45269f8175214a81d","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        self.img_props \u003d image_meta.get(\u0027properties\u0027, {})"},{"line_number":113,"context_line":"        os_key \u003d self.img_props.get(\u0027os_distro\u0027)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        self.os_info_obj \u003d OsInfoOs(os_key)"},{"line_number":116,"context_line":"        self.network_model \u003d self._get_network_model()"},{"line_number":117,"context_line":"        self.disk_bus \u003d self._get_disk_model()"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"9a41bdd9_09ec0328","line":115,"updated":"2015-07-17 21:21:22.000000000","message":"From my comment on the previous patch, please move the definition of the OsInfoOs object into this patch.","commit_id":"ad2362f130b57d6f329e026d970bbd02010409b4"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6c61ad767b4670bb9f805ef6d16d4188440c625d","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            return devs.get_nth(0).get_name()"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"class HardwareProperties(object):"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def __init__(self, image_meta):"},{"line_number":117,"context_line":"        if not isinstance(image_meta, objects.ImageMeta):"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba8a016a_34f7638c","line":114,"updated":"2015-11-19 17:08:21.000000000","message":"From a \"design\" POV I think HardwareProperties should bto received instance, no? Then since it needs image properties you can defined __init__ method like that:\n\n  def __init__(self, instance):\n    self.image_meta \u003d objects.ImageMeta.from_instance(instance)\n    ...","commit_id":"34f3eeab96dd2293d1f50e73f13595a842c20873"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"c67530d0b3c1dfe39bd65197f0944f93662f9c26","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            return devs.get_nth(0).get_name()"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"class HardwareProperties(object):"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def __init__(self, image_meta):"},{"line_number":117,"context_line":"        if not isinstance(image_meta, objects.ImageMeta):"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba8a016a_495d62eb","line":114,"in_reply_to":"ba8a016a_34f7638c","updated":"2015-11-21 04:53:43.000000000","message":"Thanks. Problem is that not all of the users of this class has an instance ref.","commit_id":"34f3eeab96dd2293d1f50e73f13595a842c20873"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6c61ad767b4670bb9f805ef6d16d4188440c625d","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"class HardwareProperties(object):"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def __init__(self, image_meta):"},{"line_number":117,"context_line":"        if not isinstance(image_meta, objects.ImageMeta):"},{"line_number":118,"context_line":"            image_meta \u003d objects.ImageMeta.from_dict(image_meta)"},{"line_number":119,"context_line":"        self.img_props \u003d image_meta.properties"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba8a016a_34e68315","line":116,"updated":"2015-11-19 17:08:21.000000000","message":"Some docstring could be nice :)","commit_id":"34f3eeab96dd2293d1f50e73f13595a842c20873"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"6c61ad767b4670bb9f805ef6d16d4188440c625d","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        self.network_model \u003d self._get_network_model()"},{"line_number":124,"context_line":"        self.disk_bus \u003d self._get_disk_model()"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def _get_network_model(self):"},{"line_number":127,"context_line":"        return self.img_props.get(\u0027hw_vif_model\u0027,"},{"line_number":128,"context_line":"                                  self.os_info_obj.network_model)"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"ba8a016a_d457f723","line":126,"updated":"2015-11-19 17:08:21.000000000","message":"Usually we prefer to have __init__ method less heavy as possible, why not to use a \u0027property\u0027 decorator here ?\n\n  def network_model(self):\n    return self.img_props.get(...,)\n\n...","commit_id":"34f3eeab96dd2293d1f50e73f13595a842c20873"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"c67530d0b3c1dfe39bd65197f0944f93662f9c26","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        self.network_model \u003d self._get_network_model()"},{"line_number":124,"context_line":"        self.disk_bus \u003d self._get_disk_model()"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def _get_network_model(self):"},{"line_number":127,"context_line":"        return self.img_props.get(\u0027hw_vif_model\u0027,"},{"line_number":128,"context_line":"                                  self.os_info_obj.network_model)"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"ba8a016a_090e7ae5","line":126,"in_reply_to":"ba8a016a_d457f723","updated":"2015-11-21 04:53:43.000000000","message":"Yeah.. Previously, I wanted to represent it as an object so the users will see what attributes it has. However, in the current form I can\u0027t argument that..","commit_id":"34f3eeab96dd2293d1f50e73f13595a842c20873"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"889303718f79f310855ea2873e803360a2bda0e1","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        os_key \u003d self.img_props.get(\u0027os_distro\u0027)"},{"line_number":119,"context_line":"        self.os_info_obj \u003d OsInfo(os_key)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def network_model(self):"},{"line_number":122,"context_line":"        return self.img_props.get(\u0027hw_vif_model\u0027,"},{"line_number":123,"context_line":"                                  self.os_info_obj.network_model())"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"ba8a016a_7a7c7420","line":121,"updated":"2015-11-23 15:31:30.000000000","message":"I preferred to see them as properties:\n\n  @property\n  def network_model(self):\n    ...","commit_id":"3a8365968874f209d49aba6734f0ad73972ad0e3"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"ab449ee96918ae4380c97aa0fa19e886083cc8c5","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def __init__(self, image_meta):"},{"line_number":115,"context_line":"        if not isinstance(image_meta, objects.ImageMeta):"},{"line_number":116,"context_line":"            image_meta \u003d objects.ImageMeta.from_dict(image_meta)"},{"line_number":117,"context_line":"        self.img_props \u003d image_meta.properties"},{"line_number":118,"context_line":"        os_key \u003d self.img_props.get(\u0027os_distro\u0027)"},{"line_number":119,"context_line":"        self.os_info_obj \u003d OsInfo(os_key)"}],"source_content_type":"text/x-python","patch_set":28,"id":"fa69d971_2a8e5b2e","line":116,"range":{"start_line":116,"start_character":63,"end_line":116,"end_character":64},"updated":"2016-01-11 11:58:51.000000000","message":"The libvirt driver is converted to use the ImageMeta object now, so this can be dropped - just add API docs here that \u0027image_meta\u0027 is expected to be an object.","commit_id":"f6ffc3ad11da65aae9bea1ce5c65c18531f2de1f"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"f5da529df96b85d7735563650149aa2e32f1ee94","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def __init__(self, image_meta):"},{"line_number":115,"context_line":"        if not isinstance(image_meta, objects.ImageMeta):"},{"line_number":116,"context_line":"            image_meta \u003d objects.ImageMeta.from_dict(image_meta)"},{"line_number":117,"context_line":"        self.img_props \u003d image_meta.properties"},{"line_number":118,"context_line":"        os_key \u003d self.img_props.get(\u0027os_distro\u0027)"},{"line_number":119,"context_line":"        self.os_info_obj \u003d OsInfo(os_key)"}],"source_content_type":"text/x-python","patch_set":28,"id":"fa69d971_015a47f2","line":116,"range":{"start_line":116,"start_character":63,"end_line":116,"end_character":64},"in_reply_to":"fa69d971_2a8e5b2e","updated":"2016-01-11 18:29:46.000000000","message":"Done","commit_id":"f6ffc3ad11da65aae9bea1ce5c65c18531f2de1f"}]}
