)]}'
{"smaug/api/v1/protectables.py":[{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"328370f2706fc9fc490a6035f522792af64c8f35","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"\"\"\"The restorations api.\"\"\""},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_config import cfg"},{"line_number":16,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_5cc0957b","line":13,"range":{"start_line":13,"start_character":7,"end_line":13,"end_character":19},"updated":"2016-02-27 03:43:46.000000000","message":"protectables","commit_id":"9a8f57d795506f300b7b9af573daf028b7ad518e"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"ff9b51728403d257156b87786e8d798dbc436865","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"\"\"\"The restorations api.\"\"\""},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_config import cfg"},{"line_number":16,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_ad96cded","line":13,"range":{"start_line":13,"start_character":7,"end_line":13,"end_character":19},"in_reply_to":"9aed3d3a_5cc0957b","updated":"2016-02-27 07:06:56.000000000","message":"Done","commit_id":"9a8f57d795506f300b7b9af573daf028b7ad518e"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"328370f2706fc9fc490a6035f522792af64c8f35","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from webob import exc"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import smaug"},{"line_number":21,"context_line":"from smaug.api import common"},{"line_number":22,"context_line":"from smaug.api.openstack import wsgi"},{"line_number":23,"context_line":"from smaug import exception"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_7cbe39d5","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":12},"updated":"2016-02-27 03:43:46.000000000","message":"This import seems not necessary.","commit_id":"9a8f57d795506f300b7b9af573daf028b7ad518e"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"ff9b51728403d257156b87786e8d798dbc436865","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from webob import exc"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import smaug"},{"line_number":21,"context_line":"from smaug.api import common"},{"line_number":22,"context_line":"from smaug.api.openstack import wsgi"},{"line_number":23,"context_line":"from smaug import exception"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_8d994922","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":12},"in_reply_to":"9aed3d3a_7cbe39d5","updated":"2016-02-27 07:06:56.000000000","message":"Done","commit_id":"9a8f57d795506f300b7b9af573daf028b7ad518e"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"328370f2706fc9fc490a6035f522792af64c8f35","unresolved":false,"context_lines":[{"line_number":27,"context_line":"import smaug.policy"},{"line_number":28,"context_line":"from smaug.services.protection import api as protection_api"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"CONF \u003d cfg.CONF"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_bc2a812a","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":4},"updated":"2016-02-27 03:43:46.000000000","message":"cfg isn\u0027t used anywhere.","commit_id":"9a8f57d795506f300b7b9af573daf028b7ad518e"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"ff9b51728403d257156b87786e8d798dbc436865","unresolved":false,"context_lines":[{"line_number":27,"context_line":"import smaug.policy"},{"line_number":28,"context_line":"from smaug.services.protection import api as protection_api"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"CONF \u003d cfg.CONF"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_cda3514e","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":4},"in_reply_to":"9aed3d3a_bc2a812a","updated":"2016-02-27 07:06:56.000000000","message":"Done","commit_id":"9a8f57d795506f300b7b9af573daf028b7ad518e"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"328370f2706fc9fc490a6035f522792af64c8f35","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        self.protection_api \u003d protection_api.API()"},{"line_number":110,"context_line":"        super(ProtectablesController, self).__init__()"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def show(self, req, id):"},{"line_number":113,"context_line":"        \"\"\"Return data about the given protectable_type.\"\"\""},{"line_number":114,"context_line":"        context \u003d req.environ[\u0027smaug.context\u0027]"},{"line_number":115,"context_line":"        protectable_type \u003d id"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_bc02816d","line":112,"range":{"start_line":112,"start_character":24,"end_line":112,"end_character":26},"updated":"2016-02-27 03:43:46.000000000","message":"Suggest changing to name protectable_type.","commit_id":"9a8f57d795506f300b7b9af573daf028b7ad518e"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"ff9b51728403d257156b87786e8d798dbc436865","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        self.protection_api \u003d protection_api.API()"},{"line_number":110,"context_line":"        super(ProtectablesController, self).__init__()"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def show(self, req, id):"},{"line_number":113,"context_line":"        \"\"\"Return data about the given protectable_type.\"\"\""},{"line_number":114,"context_line":"        context \u003d req.environ[\u0027smaug.context\u0027]"},{"line_number":115,"context_line":"        protectable_type \u003d id"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_4df9014d","line":112,"range":{"start_line":112,"start_character":24,"end_line":112,"end_character":26},"in_reply_to":"9aed3d3a_bc02816d","updated":"2016-02-27 07:06:56.000000000","message":"The defaut method show parameters of the class ProjectMapper is id. If I use another parameter protectable_type, I need add  \nmapper.connect to map the url. So here I still use id.","commit_id":"9a8f57d795506f300b7b9af573daf028b7ad518e"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"328370f2706fc9fc490a6035f522792af64c8f35","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        protectable_types \u003d self._get_all(context)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        if protectable_type not in protectable_types:"},{"line_number":122,"context_line":"            msg \u003d _(\"Invalid protectable type provided.\")"},{"line_number":123,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_1cb28d94","line":121,"updated":"2016-02-27 03:43:46.000000000","message":"This check is duplicated a little bit, cause there also is a exception check while calling the following show_protectable_type method. Please decide which check to use.","commit_id":"9a8f57d795506f300b7b9af573daf028b7ad518e"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"ff9b51728403d257156b87786e8d798dbc436865","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        protectable_types \u003d self._get_all(context)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        if protectable_type not in protectable_types:"},{"line_number":122,"context_line":"            msg \u003d _(\"Invalid protectable type provided.\")"},{"line_number":123,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_8dc029e2","line":121,"in_reply_to":"9aed3d3a_1cb28d94","updated":"2016-02-27 07:06:56.000000000","message":"IMO, I need check the parameter protectable_type if it is invalid here. If it is invalid, show_protectable_type do not need be called.","commit_id":"9a8f57d795506f300b7b9af573daf028b7ad518e"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"328370f2706fc9fc490a6035f522792af64c8f35","unresolved":false,"context_lines":[{"line_number":178,"context_line":"            instance[\"type\"] \u003d protectable_type"},{"line_number":179,"context_line":"            if protectable_id is None:"},{"line_number":180,"context_line":"                msg \u003d _(\"Invalid instances found.\")"},{"line_number":181,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":182,"context_line":"            dependents \u003d self.protection_api.\\"},{"line_number":183,"context_line":"                list_protectable_dependents(context, protectable_id,"},{"line_number":184,"context_line":"                                            protectable_type)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_fc08892f","line":181,"range":{"start_line":181,"start_character":32,"end_line":181,"end_character":44},"updated":"2016-02-27 03:43:46.000000000","message":"Throw InvalidInput exception here not properly here.","commit_id":"9a8f57d795506f300b7b9af573daf028b7ad518e"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"ff9b51728403d257156b87786e8d798dbc436865","unresolved":false,"context_lines":[{"line_number":178,"context_line":"            instance[\"type\"] \u003d protectable_type"},{"line_number":179,"context_line":"            if protectable_id is None:"},{"line_number":180,"context_line":"                msg \u003d _(\"Invalid instances found.\")"},{"line_number":181,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":182,"context_line":"            dependents \u003d self.protection_api.\\"},{"line_number":183,"context_line":"                list_protectable_dependents(context, protectable_id,"},{"line_number":184,"context_line":"                                            protectable_type)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aed3d3a_edb73584","line":181,"range":{"start_line":181,"start_character":32,"end_line":181,"end_character":44},"in_reply_to":"9aed3d3a_fc08892f","updated":"2016-02-27 07:06:56.000000000","message":"Done","commit_id":"9a8f57d795506f300b7b9af573daf028b7ad518e"}],"smaug/services/protection/manager.py":[{"author":{"_account_id":13070,"name":"Eran Gampel","email":"eran@gampel.net","username":"Gampel"},"change_message_id":"aa7aad007d7662203b09c656b1f0e2c4c759d742","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            \"OS::Glance::Image\","},{"line_number":124,"context_line":"            \"OS::Cinder::Volume\","},{"line_number":125,"context_line":"            \"OS::Neutron::Topology\","},{"line_number":126,"context_line":"            \"OS::Manila::Share\""},{"line_number":127,"context_line":"        ]"},{"line_number":128,"context_line":"        return return_stub"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_d1ea900e","line":126,"range":{"start_line":126,"start_character":13,"end_line":126,"end_character":31},"updated":"2016-02-29 15:22:41.000000000","message":"Do we want to support  Manila in the first phase ?","commit_id":"45e924045bcfb6b4ec84db3cf9c645e5b44a8e14"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"de1ffa20e8ed778226c5a50ffc275d2be1e1f167","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            \"OS::Glance::Image\","},{"line_number":124,"context_line":"            \"OS::Cinder::Volume\","},{"line_number":125,"context_line":"            \"OS::Neutron::Topology\","},{"line_number":126,"context_line":"            \"OS::Manila::Share\""},{"line_number":127,"context_line":"        ]"},{"line_number":128,"context_line":"        return return_stub"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_5c0af18a","line":126,"range":{"start_line":126,"start_character":13,"end_line":126,"end_character":31},"in_reply_to":"9aed3d3a_d1ea900e","updated":"2016-03-01 03:49:27.000000000","message":"NO Manila will not be supportted in the first phase.","commit_id":"45e924045bcfb6b4ec84db3cf9c645e5b44a8e14"}]}
