)]}'
{"cinder/backup/manager.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"d76b2e4a3d00d59ecfea2fc1b1094b9aba1e7812","unresolved":false,"context_lines":[{"line_number":45,"context_line":"from cinder.i18n import _, _LE, _LI, _LW"},{"line_number":46,"context_line":"from cinder import manager"},{"line_number":47,"context_line":"from cinder import objects"},{"line_number":48,"context_line":"from cinder.objects import backup_record as record"},{"line_number":49,"context_line":"from cinder.objects import fields"},{"line_number":50,"context_line":"from cinder import quota"},{"line_number":51,"context_line":"from cinder import rpc"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a430d35_101d460f","line":48,"range":{"start_line":48,"start_character":0,"end_line":48,"end_character":50},"updated":"2017-02-06 15:18:03.000000000","message":"No need for that import, just use:\n\n objects.BackupRecord\n\nThere is some magic done in cinder.objects.__init__ that autoimports individual objects into that namespace.","commit_id":"6bf99f9b28df729c7dc857ec60d7f3178e44ba27"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"53450b0f60a4ff476cc796f40bf736f5eacf198e","unresolved":false,"context_lines":[{"line_number":633,"context_line":"            extra_usage_info\u003dextra_usage_info,"},{"line_number":634,"context_line":"            host\u003dself.host)"},{"line_number":635,"context_line":""},{"line_number":636,"context_line":"    def export_record(self, context, backup, wants_objects\u003dFalse):"},{"line_number":637,"context_line":"        \"\"\"Export all volume backup metadata details to allow clean import."},{"line_number":638,"context_line":""},{"line_number":639,"context_line":"        Export backup metadata so it could be re-imported into the database"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa31d9ce_acc46b92","line":636,"range":{"start_line":636,"start_character":45,"end_line":636,"end_character":58},"updated":"2017-02-10 13:21:13.000000000","message":"You\u0027re using want_objects in RPC client. I advise running some tests before submitting the code.","commit_id":"fc28ca3796724ab946c598029c01a7fa985b993f"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"53450b0f60a4ff476cc796f40bf736f5eacf198e","unresolved":false,"context_lines":[{"line_number":680,"context_line":""},{"line_number":681,"context_line":"        LOG.info(_LI(\u0027Export record finished, backup %s exported.\u0027), backup.id)"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"        if wants_objects is True:"},{"line_number":684,"context_line":"            backup_record \u003d objects.BackupRecord(context\u003dcontext)"},{"line_number":685,"context_line":"            backup_record.backup_service \u003d backup.service"},{"line_number":686,"context_line":"            backup_record.backup_url \u003d backup_url"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa31d9ce_6c0fd3e1","line":683,"range":{"start_line":683,"start_character":8,"end_line":683,"end_character":33},"updated":"2017-02-10 13:21:13.000000000","message":"if wants_objects is enough.","commit_id":"fc28ca3796724ab946c598029c01a7fa985b993f"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"53450b0f60a4ff476cc796f40bf736f5eacf198e","unresolved":false,"context_lines":[{"line_number":680,"context_line":""},{"line_number":681,"context_line":"        LOG.info(_LI(\u0027Export record finished, backup %s exported.\u0027), backup.id)"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"        if wants_objects is True:"},{"line_number":684,"context_line":"            backup_record \u003d objects.BackupRecord(context\u003dcontext)"},{"line_number":685,"context_line":"            backup_record.backup_service \u003d backup.service"},{"line_number":686,"context_line":"            backup_record.backup_url \u003d backup_url"},{"line_number":687,"context_line":"        else:"},{"line_number":688,"context_line":"            backup_record \u003d {\u0027backup_service\u0027: backup.service,"},{"line_number":689,"context_line":"                             \u0027backup_url\u0027: backup_url, }"},{"line_number":690,"context_line":""},{"line_number":691,"context_line":"        return backup_record"},{"line_number":692,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa31d9ce_2c05dbc1","line":689,"range":{"start_line":683,"start_character":0,"end_line":689,"end_character":56},"updated":"2017-02-10 13:21:13.000000000","message":"It would be better to always use object and then just convert it at the end. You can do that by creating to_primitive method in BackupRecord object and simply do:\n\n if wants_objects:\n    backup_record \u003d backup_record.to_primitive()","commit_id":"fc28ca3796724ab946c598029c01a7fa985b993f"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"b92fc0466839ab1fbe65288d89eb6056f398192f","unresolved":false,"context_lines":[{"line_number":633,"context_line":"            extra_usage_info\u003dextra_usage_info,"},{"line_number":634,"context_line":"            host\u003dself.host)"},{"line_number":635,"context_line":""},{"line_number":636,"context_line":"    def export_record(self, context, backup, wants_objects\u003dFalse):"},{"line_number":637,"context_line":"        \"\"\"Export all volume backup metadata details to allow clean import."},{"line_number":638,"context_line":""},{"line_number":639,"context_line":"        Export backup metadata so it could be re-imported into the database"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa31d9ce_ad003067","line":636,"range":{"start_line":636,"start_character":45,"end_line":636,"end_character":58},"updated":"2017-02-15 14:05:06.000000000","message":"This is still incorrect. See [1]. Please test the change in DevStack before sending it out for review.\n\n[1] http://logs.openstack.org/92/425392/11/check/gate-tempest-dsvm-neutron-full-ubuntu-xenial/a80ff3c/logs/screen-c-bak.txt.gz?level\u003dERROR","commit_id":"25112e0fb82c696bf7a862c1d1699c3171a7e8fb"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"b92fc0466839ab1fbe65288d89eb6056f398192f","unresolved":false,"context_lines":[{"line_number":683,"context_line":"        backup_record \u003d {\u0027backup_service\u0027: backup.service,"},{"line_number":684,"context_line":"                         \u0027backup_url\u0027: backup_url, }"},{"line_number":685,"context_line":"        return (objects.BackupRecord.from_primitive(backup_record, context)"},{"line_number":686,"context_line":"                if wants_objects is True else backup_record)"},{"line_number":687,"context_line":""},{"line_number":688,"context_line":"    def import_record(self,"},{"line_number":689,"context_line":"                      context,"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa31d9ce_6d31d859","line":686,"range":{"start_line":686,"start_character":19,"end_line":686,"end_character":40},"updated":"2017-02-15 14:05:06.000000000","message":"You don\u0027t need a condition in form:\n\n wants_objects is True\n\nYou only need\n\n wants_objects","commit_id":"25112e0fb82c696bf7a862c1d1699c3171a7e8fb"}],"cinder/backup/rpcapi.py":[{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"ce1b535ed61d9904a6034f17e5882197e8488eee","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                                wants_objects\u003dTrue)"},{"line_number":83,"context_line":"        else:"},{"line_number":84,"context_line":"            record_dict \u003d cctxt.call(ctxt, \u0027export_record\u0027, backup\u003dbackup)"},{"line_number":85,"context_line":"            record \u003d objects.BackupRecord.from_primitive(record_dict, ctxt)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        return record"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da36d5c6_f729b08a","line":85,"range":{"start_line":85,"start_character":12,"end_line":85,"end_character":75},"updated":"2017-02-21 09:18:11.000000000","message":"Sorry, I didn\u0027t get why we should covernt dict to ovo here,  since if can send 2.1, we got a ovo record,  but if not,  shouldn\u0027t we still return a dict?","commit_id":"b6ae33af149ffcb2ced4924ba91e19fdcb0440e5"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"84277b63fdf8b063f949425d2ff446eb209bd3d3","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                                wants_objects\u003dTrue)"},{"line_number":83,"context_line":"        else:"},{"line_number":84,"context_line":"            record_dict \u003d cctxt.call(ctxt, \u0027export_record\u0027, backup\u003dbackup)"},{"line_number":85,"context_line":"            record \u003d objects.BackupRecord.from_primitive(record_dict, ctxt)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        return record"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da36d5c6_c1ae5497","line":85,"range":{"start_line":85,"start_character":12,"end_line":85,"end_character":75},"in_reply_to":"da36d5c6_cbffa1a8","updated":"2017-02-23 06:09:51.000000000","message":"I see, thanks.","commit_id":"b6ae33af149ffcb2ced4924ba91e19fdcb0440e5"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6b881e75568bdb81fee8919a882b43de65ddad00","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                                wants_objects\u003dTrue)"},{"line_number":83,"context_line":"        else:"},{"line_number":84,"context_line":"            record_dict \u003d cctxt.call(ctxt, \u0027export_record\u0027, backup\u003dbackup)"},{"line_number":85,"context_line":"            record \u003d objects.BackupRecord.from_primitive(record_dict, ctxt)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        return record"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da36d5c6_cbffa1a8","line":85,"range":{"start_line":85,"start_character":12,"end_line":85,"end_character":75},"in_reply_to":"da36d5c6_f729b08a","updated":"2017-02-21 11:22:41.000000000","message":"It\u0027s better to assume that new code always has o.vo. In other cases we would need to code handling both o.vo and dict elsewhere. RPCAPI seems like a best place to do the conversion as it keeps all the info about versions, pins, etc.","commit_id":"b6ae33af149ffcb2ced4924ba91e19fdcb0440e5"}],"cinder/objects/backup_record.py":[{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"a757788274745aad875d5c9568221b0357fdc1b5","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_config import cfg"},{"line_number":16,"context_line":"from oslo_versionedobjects import fields"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from cinder.objects import base"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a430d35_6e460fc1","line":15,"updated":"2017-02-02 23:36:05.000000000","message":"Dont need the import too","commit_id":"461aebbcff6794a09823c848b2f6490f30fb58b7"},{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"a757788274745aad875d5c9568221b0357fdc1b5","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from cinder.objects import base"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"CONF \u003d cfg.CONF"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"@base.CinderObjectRegistry.register"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a430d35_ce34634c","line":20,"updated":"2017-02-02 23:36:05.000000000","message":"Dont need this conf file","commit_id":"461aebbcff6794a09823c848b2f6490f30fb58b7"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"d76b2e4a3d00d59ecfea2fc1b1094b9aba1e7812","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    fields \u003d {"},{"line_number":26,"context_line":"        \u0027backup_service\u0027: fields.StringField(nullable\u003dFalse),"},{"line_number":27,"context_line":"        \u0027backup_url\u0027: fields.StringField(nullable\u003dFalse)"},{"line_number":28,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a430d35_b0a6320e","line":27,"updated":"2017-02-06 15:18:03.000000000","message":"According to our hacking rules [1], you should end dicts with a comma.\n\n[1] http://docs.openstack.org/developer/hacking/#dictionaries-lists","commit_id":"6bf99f9b28df729c7dc857ec60d7f3178e44ba27"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"53450b0f60a4ff476cc796f40bf736f5eacf198e","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    fields \u003d {"},{"line_number":26,"context_line":"        \u0027backup_service\u0027: fields.StringField(nullable\u003dFalse),"},{"line_number":27,"context_line":"        \u0027backup_url\u0027: fields.StringField(nullable\u003dFalse)"},{"line_number":28,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa31d9ce_efbe55fe","line":27,"updated":"2017-02-10 13:21:13.000000000","message":"Missing comma at the end. Should be:\n\n    fields \u003d {\n        \u0027backup_service\u0027: fields.StringField(nullable\u003dFalse),\n        \u0027backup_url\u0027: fields.StringField(nullable\u003dFalse),\n    }\n\nSee [1]\n\n[1] http://docs.openstack.org/developer/hacking/#dictionaries-lists","commit_id":"fc28ca3796724ab946c598029c01a7fa985b993f"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"0502723a003b83c20ef8d7f83a262527484692bd","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    }"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    @classmethod"},{"line_number":32,"context_line":"    def from_primitive(cls, primitive, context):"},{"line_number":33,"context_line":"        backup_record \u003d BackupRecord(context)"},{"line_number":34,"context_line":"        backup_record.backup_service \u003d primitive[\u0027backup_service\u0027]"},{"line_number":35,"context_line":"        backup_record.backup_url \u003d primitive[\u0027backup_url\u0027]"}],"source_content_type":"text/x-python","patch_set":13,"id":"da36d5c6_93041a16","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":48},"updated":"2017-02-20 19:11:30.000000000","message":"mdulko:cinder/ (master) $ rgrep \"def from_primitive\" cinder\n cinder/objects/request_spec.py:    def from_primitives(cls, spec):\n cinder/objects/manageableresources.py:    def from_primitives(cls, context, dict_resource):\n cinder/objects/manageableresources.py:    def from_primitives(cls, context, data):\n cinder/objects/manageableresources.py:    def from_primitives(cls, context, data):\n cinder/objects/backup.py:    def from_primitive(cls, primitive, context, expected_attrs\u003dNone):\n cinder/tests/unit/objects/test_fields.py:    def from_primitive(self, obj, attr, value):\n\nAs you see in other places we\u0027re keeping other order of arguments, so let\u0027s switch this one as well.","commit_id":"b6ae33af149ffcb2ced4924ba91e19fdcb0440e5"}],"cinder/objects/base.py":[{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"a757788274745aad875d5c9568221b0357fdc1b5","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                          \u0027ManageableVolume\u0027: \u00271.0\u0027,"},{"line_number":130,"context_line":"                          \u0027ManageableVolumeList\u0027: \u00271.0\u0027,"},{"line_number":131,"context_line":"                          \u0027ManageableSnapshotList\u0027: \u00271.0\u0027,"},{"line_number":132,"context_line":"                          \u0027BackupRecord\u0027: \u00271.0\u0027})"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"class CinderObjectRegistry(base.VersionedObjectRegistry):"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a430d35_2e6a471b","line":132,"updated":"2017-02-02 23:36:05.000000000","message":"You need to add it as a new dic item to OBJ_VERSIONS","commit_id":"461aebbcff6794a09823c848b2f6490f30fb58b7"}]}
