)]}'
{"nova/api/openstack/compute/plugins/v3/security_groups.py":[{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"9b54dc9672dc54d4aa3951f28cc4b340a63ec34b","unresolved":false,"context_lines":[{"line_number":260,"context_line":"        new_rule[\u0027parent_group_id\u0027] \u003d security_group[\u0027id\u0027]"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        if \u0027cidr\u0027 in new_rule:"},{"line_number":263,"context_line":"            net, prefixlen \u003d netutils.get_net_and_prefixlen(new_rule[\u0027cidr\u0027])"},{"line_number":264,"context_line":"            if net not in (\u00270.0.0.0\u0027, \u0027::\u0027) and prefixlen \u003d\u003d \u00270\u0027:"},{"line_number":265,"context_line":"                msg \u003d _(\"Bad prefix for network in cidr %s\") % new_rule[\u0027cidr\u0027]"},{"line_number":266,"context_line":"                raise exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_add57ae6","line":263,"updated":"2014-09-19 14:10:57.000000000","message":"F821 undefined name \u0027netutils\u0027","commit_id":"5cfa5a04c4188aadc6d88fbdd43e7a94bea4b9e8"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"eb4e4e5c43fbc0372d1ff0577deb236356b8c6af","unresolved":false,"context_lines":[{"line_number":232,"context_line":""},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"class SecurityGroupRulesController(SecurityGroupControllerBase):"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    def create(self, req, body):"},{"line_number":237,"context_line":"        context \u003d _authorize_context(req)"},{"line_number":238,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da9df570_1decbff2","line":235,"updated":"2014-09-26 07:13:02.000000000","message":"Is it necessary to specify @extensions.expected_errors() ?","commit_id":"b57cc0caf5ae6fe247aa655dff1d3fda270ded79"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"eb4e4e5c43fbc0372d1ff0577deb236356b8c6af","unresolved":false,"context_lines":[{"line_number":298,"context_line":"            return self.security_group_api.new_cidr_ingress_rule("},{"line_number":299,"context_line":"                                        cidr, ip_protocol, from_port, to_port)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    def delete(self, req, id):"},{"line_number":302,"context_line":"        context \u003d _authorize_context(req)"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        with translate_exceptions():"}],"source_content_type":"text/x-python","patch_set":2,"id":"da9df570_3dbc23dc","line":301,"updated":"2014-09-26 07:13:02.000000000","message":"ditto","commit_id":"b57cc0caf5ae6fe247aa655dff1d3fda270ded79"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"eb4e4e5c43fbc0372d1ff0577deb236356b8c6af","unresolved":false,"context_lines":[{"line_number":311,"context_line":"            self.security_group_api.remove_rules(context, security_group,"},{"line_number":312,"context_line":"                                                 [rule[\u0027id\u0027]])"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"        return webob.Response(status_int\u003d202)"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"class ServerSecurityGroupController(SecurityGroupControllerBase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"da9df570_5d0c87ed","line":314,"updated":"2014-09-26 07:13:02.000000000","message":"better to use @wsgi.response(202) like the other v2.1 code for code consistency.","commit_id":"b57cc0caf5ae6fe247aa655dff1d3fda270ded79"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"0eb18ca4e5f9586e3c3c510d0e5b80ae343561f8","unresolved":false,"context_lines":[{"line_number":253,"context_line":"                              cidr\u003dsg_rule.get(\u0027cidr\u0027),"},{"line_number":254,"context_line":"                              group_id\u003dsg_rule.get(\u0027group_id\u0027))"},{"line_number":255,"context_line":"        except Exception as exp:"},{"line_number":256,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dunicode(exp))"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        if new_rule is None:"},{"line_number":259,"context_line":"            msg \u003d _(\"Not enough parameters to build a valid rule.\")"}],"source_content_type":"text/x-python","patch_set":11,"id":"baa201ad_70167057","line":256,"range":{"start_line":256,"start_character":49,"end_line":256,"end_character":61},"updated":"2014-10-09 10:59:34.000000000","message":"I\u0027m just wondering should we use here `six.text_type`\n\nhttps://pythonhosted.org/six/#six.text_type","commit_id":"eabe939fad6f77f576d0465ac159a8c7d0c24977"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"b59c497c87bf99b5226ae985426715d52f17e07f","unresolved":false,"context_lines":[{"line_number":253,"context_line":"                              cidr\u003dsg_rule.get(\u0027cidr\u0027),"},{"line_number":254,"context_line":"                              group_id\u003dsg_rule.get(\u0027group_id\u0027))"},{"line_number":255,"context_line":"        except Exception as exp:"},{"line_number":256,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dunicode(exp))"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        if new_rule is None:"},{"line_number":259,"context_line":"            msg \u003d _(\"Not enough parameters to build a valid rule.\")"}],"source_content_type":"text/x-python","patch_set":11,"id":"baa201ad_e5f899c6","line":256,"in_reply_to":"baa201ad_51792efb","updated":"2014-10-13 10:48:31.000000000","message":"yea I think its ok to clean this up afterwards. Its simpler to do a copy of the v2 code in one patch and then cleanup in a followup","commit_id":"eabe939fad6f77f576d0465ac159a8c7d0c24977"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3bab76da9273daaeffe2a6eb220bcd70ed2a167f","unresolved":false,"context_lines":[{"line_number":253,"context_line":"                              cidr\u003dsg_rule.get(\u0027cidr\u0027),"},{"line_number":254,"context_line":"                              group_id\u003dsg_rule.get(\u0027group_id\u0027))"},{"line_number":255,"context_line":"        except Exception as exp:"},{"line_number":256,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dunicode(exp))"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        if new_rule is None:"},{"line_number":259,"context_line":"            msg \u003d _(\"Not enough parameters to build a valid rule.\")"}],"source_content_type":"text/x-python","patch_set":11,"id":"baa201ad_51792efb","line":256,"in_reply_to":"baa201ad_70167057","updated":"2014-10-13 03:06:21.000000000","message":"Actually catch Exception is wrong for v2.1 API. I fixed this in this patch https://review.openstack.org/#/c/124331/7/nova/api/openstack/compute/plugins/v3/security_groups.py\n\nThen we needn\u0027t care about use unicode or not.","commit_id":"eabe939fad6f77f576d0465ac159a8c7d0c24977"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"8e524858f682ca4f45b5c9a77d74464f1fa7430f","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        with translate_exceptions():"},{"line_number":242,"context_line":"            parent_group_id \u003d self.security_group_api.validate_id("},{"line_number":243,"context_line":"                sg_rule.get(\u0027parent_group_id\u0027, None))"},{"line_number":244,"context_line":"            security_group \u003d self.security_group_api.get(context, None,"},{"line_number":245,"context_line":"                                                         parent_group_id,"},{"line_number":246,"context_line":"                                                         map_exception\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9aa7fdbe_571ee50c","line":243,"updated":"2014-10-28 00:47:35.000000000","message":"nit: \", None\" seems unnecessary.","commit_id":"305e1b7a677bba29d6d673f9af480f7671fffa28"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b32055cff4d36d1e4fad928fcf2e46cf06e354d4","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        with translate_exceptions():"},{"line_number":242,"context_line":"            parent_group_id \u003d self.security_group_api.validate_id("},{"line_number":243,"context_line":"                sg_rule.get(\u0027parent_group_id\u0027, None))"},{"line_number":244,"context_line":"            security_group \u003d self.security_group_api.get(context, None,"},{"line_number":245,"context_line":"                                                         parent_group_id,"},{"line_number":246,"context_line":"                                                         map_exception\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9aa7fdbe_c1e925b8","line":243,"in_reply_to":"9aa7fdbe_571ee50c","updated":"2014-10-28 14:07:14.000000000","message":"Done","commit_id":"305e1b7a677bba29d6d673f9af480f7671fffa28"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"8e524858f682ca4f45b5c9a77d74464f1fa7430f","unresolved":false,"context_lines":[{"line_number":252,"context_line":"                              cidr\u003dsg_rule.get(\u0027cidr\u0027),"},{"line_number":253,"context_line":"                              group_id\u003dsg_rule.get(\u0027group_id\u0027))"},{"line_number":254,"context_line":"        except Exception as exp:"},{"line_number":255,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dunicode(exp))"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        if new_rule is None:"},{"line_number":258,"context_line":"            msg \u003d _(\"Not enough parameters to build a valid rule.\")"}],"source_content_type":"text/x-python","patch_set":15,"id":"9aa7fdbe_d732d5a5","line":255,"updated":"2014-10-28 00:47:35.000000000","message":"./nova/api/openstack/compute/plugins/v3/security_groups.py:255:58: N325 str() and unicode() cannot be used on an exception.  Remove or use six.text_type()","commit_id":"305e1b7a677bba29d6d673f9af480f7671fffa28"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b32055cff4d36d1e4fad928fcf2e46cf06e354d4","unresolved":false,"context_lines":[{"line_number":252,"context_line":"                              cidr\u003dsg_rule.get(\u0027cidr\u0027),"},{"line_number":253,"context_line":"                              group_id\u003dsg_rule.get(\u0027group_id\u0027))"},{"line_number":254,"context_line":"        except Exception as exp:"},{"line_number":255,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dunicode(exp))"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        if new_rule is None:"},{"line_number":258,"context_line":"            msg \u003d _(\"Not enough parameters to build a valid rule.\")"}],"source_content_type":"text/x-python","patch_set":15,"id":"9aa7fdbe_81e39dd7","line":255,"in_reply_to":"9aa7fdbe_d732d5a5","updated":"2014-10-28 14:07:14.000000000","message":"Done","commit_id":"305e1b7a677bba29d6d673f9af480f7671fffa28"}],"nova/tests/api/openstack/compute/contrib/test_security_groups.py":[{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"c9e4338a7e3ba06db8191366f331261fbb2467ee","unresolved":false,"context_lines":[{"line_number":816,"context_line":""},{"line_number":817,"context_line":""},{"line_number":818,"context_line":"class TestSecurityGroupRulesV21(test.TestCase):"},{"line_number":819,"context_line":"    secgrp_ctl_cls \u003d secgroups_v3.SecurityGroupController"},{"line_number":820,"context_line":""},{"line_number":821,"context_line":"    def setUp(self):"},{"line_number":822,"context_line":"        super(TestSecurityGroupRulesV21, self).setUp()"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_5b5c524b","line":819,"updated":"2014-10-08 10:35:22.000000000","message":"F821 undefined name \u0027secgroups_v3\u0027","commit_id":"df00b6c491a71d252f4a3f527897f908cb1c6834"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"99b4c0c69b7055dee6284723336fc80bd7565cd5","unresolved":false,"context_lines":[{"line_number":816,"context_line":""},{"line_number":817,"context_line":""},{"line_number":818,"context_line":"class TestSecurityGroupRulesV21(test.TestCase):"},{"line_number":819,"context_line":"    secgrp_ctl_cls \u003d secgroups_v3.SecurityGroupController"},{"line_number":820,"context_line":""},{"line_number":821,"context_line":"    def setUp(self):"},{"line_number":822,"context_line":"        super(TestSecurityGroupRulesV21, self).setUp()"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_fdfa5773","line":819,"in_reply_to":"baa201ad_5b5c524b","updated":"2014-10-08 13:30:09.000000000","message":"I forget change this after rebase","commit_id":"df00b6c491a71d252f4a3f527897f908cb1c6834"}]}
