)]}'
{"karbor/api/v1/protectables.py":[{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"9e4e10ca8dabe994880e19ca910a91418963696e","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        if parameters is not None:"},{"line_number":188,"context_line":"            try:"},{"line_number":189,"context_line":"                parameters \u003d eval(parameters)"},{"line_number":190,"context_line":"            except ValueError:"},{"line_number":191,"context_line":"                msg \u003d _(\"The convert of parameters fails.\")"},{"line_number":192,"context_line":"                raise exception.MalformedRequestBody(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a95cdbc_3e152e9b","line":189,"range":{"start_line":189,"start_character":29,"end_line":189,"end_character":33},"updated":"2016-10-10 08:09:06.000000000","message":"eval() is insecure and MUST NOT be used anywhere in Karbor\u0027s code, definitely not on user input. This is a security risk.\nAre you trying to convert JSON to a dict? If so, use jsonutils from oslo_serialization","commit_id":"97303762da6db85ff39570fa575ef4c9f767ce8d"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"3c7ab65f4f1c3063db7853cd0498447d699bb45c","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        if parameters is not None:"},{"line_number":188,"context_line":"            try:"},{"line_number":189,"context_line":"                parameters \u003d eval(parameters)"},{"line_number":190,"context_line":"            except ValueError:"},{"line_number":191,"context_line":"                msg \u003d _(\"The convert of parameters fails.\")"},{"line_number":192,"context_line":"                raise exception.MalformedRequestBody(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a95cdbc_e1a16b95","line":189,"range":{"start_line":189,"start_character":29,"end_line":189,"end_character":33},"in_reply_to":"1a95cdbc_3e152e9b","updated":"2016-10-10 08:27:31.000000000","message":"There is a exception when I use jsonutils to convert parameters to a dict. I will analyze this conversion error.","commit_id":"97303762da6db85ff39570fa575ef4c9f767ce8d"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"4803b6057e0639dc48ac1aadc633a3b2362a02a3","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        if parameters is not None:"},{"line_number":188,"context_line":"            try:"},{"line_number":189,"context_line":"                parameters \u003d eval(parameters)"},{"line_number":190,"context_line":"            except ValueError:"},{"line_number":191,"context_line":"                msg \u003d _(\"The convert of parameters fails.\")"},{"line_number":192,"context_line":"                raise exception.MalformedRequestBody(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a95cdbc_ed76ba04","line":189,"range":{"start_line":189,"start_character":29,"end_line":189,"end_character":33},"in_reply_to":"1a95cdbc_e1a16b95","updated":"2016-10-10 09:58:37.000000000","message":"@yuval I find the reason. The parameters in filters here is a string, but it isn\u0027t in JSON format.\nSo I refer to the processing in cinder.\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/api.py#L1826","commit_id":"97303762da6db85ff39570fa575ef4c9f767ce8d"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"9e4e10ca8dabe994880e19ca910a91418963696e","unresolved":false,"context_lines":[{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        if parameters is not None:"},{"line_number":277,"context_line":"            try:"},{"line_number":278,"context_line":"                parameters \u003d eval(parameters)"},{"line_number":279,"context_line":"            except ValueError:"},{"line_number":280,"context_line":"                msg \u003d _(\"The convert of parameters fails.\")"},{"line_number":281,"context_line":"                raise exception.MalformedRequestBody(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a95cdbc_7e8256c9","line":278,"range":{"start_line":278,"start_character":29,"end_line":278,"end_character":33},"updated":"2016-10-10 08:09:06.000000000","message":"Ditto","commit_id":"97303762da6db85ff39570fa575ef4c9f767ce8d"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"d4d36dded3d8f0804528e42289080204b06df597","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        if parameters is not None:"},{"line_number":188,"context_line":"            try:"},{"line_number":189,"context_line":"                parameters \u003d ast.literal_eval(parameters)"},{"line_number":190,"context_line":"            except (ValueError, SyntaxError):"},{"line_number":191,"context_line":"                msg \u003d _(\u0027Could not evaluate value %s, \u0027"},{"line_number":192,"context_line":"                        \u0027assuming string\u0027) % parameters"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_d101e339","line":189,"range":{"start_line":189,"start_character":0,"end_line":189,"end_character":57},"updated":"2016-10-13 11:44:06.000000000","message":"Then you might want to use karbor.utils.check_filters() on \u0027filters\u0027 object.","commit_id":"46f3181a233206a191047f52427491a8ecdcf7eb"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"7da521e83acc723bdb4959779bf69a7e9ebacefd","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        if parameters is not None:"},{"line_number":188,"context_line":"            try:"},{"line_number":189,"context_line":"                parameters \u003d ast.literal_eval(parameters)"},{"line_number":190,"context_line":"            except (ValueError, SyntaxError):"},{"line_number":191,"context_line":"                msg \u003d _(\u0027Could not evaluate value %s, \u0027"},{"line_number":192,"context_line":"                        \u0027assuming string\u0027) % parameters"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_314cdf9d","line":189,"range":{"start_line":189,"start_character":0,"end_line":189,"end_character":57},"in_reply_to":"fa6399be_d101e339","updated":"2016-10-13 11:45:52.000000000","message":"Actually, see:\n    utils.check_filters(filter)\ndown below, on line 210. You could just move it up above your section ^^","commit_id":"46f3181a233206a191047f52427491a8ecdcf7eb"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"d4d36dded3d8f0804528e42289080204b06df597","unresolved":false,"context_lines":[{"line_number":276,"context_line":""},{"line_number":277,"context_line":"        if parameters is not None:"},{"line_number":278,"context_line":"            try:"},{"line_number":279,"context_line":"                parameters \u003d ast.literal_eval(parameters)"},{"line_number":280,"context_line":"            except (ValueError, SyntaxError):"},{"line_number":281,"context_line":"                msg \u003d _(\u0027Could not evaluate value %s, \u0027"},{"line_number":282,"context_line":"                        \u0027assuming string\u0027) % parameters"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa6399be_f1fa6742","line":279,"range":{"start_line":279,"start_character":0,"end_line":279,"end_character":57},"updated":"2016-10-13 11:44:06.000000000","message":"ditto","commit_id":"46f3181a233206a191047f52427491a8ecdcf7eb"}],"karbor/services/protection/protectable_plugins/volume.py":[{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"9e4e10ca8dabe994880e19ca910a91418963696e","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                constants.PROJECT_RESOURCE_TYPE)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def list_resources(self, context, parameters\u003dNone):"},{"line_number":48,"context_line":"        LOG.debug(\"Volume protectable plugin parameters: %s\","},{"line_number":49,"context_line":"                  parameters, context\u003dcontext)"},{"line_number":50,"context_line":"        try:"},{"line_number":51,"context_line":"            volumes \u003d self._client(context).volumes.list(detailed\u003dFalse)"},{"line_number":52,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a95cdbc_de528a66","line":49,"range":{"start_line":48,"start_character":0,"end_line":49,"end_character":46},"updated":"2016-10-10 08:09:06.000000000","message":"any reason why this debug appears only in volume protectables?","commit_id":"97303762da6db85ff39570fa575ef4c9f767ce8d"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"4803b6057e0639dc48ac1aadc633a3b2362a02a3","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                constants.PROJECT_RESOURCE_TYPE)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def list_resources(self, context, parameters\u003dNone):"},{"line_number":48,"context_line":"        LOG.debug(\"Volume protectable plugin parameters: %s\","},{"line_number":49,"context_line":"                  parameters, context\u003dcontext)"},{"line_number":50,"context_line":"        try:"},{"line_number":51,"context_line":"            volumes \u003d self._client(context).volumes.list(detailed\u003dFalse)"},{"line_number":52,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a95cdbc_cd52de66","line":49,"range":{"start_line":48,"start_character":0,"end_line":49,"end_character":46},"in_reply_to":"1a95cdbc_de528a66","updated":"2016-10-10 09:58:37.000000000","message":"Done","commit_id":"97303762da6db85ff39570fa575ef4c9f767ce8d"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"9e4e10ca8dabe994880e19ca910a91418963696e","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                    for vol in volumes]"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def show_resource(self, context, resource_id, parameters\u003dNone):"},{"line_number":64,"context_line":"        LOG.debug(\"Volume protectable plugin parameters: %s\","},{"line_number":65,"context_line":"                  parameters, context\u003dcontext)"},{"line_number":66,"context_line":"        try:"},{"line_number":67,"context_line":"            volume \u003d self._client(context).volumes.get(resource_id)"},{"line_number":68,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a95cdbc_1e4952b7","line":65,"range":{"start_line":64,"start_character":0,"end_line":65,"end_character":46},"updated":"2016-10-10 08:09:06.000000000","message":"ditto","commit_id":"97303762da6db85ff39570fa575ef4c9f767ce8d"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"4803b6057e0639dc48ac1aadc633a3b2362a02a3","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                    for vol in volumes]"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def show_resource(self, context, resource_id, parameters\u003dNone):"},{"line_number":64,"context_line":"        LOG.debug(\"Volume protectable plugin parameters: %s\","},{"line_number":65,"context_line":"                  parameters, context\u003dcontext)"},{"line_number":66,"context_line":"        try:"},{"line_number":67,"context_line":"            volume \u003d self._client(context).volumes.get(resource_id)"},{"line_number":68,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a95cdbc_6d59ca8d","line":65,"range":{"start_line":64,"start_character":0,"end_line":65,"end_character":46},"in_reply_to":"1a95cdbc_1e4952b7","updated":"2016-10-10 09:58:37.000000000","message":"Done","commit_id":"97303762da6db85ff39570fa575ef4c9f767ce8d"}]}
