)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"01a0309d1fa916f86985ef5f426af23ed446b247","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch enables reading rbd_default_features from ceph.conf for rbd"},{"line_number":10,"context_line":"features configuration, falling back to layering if nothing is found."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I639f06d6375201bdf5d469953bd80644ef433c87"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a50d1a3_324a9f28","line":11,"updated":"2015-07-31 01:36:44.000000000","message":"Does this fix a bug?","commit_id":"d0e8e1a532e29df9e38cc7c1303ff4bbb3679da5"},{"author":{"_account_id":16412,"name":"Vikhyat Umrao","email":"vumrao@redhat.com","username":"vikhyat"},"change_message_id":"efa5a6834f06685d65a508668cd9790b6743098c","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch enables reading rbd_default_features from ceph.conf for rbd"},{"line_number":10,"context_line":"features configuration, falling back to layering if nothing is found."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I639f06d6375201bdf5d469953bd80644ef433c87"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a50d1a3_28730bb6","line":11,"in_reply_to":"3a50d1a3_324a9f28","updated":"2015-07-31 07:37:59.000000000","message":"Thanks Matt.\n\nWe did not have bug for it so I have created one for it :\nhttps://bugs.launchpad.net/nova/+bug/1480129\n\nI will add it to the commit message.","commit_id":"d0e8e1a532e29df9e38cc7c1303ff4bbb3679da5"}],"nova/tests/unit/virt/libvirt/storage/test_rbd.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b0cd1f4e3b5ee766af574c954612c5d30d4bcc10","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    def test_rbd_conf_features(self, mock_connect):"},{"line_number":159,"context_line":"        mock_cluster \u003d mock.Mock()"},{"line_number":160,"context_line":"        mock_cluster.conf_get \u003d mock.Mock()"},{"line_number":161,"context_line":"        mock_cluster.conf_get.return_value \u003d \u00271\u0027"},{"line_number":162,"context_line":"        mock_connect.return_value \u003d (mock_cluster, None)"},{"line_number":163,"context_line":"        client \u003d rbd_utils.RADOSClient(self.driver)"},{"line_number":164,"context_line":"        self.assertEqual(1, client.features)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_16a46055","line":161,"updated":"2015-08-03 20:02:54.000000000","message":"How about testing the case where this is None or 0?","commit_id":"4b9df5cd955c2dad2b96077f3691f95dd1a6430f"},{"author":{"_account_id":16412,"name":"Vikhyat Umrao","email":"vumrao@redhat.com","username":"vikhyat"},"change_message_id":"31657354894c5ae3d7a3fd1312d6de807da7a79b","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    def test_rbd_conf_features(self, mock_connect):"},{"line_number":159,"context_line":"        mock_cluster \u003d mock.Mock()"},{"line_number":160,"context_line":"        mock_cluster.conf_get \u003d mock.Mock()"},{"line_number":161,"context_line":"        mock_cluster.conf_get.return_value \u003d \u00271\u0027"},{"line_number":162,"context_line":"        mock_connect.return_value \u003d (mock_cluster, None)"},{"line_number":163,"context_line":"        client \u003d rbd_utils.RADOSClient(self.driver)"},{"line_number":164,"context_line":"        self.assertEqual(1, client.features)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_9f9ab713","line":161,"in_reply_to":"1a4dcd0f_16a46055","updated":"2015-08-04 14:23:38.000000000","message":"sure, let me check and add this case.","commit_id":"4b9df5cd955c2dad2b96077f3691f95dd1a6430f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2377446aa3504847d911c4998a5b483686074c9b","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    def test_rbd_conf_features(self, mock_rbd, mock_connect):"},{"line_number":160,"context_line":"        mock_cluster \u003d mock.Mock()"},{"line_number":161,"context_line":"        mock_cluster.conf_get \u003d mock.Mock()"},{"line_number":162,"context_line":"        mock_cluster.conf_get.return_value \u003d None"},{"line_number":163,"context_line":"        self.mock_rbd \u003d mock_rbd"},{"line_number":164,"context_line":"        mock_connect.return_value \u003d (mock_cluster, None)"},{"line_number":165,"context_line":"        client \u003d rbd_utils.RADOSClient(self.driver)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_f5abb387","line":162,"updated":"2015-08-04 16:32:48.000000000","message":"So you changed this from \u00271\u0027 in the previous patch set to None rather than just add another test case that tests the None (or 0) case - so now you\u0027re missing the test for the \u00271\u0027 case.  Please just have separate test cases for the separate conditionals in the code.","commit_id":"96b4adf72330fa8e8b426fb520847d42c38b7bd8"},{"author":{"_account_id":16412,"name":"Vikhyat Umrao","email":"vumrao@redhat.com","username":"vikhyat"},"change_message_id":"323f230ce73506606fc2586a23f1087d3accf26d","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    def test_rbd_conf_features(self, mock_rbd, mock_connect):"},{"line_number":160,"context_line":"        mock_cluster \u003d mock.Mock()"},{"line_number":161,"context_line":"        mock_cluster.conf_get \u003d mock.Mock()"},{"line_number":162,"context_line":"        mock_cluster.conf_get.return_value \u003d None"},{"line_number":163,"context_line":"        self.mock_rbd \u003d mock_rbd"},{"line_number":164,"context_line":"        mock_connect.return_value \u003d (mock_cluster, None)"},{"line_number":165,"context_line":"        client \u003d rbd_utils.RADOSClient(self.driver)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a4dcd0f_e5b6a0db","line":162,"in_reply_to":"1a4dcd0f_f5abb387","updated":"2015-08-04 17:51:49.000000000","message":"Sorry, misunderstood it. Sending new patch set.","commit_id":"96b4adf72330fa8e8b426fb520847d42c38b7bd8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"060bf90a0596a65c6afafdffa0e371f07a9e26ae","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    @mock.patch.object(rbd_utils.RBDDriver, \u0027_connect_to_rados\u0027)"},{"line_number":158,"context_line":"    @mock.patch.object(rbd_utils, \u0027rbd\u0027)"},{"line_number":159,"context_line":"    def test_rbd_conf_features(self, mock_rbd, mock_connect):"},{"line_number":160,"context_line":"        self.mock_rbd \u003d mock_rbd"},{"line_number":161,"context_line":"        mock_cluster \u003d mock.Mock()"},{"line_number":162,"context_line":"        mock_cluster.conf_get \u003d mock.Mock()"},{"line_number":163,"context_line":"        mock_cluster.conf_get.return_value \u003d None"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_2b474978","line":160,"updated":"2015-08-05 13:51:10.000000000","message":"Why do you need to overwrite self.mock_rbd - this looks like it\u0027s actually just doing the same thing that self.mock_rbd already is in setUp.  If I remove that, the test fails:\n\nhttp://paste.openstack.org/show/408374/\n\nMaybe that\u0027s why the client.features code was using self.driver.rbd.RBD_FEATURE_LAYERING before?\n\nHonestly I\u0027m not even really sure how rbd.RBD_FEATURE_LAYERING is coming back as 1 every time since it should just be some random mock.DEFAULT value.  My guess is that the ubuntu nodes that these tests are running on have librbd installed (the devstack tempest job shows that it is) so you\u0027re just getting lucky that rbd can be imported.\n\nYou should actually mock out rbd.RBD_FEATURE_LAYERING\u003d1 so that it\u0027s not dependent on the underlying packages that are installed on the system.","commit_id":"eb8878b6c51034cc0705e81b8bd6cbfe4494d167"},{"author":{"_account_id":16412,"name":"Vikhyat Umrao","email":"vumrao@redhat.com","username":"vikhyat"},"change_message_id":"5ccc43446a69dfeaba6c3b794bea9d809ba191ab","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    @mock.patch.object(rbd_utils.RBDDriver, \u0027_connect_to_rados\u0027)"},{"line_number":158,"context_line":"    @mock.patch.object(rbd_utils, \u0027rbd\u0027)"},{"line_number":159,"context_line":"    def test_rbd_conf_features(self, mock_rbd, mock_connect):"},{"line_number":160,"context_line":"        self.mock_rbd \u003d mock_rbd"},{"line_number":161,"context_line":"        mock_cluster \u003d mock.Mock()"},{"line_number":162,"context_line":"        mock_cluster.conf_get \u003d mock.Mock()"},{"line_number":163,"context_line":"        mock_cluster.conf_get.return_value \u003d None"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_c0b9dc16","line":160,"in_reply_to":"1a4dcd0f_2b474978","updated":"2015-08-05 15:05:59.000000000","message":"Thanks for all your help and review. yes I had tested many times and every time I got 1 so thought test case is right as you said may be I was lucky.\n\n\u003e Maybe that\u0027s why the client.features code was using self.driver.rbd.RBD_FEATURE_LAYERING ?\n\nNope we should use rbd.RBD_FEATURE_LAYERING otherwise we will get error: AttributeError: \u0027RBDDriver\u0027 object has no attribute \u0027rbd\u0027\n\nYes I should mock out rbd.RBD_FEATURE_LAYERING\u003d1.","commit_id":"eb8878b6c51034cc0705e81b8bd6cbfe4494d167"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ffca4a322b59305e680bd2e35ff72e68e302fbfd","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    @mock.patch.object(rbd_utils.RBDDriver, \u0027_connect_to_rados\u0027)"},{"line_number":158,"context_line":"    @mock.patch.object(rbd_utils, \u0027rbd\u0027)"},{"line_number":159,"context_line":"    def test_rbd_conf_features(self, mock_rbd, mock_connect):"},{"line_number":160,"context_line":"        self.mock_rbd \u003d mock_rbd"},{"line_number":161,"context_line":"        mock_cluster \u003d mock.Mock()"},{"line_number":162,"context_line":"        mock_cluster.conf_get \u003d mock.Mock()"},{"line_number":163,"context_line":"        mock_cluster.conf_get.return_value \u003d None"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_5f336b14","line":160,"in_reply_to":"1a4dcd0f_2b474978","updated":"2015-08-05 14:33:58.000000000","message":"This is what I did locally to get this to work:\n\nhttp://paste.openstack.org/show/408507/","commit_id":"eb8878b6c51034cc0705e81b8bd6cbfe4494d167"},{"author":{"_account_id":16412,"name":"Vikhyat Umrao","email":"vumrao@redhat.com","username":"vikhyat"},"change_message_id":"5ccc43446a69dfeaba6c3b794bea9d809ba191ab","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    @mock.patch.object(rbd_utils.RBDDriver, \u0027_connect_to_rados\u0027)"},{"line_number":158,"context_line":"    @mock.patch.object(rbd_utils, \u0027rbd\u0027)"},{"line_number":159,"context_line":"    def test_rbd_conf_features(self, mock_rbd, mock_connect):"},{"line_number":160,"context_line":"        self.mock_rbd \u003d mock_rbd"},{"line_number":161,"context_line":"        mock_cluster \u003d mock.Mock()"},{"line_number":162,"context_line":"        mock_cluster.conf_get \u003d mock.Mock()"},{"line_number":163,"context_line":"        mock_cluster.conf_get.return_value \u003d None"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_40a86cdb","line":160,"in_reply_to":"1a4dcd0f_5f336b14","updated":"2015-08-05 15:05:59.000000000","message":"http://paste.openstack.org/show/408507/\n^^\nThis looks great. I will go with it.\n\nJust need your inputs for this one I have modified :\nhttp://paste.openstack.org/show/408674/\n^^\nThis one also worked. \n\nIs it both have same behavior or I am missing something ?","commit_id":"eb8878b6c51034cc0705e81b8bd6cbfe4494d167"},{"author":{"_account_id":16412,"name":"Vikhyat Umrao","email":"vumrao@redhat.com","username":"vikhyat"},"change_message_id":"33431a2098a7104e706b61eabf11a0bb6a566622","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    @mock.patch.object(rbd_utils.RBDDriver, \u0027_connect_to_rados\u0027)"},{"line_number":158,"context_line":"    @mock.patch.object(rbd_utils, \u0027rbd\u0027)"},{"line_number":159,"context_line":"    def test_rbd_conf_features(self, mock_rbd, mock_connect):"},{"line_number":160,"context_line":"        self.mock_rbd \u003d mock_rbd"},{"line_number":161,"context_line":"        mock_cluster \u003d mock.Mock()"},{"line_number":162,"context_line":"        mock_cluster.conf_get \u003d mock.Mock()"},{"line_number":163,"context_line":"        mock_cluster.conf_get.return_value \u003d None"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a4dcd0f_a614de9f","line":160,"in_reply_to":"1a4dcd0f_c0b9dc16","updated":"2015-08-05 18:48:22.000000000","message":"Hi Matt,\n\nI am going with this one as I have tested it and all test passed and looks correct to me : http://paste.openstack.org/show/408674/","commit_id":"eb8878b6c51034cc0705e81b8bd6cbfe4494d167"}],"nova/virt/libvirt/imagebackend.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"148777fba438ede52640c20bbc6c3720847bffba","unresolved":false,"context_lines":[{"line_number":742,"context_line":"        return True"},{"line_number":743,"context_line":""},{"line_number":744,"context_line":"    def clone(self, context, image_id_or_uri):"},{"line_number":745,"context_line":"        if not self.driver.supports_layering():"},{"line_number":746,"context_line":"            reason \u003d _(\u0027installed version of librbd does not support cloning\u0027)"},{"line_number":747,"context_line":"            raise exception.ImageUnacceptable(image_id\u003dimage_id_or_uri,"},{"line_number":748,"context_line":"                                              reason\u003dreason)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_bcaae683","side":"PARENT","line":745,"updated":"2015-07-18 13:28:28.000000000","message":"Can ceph be configured to not support layering still?","commit_id":"e8b4eaa2a6c6d56dabe2908d105abfe97e289185"}],"nova/virt/libvirt/rbd_utils.py":[{"author":{"_account_id":1107,"name":"Josh Durgin","email":"jdurgin@redhat.com","username":"jdurgin"},"change_message_id":"4f836e4892201ac605c512310f3091212be618f8","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        \"\"\""},{"line_number":251,"context_line":"        args \u003d [\u0027--pool\u0027, self.pool, base, name]"},{"line_number":252,"context_line":"        if self.supports_layering():"},{"line_number":253,"context_line":"            args +\u003d [\u0027--new-format\u0027]"},{"line_number":254,"context_line":"        args +\u003d self.ceph_args()"},{"line_number":255,"context_line":"        utils.execute(\u0027rbd\u0027, \u0027import\u0027, *args)"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_caa658c0","side":"PARENT","line":253,"updated":"2015-06-01 06:10:20.000000000","message":"we should explicitly use --image-format 2 here now, since that default didn\u0027t change until recently","commit_id":"e8b4eaa2a6c6d56dabe2908d105abfe97e289185"},{"author":{"_account_id":16412,"name":"Vikhyat Umrao","email":"vumrao@redhat.com","username":"vikhyat"},"change_message_id":"9f90879be2dd5e8629f29043c67ac42ebdf19ad5","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        \"\"\""},{"line_number":251,"context_line":"        args \u003d [\u0027--pool\u0027, self.pool, base, name]"},{"line_number":252,"context_line":"        if self.supports_layering():"},{"line_number":253,"context_line":"            args +\u003d [\u0027--new-format\u0027]"},{"line_number":254,"context_line":"        args +\u003d self.ceph_args()"},{"line_number":255,"context_line":"        utils.execute(\u0027rbd\u0027, \u0027import\u0027, *args)"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_52245e5e","side":"PARENT","line":253,"in_reply_to":"7a016987_caa658c0","updated":"2015-06-01 08:46:37.000000000","message":"Thanks Josh. Yes I checked it still 1 we need to use --image-format 2 I will make the changes.\n\n --image-format \u003cformat-number\u003e     format to use when creating an image\n                                     format 1 is the original format (default)\n                                     format 2 supports cloning","commit_id":"e8b4eaa2a6c6d56dabe2908d105abfe97e289185"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"f2158df2b823339561c955981a1880ede725aef7","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    def features(self):"},{"line_number":98,"context_line":"        features \u003d self.cluster.conf_get(\u0027rbd_default_features\u0027)"},{"line_number":99,"context_line":"        if ((features is None) or (int(features) \u003d\u003d 0)):"},{"line_number":100,"context_line":"            features \u003d self.driver.rbd.RBD_FEATURE_LAYERING"},{"line_number":101,"context_line":"        return int(features)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_04da3217","line":100,"range":{"start_line":100,"start_character":39,"end_line":100,"end_character":59},"updated":"2015-05-30 14:36:03.000000000","message":"assume RBD_FEATURE_LAYERING is always present? Since earlier code we used hasattr to check if it was","commit_id":"9f0854535813353e6b0f10b3cf02e5239d24b23e"},{"author":{"_account_id":1107,"name":"Josh Durgin","email":"jdurgin@redhat.com","username":"jdurgin"},"change_message_id":"4f836e4892201ac605c512310f3091212be618f8","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    def features(self):"},{"line_number":98,"context_line":"        features \u003d self.cluster.conf_get(\u0027rbd_default_features\u0027)"},{"line_number":99,"context_line":"        if ((features is None) or (int(features) \u003d\u003d 0)):"},{"line_number":100,"context_line":"            features \u003d self.driver.rbd.RBD_FEATURE_LAYERING"},{"line_number":101,"context_line":"        return int(features)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_6aeac4dc","line":100,"in_reply_to":"7a016987_04da3217","updated":"2015-06-01 06:10:20.000000000","message":"Yes, it\u0027s been present since ceph\u0027s bobtail release, which is older than anyone should be using (too old to even show up on this table: http://ceph.com/docs/master/releases/)","commit_id":"9f0854535813353e6b0f10b3cf02e5239d24b23e"},{"author":{"_account_id":16412,"name":"Vikhyat Umrao","email":"vumrao@redhat.com","username":"vikhyat"},"change_message_id":"9f90879be2dd5e8629f29043c67ac42ebdf19ad5","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    def features(self):"},{"line_number":98,"context_line":"        features \u003d self.cluster.conf_get(\u0027rbd_default_features\u0027)"},{"line_number":99,"context_line":"        if ((features is None) or (int(features) \u003d\u003d 0)):"},{"line_number":100,"context_line":"            features \u003d self.driver.rbd.RBD_FEATURE_LAYERING"},{"line_number":101,"context_line":"        return int(features)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_32b562ec","line":100,"in_reply_to":"7a016987_6aeac4dc","updated":"2015-06-01 08:46:37.000000000","message":"Thanks Josh for your reply.","commit_id":"9f0854535813353e6b0f10b3cf02e5239d24b23e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"148777fba438ede52640c20bbc6c3720847bffba","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    @property"},{"line_number":97,"context_line":"    def features(self):"},{"line_number":98,"context_line":"        features \u003d self.cluster.conf_get(\u0027rbd_default_features\u0027)"},{"line_number":99,"context_line":"        if ((features is None) or (int(features) \u003d\u003d 0)):"},{"line_number":100,"context_line":"            features \u003d self.driver.rbd.RBD_FEATURE_LAYERING"},{"line_number":101,"context_line":"        return int(features)"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_7c7c5e20","line":99,"updated":"2015-07-18 13:28:28.000000000","message":"There is no unit test for the logic where conf_get returns something like \u00271\u0027 and that we ensure that features is cast to an int, the tests are just asserting that this property is used by not the type or value.","commit_id":"a90590105b21c3369052ba2b402ade791ade339c"},{"author":{"_account_id":16412,"name":"Vikhyat Umrao","email":"vumrao@redhat.com","username":"vikhyat"},"change_message_id":"f7f58978d8e86ee6bd9b925b222d1a0f722634bb","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    @property"},{"line_number":97,"context_line":"    def features(self):"},{"line_number":98,"context_line":"        features \u003d self.cluster.conf_get(\u0027rbd_default_features\u0027)"},{"line_number":99,"context_line":"        if ((features is None) or (int(features) \u003d\u003d 0)):"},{"line_number":100,"context_line":"            features \u003d self.driver.rbd.RBD_FEATURE_LAYERING"},{"line_number":101,"context_line":"        return int(features)"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_90c58f8f","line":99,"in_reply_to":"9a41bdd9_7c7c5e20","updated":"2015-07-21 10:02:24.000000000","message":"Sure I will check and  add something in test case as you have recommended.","commit_id":"a90590105b21c3369052ba2b402ade791ade339c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"148777fba438ede52640c20bbc6c3720847bffba","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        features \u003d self.cluster.conf_get(\u0027rbd_default_features\u0027)"},{"line_number":99,"context_line":"        if ((features is None) or (int(features) \u003d\u003d 0)):"},{"line_number":100,"context_line":"            features \u003d self.driver.rbd.RBD_FEATURE_LAYERING"},{"line_number":101,"context_line":"        return int(features)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"class RBDDriver(object):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_7cf8de7c","line":101,"updated":"2015-07-18 13:28:28.000000000","message":"Verified that features must be an int (looks like a long really):\n\nhttps://github.com/ceph/ceph/blob/master/src/rbd.cc#L515","commit_id":"a90590105b21c3369052ba2b402ade791ade339c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b8a0f9fba015532beb484af790e5b57da09cb7f8","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        :name: Name of RBD volume"},{"line_number":254,"context_line":"        \"\"\""},{"line_number":255,"context_line":"        args \u003d [\u0027--pool\u0027, self.pool, base, name]"},{"line_number":256,"context_line":"        args +\u003d [\u0027--image-format\u003d2\u0027]"},{"line_number":257,"context_line":"        args +\u003d self.ceph_args()"},{"line_number":258,"context_line":"        utils.execute(\u0027rbd\u0027, \u0027import\u0027, *args)"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a41bdd9_fc2aaee6","line":256,"updated":"2015-07-18 13:30:51.000000000","message":"Could you add a comment above this line that explains what --image-format\u003d2 means/does?\n\nActually, can we just omit this?  According to the rbd code, --image-format\u003d2 is the default:\n\nhttps://github.com/ceph/ceph/blob/master/src/rbd.cc#L174","commit_id":"a90590105b21c3369052ba2b402ade791ade339c"},{"author":{"_account_id":16412,"name":"Vikhyat Umrao","email":"vumrao@redhat.com","username":"vikhyat"},"change_message_id":"f7f58978d8e86ee6bd9b925b222d1a0f722634bb","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        :name: Name of RBD volume"},{"line_number":254,"context_line":"        \"\"\""},{"line_number":255,"context_line":"        args \u003d [\u0027--pool\u0027, self.pool, base, name]"},{"line_number":256,"context_line":"        args +\u003d [\u0027--image-format\u003d2\u0027]"},{"line_number":257,"context_line":"        args +\u003d self.ceph_args()"},{"line_number":258,"context_line":"        utils.execute(\u0027rbd\u0027, \u0027import\u0027, *args)"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_8dc57c8f","line":256,"in_reply_to":"3a50d1a3_60d06354","updated":"2015-07-21 10:02:24.000000000","message":"Thanks Josh for your inputs.","commit_id":"a90590105b21c3369052ba2b402ade791ade339c"},{"author":{"_account_id":16412,"name":"Vikhyat Umrao","email":"vumrao@redhat.com","username":"vikhyat"},"change_message_id":"f7f58978d8e86ee6bd9b925b222d1a0f722634bb","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        :name: Name of RBD volume"},{"line_number":254,"context_line":"        \"\"\""},{"line_number":255,"context_line":"        args \u003d [\u0027--pool\u0027, self.pool, base, name]"},{"line_number":256,"context_line":"        args +\u003d [\u0027--image-format\u003d2\u0027]"},{"line_number":257,"context_line":"        args +\u003d self.ceph_args()"},{"line_number":258,"context_line":"        utils.execute(\u0027rbd\u0027, \u0027import\u0027, *args)"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_ed120009","line":256,"in_reply_to":"9a41bdd9_fc2aaee6","updated":"2015-07-21 10:02:24.000000000","message":"Thanks Matt for your inputs.\n\nAs Josh has already covered so we will stick with --image-format\u003d2.\nSure I will add a comment which will explains what --image-format\u003d2 means.","commit_id":"a90590105b21c3369052ba2b402ade791ade339c"},{"author":{"_account_id":1107,"name":"Josh Durgin","email":"jdurgin@redhat.com","username":"jdurgin"},"change_message_id":"ed01303df9cba6ec4b3b0b719c7f3c0f7b9498ab","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        :name: Name of RBD volume"},{"line_number":254,"context_line":"        \"\"\""},{"line_number":255,"context_line":"        args \u003d [\u0027--pool\u0027, self.pool, base, name]"},{"line_number":256,"context_line":"        args +\u003d [\u0027--image-format\u003d2\u0027]"},{"line_number":257,"context_line":"        args +\u003d self.ceph_args()"},{"line_number":258,"context_line":"        utils.execute(\u0027rbd\u0027, \u0027import\u0027, *args)"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_60d06354","line":256,"in_reply_to":"9a41bdd9_fc2aaee6","updated":"2015-07-20 17:45:51.000000000","message":"This isn\u0027t the default in the stable releases of ceph (including the one in the gate), it was just recently switched in master, so we should leave the explicit setting to work with existing versions of ceph.","commit_id":"a90590105b21c3369052ba2b402ade791ade339c"}],"nova/virt/libvirt/storage/rbd_utils.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b0cd1f4e3b5ee766af574c954612c5d30d4bcc10","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    def features(self):"},{"line_number":98,"context_line":"        features \u003d self.cluster.conf_get(\u0027rbd_default_features\u0027)"},{"line_number":99,"context_line":"        if ((features is None) or (int(features) \u003d\u003d 0)):"},{"line_number":100,"context_line":"            features \u003d self.driver.rbd.RBD_FEATURE_LAYERING"},{"line_number":101,"context_line":"        return int(features)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_36b63cdd","line":100,"updated":"2015-08-03 20:02:54.000000000","message":"Couldn\u0027t this just be:\n\nfeatures \u003d rbd.RBD_FEATURE_LAYERING","commit_id":"4b9df5cd955c2dad2b96077f3691f95dd1a6430f"},{"author":{"_account_id":16412,"name":"Vikhyat Umrao","email":"vumrao@redhat.com","username":"vikhyat"},"change_message_id":"31657354894c5ae3d7a3fd1312d6de807da7a79b","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    def features(self):"},{"line_number":98,"context_line":"        features \u003d self.cluster.conf_get(\u0027rbd_default_features\u0027)"},{"line_number":99,"context_line":"        if ((features is None) or (int(features) \u003d\u003d 0)):"},{"line_number":100,"context_line":"            features \u003d self.driver.rbd.RBD_FEATURE_LAYERING"},{"line_number":101,"context_line":"        return int(features)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_3f99236f","line":100,"in_reply_to":"1a4dcd0f_36b63cdd","updated":"2015-08-04 14:23:38.000000000","message":"Thanks, yes I should use rbd.RBD_FEATURE_LAYERING","commit_id":"4b9df5cd955c2dad2b96077f3691f95dd1a6430f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b0cd1f4e3b5ee766af574c954612c5d30d4bcc10","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        \"\"\""},{"line_number":255,"context_line":"        args \u003d [\u0027--pool\u0027, self.pool, base, name]"},{"line_number":256,"context_line":"        # Image format 2 supports cloning,"},{"line_number":257,"context_line":"        # in stable ceph rbd release default is not 2,"},{"line_number":258,"context_line":"        # we need to use it explicitly."},{"line_number":259,"context_line":"        args +\u003d [\u0027--image-format\u003d2\u0027]"},{"line_number":260,"context_line":"        args +\u003d self.ceph_args()"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_f6fd346f","line":257,"updated":"2015-08-03 20:02:54.000000000","message":"Are there issues with images created with ceph before this change?  Will you be able to clone them?","commit_id":"4b9df5cd955c2dad2b96077f3691f95dd1a6430f"},{"author":{"_account_id":16412,"name":"Vikhyat Umrao","email":"vumrao@redhat.com","username":"vikhyat"},"change_message_id":"31657354894c5ae3d7a3fd1312d6de807da7a79b","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        \"\"\""},{"line_number":255,"context_line":"        args \u003d [\u0027--pool\u0027, self.pool, base, name]"},{"line_number":256,"context_line":"        # Image format 2 supports cloning,"},{"line_number":257,"context_line":"        # in stable ceph rbd release default is not 2,"},{"line_number":258,"context_line":"        # we need to use it explicitly."},{"line_number":259,"context_line":"        args +\u003d [\u0027--image-format\u003d2\u0027]"},{"line_number":260,"context_line":"        args +\u003d self.ceph_args()"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_5fd66fc6","line":257,"in_reply_to":"1a4dcd0f_f6fd346f","updated":"2015-08-04 14:23:38.000000000","message":"Yes we can as \"--image-format\" option is just replica of old name \"--new-format\" the only difference is only difference is \"--image-format\" takes an argument with it as 1 or 2 and \"--new-format\"  by default used format as 2 and now \"--new-format\" is deprecated.\n\nhttps://github.com/ceph/ceph/blob/master/src/rbd.cc#L3062\nand\nhttps://github.com/ceph/ceph/blob/master/src/rbd.cc#L200\nhttps://github.com/ceph/ceph/blob/master/src/rbd.cc#L3066","commit_id":"4b9df5cd955c2dad2b96077f3691f95dd1a6430f"}]}
