)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"4f3aafb61c2f973c6f1f8bf929d61c2b228663be","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Modeling ManageableSnaphots \u0026 ManageableVolumes as OVO"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently, the results from ManagaeableVolumes \u0026 ManageableSnapshots"},{"line_number":10,"context_line":"are being returned as Dict. This needs to be modeled as OVO as this"},{"line_number":11,"context_line":"is being returned via rpc from the driver to the api layer."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a629dbe_cf23a6bb","line":9,"range":{"start_line":9,"start_character":28,"end_line":9,"end_character":46},"updated":"2016-11-11 13:52:25.000000000","message":"ManageableVolumes \u0026 ManageableSnaphots","commit_id":"9d4ea9ef874f1680f457cd55b1364a8b2161b245"}],"cinder/objects/manageableresources.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5971899ea64a6d28a98f9418a9eac768f6bbbed3","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from oslo_versionedobjects import fields"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class CommonResourceAttributes(object):"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    fields \u003d {"},{"line_number":24,"context_line":"        \u0027reference\u0027: fields.DictOfNullableStringsField(nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a77a97e_d4aaf118","line":21,"range":{"start_line":21,"start_character":6,"end_line":21,"end_character":30},"updated":"2016-11-22 14:31:36.000000000","message":"I think a better name would be ManageableObject.","commit_id":"6ad85774e0cf75f393c3ca0b0879a74db7aa9c90"},{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"32a4ab2d02b9ead6e406563c6f003ca4e9b15274","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from oslo_versionedobjects import fields"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class CommonResourceAttributes(object):"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    fields \u003d {"},{"line_number":24,"context_line":"        \u0027reference\u0027: fields.DictOfNullableStringsField(nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_cc928657","line":21,"range":{"start_line":21,"start_character":6,"end_line":21,"end_character":30},"in_reply_to":"7a77a97e_d4aaf118","updated":"2016-11-23 18:37:12.000000000","message":"I thought it would be better to have Manageable resource. But for now , ManageableObject seems good.","commit_id":"6ad85774e0cf75f393c3ca0b0879a74db7aa9c90"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5971899ea64a6d28a98f9418a9eac768f6bbbed3","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        \u0027extra_info\u0027: fields.DictOfNullableStringsField(nullable\u003dTrue),"},{"line_number":30,"context_line":"    }"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @staticmethod"},{"line_number":33,"context_line":"    def _from_db_object(context, resource, db_resource, expected_attrs\u003dNone):"},{"line_number":34,"context_line":"        driverkeys \u003d set(db_resource.keys()) - set(resource.fields.keys())"},{"line_number":35,"context_line":"        for name, field in resource.fields.items():"},{"line_number":36,"context_line":"            value \u003d db_resource.get(name)"},{"line_number":37,"context_line":"            resource[name] \u003d value"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        for key in driverkeys:"},{"line_number":40,"context_line":"            if resource[\u0027extra_info\u0027] is None:"},{"line_number":41,"context_line":"                resource[\u0027extra_info\u0027] \u003d {}"},{"line_number":42,"context_line":"                resource[\u0027extra_info\u0027][key] \u003d db_resource[key]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        resource._context \u003d context"},{"line_number":45,"context_line":"        resource.obj_reset_changes()"},{"line_number":46,"context_line":"        return resource"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"@base.CinderObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a77a97e_d4fcb140","line":46,"range":{"start_line":32,"start_character":0,"end_line":46,"end_character":23},"updated":"2016-11-22 14:31:36.000000000","message":"Is this saved or loaded from the DB? If not, there\u0027s no need to define this method. If you need it to load the object from dictionary, then it should be called from_primitives.","commit_id":"6ad85774e0cf75f393c3ca0b0879a74db7aa9c90"},{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"32a4ab2d02b9ead6e406563c6f003ca4e9b15274","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        \u0027extra_info\u0027: fields.DictOfNullableStringsField(nullable\u003dTrue),"},{"line_number":30,"context_line":"    }"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @staticmethod"},{"line_number":33,"context_line":"    def _from_db_object(context, resource, db_resource, expected_attrs\u003dNone):"},{"line_number":34,"context_line":"        driverkeys \u003d set(db_resource.keys()) - set(resource.fields.keys())"},{"line_number":35,"context_line":"        for name, field in resource.fields.items():"},{"line_number":36,"context_line":"            value \u003d db_resource.get(name)"},{"line_number":37,"context_line":"            resource[name] \u003d value"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        for key in driverkeys:"},{"line_number":40,"context_line":"            if resource[\u0027extra_info\u0027] is None:"},{"line_number":41,"context_line":"                resource[\u0027extra_info\u0027] \u003d {}"},{"line_number":42,"context_line":"                resource[\u0027extra_info\u0027][key] \u003d db_resource[key]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        resource._context \u003d context"},{"line_number":45,"context_line":"        resource.obj_reset_changes()"},{"line_number":46,"context_line":"        return resource"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"@base.CinderObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_0c9d5e65","line":46,"range":{"start_line":32,"start_character":0,"end_line":46,"end_character":23},"in_reply_to":"7a77a97e_d4fcb140","updated":"2016-11-23 18:37:12.000000000","message":"Done","commit_id":"6ad85774e0cf75f393c3ca0b0879a74db7aa9c90"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5971899ea64a6d28a98f9418a9eac768f6bbbed3","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    }"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    @classmethod"},{"line_number":77,"context_line":"    def get_manage_volume_list_object(cls, context, data):"},{"line_number":78,"context_line":"        return base.obj_make_list(context, cls(context),"},{"line_number":79,"context_line":"                                  objects.ManageableVolume, data)"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7a77a97e_b459f55d","line":77,"range":{"start_line":77,"start_character":8,"end_line":77,"end_character":37},"updated":"2016-11-22 14:31:36.000000000","message":"I think from_primitives would be a better name - naming convention with get_ is typically used for DB operations.","commit_id":"6ad85774e0cf75f393c3ca0b0879a74db7aa9c90"},{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"32a4ab2d02b9ead6e406563c6f003ca4e9b15274","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    }"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    @classmethod"},{"line_number":77,"context_line":"    def get_manage_volume_list_object(cls, context, data):"},{"line_number":78,"context_line":"        return base.obj_make_list(context, cls(context),"},{"line_number":79,"context_line":"                                  objects.ManageableVolume, data)"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_2c885a22","line":77,"range":{"start_line":77,"start_character":8,"end_line":77,"end_character":37},"in_reply_to":"7a77a97e_b459f55d","updated":"2016-11-23 18:37:12.000000000","message":"Done","commit_id":"6ad85774e0cf75f393c3ca0b0879a74db7aa9c90"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5971899ea64a6d28a98f9418a9eac768f6bbbed3","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    }"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    @classmethod"},{"line_number":92,"context_line":"    def get_manage_snapshot_list_object(cls, context, data):"},{"line_number":93,"context_line":"        return base.obj_make_list(context, cls(context),"},{"line_number":94,"context_line":"                                  objects.ManageableSnapshot, data)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a77a97e_1431c90b","line":92,"range":{"start_line":92,"start_character":8,"end_line":92,"end_character":39},"updated":"2016-11-22 14:31:36.000000000","message":"ditto","commit_id":"6ad85774e0cf75f393c3ca0b0879a74db7aa9c90"},{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"32a4ab2d02b9ead6e406563c6f003ca4e9b15274","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    }"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    @classmethod"},{"line_number":92,"context_line":"    def get_manage_snapshot_list_object(cls, context, data):"},{"line_number":93,"context_line":"        return base.obj_make_list(context, cls(context),"},{"line_number":94,"context_line":"                                  objects.ManageableSnapshot, data)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_4c8d9630","line":92,"range":{"start_line":92,"start_character":8,"end_line":92,"end_character":39},"in_reply_to":"7a77a97e_1431c90b","updated":"2016-11-23 18:37:12.000000000","message":"Done","commit_id":"6ad85774e0cf75f393c3ca0b0879a74db7aa9c90"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"abc28c19f3cece2b90d2baa3fbea01c156326392","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from cinder.objects import base"},{"line_number":17,"context_line":"from oslo_versionedobjects import fields"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class ManageableObject(object):"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a57fde8_cb5b5153","line":17,"updated":"2017-01-12 18:44:09.000000000","message":"Oslo imports should be grouped first in the third party imports, followed by cinder in the local imports section.","commit_id":"29f5ebf3ee177affe3dbd7ae93b61ef2f81b19c5"}],"cinder/tests/unit/objects/test_manageable_volumes_snapshots.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"4f3aafb61c2f973c6f1f8bf929d61c2b228663be","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from cinder.tests.unit import objects as test_objects"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"def test_resource_test(resource, resource_type):"},{"line_number":21,"context_line":"    if resource_type \u003d\u003d \"volume\":"},{"line_number":22,"context_line":"        resource.manageable_volume_obj.wrong_key"},{"line_number":23,"context_line":"    elif resource_type \u003d\u003d \"snapshot\":"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a629dbe_2b6df5cb","line":20,"updated":"2016-11-11 13:52:25.000000000","message":"IMO, it should be a member of TestManageableResources class","commit_id":"9d4ea9ef874f1680f457cd55b1364a8b2161b245"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"97386483356524226e19ca7ab76ea4989ceb73a7","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        self.manageable_volume_obj \u003d self.manageable_volume_obj_list[0]"},{"line_number":89,"context_line":"        self.manageable_snapshot_obj \u003d self.manageable_snapshot_obj_list[0]"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_extra_info(self):"},{"line_number":92,"context_line":"        # Making sure that any new key assignment gets stored in extra_info"},{"line_number":93,"context_line":"        # field of manageable_volume_dict object"},{"line_number":94,"context_line":"        self.assertIsNone(self.manageable_volume_obj_list[1].extra_info)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_4443f86b","line":91,"updated":"2016-12-16 16:26:21.000000000","message":"Please, use ddt in the tests","commit_id":"025748313b064e9980712c8f7e2bf0353f93a073"},{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"c35ca10fec44d3f4e1df0210717345a2c3965ba6","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        self.manageable_volume_obj \u003d self.manageable_volume_obj_list[0]"},{"line_number":89,"context_line":"        self.manageable_snapshot_obj \u003d self.manageable_snapshot_obj_list[0]"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_extra_info(self):"},{"line_number":92,"context_line":"        # Making sure that any new key assignment gets stored in extra_info"},{"line_number":93,"context_line":"        # field of manageable_volume_dict object"},{"line_number":94,"context_line":"        self.assertIsNone(self.manageable_volume_obj_list[1].extra_info)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_5848eb5b","line":91,"in_reply_to":"1a6eadb0_4443f86b","updated":"2016-12-19 18:56:25.000000000","message":"Hi Ivan, where exactly do you want me to use them!","commit_id":"025748313b064e9980712c8f7e2bf0353f93a073"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"97386483356524226e19ca7ab76ea4989ceb73a7","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    def test_extra_info(self):"},{"line_number":92,"context_line":"        # Making sure that any new key assignment gets stored in extra_info"},{"line_number":93,"context_line":"        # field of manageable_volume_dict object"},{"line_number":94,"context_line":"        self.assertIsNone(self.manageable_volume_obj_list[1].extra_info)"},{"line_number":95,"context_line":"        self.assertEqual("},{"line_number":96,"context_line":"            \u0027bar\u0027,"},{"line_number":97,"context_line":"            self.manageable_volume_obj[\u0027extra_info\u0027][\u0027foo\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_e4524434","line":94,"updated":"2016-12-16 16:26:21.000000000","message":"extra_info will be always None","commit_id":"025748313b064e9980712c8f7e2bf0353f93a073"},{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"c35ca10fec44d3f4e1df0210717345a2c3965ba6","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    def test_extra_info(self):"},{"line_number":92,"context_line":"        # Making sure that any new key assignment gets stored in extra_info"},{"line_number":93,"context_line":"        # field of manageable_volume_dict object"},{"line_number":94,"context_line":"        self.assertIsNone(self.manageable_volume_obj_list[1].extra_info)"},{"line_number":95,"context_line":"        self.assertEqual("},{"line_number":96,"context_line":"            \u0027bar\u0027,"},{"line_number":97,"context_line":"            self.manageable_volume_obj[\u0027extra_info\u0027][\u0027foo\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_d8807b49","line":94,"in_reply_to":"1a6eadb0_e4524434","updated":"2016-12-19 18:56:25.000000000","message":"you are right...I will fix this in next patchset","commit_id":"025748313b064e9980712c8f7e2bf0353f93a073"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"a75ab26a2bee6d7e2f5457cef1f19bd826c55346","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        self.manageable_volume_obj \u003d self.manageable_volume_obj_list[0]"},{"line_number":89,"context_line":"        self.manageable_snapshot_obj \u003d self.manageable_snapshot_obj_list[0]"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_extra_info(self):"},{"line_number":92,"context_line":"        # Making sure that any new key assignment gets stored in extra_info"},{"line_number":93,"context_line":"        # field of manageable_volume_dict object"},{"line_number":94,"context_line":"        self.assertEqual("},{"line_number":95,"context_line":"            \u0027bar\u0027,"},{"line_number":96,"context_line":"            self.manageable_volume_obj.extra_info[\u0027foo\u0027])"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        # manageable snapshot object test"},{"line_number":99,"context_line":"        self.assertEqual("},{"line_number":100,"context_line":"            \u0027bar\u0027,"},{"line_number":101,"context_line":"            self.manageable_snapshot_obj.extra_info[\u0027foo\u0027])"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def test_extra_info_wrong_key(self):"},{"line_number":104,"context_line":"        # Making sure referring an attribute before setting it raises an"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a6eadb0_fb6d08cd","line":101,"range":{"start_line":91,"start_character":0,"end_line":101,"end_character":59},"updated":"2016-12-20 12:52:17.000000000","message":"I guess you could rework this with ddt to something like:\n\n    @ddt.data(\u0027manageable_volume_obj\u0027, \u0027manageable_snapshot_obj\u0027)\n    def test_extra_info(self, obj):\n        self.assertEqual(\n            \u0027bar\u0027,\n            self.getattr(obj).extra_info[\u0027foo\u0027])\n\nAnd similar thing for the second test. Personally I don\u0027t see much value in that.","commit_id":"b688e7f385aab6b4949e5952ef663e00a52450d6"}],"cinder/volume/api.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"f73dd3e585dfb123219c1f565131a51ba699a676","unresolved":false,"context_lines":[{"line_number":1610,"context_line":"                                                         marker, limit,"},{"line_number":1611,"context_line":"                                                         offset, sort_keys,"},{"line_number":1612,"context_line":"                                                         sort_dirs,"},{"line_number":1613,"context_line":"                                                         want_objects\u003dTrue)"},{"line_number":1614,"context_line":""},{"line_number":1615,"context_line":"    def manage_existing_snapshot(self, context, ref, volume,"},{"line_number":1616,"context_line":"                                 name\u003dNone, description\u003dNone,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a74a57a_70b4c9d0","line":1613,"range":{"start_line":1613,"start_character":0,"end_line":1613,"end_character":75},"updated":"2016-11-24 10:17:59.000000000","message":"Actually this is internal to the messaging layer. I think we can omit this argument here, and just set it True/False based on versions in rpcapi layer.","commit_id":"8c5f3681f349c71a7a9a8c98bf228c5da86cdcac"},{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"cf9987f1a70d50818317bd8d05939080e8658036","unresolved":false,"context_lines":[{"line_number":1610,"context_line":"                                                         marker, limit,"},{"line_number":1611,"context_line":"                                                         offset, sort_keys,"},{"line_number":1612,"context_line":"                                                         sort_dirs,"},{"line_number":1613,"context_line":"                                                         want_objects\u003dTrue)"},{"line_number":1614,"context_line":""},{"line_number":1615,"context_line":"    def manage_existing_snapshot(self, context, ref, volume,"},{"line_number":1616,"context_line":"                                 name\u003dNone, description\u003dNone,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a74a57a_3e275bb7","line":1613,"range":{"start_line":1613,"start_character":0,"end_line":1613,"end_character":75},"in_reply_to":"5a74a57a_70b4c9d0","updated":"2016-11-25 09:34:12.000000000","message":"Yes makes sense...this should be handled with at rpc layer itself. I will change it in next pacthset","commit_id":"8c5f3681f349c71a7a9a8c98bf228c5da86cdcac"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"f73dd3e585dfb123219c1f565131a51ba699a676","unresolved":false,"context_lines":[{"line_number":1631,"context_line":"                                                           marker, limit,"},{"line_number":1632,"context_line":"                                                           offset, sort_keys,"},{"line_number":1633,"context_line":"                                                           sort_dirs,"},{"line_number":1634,"context_line":"                                                           want_objects\u003dTrue)"},{"line_number":1635,"context_line":""},{"line_number":1636,"context_line":"    # FIXME(jdg): Move these Cheesecake methods (freeze, thaw and failover)"},{"line_number":1637,"context_line":"    # to a services API because that\u0027s what they are"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a74a57a_b0c66147","line":1634,"range":{"start_line":1634,"start_character":0,"end_line":1634,"end_character":76},"updated":"2016-11-24 10:17:59.000000000","message":"Same here.","commit_id":"8c5f3681f349c71a7a9a8c98bf228c5da86cdcac"},{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"cf9987f1a70d50818317bd8d05939080e8658036","unresolved":false,"context_lines":[{"line_number":1631,"context_line":"                                                           marker, limit,"},{"line_number":1632,"context_line":"                                                           offset, sort_keys,"},{"line_number":1633,"context_line":"                                                           sort_dirs,"},{"line_number":1634,"context_line":"                                                           want_objects\u003dTrue)"},{"line_number":1635,"context_line":""},{"line_number":1636,"context_line":"    # FIXME(jdg): Move these Cheesecake methods (freeze, thaw and failover)"},{"line_number":1637,"context_line":"    # to a services API because that\u0027s what they are"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a74a57a_5e86d765","line":1634,"range":{"start_line":1634,"start_character":0,"end_line":1634,"end_character":76},"in_reply_to":"5a74a57a_b0c66147","updated":"2016-11-25 09:34:12.000000000","message":"Will change in next pacthset","commit_id":"8c5f3681f349c71a7a9a8c98bf228c5da86cdcac"}],"cinder/volume/manager.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"8b11a8e3d574093dbc566d831d93530a4e049419","unresolved":false,"context_lines":[{"line_number":2390,"context_line":"                cinder_volumes, marker, limit, offset, sort_keys, sort_dirs)"},{"line_number":2391,"context_line":"            if want_objects:"},{"line_number":2392,"context_line":"                driver_entries \u003d (objects.ManageableVolumeList."},{"line_number":2393,"context_line":"                                  get_manage_volume_list_object"},{"line_number":2394,"context_line":"                                  (ctxt, driver_entries))"},{"line_number":2395,"context_line":"        except Exception:"},{"line_number":2396,"context_line":"            with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_a2142544","line":2393,"range":{"start_line":2393,"start_character":34,"end_line":2393,"end_character":63},"updated":"2016-11-25 13:19:14.000000000","message":"This is from_primitives() now.","commit_id":"d13512c89ac33a49f34204ae78f0003832755203"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"8b11a8e3d574093dbc566d831d93530a4e049419","unresolved":false,"context_lines":[{"line_number":4195,"context_line":"                cinder_snapshots, marker, limit, offset, sort_keys, sort_dirs)"},{"line_number":4196,"context_line":"            if want_objects:"},{"line_number":4197,"context_line":"                driver_entries \u003d (objects.ManageableSnapshotList."},{"line_number":4198,"context_line":"                                  get_manage_snapshot_list_object"},{"line_number":4199,"context_line":"                                  (ctxt, driver_entries))"},{"line_number":4200,"context_line":"        except Exception:"},{"line_number":4201,"context_line":"            with excutils.save_and_reraise_exception():"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_e21e1d62","line":4198,"range":{"start_line":4198,"start_character":34,"end_line":4198,"end_character":65},"updated":"2016-11-25 13:19:14.000000000","message":"ditto","commit_id":"d13512c89ac33a49f34204ae78f0003832755203"}],"cinder/volume/rpcapi.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"f73dd3e585dfb123219c1f565131a51ba699a676","unresolved":false,"context_lines":[{"line_number":318,"context_line":"        version \u003d (\u00273.3\u0027, \u00273.0\u0027)"},{"line_number":319,"context_line":"        cctxt \u003d self._get_cctxt(host, version\u003dversion)"},{"line_number":320,"context_line":"        if cctxt.target.version \u003d\u003d \u00273.3\u0027:"},{"line_number":321,"context_line":"            return cctxt.call(ctxt, \u0027get_manageable_volumes\u0027, marker\u003dmarker,"},{"line_number":322,"context_line":"                              limit\u003dlimit, offset\u003doffset, sort_keys\u003dsort_keys,"},{"line_number":323,"context_line":"                              sort_dirs\u003dsort_dirs, want_objects\u003dwant_objects)"},{"line_number":324,"context_line":"        else:"},{"line_number":325,"context_line":"            return cctxt.call(ctxt, \u0027get_manageable_volumes\u0027, marker\u003dmarker,"},{"line_number":326,"context_line":"                              limit\u003dlimit, offset\u003doffset, sort_keys\u003dsort_keys,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a74a57a_302fb1f7","line":323,"range":{"start_line":321,"start_character":62,"end_line":323,"end_character":76},"updated":"2016-11-24 10:17:59.000000000","message":"Could we prepare dict with arguments and then just add one based on version? That way we\u0027ll duplicate less code. See [1] for example.\n\n[1] https://github.com/openstack/cinder/blob/stable/newton/cinder/volume/rpcapi.py#L165-L175","commit_id":"8c5f3681f349c71a7a9a8c98bf228c5da86cdcac"},{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"cf9987f1a70d50818317bd8d05939080e8658036","unresolved":false,"context_lines":[{"line_number":318,"context_line":"        version \u003d (\u00273.3\u0027, \u00273.0\u0027)"},{"line_number":319,"context_line":"        cctxt \u003d self._get_cctxt(host, version\u003dversion)"},{"line_number":320,"context_line":"        if cctxt.target.version \u003d\u003d \u00273.3\u0027:"},{"line_number":321,"context_line":"            return cctxt.call(ctxt, \u0027get_manageable_volumes\u0027, marker\u003dmarker,"},{"line_number":322,"context_line":"                              limit\u003dlimit, offset\u003doffset, sort_keys\u003dsort_keys,"},{"line_number":323,"context_line":"                              sort_dirs\u003dsort_dirs, want_objects\u003dwant_objects)"},{"line_number":324,"context_line":"        else:"},{"line_number":325,"context_line":"            return cctxt.call(ctxt, \u0027get_manageable_volumes\u0027, marker\u003dmarker,"},{"line_number":326,"context_line":"                              limit\u003dlimit, offset\u003doffset, sort_keys\u003dsort_keys,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a74a57a_de92e79e","line":323,"range":{"start_line":321,"start_character":62,"end_line":323,"end_character":76},"in_reply_to":"5a74a57a_302fb1f7","updated":"2016-11-25 09:34:12.000000000","message":"I agree. Thanks for the reference","commit_id":"8c5f3681f349c71a7a9a8c98bf228c5da86cdcac"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"f73dd3e585dfb123219c1f565131a51ba699a676","unresolved":false,"context_lines":[{"line_number":330,"context_line":"                                 sort_keys, sort_dirs, want_objects\u003dFalse):"},{"line_number":331,"context_line":"        version \u003d (\u00273.3\u0027, \u00273.0\u0027)"},{"line_number":332,"context_line":"        cctxt \u003d self._get_cctxt(host, version\u003dversion)"},{"line_number":333,"context_line":"        if cctxt.target.version \u003d\u003d \u00273.3\u0027:"},{"line_number":334,"context_line":"            return cctxt.call(ctxt, \u0027get_manageable_snapshots\u0027, marker\u003dmarker,"},{"line_number":335,"context_line":"                              limit\u003dlimit, offset\u003doffset, sort_keys\u003dsort_keys,"},{"line_number":336,"context_line":"                              sort_dirs\u003dsort_dirs, want_objects\u003dwant_objects)"},{"line_number":337,"context_line":"        else:"},{"line_number":338,"context_line":"            return cctxt.call(ctxt, \u0027get_manageable_snapshots\u0027, marker\u003dmarker,"},{"line_number":339,"context_line":"                              limit\u003dlimit, offset\u003doffset, sort_keys\u003dsort_keys,"},{"line_number":340,"context_line":"                              sort_dirs\u003dsort_dirs)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"    def create_group(self, ctxt, group, host):"},{"line_number":343,"context_line":"        cctxt \u003d self._get_cctxt(host)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a74a57a_904085a7","line":340,"range":{"start_line":333,"start_character":0,"end_line":340,"end_character":50},"updated":"2016-11-24 10:17:59.000000000","message":"Same here.","commit_id":"8c5f3681f349c71a7a9a8c98bf228c5da86cdcac"},{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"cf9987f1a70d50818317bd8d05939080e8658036","unresolved":false,"context_lines":[{"line_number":330,"context_line":"                                 sort_keys, sort_dirs, want_objects\u003dFalse):"},{"line_number":331,"context_line":"        version \u003d (\u00273.3\u0027, \u00273.0\u0027)"},{"line_number":332,"context_line":"        cctxt \u003d self._get_cctxt(host, version\u003dversion)"},{"line_number":333,"context_line":"        if cctxt.target.version \u003d\u003d \u00273.3\u0027:"},{"line_number":334,"context_line":"            return cctxt.call(ctxt, \u0027get_manageable_snapshots\u0027, marker\u003dmarker,"},{"line_number":335,"context_line":"                              limit\u003dlimit, offset\u003doffset, sort_keys\u003dsort_keys,"},{"line_number":336,"context_line":"                              sort_dirs\u003dsort_dirs, want_objects\u003dwant_objects)"},{"line_number":337,"context_line":"        else:"},{"line_number":338,"context_line":"            return cctxt.call(ctxt, \u0027get_manageable_snapshots\u0027, marker\u003dmarker,"},{"line_number":339,"context_line":"                              limit\u003dlimit, offset\u003doffset, sort_keys\u003dsort_keys,"},{"line_number":340,"context_line":"                              sort_dirs\u003dsort_dirs)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"    def create_group(self, ctxt, group, host):"},{"line_number":343,"context_line":"        cctxt \u003d self._get_cctxt(host)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a74a57a_3eeafb0f","line":340,"range":{"start_line":333,"start_character":0,"end_line":340,"end_character":50},"in_reply_to":"5a74a57a_904085a7","updated":"2016-11-25 09:34:12.000000000","message":"I agree","commit_id":"8c5f3681f349c71a7a9a8c98bf228c5da86cdcac"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"17c7d41128f5516c83493446bbbf1bc337ff66f0","unresolved":false,"context_lines":[{"line_number":314,"context_line":"                          volume\u003dvolume)"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"    def get_manageable_volumes(self, ctxt, host, marker, limit, offset,"},{"line_number":317,"context_line":"                               sort_keys, sort_dirs, want_objects\u003dFalse):"},{"line_number":318,"context_line":"        version \u003d (\u00273.3\u0027, \u00273.0\u0027)"},{"line_number":319,"context_line":"        cctxt \u003d self._get_cctxt(host, version\u003dversion)"},{"line_number":320,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5a74a57a_84101e03","line":317,"range":{"start_line":317,"start_character":51,"end_line":317,"end_character":71},"updated":"2016-11-25 10:19:38.000000000","message":"We\u0027re not using this argument now.","commit_id":"f0db9590e0baac32a0ff91334d2fbceab7a52475"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"17c7d41128f5516c83493446bbbf1bc337ff66f0","unresolved":false,"context_lines":[{"line_number":333,"context_line":"        return cctxt.call(ctxt, \u0027get_manageable_volumes\u0027, **msg_args)"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"    def get_manageable_snapshots(self, ctxt, host, marker, limit, offset,"},{"line_number":336,"context_line":"                                 sort_keys, sort_dirs, want_objects\u003dFalse):"},{"line_number":337,"context_line":"        version \u003d (\u00273.3\u0027, \u00273.0\u0027)"},{"line_number":338,"context_line":"        cctxt \u003d self._get_cctxt(host, version\u003dversion)"},{"line_number":339,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5a74a57a_c4fa16bd","line":336,"range":{"start_line":336,"start_character":53,"end_line":336,"end_character":73},"updated":"2016-11-25 10:19:38.000000000","message":"ditto","commit_id":"f0db9590e0baac32a0ff91334d2fbceab7a52475"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"abc28c19f3cece2b90d2baa3fbea01c156326392","unresolved":false,"context_lines":[{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        if cctxt.target.version \u003d\u003d \u00273.7\u0027:"},{"line_number":366,"context_line":"            msg_args[\u0027want_objects\u0027] \u003d True"},{"line_number":367,"context_line":"        else:"},{"line_number":368,"context_line":"            pass"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"        return cctxt.call(ctxt, \u0027get_manageable_volumes\u0027, **msg_args)"},{"line_number":371,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"9a57fde8_ab0c4d43","line":368,"range":{"start_line":367,"start_character":8,"end_line":368,"end_character":16},"updated":"2017-01-12 18:44:09.000000000","message":"Not needed.","commit_id":"29f5ebf3ee177affe3dbd7ae93b61ef2f81b19c5"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"abc28c19f3cece2b90d2baa3fbea01c156326392","unresolved":false,"context_lines":[{"line_number":383,"context_line":""},{"line_number":384,"context_line":"        if cctxt.target.version \u003d\u003d \u00273.7\u0027:"},{"line_number":385,"context_line":"            msg_args[\u0027want_objects\u0027] \u003d True"},{"line_number":386,"context_line":"        else:"},{"line_number":387,"context_line":"            pass"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"        return cctxt.call(ctxt, \u0027get_manageable_snapshots\u0027, **msg_args)"},{"line_number":390,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"9a57fde8_4e04cf14","line":387,"range":{"start_line":386,"start_character":8,"end_line":387,"end_character":16},"updated":"2017-01-12 18:44:09.000000000","message":"Not needed.","commit_id":"29f5ebf3ee177affe3dbd7ae93b61ef2f81b19c5"}]}
