)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"56cb8f4fcb14a453142a1df3a1b15a653f51da63","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commit adds a public core API to check at runtime if backup is"},{"line_number":10,"context_line":"enabled in a cinder deployment"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I44caa17e1ae5e501e9f96252cd37d58148295e82"},{"line_number":13,"context_line":"Implements: blueprint discovering-system-capabilities"},{"line_number":14,"context_line":"Closes-bug: #1334856"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1ac06dbe_c29e9906","line":11,"updated":"2016-08-25 04:23:54.000000000","message":"DocImpact\nAPIImpact","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"56924870390256c58b2175be1024d361a32a002b","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commit adds a public core API to check at runtime if backup is"},{"line_number":10,"context_line":"enabled in a cinder deployment"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I44caa17e1ae5e501e9f96252cd37d58148295e82"},{"line_number":13,"context_line":"Implements: blueprint discovering-system-capabilities"},{"line_number":14,"context_line":"Closes-bug: #1334856"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"fa7ab95a_40baaa6f","line":11,"in_reply_to":"1ac06dbe_c29e9906","updated":"2016-08-26 18:06:09.000000000","message":"Done","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"}],"cinder/api/v3/resource_capabilities.py":[{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"04762892edb403c6b963cfeddf70a4928443959c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 IBM Corp."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_13aad219","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"updated":"2016-08-03 00:52:30.000000000","message":"2016","commit_id":"452e0893ec67140ca07ef668504bf56e5a032a17"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"bb9998a560641b9347a2b689190c96542dbbdc41","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 IBM Corp."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_aa4b1686","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"in_reply_to":"bacf61ea_13aad219","updated":"2016-08-04 21:27:28.000000000","message":"Also not IBM","commit_id":"452e0893ec67140ca07ef668504bf56e5a032a17"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"bb9998a560641b9347a2b689190c96542dbbdc41","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def __init__(self):"},{"line_number":35,"context_line":"        super(ResourceCapabilitiesController, self).__init__()"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    @wsgi.Controller.api_version(\u00273.6\u0027)"},{"line_number":38,"context_line":"    def index(self, req):"},{"line_number":39,"context_line":"        \"\"\"Return a list of resource capabilities."},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_8a1e126e","line":37,"range":{"start_line":37,"start_character":34,"end_line":37,"end_character":37},"updated":"2016-08-04 21:27:28.000000000","message":"Should this not be 3.10?","commit_id":"452e0893ec67140ca07ef668504bf56e5a032a17"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"d0288f71e58c990bc0fb5e8280235a6389f6f26c","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":43,"context_line":"        check_policy(context, action\u003d\u0027index\u0027)"},{"line_number":44,"context_line":"        # resource capabilities list"},{"line_number":45,"context_line":"        rcl \u003d \\"},{"line_number":46,"context_line":"            rc.ResourceCapabilitiesList.get_resource_capabilities_list(context)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        # constructing response object"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_4184ba09","line":45,"updated":"2016-08-11 19:21:32.000000000","message":"It\u0027s more readable to have more meaningful variable names, like \"res_list\" or even the more verbose \"resource_list\".\nWe now have plenty of bits available for the characters in variable names :)","commit_id":"5e9494a81a8214c495d322c97b6ea88458f5a6b6"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"9f86bc84422c1dd0aa739122afeee40de54cf4c3","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":43,"context_line":"        check_policy(context, action\u003d\u0027index\u0027)"},{"line_number":44,"context_line":"        # resource capabilities list"},{"line_number":45,"context_line":"        rcl \u003d \\"},{"line_number":46,"context_line":"            rc.ResourceCapabilitiesList.get_resource_capabilities_list(context)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        # constructing response object"}],"source_content_type":"text/x-python","patch_set":6,"id":"3ac371cc_d3a62552","line":45,"in_reply_to":"9ad45d7e_4184ba09","updated":"2016-08-16 22:14:22.000000000","message":"Done","commit_id":"5e9494a81a8214c495d322c97b6ea88458f5a6b6"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"d0288f71e58c990bc0fb5e8280235a6389f6f26c","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            ret_fields \u003d {\u0027name\u0027: svc.binary.replace(\u0027cinder\u0027, \u0027volume\u0027),"},{"line_number":52,"context_line":"                          \u0027desc\u0027: \u0027Allows creating backup of volumes\u0027}"},{"line_number":53,"context_line":"            resp.append(ret_fields)"},{"line_number":54,"context_line":"        return {\u0027rc\u0027: resp}"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"def create_resource():"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_21b9c6cc","line":54,"updated":"2016-08-11 19:21:32.000000000","message":"is \u0027rc\u0027 supposed to be for resource_capabilities? Please use a more descriptive key.","commit_id":"5e9494a81a8214c495d322c97b6ea88458f5a6b6"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"9f86bc84422c1dd0aa739122afeee40de54cf4c3","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            ret_fields \u003d {\u0027name\u0027: svc.binary.replace(\u0027cinder\u0027, \u0027volume\u0027),"},{"line_number":52,"context_line":"                          \u0027desc\u0027: \u0027Allows creating backup of volumes\u0027}"},{"line_number":53,"context_line":"            resp.append(ret_fields)"},{"line_number":54,"context_line":"        return {\u0027rc\u0027: resp}"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"def create_resource():"}],"source_content_type":"text/x-python","patch_set":6,"id":"3ac371cc_736e5102","line":54,"in_reply_to":"9ad45d7e_21b9c6cc","updated":"2016-08-16 22:14:22.000000000","message":"Done","commit_id":"5e9494a81a8214c495d322c97b6ea88458f5a6b6"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"56cb8f4fcb14a453142a1df3a1b15a653f51da63","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":43,"context_line":"        check_policy(context, action\u003d\u0027index\u0027)"},{"line_number":44,"context_line":"        # resource capabilities list"},{"line_number":45,"context_line":"        capabilities_list \u003d \\"},{"line_number":46,"context_line":"            rc.ResourceCapabilitiesList.get_resource_capabilities_list(context)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        # constructing response object"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ac06dbe_023f1126","line":45,"updated":"2016-08-25 04:23:54.000000000","message":"Please use () instead of \\","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"56924870390256c58b2175be1024d361a32a002b","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":43,"context_line":"        check_policy(context, action\u003d\u0027index\u0027)"},{"line_number":44,"context_line":"        # resource capabilities list"},{"line_number":45,"context_line":"        capabilities_list \u003d \\"},{"line_number":46,"context_line":"            rc.ResourceCapabilitiesList.get_resource_capabilities_list(context)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        # constructing response object"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa7ab95a_a0ab761c","line":45,"in_reply_to":"1ac06dbe_023f1126","updated":"2016-08-26 18:06:09.000000000","message":"Done","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"a6733c8bec1c9c2a1f671e819ba0fc3b70ea2f7c","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        # constructing response object"},{"line_number":49,"context_line":"        resp \u003d []"},{"line_number":50,"context_line":"        for svc in capabilities_list:"},{"line_number":51,"context_line":"            ret_fields \u003d {\u0027name\u0027: svc.binary.replace(\u0027cinder\u0027, \u0027volume\u0027),"},{"line_number":52,"context_line":"                          \u0027desc\u0027: \u0027Allows creating backup of volumes\u0027}"},{"line_number":53,"context_line":"            resp.append(ret_fields)"},{"line_number":54,"context_line":"        return {\u0027resource_capabilities\u0027: resp}"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ac06dbe_69db2aee","line":51,"range":{"start_line":51,"start_character":34,"end_line":51,"end_character":72},"updated":"2016-08-25 13:45:33.000000000","message":"volume-volume?","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"56924870390256c58b2175be1024d361a32a002b","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        # constructing response object"},{"line_number":49,"context_line":"        resp \u003d []"},{"line_number":50,"context_line":"        for svc in capabilities_list:"},{"line_number":51,"context_line":"            ret_fields \u003d {\u0027name\u0027: svc.binary.replace(\u0027cinder\u0027, \u0027volume\u0027),"},{"line_number":52,"context_line":"                          \u0027desc\u0027: \u0027Allows creating backup of volumes\u0027}"},{"line_number":53,"context_line":"            resp.append(ret_fields)"},{"line_number":54,"context_line":"        return {\u0027resource_capabilities\u0027: resp}"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa7ab95a_4048ea87","line":51,"range":{"start_line":51,"start_character":34,"end_line":51,"end_character":72},"in_reply_to":"1ac06dbe_69db2aee","updated":"2016-08-26 18:06:09.000000000","message":"I think the intent there was to have it output volume-backup since right now it\u0027s just returning the backup service, but yeah cinder-backup is the service name and it\u0027s more extensible this way.","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"},{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"65f44886edc6c607e25675a0769752b61f3fa085","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            ret_fields \u003d {\u0027name\u0027: svc[\u0027binary\u0027],"},{"line_number":50,"context_line":"                          \u0027desc\u0027: \u0027Allows creating backup of volumes\u0027}"},{"line_number":51,"context_line":"            resp.append(ret_fields)"},{"line_number":52,"context_line":"        return {\u0027resource_capabilities\u0027: resp}"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"def create_resource():"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa7ab95a_06deef10","line":52,"updated":"2016-08-26 22:52:00.000000000","message":"Why is this called resource_capabilities when the spec refers to it as capabilities? No biggie, Just curious","commit_id":"340dc8c4f1409367826f5b769f0dd37522d53cb1"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"764694d1fcdccf1caf2e4200d30ec0b2401ddc9e","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            ret_fields \u003d {\u0027name\u0027: svc[\u0027binary\u0027],"},{"line_number":50,"context_line":"                          \u0027desc\u0027: \u0027Allows creating backup of volumes\u0027}"},{"line_number":51,"context_line":"            resp.append(ret_fields)"},{"line_number":52,"context_line":"        return {\u0027resource_capabilities\u0027: resp}"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"def create_resource():"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa7ab95a_1f3ed58b","line":52,"in_reply_to":"fa7ab95a_06deef10","updated":"2016-08-29 22:31:01.000000000","message":"I\u0027m not atctually sure, maybe we\u0027ll have to ask the original author Satyajeet, but I think he\u0027s still on vacation / his internship has ended. I would guess it might be okay to change it.","commit_id":"340dc8c4f1409367826f5b769f0dd37522d53cb1"}],"cinder/api/v3/router.py":[{"author":{"_account_id":22025,"name":"James Conroy","email":"jayryanconroy@gmail.com","username":"jayconroy"},"change_message_id":"70de06760367221db09b1488158cf98c4d460d6e","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from cinder.api.v3 import messages"},{"line_number":33,"context_line":"from cinder.api.v3 import snapshot_manage"},{"line_number":34,"context_line":"from cinder.api.v3 import volume_manage"},{"line_number":35,"context_line":"from cinder.api.v3 import resource_capabilities as rc"},{"line_number":36,"context_line":"from cinder.api.v3 import volumes"},{"line_number":37,"context_line":"from cinder.api import versions"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_9cb9a7ef","line":35,"range":{"start_line":35,"start_character":0,"end_line":35,"end_character":53},"updated":"2016-08-03 08:23:50.000000000","message":"Imports must be in alphabetical order, so between \"messages\" and \"snapshot_manage\".","commit_id":"452e0893ec67140ca07ef668504bf56e5a032a17"},{"author":{"_account_id":22025,"name":"James Conroy","email":"jayryanconroy@gmail.com","username":"jayconroy"},"change_message_id":"70de06760367221db09b1488158cf98c4d460d6e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"bacf61ea_bcaf4b93","line":142,"updated":"2016-08-03 08:23:50.000000000","message":"Remove extra blank line at end of file.","commit_id":"452e0893ec67140ca07ef668504bf56e5a032a17"}],"cinder/db/sqlalchemy/api.py":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"56cb8f4fcb14a453142a1df3a1b15a653f51da63","unresolved":false,"context_lines":[{"line_number":667,"context_line":"###################"},{"line_number":668,"context_line":""},{"line_number":669,"context_line":"def get_backup_service_info(context):"},{"line_number":670,"context_line":"    \"\"\"Returns entry in services table for backup service"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"    Can be invoked by any user. Currently being used by system"},{"line_number":673,"context_line":"    capabilities."}],"source_content_type":"text/x-python","patch_set":8,"id":"1ac06dbe_6216c5a8","line":670,"updated":"2016-08-25 04:23:54.000000000","message":"Missing period at the end.","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"56924870390256c58b2175be1024d361a32a002b","unresolved":false,"context_lines":[{"line_number":667,"context_line":"###################"},{"line_number":668,"context_line":""},{"line_number":669,"context_line":"def get_backup_service_info(context):"},{"line_number":670,"context_line":"    \"\"\"Returns entry in services table for backup service"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"    Can be invoked by any user. Currently being used by system"},{"line_number":673,"context_line":"    capabilities."}],"source_content_type":"text/x-python","patch_set":8,"id":"fa7ab95a_a059b65c","line":670,"in_reply_to":"1ac06dbe_6216c5a8","updated":"2016-08-26 18:06:09.000000000","message":"Done","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"},{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"65f44886edc6c607e25675a0769752b61f3fa085","unresolved":false,"context_lines":[{"line_number":683,"context_line":"    Can be invoked by any user. Currently being used by system"},{"line_number":684,"context_line":"    capabilities."},{"line_number":685,"context_line":"    \"\"\""},{"line_number":686,"context_line":"    query \u003d model_query(context, models.Service)"},{"line_number":687,"context_line":"    return query.filter_by(binary\u003d\u0027cinder-backup\u0027)"},{"line_number":688,"context_line":""},{"line_number":689,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa7ab95a_08eb5db1","line":686,"range":{"start_line":686,"start_character":4,"end_line":686,"end_character":9},"updated":"2016-08-26 22:52:00.000000000","message":"I am curious to know when a cloud operator chooses to initially have cinder-backup running and later decides to disable the service after an upgrade.\n\nin that case, he decides to \n\n$cinder service-disable \u003chost\u003e cinder-backup...but this does not remove the backup row from the table. It changes it to disabled\u003d1. your query will still return backup service as enabled!. \n\nI think you should add filter_by(disabled\u003d0) as well.","commit_id":"340dc8c4f1409367826f5b769f0dd37522d53cb1"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"2b39ca4561e6fed51d299ce47716fda4ba944d8b","unresolved":false,"context_lines":[{"line_number":683,"context_line":"    Can be invoked by any user. Currently being used by system"},{"line_number":684,"context_line":"    capabilities."},{"line_number":685,"context_line":"    \"\"\""},{"line_number":686,"context_line":"    query \u003d model_query(context, models.Service)"},{"line_number":687,"context_line":"    return query.filter_by(binary\u003d\u0027cinder-backup\u0027)"},{"line_number":688,"context_line":""},{"line_number":689,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa7ab95a_63804dc1","line":686,"range":{"start_line":686,"start_character":4,"end_line":686,"end_character":9},"in_reply_to":"fa7ab95a_08eb5db1","updated":"2016-08-29 13:49:52.000000000","message":"+1, and this actually is quite funny. I don\u0027t think we had support for disabling backup service before scalable backups were introduced. But according to current code - it is taken into account when doing the job scheduling.","commit_id":"340dc8c4f1409367826f5b769f0dd37522d53cb1"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"764694d1fcdccf1caf2e4200d30ec0b2401ddc9e","unresolved":false,"context_lines":[{"line_number":683,"context_line":"    Can be invoked by any user. Currently being used by system"},{"line_number":684,"context_line":"    capabilities."},{"line_number":685,"context_line":"    \"\"\""},{"line_number":686,"context_line":"    query \u003d model_query(context, models.Service)"},{"line_number":687,"context_line":"    return query.filter_by(binary\u003d\u0027cinder-backup\u0027)"},{"line_number":688,"context_line":""},{"line_number":689,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa7ab95a_3f3f1988","line":686,"range":{"start_line":686,"start_character":4,"end_line":686,"end_character":9},"in_reply_to":"fa7ab95a_63804dc1","updated":"2016-08-29 22:31:01.000000000","message":"Done","commit_id":"340dc8c4f1409367826f5b769f0dd37522d53cb1"},{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"0a48cf1e70a04bf11bcc116429ef8a5e871b4714","unresolved":false,"context_lines":[{"line_number":684,"context_line":"    capabilities."},{"line_number":685,"context_line":"    \"\"\""},{"line_number":686,"context_line":"    query \u003d model_query(context, models.Service)"},{"line_number":687,"context_line":"    return query.filter_by(binary\u003d\u0027cinder-backup\u0027).filter_by(disabled\u003dFalse)"},{"line_number":688,"context_line":""},{"line_number":689,"context_line":""},{"line_number":690,"context_line":"def _metadata_refs(metadata_dict, meta_class):"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_02d5981a","line":687,"range":{"start_line":687,"start_character":60,"end_line":687,"end_character":61},"updated":"2016-08-29 23:10:44.000000000","message":"Are you sure its True or False? Last time i checked it was 0 and 1","commit_id":"bddc21e69ae6121e1152d3f75ba6fa596b76c0d2"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"f29d2b7f11652a908cc6c191ac1b8c009e9ed437","unresolved":false,"context_lines":[{"line_number":684,"context_line":"    capabilities."},{"line_number":685,"context_line":"    \"\"\""},{"line_number":686,"context_line":"    query \u003d model_query(context, models.Service)"},{"line_number":687,"context_line":"    return query.filter_by(binary\u003d\u0027cinder-backup\u0027).filter_by(disabled\u003dFalse)"},{"line_number":688,"context_line":""},{"line_number":689,"context_line":""},{"line_number":690,"context_line":"def _metadata_refs(metadata_dict, meta_class):"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_c24c90ca","line":687,"range":{"start_line":687,"start_character":60,"end_line":687,"end_character":61},"in_reply_to":"fa7ab95a_02d5981a","updated":"2016-08-29 23:19:17.000000000","message":"It says default\u003dFalse here so I went with that, where did you find 0/1? https://github.com/openstack/cinder/blob/master/cinder/db/sqlalchemy/models.py#L77","commit_id":"bddc21e69ae6121e1152d3f75ba6fa596b76c0d2"},{"author":{"_account_id":20140,"name":"Karthik Prabhu Vinod","email":"karthik.prabhu.vinod@intel.com","username":"kprabhuv"},"change_message_id":"d6f8e20938027605421eb06fb14984b02f2ee3f1","unresolved":false,"context_lines":[{"line_number":684,"context_line":"    capabilities."},{"line_number":685,"context_line":"    \"\"\""},{"line_number":686,"context_line":"    query \u003d model_query(context, models.Service)"},{"line_number":687,"context_line":"    return query.filter_by(binary\u003d\u0027cinder-backup\u0027).filter_by(disabled\u003dFalse)"},{"line_number":688,"context_line":""},{"line_number":689,"context_line":""},{"line_number":690,"context_line":"def _metadata_refs(metadata_dict, meta_class):"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_a0d912f5","line":687,"range":{"start_line":687,"start_character":60,"end_line":687,"end_character":61},"in_reply_to":"fa7ab95a_c24c90ca","updated":"2016-08-30 15:47:15.000000000","message":"My DB shows as disabled as tinyint. But if this gone through jenkins, it works! rest LGTM","commit_id":"bddc21e69ae6121e1152d3f75ba6fa596b76c0d2"}],"cinder/objects/resource_capabilities.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"a6733c8bec1c9c2a1f671e819ba0fc3b70ea2f7c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"1ac06dbe_fc287635","updated":"2016-08-25 13:45:33.000000000","message":"This doesn\u0027t make sense to create a versioned object for this purpose. Resource capabilities aren\u0027t really an info from the DB (we already have a Service object) and isn\u0027t passed over RPC. You can simplify the code greatly by removing all the objects stuff from this patch.","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"56924870390256c58b2175be1024d361a32a002b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"fa7ab95a_003502f6","in_reply_to":"1ac06dbe_fc287635","updated":"2016-08-26 18:06:09.000000000","message":"Done","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"}],"cinder/tests/unit/api/v3/test_resourcecapabilities.py":[{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"d0288f71e58c990bc0fb5e8280235a6389f6f26c","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        self.stubs.Set(db, \"get_backup_service_info\","},{"line_number":75,"context_line":"                       fake_backup_disabled)"},{"line_number":76,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v3/%s/resource-capabilities\u0027 % ("},{"line_number":77,"context_line":"            fake.PROJECT_ID))"},{"line_number":78,"context_line":"        req.headers[\u0027OpenStack-API-Version\u0027] \u003d \u0027volume 3.11\u0027"},{"line_number":79,"context_line":"        req.api_version_request \u003d api_version.APIVersionRequest(\u00273.12\u0027)"},{"line_number":80,"context_line":"        resp \u003d self.controller.index(req)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_41eafa74","line":77,"updated":"2016-08-11 19:21:32.000000000","message":"you can set api_microversion when you init the fakes.HTTPRequest.blank with:\nversion\u003d\u00273.11\u0027\nor better to use a Global...","commit_id":"5e9494a81a8214c495d322c97b6ea88458f5a6b6"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"9f86bc84422c1dd0aa739122afeee40de54cf4c3","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        self.stubs.Set(db, \"get_backup_service_info\","},{"line_number":75,"context_line":"                       fake_backup_disabled)"},{"line_number":76,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v3/%s/resource-capabilities\u0027 % ("},{"line_number":77,"context_line":"            fake.PROJECT_ID))"},{"line_number":78,"context_line":"        req.headers[\u0027OpenStack-API-Version\u0027] \u003d \u0027volume 3.11\u0027"},{"line_number":79,"context_line":"        req.api_version_request \u003d api_version.APIVersionRequest(\u00273.12\u0027)"},{"line_number":80,"context_line":"        resp \u003d self.controller.index(req)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3ac371cc_537195df","line":77,"in_reply_to":"9ad45d7e_41eafa74","updated":"2016-08-16 22:14:22.000000000","message":"Done","commit_id":"5e9494a81a8214c495d322c97b6ea88458f5a6b6"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"d0288f71e58c990bc0fb5e8280235a6389f6f26c","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                       fake_backup_disabled)"},{"line_number":76,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v3/%s/resource-capabilities\u0027 % ("},{"line_number":77,"context_line":"            fake.PROJECT_ID))"},{"line_number":78,"context_line":"        req.headers[\u0027OpenStack-API-Version\u0027] \u003d \u0027volume 3.11\u0027"},{"line_number":79,"context_line":"        req.api_version_request \u003d api_version.APIVersionRequest(\u00273.12\u0027)"},{"line_number":80,"context_line":"        resp \u003d self.controller.index(req)"},{"line_number":81,"context_line":"        self.assertEqual([], resp[\u0027rc\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_619e1e08","line":78,"updated":"2016-08-11 19:21:32.000000000","message":"Don\u0027t need L#78 and L#79 if you create the request with the proper microversion.","commit_id":"5e9494a81a8214c495d322c97b6ea88458f5a6b6"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"9f86bc84422c1dd0aa739122afeee40de54cf4c3","unresolved":false,"context_lines":[{"line_number":75,"context_line":"                       fake_backup_disabled)"},{"line_number":76,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v3/%s/resource-capabilities\u0027 % ("},{"line_number":77,"context_line":"            fake.PROJECT_ID))"},{"line_number":78,"context_line":"        req.headers[\u0027OpenStack-API-Version\u0027] \u003d \u0027volume 3.11\u0027"},{"line_number":79,"context_line":"        req.api_version_request \u003d api_version.APIVersionRequest(\u00273.12\u0027)"},{"line_number":80,"context_line":"        resp \u003d self.controller.index(req)"},{"line_number":81,"context_line":"        self.assertEqual([], resp[\u0027rc\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"3ac371cc_b378c9c5","line":78,"in_reply_to":"9ad45d7e_619e1e08","updated":"2016-08-16 22:14:22.000000000","message":"Done","commit_id":"5e9494a81a8214c495d322c97b6ea88458f5a6b6"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"d0288f71e58c990bc0fb5e8280235a6389f6f26c","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        # for admin user"},{"line_number":92,"context_line":"        self.ctxt \u003d context.RequestContext(\u0027admin\u0027, fake.PROJECT_ID,"},{"line_number":93,"context_line":"                                           auth_token\u003dTrue)"},{"line_number":94,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v3/%s/resource-capabilities\u0027 % ("},{"line_number":95,"context_line":"            fake.PROJECT_ID))"},{"line_number":96,"context_line":"        req.headers[\u0027OpenStack-API-Version\u0027] \u003d \u0027volume 3.12\u0027"},{"line_number":97,"context_line":"        req.api_version_request \u003d api_version.APIVersionRequest(\u00273.12\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_e1920ef5","line":94,"updated":"2016-08-11 19:21:32.000000000","message":"same as above.","commit_id":"5e9494a81a8214c495d322c97b6ea88458f5a6b6"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"9f86bc84422c1dd0aa739122afeee40de54cf4c3","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        # for admin user"},{"line_number":92,"context_line":"        self.ctxt \u003d context.RequestContext(\u0027admin\u0027, fake.PROJECT_ID,"},{"line_number":93,"context_line":"                                           auth_token\u003dTrue)"},{"line_number":94,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v3/%s/resource-capabilities\u0027 % ("},{"line_number":95,"context_line":"            fake.PROJECT_ID))"},{"line_number":96,"context_line":"        req.headers[\u0027OpenStack-API-Version\u0027] \u003d \u0027volume 3.12\u0027"},{"line_number":97,"context_line":"        req.api_version_request \u003d api_version.APIVersionRequest(\u00273.12\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3ac371cc_93730de7","line":94,"in_reply_to":"9ad45d7e_e1920ef5","updated":"2016-08-16 22:14:22.000000000","message":"Done","commit_id":"5e9494a81a8214c495d322c97b6ea88458f5a6b6"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"d0288f71e58c990bc0fb5e8280235a6389f6f26c","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        # for normal user"},{"line_number":102,"context_line":"        self.ctxt \u003d context.RequestContext(fake.USER_ID, fake.PROJECT_ID,"},{"line_number":103,"context_line":"                                           auth_token\u003dTrue)"},{"line_number":104,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v3/%s/resource-capabilities\u0027 % ("},{"line_number":105,"context_line":"            fake.PROJECT_ID))"},{"line_number":106,"context_line":"        req.headers[\u0027OpenStack-API-Version\u0027] \u003d \u0027volume 3.12\u0027"},{"line_number":107,"context_line":"        req.api_version_request \u003d api_version.APIVersionRequest(\u00273.12\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_41b83a75","line":104,"updated":"2016-08-11 19:21:32.000000000","message":"same.","commit_id":"5e9494a81a8214c495d322c97b6ea88458f5a6b6"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"9f86bc84422c1dd0aa739122afeee40de54cf4c3","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        # for normal user"},{"line_number":102,"context_line":"        self.ctxt \u003d context.RequestContext(fake.USER_ID, fake.PROJECT_ID,"},{"line_number":103,"context_line":"                                           auth_token\u003dTrue)"},{"line_number":104,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v3/%s/resource-capabilities\u0027 % ("},{"line_number":105,"context_line":"            fake.PROJECT_ID))"},{"line_number":106,"context_line":"        req.headers[\u0027OpenStack-API-Version\u0027] \u003d \u0027volume 3.12\u0027"},{"line_number":107,"context_line":"        req.api_version_request \u003d api_version.APIVersionRequest(\u00273.12\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3ac371cc_f3824193","line":104,"in_reply_to":"9ad45d7e_41b83a75","updated":"2016-08-16 22:14:22.000000000","message":"Done","commit_id":"5e9494a81a8214c495d322c97b6ea88458f5a6b6"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"3d47346351a8ae93787dffae8c90ba84ee15ffe2","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        self.controller \u003d ResourceCapabilitiesController()"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def test_return_true_if_enabled(self):"},{"line_number":59,"context_line":"        self.stubs.Set(db, \"get_backup_service_info\","},{"line_number":60,"context_line":"                       fake_get_backup_service_info)"},{"line_number":61,"context_line":"        expectedResponse \u003d [{"},{"line_number":62,"context_line":"            \u0027name\u0027: \u0027volume-backup\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ac371cc_e47ecb68","line":59,"updated":"2016-08-17 16:34:57.000000000","message":"We should use mock in new unit tests.","commit_id":"5e2f89b183dca17776bb1018c1c20ddde1f6502c"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"8a3958eb046588397bd2034bcb4a66c5dc2132c7","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        self.controller \u003d ResourceCapabilitiesController()"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def test_return_true_if_enabled(self):"},{"line_number":59,"context_line":"        self.stubs.Set(db, \"get_backup_service_info\","},{"line_number":60,"context_line":"                       fake_get_backup_service_info)"},{"line_number":61,"context_line":"        expectedResponse \u003d [{"},{"line_number":62,"context_line":"            \u0027name\u0027: \u0027volume-backup\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ac371cc_4e016439","line":59,"in_reply_to":"3ac371cc_e47ecb68","updated":"2016-08-18 19:39:19.000000000","message":"Done","commit_id":"5e2f89b183dca17776bb1018c1c20ddde1f6502c"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"3d47346351a8ae93787dffae8c90ba84ee15ffe2","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        self.assertEqual(expectedResponse, resp[\u0027resource_capabilities\u0027])"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def test_returns_empty_list_when_backup_disabled(self):"},{"line_number":73,"context_line":"        self.stubs.Set(db, \"get_backup_service_info\","},{"line_number":74,"context_line":"                       fake_backup_disabled)"},{"line_number":75,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v3/%s/resource-capabilities\u0027 % ("},{"line_number":76,"context_line":"            fake.PROJECT_ID), version\u003dapi_version)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ac371cc_648bfb68","line":73,"updated":"2016-08-17 16:34:57.000000000","message":"Same comment.","commit_id":"5e2f89b183dca17776bb1018c1c20ddde1f6502c"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"8a3958eb046588397bd2034bcb4a66c5dc2132c7","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        self.assertEqual(expectedResponse, resp[\u0027resource_capabilities\u0027])"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def test_returns_empty_list_when_backup_disabled(self):"},{"line_number":73,"context_line":"        self.stubs.Set(db, \"get_backup_service_info\","},{"line_number":74,"context_line":"                       fake_backup_disabled)"},{"line_number":75,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v3/%s/resource-capabilities\u0027 % ("},{"line_number":76,"context_line":"            fake.PROJECT_ID), version\u003dapi_version)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ac371cc_2efea838","line":73,"in_reply_to":"3ac371cc_648bfb68","updated":"2016-08-18 19:39:19.000000000","message":"Done","commit_id":"5e2f89b183dca17776bb1018c1c20ddde1f6502c"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"3d47346351a8ae93787dffae8c90ba84ee15ffe2","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        self.assertEqual([], resp[\u0027resource_capabilities\u0027])"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def test_api_should_work_for_all_users(self):"},{"line_number":81,"context_line":"        self.stubs.Set(db, \"get_backup_service_info\","},{"line_number":82,"context_line":"                       fake_get_backup_service_info)"},{"line_number":83,"context_line":"        expectedResponse \u003d [{"},{"line_number":84,"context_line":"            \u0027name\u0027: \u0027volume-backup\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ac371cc_04f16701","line":81,"updated":"2016-08-17 16:34:57.000000000","message":"Same comment.","commit_id":"5e2f89b183dca17776bb1018c1c20ddde1f6502c"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"8a3958eb046588397bd2034bcb4a66c5dc2132c7","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        self.assertEqual([], resp[\u0027resource_capabilities\u0027])"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def test_api_should_work_for_all_users(self):"},{"line_number":81,"context_line":"        self.stubs.Set(db, \"get_backup_service_info\","},{"line_number":82,"context_line":"                       fake_get_backup_service_info)"},{"line_number":83,"context_line":"        expectedResponse \u003d [{"},{"line_number":84,"context_line":"            \u0027name\u0027: \u0027volume-backup\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ac371cc_8efb5c47","line":81,"in_reply_to":"3ac371cc_04f16701","updated":"2016-08-18 19:39:19.000000000","message":"Done","commit_id":"5e2f89b183dca17776bb1018c1c20ddde1f6502c"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"56cb8f4fcb14a453142a1df3a1b15a653f51da63","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Copyright 2015 Intel Corp."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ac06dbe_4220e9f7","line":1,"updated":"2016-08-25 04:23:54.000000000","message":"2016","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"56924870390256c58b2175be1024d361a32a002b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Copyright 2015 Intel Corp."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa7ab95a_403f0ad6","line":1,"in_reply_to":"1ac06dbe_4220e9f7","updated":"2016-08-26 18:06:09.000000000","message":"Done","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"a16324bd57c6d52ccd297a4541bd0d56a1d7c4e6","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from cinder import test"},{"line_number":21,"context_line":"from cinder.tests.unit.api import fakes"},{"line_number":22,"context_line":"from cinder.tests.unit import fake_constants as fake"},{"line_number":23,"context_line":"import datetime"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"fake_backup_capability_list \u003d ["},{"line_number":26,"context_line":"    {\u0027binary\u0027: \u0027cinder-backup\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ac06dbe_8c4ec6bf","line":23,"updated":"2016-08-26 13:00:29.000000000","message":"This import should be in a separate section above mock.\n\nSee http://docs.openstack.org/developer/hacking/#import-order-template","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"56924870390256c58b2175be1024d361a32a002b","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from cinder import test"},{"line_number":21,"context_line":"from cinder.tests.unit.api import fakes"},{"line_number":22,"context_line":"from cinder.tests.unit import fake_constants as fake"},{"line_number":23,"context_line":"import datetime"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"fake_backup_capability_list \u003d ["},{"line_number":26,"context_line":"    {\u0027binary\u0027: \u0027cinder-backup\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa7ab95a_6026cecf","line":23,"in_reply_to":"1ac06dbe_8c4ec6bf","updated":"2016-08-26 18:06:09.000000000","message":"Done","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"a16324bd57c6d52ccd297a4541bd0d56a1d7c4e6","unresolved":false,"context_lines":[{"line_number":36,"context_line":"api_version \u003d \u00273.12\u0027"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class TestResourceCapabilities(test.TestCase):"},{"line_number":40,"context_line":"    \"\"\"\" tests for the public API which checks if backup is enabled for a"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    cinder deployment"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa7ab95a_d9f5f083","line":39,"updated":"2016-08-26 13:00:29.000000000","message":"We should also add a test to check API request with lower version.","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"56924870390256c58b2175be1024d361a32a002b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"api_version \u003d \u00273.12\u0027"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class TestResourceCapabilities(test.TestCase):"},{"line_number":40,"context_line":"    \"\"\"\" tests for the public API which checks if backup is enabled for a"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    cinder deployment"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa7ab95a_2013e667","line":39,"in_reply_to":"fa7ab95a_d9f5f083","updated":"2016-08-26 18:06:09.000000000","message":"Oops left this out in the patch set I just pushed up, I\u0027ll look into adding this.","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"a16324bd57c6d52ccd297a4541bd0d56a1d7c4e6","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class TestResourceCapabilities(test.TestCase):"},{"line_number":40,"context_line":"    \"\"\"\" tests for the public API which checks if backup is enabled for a"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    cinder deployment"},{"line_number":43,"context_line":"    \"\"\""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1ac06dbe_8fe7d83f","line":41,"updated":"2016-08-26 13:00:29.000000000","message":"nit: please remove this blank line","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"56924870390256c58b2175be1024d361a32a002b","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class TestResourceCapabilities(test.TestCase):"},{"line_number":40,"context_line":"    \"\"\"\" tests for the public API which checks if backup is enabled for a"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    cinder deployment"},{"line_number":43,"context_line":"    \"\"\""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"fa7ab95a_a030d602","line":41,"in_reply_to":"1ac06dbe_8fe7d83f","updated":"2016-08-26 18:06:09.000000000","message":"Done","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"a16324bd57c6d52ccd297a4541bd0d56a1d7c4e6","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @mock.patch.object(db, \u0027get_backup_service_info\u0027,"},{"line_number":52,"context_line":"                       return_value\u003dfake_backup_capability_list)"},{"line_number":53,"context_line":"    def test_return_true_if_enabled(self, mock_backup_capabilities):"},{"line_number":54,"context_line":"        expectedResponse \u003d [{"},{"line_number":55,"context_line":"            \u0027name\u0027: \u0027volume-backup\u0027,"},{"line_number":56,"context_line":"            \u0027desc\u0027: \u0027Allows creating backup of volumes\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ac06dbe_af09f4df","line":53,"range":{"start_line":53,"start_character":20,"end_line":53,"end_character":24},"updated":"2016-08-26 13:00:29.000000000","message":"This is not testing return value \u0027true\u0027","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"56924870390256c58b2175be1024d361a32a002b","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @mock.patch.object(db, \u0027get_backup_service_info\u0027,"},{"line_number":52,"context_line":"                       return_value\u003dfake_backup_capability_list)"},{"line_number":53,"context_line":"    def test_return_true_if_enabled(self, mock_backup_capabilities):"},{"line_number":54,"context_line":"        expectedResponse \u003d [{"},{"line_number":55,"context_line":"            \u0027name\u0027: \u0027volume-backup\u0027,"},{"line_number":56,"context_line":"            \u0027desc\u0027: \u0027Allows creating backup of volumes\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa7ab95a_8008322f","line":53,"range":{"start_line":53,"start_character":20,"end_line":53,"end_character":24},"in_reply_to":"1ac06dbe_af09f4df","updated":"2016-08-26 18:06:09.000000000","message":"Done","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"a16324bd57c6d52ccd297a4541bd0d56a1d7c4e6","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        }]"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        # for admin user"},{"line_number":82,"context_line":"        self.ctxt \u003d context.RequestContext(\u0027admin\u0027, fake.PROJECT_ID,"},{"line_number":83,"context_line":"                                           auth_token\u003dTrue)"},{"line_number":84,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v3/%s/resource-capabilities\u0027 % ("},{"line_number":85,"context_line":"            fake.PROJECT_ID), version\u003dapi_version)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ac06dbe_82b96f31","line":82,"updated":"2016-08-26 13:00:29.000000000","message":"context.get_admin_context()","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"56924870390256c58b2175be1024d361a32a002b","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        }]"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        # for admin user"},{"line_number":82,"context_line":"        self.ctxt \u003d context.RequestContext(\u0027admin\u0027, fake.PROJECT_ID,"},{"line_number":83,"context_line":"                                           auth_token\u003dTrue)"},{"line_number":84,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v3/%s/resource-capabilities\u0027 % ("},{"line_number":85,"context_line":"            fake.PROJECT_ID), version\u003dapi_version)"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa7ab95a_a007f61a","line":82,"in_reply_to":"1ac06dbe_82b96f31","updated":"2016-08-26 18:06:09.000000000","message":"Done","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1e2aaa994756394c866409ad785ab312d0fe9ba9","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"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":"import datetime"},{"line_number":15,"context_line":"import mock"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from cinder.api.v3.resource_capabilities import ResourceCapabilitiesController"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa7ab95a_3f05a7bb","line":14,"updated":"2016-08-28 01:13:43.000000000","message":"There should be a blank line between \"import datetime\" and \"import mock\" because datetime is in std lib and mock is 3rd party lib.","commit_id":"340dc8c4f1409367826f5b769f0dd37522d53cb1"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"764694d1fcdccf1caf2e4200d30ec0b2401ddc9e","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"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":"import datetime"},{"line_number":15,"context_line":"import mock"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from cinder.api.v3.resource_capabilities import ResourceCapabilitiesController"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa7ab95a_7f4d213d","line":14,"in_reply_to":"fa7ab95a_3f05a7bb","updated":"2016-08-29 22:31:01.000000000","message":"Done","commit_id":"340dc8c4f1409367826f5b769f0dd37522d53cb1"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1e2aaa994756394c866409ad785ab312d0fe9ba9","unresolved":false,"context_lines":[{"line_number":26,"context_line":"     \u0027host\u0027: \u0027host1\u0027,"},{"line_number":27,"context_line":"     \u0027availability_zone\u0027: \u0027cinder\u0027,"},{"line_number":28,"context_line":"     \u0027id\u0027: 1,"},{"line_number":29,"context_line":"     \u0027disabled\u0027: True,"},{"line_number":30,"context_line":"     \u0027updated_at\u0027: datetime.datetime(2012, 10, 29, 13, 42, 2),"},{"line_number":31,"context_line":"     \u0027created_at\u0027: datetime.datetime(2012, 9, 18, 2, 46, 27),"},{"line_number":32,"context_line":"     \u0027disabled_reason\u0027: \u0027test1\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa7ab95a_9f3073a0","line":29,"updated":"2016-08-28 01:13:43.000000000","message":"It doesn\u0027t make sense to list disabled services as available services.","commit_id":"340dc8c4f1409367826f5b769f0dd37522d53cb1"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"764694d1fcdccf1caf2e4200d30ec0b2401ddc9e","unresolved":false,"context_lines":[{"line_number":26,"context_line":"     \u0027host\u0027: \u0027host1\u0027,"},{"line_number":27,"context_line":"     \u0027availability_zone\u0027: \u0027cinder\u0027,"},{"line_number":28,"context_line":"     \u0027id\u0027: 1,"},{"line_number":29,"context_line":"     \u0027disabled\u0027: True,"},{"line_number":30,"context_line":"     \u0027updated_at\u0027: datetime.datetime(2012, 10, 29, 13, 42, 2),"},{"line_number":31,"context_line":"     \u0027created_at\u0027: datetime.datetime(2012, 9, 18, 2, 46, 27),"},{"line_number":32,"context_line":"     \u0027disabled_reason\u0027: \u0027test1\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa7ab95a_9f4ae524","line":29,"in_reply_to":"fa7ab95a_9f3073a0","updated":"2016-08-29 22:31:01.000000000","message":"Done","commit_id":"340dc8c4f1409367826f5b769f0dd37522d53cb1"}],"etc/cinder/policy.json":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"56cb8f4fcb14a453142a1df3a1b15a653f51da63","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    \"backup:backup-export\": \"rule:admin_api\","},{"line_number":94,"context_line":"    \"backup:update\": \"rule:admin_or_owner\","},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    \"resource_capabilities:index\": \"\","},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    \"snapshot_extension:snapshot_actions:update_snapshot_status\": \"\","},{"line_number":99,"context_line":"    \"snapshot_extension:snapshot_manage\": \"rule:admin_api\","}],"source_content_type":"application/json","patch_set":8,"id":"1ac06dbe_827821fa","line":96,"updated":"2016-08-25 04:23:54.000000000","message":"This should not be blank.  Is this an admin or tenant API?","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"},{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"56924870390256c58b2175be1024d361a32a002b","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    \"backup:backup-export\": \"rule:admin_api\","},{"line_number":94,"context_line":"    \"backup:update\": \"rule:admin_or_owner\","},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    \"resource_capabilities:index\": \"\","},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    \"snapshot_extension:snapshot_actions:update_snapshot_status\": \"\","},{"line_number":99,"context_line":"    \"snapshot_extension:snapshot_manage\": \"rule:admin_api\","}],"source_content_type":"application/json","patch_set":8,"id":"fa7ab95a_c0023a0b","line":96,"in_reply_to":"1ac06dbe_827821fa","updated":"2016-08-26 18:06:09.000000000","message":"It\u0027s for regular users, but \u0027owner\u0027 seems a bit odd for a running service - is admin_or_owner the correct rule?","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"930fbced2415236da274643e8d7b37b95c775ee0","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    \"backup:backup-export\": \"rule:admin_api\","},{"line_number":94,"context_line":"    \"backup:update\": \"rule:admin_or_owner\","},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    \"resource_capabilities:index\": \"\","},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    \"snapshot_extension:snapshot_actions:update_snapshot_status\": \"\","},{"line_number":99,"context_line":"    \"snapshot_extension:snapshot_manage\": \"rule:admin_api\","}],"source_content_type":"application/json","patch_set":8,"id":"fa7ab95a_d7f3d008","line":96,"in_reply_to":"fa7ab95a_c0023a0b","updated":"2016-08-27 02:25:29.000000000","message":"Hmm, I\u0027m not sure what is the right policy for services either.  A tenant is not the owner of a service, so \"owner\" seems odd too.  I\u0027m fine if you leave it as \"\".","commit_id":"077ba542da73dafb889291a1f75487649453d7e3"}]}
