)]}'
{"karbor/api/v1/protectables.py":[{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"4c962aa4747d5af6a45289fbba7ae6607e109ae4","unresolved":false,"context_lines":[{"line_number":284,"context_line":"                context, protectable_type, protectable_id,"},{"line_number":285,"context_line":"                parameters\u003dparameters)"},{"line_number":286,"context_line":"        except exception.ProtectableResourceNotFound as error:"},{"line_number":287,"context_line":"            raise exc.HTTPNotFound(explanation\u003derror.msg)"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        if instance is None:"},{"line_number":290,"context_line":"            raise exception.InvalidProtectableInstance()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a461143_109bbdca","line":287,"range":{"start_line":287,"start_character":0,"end_line":287,"end_character":57},"updated":"2017-01-26 07:51:50.000000000","message":"HTTPInternalError, as we spoke on IRC?","commit_id":"4d408ae0fc0d932be84b3eae79557085984bf25c"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"c3daaa9a4c2656a33ce948200921d7522de931e9","unresolved":false,"context_lines":[{"line_number":284,"context_line":"                context, protectable_type, protectable_id,"},{"line_number":285,"context_line":"                parameters\u003dparameters)"},{"line_number":286,"context_line":"        except exception.ProtectableResourceNotFound as error:"},{"line_number":287,"context_line":"            raise exc.HTTPNotFound(explanation\u003derror.msg)"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        if instance is None:"},{"line_number":290,"context_line":"            raise exception.InvalidProtectableInstance()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a430d35_9d9361fa","line":287,"range":{"start_line":287,"start_character":0,"end_line":287,"end_character":57},"in_reply_to":"1a430d35_48969e95","updated":"2017-02-03 09:59:09.000000000","message":"I will add a except about HTTPInternalError.","commit_id":"4d408ae0fc0d932be84b3eae79557085984bf25c"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"00325b6fa5f487958a45eed29657e425ab326e41","unresolved":false,"context_lines":[{"line_number":284,"context_line":"                context, protectable_type, protectable_id,"},{"line_number":285,"context_line":"                parameters\u003dparameters)"},{"line_number":286,"context_line":"        except exception.ProtectableResourceNotFound as error:"},{"line_number":287,"context_line":"            raise exc.HTTPNotFound(explanation\u003derror.msg)"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        if instance is None:"},{"line_number":290,"context_line":"            raise exception.InvalidProtectableInstance()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a430d35_48969e95","line":287,"range":{"start_line":287,"start_character":0,"end_line":287,"end_character":57},"in_reply_to":"3a461143_109bbdca","updated":"2017-02-03 07:29:03.000000000","message":"No, we don\u0027t spoke the situation here. When the resource can not be found, a 404 error should be returned. We spoke the situation below, when the resource can be found, but it is a none, a HTTPInternalError should be returned.","commit_id":"4d408ae0fc0d932be84b3eae79557085984bf25c"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"ecb4440dd5a6f8f3265768f1e0cfd0ad65b94859","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        except exception.ProtectableResourceNotFound as error:"},{"line_number":287,"context_line":"            raise exc.HTTPNotFound(explanation\u003derror.msg)"},{"line_number":288,"context_line":"        except Exception:"},{"line_number":289,"context_line":"            raise exc.HTTPInternalServerError()"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        if instance is None:"},{"line_number":292,"context_line":"            raise exc.HTTPInternalServerError()"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a430d35_d1f8374c","line":289,"range":{"start_line":289,"start_character":0,"end_line":289,"end_character":47},"updated":"2017-02-06 09:06:51.000000000","message":"we can use the exception\u0027s message as an explanation for this exception","commit_id":"f3b7b53a9213abb8e727b5159aa617a779ec47ee"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"53570af88284672073e9d598f7cb6dafb7633b5a","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        except exception.ProtectableResourceNotFound as error:"},{"line_number":287,"context_line":"            raise exc.HTTPNotFound(explanation\u003derror.msg)"},{"line_number":288,"context_line":"        except Exception:"},{"line_number":289,"context_line":"            raise exc.HTTPInternalServerError()"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        if instance is None:"},{"line_number":292,"context_line":"            raise exc.HTTPInternalServerError()"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a430d35_94edb3f1","line":289,"range":{"start_line":289,"start_character":0,"end_line":289,"end_character":47},"in_reply_to":"1a430d35_d1f8374c","updated":"2017-02-06 12:20:23.000000000","message":"Done","commit_id":"f3b7b53a9213abb8e727b5159aa617a779ec47ee"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"ecb4440dd5a6f8f3265768f1e0cfd0ad65b94859","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            raise exc.HTTPInternalServerError()"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        if instance is None:"},{"line_number":292,"context_line":"            raise exc.HTTPInternalServerError()"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        dependents \u003d self.protection_api.list_protectable_dependents("},{"line_number":295,"context_line":"            context, protectable_id, protectable_type)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a430d35_1199df1f","line":292,"range":{"start_line":292,"start_character":0,"end_line":292,"end_character":47},"updated":"2017-02-06 09:06:51.000000000","message":"1. what is the case there show_protectable_instance doesn\u0027t throw but instance is None?\n2. if it is not supposed to happen, it could be beneficial to say that in the explanation.","commit_id":"f3b7b53a9213abb8e727b5159aa617a779ec47ee"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"53570af88284672073e9d598f7cb6dafb7633b5a","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            raise exc.HTTPInternalServerError()"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        if instance is None:"},{"line_number":292,"context_line":"            raise exc.HTTPInternalServerError()"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        dependents \u003d self.protection_api.list_protectable_dependents("},{"line_number":295,"context_line":"            context, protectable_id, protectable_type)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a430d35_74f207d4","line":292,"range":{"start_line":292,"start_character":0,"end_line":292,"end_character":47},"in_reply_to":"1a430d35_1199df1f","updated":"2017-02-06 12:20:23.000000000","message":"I will add a message for the exception.","commit_id":"f3b7b53a9213abb8e727b5159aa617a779ec47ee"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"085860bfe88e14b642ada4b0f2ce929982f31099","unresolved":false,"context_lines":[{"line_number":286,"context_line":"        except exception.ProtectableResourceNotFound as error:"},{"line_number":287,"context_line":"            raise exc.HTTPNotFound(explanation\u003derror.msg)"},{"line_number":288,"context_line":"        except Exception as err:"},{"line_number":289,"context_line":"            raise exc.HTTPInternalServerError(explanation\u003derr.message)"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        if instance is None:"},{"line_number":292,"context_line":"            msg \u003d _(\"The instance can not be None.\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a430d35_6d1eba64","line":289,"range":{"start_line":289,"start_character":61,"end_line":289,"end_character":69},"updated":"2017-02-06 12:56:00.000000000","message":"Unnecessary.\nI think this can just be `explanation\u003derr` (should verify)","commit_id":"ab9741a38d140f22b3f6086abbb0f46422eb279d"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"085860bfe88e14b642ada4b0f2ce929982f31099","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            raise exc.HTTPInternalServerError(explanation\u003derr.message)"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        if instance is None:"},{"line_number":292,"context_line":"            msg \u003d _(\"The instance can not be None.\")"},{"line_number":293,"context_line":"            raise exc.HTTPInternalServerError(explanation\u003dmsg)"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"        dependents \u003d self.protection_api.list_protectable_dependents("}],"source_content_type":"text/x-python","patch_set":6,"id":"1a430d35_d21bcb7e","line":292,"range":{"start_line":292,"start_character":0,"end_line":292,"end_character":52},"updated":"2017-02-06 12:56:00.000000000","message":"Ofcourse the instance can not be None. But why? Is that because it doesn\u0027t exist? Is it an unexpected value?","commit_id":"ab9741a38d140f22b3f6086abbb0f46422eb279d"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"694e2d050dab030fffa7d52ea3bacc156eda5468","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            raise exc.HTTPInternalServerError(explanation\u003derr.message)"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        if instance is None:"},{"line_number":292,"context_line":"            msg \u003d _(\"The instance can not be None.\")"},{"line_number":293,"context_line":"            raise exc.HTTPInternalServerError(explanation\u003dmsg)"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"        dependents \u003d self.protection_api.list_protectable_dependents("}],"source_content_type":"text/x-python","patch_set":6,"id":"1a430d35_36f31ad8","line":292,"range":{"start_line":292,"start_character":0,"end_line":292,"end_character":52},"in_reply_to":"1a430d35_d21bcb7e","updated":"2017-02-06 15:40:10.000000000","message":"The reason may depend on the backend of protectable plugins. I think we can define that it doesn\u0027t exist here.","commit_id":"ab9741a38d140f22b3f6086abbb0f46422eb279d"}],"karbor/exception.py":[{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"ced8d359cef6c8c1362ed04fc836d37623ad75e7","unresolved":false,"context_lines":[{"line_number":222,"context_line":""},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"class ProtectableResourceNotFound(NotFound):"},{"line_number":225,"context_line":"    message \u003d _(\"Show resource %(id)s of type %(type)s failed: \""},{"line_number":226,"context_line":"                \"%(reason)s\")"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"class InvalidOperationObject(Invalid):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5201f7_1799d66e","line":226,"range":{"start_line":225,"start_character":0,"end_line":226,"end_character":29},"updated":"2017-01-10 14:36:15.000000000","message":"failed or not found?","commit_id":"cbd6376473568e00384a9f2390b3aa738236271c"}],"karbor/services/protection/protectable_plugins/image.py":[{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"ecb4440dd5a6f8f3265768f1e0cfd0ad65b94859","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"INVALID_IMAGE_STATUS \u003d [\u0027killed\u0027, \u0027deleted\u0027, \u0027pending_delete\u0027]"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class ImageProtectablePlugin(protectable_plugin.ProtectablePlugin):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a430d35_f131b30c","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":62},"updated":"2017-02-06 09:06:51.000000000","message":"missing: \u0027deactivated\u0027\n(reference: http://docs.openstack.org/developer/glance/statuses.html )","commit_id":"f3b7b53a9213abb8e727b5159aa617a779ec47ee"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"53570af88284672073e9d598f7cb6dafb7633b5a","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"INVALID_IMAGE_STATUS \u003d [\u0027killed\u0027, \u0027deleted\u0027, \u0027pending_delete\u0027]"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class ImageProtectablePlugin(protectable_plugin.ProtectablePlugin):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a430d35_d4a49bba","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":62},"in_reply_to":"1a430d35_f131b30c","updated":"2017-02-06 12:20:23.000000000","message":"Done","commit_id":"f3b7b53a9213abb8e727b5159aa617a779ec47ee"}],"karbor/services/protection/protectable_plugins/server.py":[{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"ecb4440dd5a6f8f3265768f1e0cfd0ad65b94859","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"INVALID_SERVER_STATUS \u003d [\u0027DELETED\u0027, \u0027ERROR\u0027, \u0027UNKNOWN\u0027]"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class ServerProtectablePlugin(protectable_plugin.ProtectablePlugin):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a430d35_35696626","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":55},"updated":"2017-02-06 09:06:51.000000000","message":"missing: SOFT_DELETED\nshould check regarding: SHELVED and SHELVED_OFFLOAD, RESCUED states\n(reference: http://docs.openstack.org/developer/nova/vmstates.html )","commit_id":"f3b7b53a9213abb8e727b5159aa617a779ec47ee"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"53570af88284672073e9d598f7cb6dafb7633b5a","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"INVALID_SERVER_STATUS \u003d [\u0027DELETED\u0027, \u0027ERROR\u0027, \u0027UNKNOWN\u0027]"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class ServerProtectablePlugin(protectable_plugin.ProtectablePlugin):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a430d35_37b08143","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":55},"in_reply_to":"1a430d35_35696626","updated":"2017-02-06 12:20:23.000000000","message":"The intermediate of vm, \u0027SHELVED\u0027 and \u0027SHELVED_OFFLOAD\u0027 will not be saved to databse.","commit_id":"f3b7b53a9213abb8e727b5159aa617a779ec47ee"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"e778988c40baf983c2208979c4a8fdffec3e3dc3","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"INVALID_SERVER_STATUS \u003d [\u0027DELETED\u0027, \u0027ERROR\u0027, \u0027UNKNOWN\u0027]"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class ServerProtectablePlugin(protectable_plugin.ProtectablePlugin):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a430d35_77304902","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":55},"in_reply_to":"1a430d35_37b08143","updated":"2017-02-06 12:32:30.000000000","message":"I am not sure that only these status are invalid for the server.\nhttp://developer.openstack.org/api-ref/compute/?expanded\u003dlist-servers-detail","commit_id":"f3b7b53a9213abb8e727b5159aa617a779ec47ee"}]}
