)]}'
{"quantum/extensions/securitygroup.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"class SecurityGroupRuleInvalidEthertype(qexception.InvalidInput):"},{"line_number":64,"context_line":"    message \u003d _(\"Security group rule ethertype %(ethertype)s not supported \""},{"line_number":65,"context_line":"                \"only ethertype values %(values)s supported.\")"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FXc4%3D","line":64,"updated":"2013-01-25 11:01:59.000000000","message":"perhaps a period at the end of the first line might help.","commit_id":"bd0549e6ace19d04210ba5a656b843ecad5ff31c"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"c836918f557ee1ef4cb0b38cd3bf729ec79564d5","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"class SecurityGroupRuleInvalidEthertype(qexception.InvalidInput):"},{"line_number":64,"context_line":"    message \u003d _(\"Security group rule ethertype %(ethertype)s not supported \""},{"line_number":65,"context_line":"                \"only ethertype values %(values)s supported.\")"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FWvM%3D","line":64,"in_reply_to":"AAAAM3%2F%2FXc4%3D","updated":"2013-01-25 20:18:15.000000000","message":"Done","commit_id":"bd0549e6ace19d04210ba5a656b843ecad5ff31c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e88d1a22db0ce2612459ade136aca90e31b138ef","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    message \u003d _(\"external_id wrong type %(data)s\")"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"def convert_protocol_case(value):"},{"line_number":124,"context_line":"    if value is None:"},{"line_number":125,"context_line":"        return value"},{"line_number":126,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FXtg%3D","line":123,"updated":"2013-01-25 03:00:41.000000000","message":"Consider changing _case to _to_lower","commit_id":"bd0549e6ace19d04210ba5a656b843ecad5ff31c"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"c836918f557ee1ef4cb0b38cd3bf729ec79564d5","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    message \u003d _(\"external_id wrong type %(data)s\")"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"def convert_protocol_case(value):"},{"line_number":124,"context_line":"    if value is None:"},{"line_number":125,"context_line":"        return value"},{"line_number":126,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FWuc%3D","line":123,"in_reply_to":"AAAAM3%2F%2FXm0%3D","updated":"2013-01-25 20:18:15.000000000","message":"I\u0027m changing this to: convert_protocol_to_case_insensitive()","commit_id":"bd0549e6ace19d04210ba5a656b843ecad5ff31c"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"c836918f557ee1ef4cb0b38cd3bf729ec79564d5","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    message \u003d _(\"external_id wrong type %(data)s\")"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"def convert_protocol_case(value):"},{"line_number":124,"context_line":"    if value is None:"},{"line_number":125,"context_line":"        return value"},{"line_number":126,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FXm0%3D","line":123,"in_reply_to":"AAAAM3%2F%2FXtg%3D","updated":"2013-01-25 05:20:06.000000000","message":"Done","commit_id":"bd0549e6ace19d04210ba5a656b843ecad5ff31c"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"unresolved":false,"context_lines":[{"line_number":125,"context_line":"        return value"},{"line_number":126,"context_line":"    try:"},{"line_number":127,"context_line":"        return value.lower()"},{"line_number":128,"context_line":"    except AttributeError:"},{"line_number":129,"context_line":"        raise SecurityGroupRuleInvalidProtocol("},{"line_number":130,"context_line":"            protocol\u003dvalue, values\u003dsg_supported_protocols)"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FW2I%3D","line":128,"updated":"2013-01-25 18:41:48.000000000","message":"Is it expected that value.lower() will raise AttributeError?","commit_id":"bd0549e6ace19d04210ba5a656b843ecad5ff31c"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"c836918f557ee1ef4cb0b38cd3bf729ec79564d5","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        return value"},{"line_number":126,"context_line":"    try:"},{"line_number":127,"context_line":"        return value.lower()"},{"line_number":128,"context_line":"    except AttributeError:"},{"line_number":129,"context_line":"        raise SecurityGroupRuleInvalidProtocol("},{"line_number":130,"context_line":"            protocol\u003dvalue, values\u003dsg_supported_protocols)"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FW1k%3D","line":128,"in_reply_to":"AAAAM3%2F%2FW2I%3D","updated":"2013-01-25 18:48:43.000000000","message":"It is, i.e: a\u003d1; a.lower()","commit_id":"bd0549e6ace19d04210ba5a656b843ecad5ff31c"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"c836918f557ee1ef4cb0b38cd3bf729ec79564d5","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            protocol\u003dvalue, values\u003dsg_supported_protocols)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"def convert_ethertype_case(value):"},{"line_number":134,"context_line":"    if value is None:"},{"line_number":135,"context_line":"        return value"},{"line_number":136,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FWuY%3D","line":133,"updated":"2013-01-25 20:18:15.000000000","message":"@Gary, changing to: convert_ethertype_to_case_insensitive() hopefully that\u0027s a little better.","commit_id":"bd0549e6ace19d04210ba5a656b843ecad5ff31c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e88d1a22db0ce2612459ade136aca90e31b138ef","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            protocol\u003dvalue, values\u003dsg_supported_protocols)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"def convert_ethertype_case(value):"},{"line_number":134,"context_line":"    if value is None:"},{"line_number":135,"context_line":"        return value"},{"line_number":136,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FXtU%3D","line":133,"updated":"2013-01-25 03:00:41.000000000","message":"Func returns a value. Maybe consider a better name","commit_id":"bd0549e6ace19d04210ba5a656b843ecad5ff31c"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":130,"context_line":"            protocol\u003dvalue, values\u003dsg_supported_protocols)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"def convert_ethertype_case(value):"},{"line_number":134,"context_line":"    if value is None:"},{"line_number":135,"context_line":"        return value"},{"line_number":136,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FXdI%3D","line":133,"in_reply_to":"AAAAM3%2F%2FXm8%3D","updated":"2013-01-25 11:01:59.000000000","message":"I don\u0027t have a strong opinion, so this won\u0027t affect the \u0027approvability\u0027 of the patch.\n\nHowever, you can consider \u0027merging\u0027 conversion logic into validation by either adding lowercase values to sg_supported_ethertypes or using this function for validation.","commit_id":"bd0549e6ace19d04210ba5a656b843ecad5ff31c"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"c836918f557ee1ef4cb0b38cd3bf729ec79564d5","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            protocol\u003dvalue, values\u003dsg_supported_protocols)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"def convert_ethertype_case(value):"},{"line_number":134,"context_line":"    if value is None:"},{"line_number":135,"context_line":"        return value"},{"line_number":136,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FXm8%3D","line":133,"in_reply_to":"AAAAM3%2F%2FXtU%3D","updated":"2013-01-25 05:20:06.000000000","message":"I agree, though this is somewhat consistent to the current convert functions. https://github.com/openstack/quantum/blob/master/quantum/api/v2/attributes.py#L280\n\nDo you have a suggestion for a better name here? I liked convert_protocol case() and convert_protocol_case() lol.","commit_id":"bd0549e6ace19d04210ba5a656b843ecad5ff31c"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"def convert_ethertype_case(value):"},{"line_number":134,"context_line":"    if value is None:"},{"line_number":135,"context_line":"        return value"},{"line_number":136,"context_line":"    try:"},{"line_number":137,"context_line":"        if value.lower() \u003d\u003d \"ipv4\":"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FW1Q%3D","line":134,"updated":"2013-01-25 18:57:45.000000000","message":"replace lines 134-143\n\nif value is None:\n    return\nelif isinstance(value, basestring):\n    for c in sg_supported_ethertypes:\n        if c.lower() \u003d\u003d value.lower():\n            return c\n\nraise SecurityGroupInvalidEthertype(\n    ethertype\u003dvalue, values\u003dsg_supported_ethertypes)","commit_id":"bd0549e6ace19d04210ba5a656b843ecad5ff31c"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":137,"context_line":"            if ethertype.lower() \u003d\u003d value.lower():"},{"line_number":138,"context_line":"                return ethertype"},{"line_number":139,"context_line":"    raise SecurityGroupRuleInvalidEthertype("},{"line_number":140,"context_line":"        ethertype\u003dvalue, values\u003dsg_supported_ethertypes)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"def convert_validate_port_value(port):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FUNA%3D","line":140,"updated":"2013-01-29 08:32:08.000000000","message":"why do we have different implementations in above similar conversion function?\nThis one is more complicated than above one.\nIt is also doing some job done by following validate functions.","commit_id":"7e7f0530545c88c1bcd30561e329dc6b56a9bdd4"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"unresolved":false,"context_lines":[{"line_number":137,"context_line":"            if ethertype.lower() \u003d\u003d value.lower():"},{"line_number":138,"context_line":"                return ethertype"},{"line_number":139,"context_line":"    raise SecurityGroupRuleInvalidEthertype("},{"line_number":140,"context_line":"        ethertype\u003dvalue, values\u003dsg_supported_ethertypes)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"def convert_validate_port_value(port):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FTu0%3D","line":140,"in_reply_to":"AAAAM3%2F%2FUNA%3D","updated":"2013-01-29 16:08:55.000000000","message":"Good call we don\u0027t need 139-140 since the validate on 240 will handle that for us. Thanks.","commit_id":"7e7f0530545c88c1bcd30561e329dc6b56a9bdd4"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":125,"context_line":""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"def convert_ethertype_to_case_insensitive(value):"},{"line_number":128,"context_line":"    if value is None:"},{"line_number":129,"context_line":"        return value"},{"line_number":130,"context_line":"    elif isinstance(value, basestring):"},{"line_number":131,"context_line":"        for ethertype in sg_supported_ethertypes:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FTtM%3D","line":128,"updated":"2013-01-29 16:18:26.000000000","message":"Since the raise was removed, this can be simplified further by dropping 128-129.","commit_id":"e87c690cc7d1a25740e8a277eae5bc7c1fff362a"}],"quantum/tests/unit/test_extension_security_group.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"e1c9526c2bc3141ef685f72d7f7fa33ac111de11","unresolved":false,"context_lines":[{"line_number":282,"context_line":"            groups \u003d self.deserialize(\u0027json\u0027, res.get_response(self.ext_api))"},{"line_number":283,"context_line":"            self.assertEqual(len(groups[\u0027security_groups\u0027]), 2)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def test_number_val_ethertype_fail(self):"},{"line_number":286,"context_line":"        name \u003d \u0027webservers\u0027"},{"line_number":287,"context_line":"        description \u003d \u0027my webservers\u0027"},{"line_number":288,"context_line":"        with self.security_group(name, description) as sg:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FWWw%3D","line":285,"updated":"2013-01-26 13:50:18.000000000","message":"How about use the same naming style as other testcase, \u0027test_create_security_group_rule_with_xxxx\u0027","commit_id":"b37b842184ef47d2ec26bd0227502633be5b6280"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"unresolved":false,"context_lines":[{"line_number":282,"context_line":"            groups \u003d self.deserialize(\u0027json\u0027, res.get_response(self.ext_api))"},{"line_number":283,"context_line":"            self.assertEqual(len(groups[\u0027security_groups\u0027]), 2)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def test_number_val_ethertype_fail(self):"},{"line_number":286,"context_line":"        name \u003d \u0027webservers\u0027"},{"line_number":287,"context_line":"        description \u003d \u0027my webservers\u0027"},{"line_number":288,"context_line":"        with self.security_group(name, description) as sg:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FVBg%3D","line":285,"in_reply_to":"AAAAM3%2F%2FWWw%3D","updated":"2013-01-28 20:27:25.000000000","message":"Done","commit_id":"b37b842184ef47d2ec26bd0227502633be5b6280"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"e1c9526c2bc3141ef685f72d7f7fa33ac111de11","unresolved":false,"context_lines":[{"line_number":295,"context_line":"            self.deserialize(\u0027json\u0027, res)"},{"line_number":296,"context_line":"            self.assertEqual(res.status_int, 400)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def test_number_val_protocol_fail(self):"},{"line_number":299,"context_line":"        name \u003d \u0027webservers\u0027"},{"line_number":300,"context_line":"        description \u003d \u0027my webservers\u0027"},{"line_number":301,"context_line":"        with self.security_group(name, description) as sg:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FWWs%3D","line":298,"updated":"2013-01-26 13:50:18.000000000","message":"same above","commit_id":"b37b842184ef47d2ec26bd0227502633be5b6280"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"unresolved":false,"context_lines":[{"line_number":295,"context_line":"            self.deserialize(\u0027json\u0027, res)"},{"line_number":296,"context_line":"            self.assertEqual(res.status_int, 400)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def test_number_val_protocol_fail(self):"},{"line_number":299,"context_line":"        name \u003d \u0027webservers\u0027"},{"line_number":300,"context_line":"        description \u003d \u0027my webservers\u0027"},{"line_number":301,"context_line":"        with self.security_group(name, description) as sg:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FVBc%3D","line":298,"in_reply_to":"AAAAM3%2F%2FWWs%3D","updated":"2013-01-28 20:27:25.000000000","message":"Done","commit_id":"b37b842184ef47d2ec26bd0227502633be5b6280"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"e1c9526c2bc3141ef685f72d7f7fa33ac111de11","unresolved":false,"context_lines":[{"line_number":308,"context_line":"            self.deserialize(\u0027json\u0027, res)"},{"line_number":309,"context_line":"            self.assertEqual(res.status_int, 400)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    def test_invalid_ethertype(self):"},{"line_number":312,"context_line":"        name \u003d \u0027webservers\u0027"},{"line_number":313,"context_line":"        description \u003d \u0027my webservers\u0027"},{"line_number":314,"context_line":"        with self.security_group(name, description) as sg:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FWWo%3D","line":311,"updated":"2013-01-26 13:50:18.000000000","message":"This testcase looks like \u0027valid_ethertype\u0027","commit_id":"b37b842184ef47d2ec26bd0227502633be5b6280"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"unresolved":false,"context_lines":[{"line_number":308,"context_line":"            self.deserialize(\u0027json\u0027, res)"},{"line_number":309,"context_line":"            self.assertEqual(res.status_int, 400)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    def test_invalid_ethertype(self):"},{"line_number":312,"context_line":"        name \u003d \u0027webservers\u0027"},{"line_number":313,"context_line":"        description \u003d \u0027my webservers\u0027"},{"line_number":314,"context_line":"        with self.security_group(name, description) as sg:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FVBY%3D","line":311,"in_reply_to":"AAAAM3%2F%2FWWo%3D","updated":"2013-01-28 20:27:25.000000000","message":"Done","commit_id":"b37b842184ef47d2ec26bd0227502633be5b6280"}]}
