)]}'
{"octavia/api/v1/controllers/l7rule.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"fe786a9e208aac671480b4893356288ca4cee5e5","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def _check_l7policy_max_rules(self, session):"},{"line_number":76,"context_line":"        \"\"\"Checks to make sure the L7Policy doesn\u0027t have too many rules.\"\"\""},{"line_number":77,"context_line":"        db_l7policy \u003d self.repositories.l7policy.get(session,"},{"line_number":78,"context_line":"                                                     id\u003dself.l7policy_id)"},{"line_number":79,"context_line":"        if len(db_l7policy.l7rules) \u003e\u003d constants.MAX_L7RULES_PER_L7POLICY:"},{"line_number":80,"context_line":"            raise exceptions.TooManyL7RulesOnL7Policy(id\u003dself.l7policy_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7af24918_59c61d68","line":77,"updated":"2016-03-01 23:30:59.000000000","message":"We should be using count here instead of pulling the whole policy and rules list back.  This saves db time and network bandwidth.\nhttps://github.com/openstack/octavia/blob/master/octavia/db/repositories.py#L41","commit_id":"1b2dc484deae8f5ca6bc2da722b0db44141db215"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"4c1271ed41c0cc886cf6364d6c5f9f0f59a9107a","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def _check_l7policy_max_rules(self, session):"},{"line_number":76,"context_line":"        \"\"\"Checks to make sure the L7Policy doesn\u0027t have too many rules.\"\"\""},{"line_number":77,"context_line":"        db_l7policy \u003d self.repositories.l7policy.get(session,"},{"line_number":78,"context_line":"                                                     id\u003dself.l7policy_id)"},{"line_number":79,"context_line":"        if len(db_l7policy.l7rules) \u003e\u003d constants.MAX_L7RULES_PER_L7POLICY:"},{"line_number":80,"context_line":"            raise exceptions.TooManyL7RulesOnL7Policy(id\u003dself.l7policy_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7af24918_fa3714e1","line":77,"in_reply_to":"7af24918_59c61d68","updated":"2016-03-02 01:51:00.000000000","message":"Aah-- forgot we had that method. Done.","commit_id":"1b2dc484deae8f5ca6bc2da722b0db44141db215"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"b75d75e3fc1476bd1c6cf44fcf14a83de0e4a6b5","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        \"\"\"Checks to make sure the L7Policy doesn\u0027t have too many rules.\"\"\""},{"line_number":77,"context_line":"        count \u003d self.repositories.l7rule.count("},{"line_number":78,"context_line":"            session, l7policy_id\u003dself.l7policy_id)"},{"line_number":79,"context_line":"        if count \u003e\u003d constants.MAX_L7RULES_PER_L7POLICY:"},{"line_number":80,"context_line":"            raise exceptions.TooManyL7RulesOnL7Policy(id\u003dself.l7policy_id)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @wsme_pecan.wsexpose(l7rule_types.L7RuleResponse,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_7a1784a3","line":79,"range":{"start_line":79,"start_character":30,"end_line":79,"end_character":54},"updated":"2016-03-02 02:02:46.000000000","message":"Should we make it configurable?","commit_id":"7c5cb0d1fee3e754a09b8561062980e7a777c550"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"a8b96898a6ca27568deddaabc4dd9999b0ffe450","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        \"\"\"Checks to make sure the L7Policy doesn\u0027t have too many rules.\"\"\""},{"line_number":77,"context_line":"        count \u003d self.repositories.l7rule.count("},{"line_number":78,"context_line":"            session, l7policy_id\u003dself.l7policy_id)"},{"line_number":79,"context_line":"        if count \u003e\u003d constants.MAX_L7RULES_PER_L7POLICY:"},{"line_number":80,"context_line":"            raise exceptions.TooManyL7RulesOnL7Policy(id\u003dself.l7policy_id)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @wsme_pecan.wsexpose(l7rule_types.L7RuleResponse,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_7458f08a","line":79,"range":{"start_line":79,"start_character":30,"end_line":79,"end_character":54},"in_reply_to":"7af24918_320963de","updated":"2016-03-02 22:18:21.000000000","message":"make sense. thank you.","commit_id":"7c5cb0d1fee3e754a09b8561062980e7a777c550"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"e0701fccf0b711050a93fd72925de3f74b726834","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        \"\"\"Checks to make sure the L7Policy doesn\u0027t have too many rules.\"\"\""},{"line_number":77,"context_line":"        count \u003d self.repositories.l7rule.count("},{"line_number":78,"context_line":"            session, l7policy_id\u003dself.l7policy_id)"},{"line_number":79,"context_line":"        if count \u003e\u003d constants.MAX_L7RULES_PER_L7POLICY:"},{"line_number":80,"context_line":"            raise exceptions.TooManyL7RulesOnL7Policy(id\u003dself.l7policy_id)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @wsme_pecan.wsexpose(l7rule_types.L7RuleResponse,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_d9e094cf","line":79,"range":{"start_line":79,"start_character":30,"end_line":79,"end_character":54},"in_reply_to":"7af24918_7458f08a","updated":"2016-03-04 21:21:58.000000000","message":"Yeah, also it\u0027s really an HAProxy limitation, so unless we watched t ratchet it DOWN for some reason, it is pretty static and allowing configuration would be opening the door for someone to blindly increase the value and cause breakage.","commit_id":"7c5cb0d1fee3e754a09b8561062980e7a777c550"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"30a388b8d658921f180dd67651932b9e7fdf4892","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        \"\"\"Checks to make sure the L7Policy doesn\u0027t have too many rules.\"\"\""},{"line_number":77,"context_line":"        count \u003d self.repositories.l7rule.count("},{"line_number":78,"context_line":"            session, l7policy_id\u003dself.l7policy_id)"},{"line_number":79,"context_line":"        if count \u003e\u003d constants.MAX_L7RULES_PER_L7POLICY:"},{"line_number":80,"context_line":"            raise exceptions.TooManyL7RulesOnL7Policy(id\u003dself.l7policy_id)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @wsme_pecan.wsexpose(l7rule_types.L7RuleResponse,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_bd50a95f","line":79,"range":{"start_line":79,"start_character":30,"end_line":79,"end_character":54},"in_reply_to":"7af24918_7a1784a3","updated":"2016-03-02 19:07:39.000000000","message":"I don\u0027t think there\u0027s a need for that at this time:  50 rules per policy is already ridiculously high given all the rules get ANDed together (are there really 50 conditions you would really need that can\u0027t be expressed in fewer rules?)","commit_id":"7c5cb0d1fee3e754a09b8561062980e7a777c550"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"014e3748a4439faa5b044e6720ca2f15d75bd430","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        \"\"\"Checks to make sure the L7Policy doesn\u0027t have too many rules.\"\"\""},{"line_number":77,"context_line":"        count \u003d self.repositories.l7rule.count("},{"line_number":78,"context_line":"            session, l7policy_id\u003dself.l7policy_id)"},{"line_number":79,"context_line":"        if count \u003e\u003d constants.MAX_L7RULES_PER_L7POLICY:"},{"line_number":80,"context_line":"            raise exceptions.TooManyL7RulesOnL7Policy(id\u003dself.l7policy_id)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @wsme_pecan.wsexpose(l7rule_types.L7RuleResponse,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_320963de","line":79,"range":{"start_line":79,"start_character":30,"end_line":79,"end_character":54},"in_reply_to":"7af24918_af1cec13","updated":"2016-03-02 19:29:21.000000000","message":"Given that 99.99% of all policies people will actually use can be expressed in 1-4 rules, I don\u0027t see this as being a selling point.","commit_id":"7c5cb0d1fee3e754a09b8561062980e7a777c550"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"ae32ccc7ca820cb2da40edea9d4dcbb8dc5522ec","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        \"\"\"Checks to make sure the L7Policy doesn\u0027t have too many rules.\"\"\""},{"line_number":77,"context_line":"        count \u003d self.repositories.l7rule.count("},{"line_number":78,"context_line":"            session, l7policy_id\u003dself.l7policy_id)"},{"line_number":79,"context_line":"        if count \u003e\u003d constants.MAX_L7RULES_PER_L7POLICY:"},{"line_number":80,"context_line":"            raise exceptions.TooManyL7RulesOnL7Policy(id\u003dself.l7policy_id)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @wsme_pecan.wsexpose(l7rule_types.L7RuleResponse,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_af1cec13","line":79,"range":{"start_line":79,"start_character":30,"end_line":79,"end_character":54},"in_reply_to":"7af24918_bd50a95f","updated":"2016-03-02 19:15:24.000000000","message":"I was thinking more like, if it is configurable we can configure to have more rules for premium tier users and etc etc","commit_id":"7c5cb0d1fee3e754a09b8561062980e7a777c550"}],"octavia/api/v1/types/l7rule.py":[{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"b75d75e3fc1476bd1c6cf44fcf14a83de0e4a6b5","unresolved":false,"context_lines":[{"line_number":21,"context_line":"class L7RuleResponse(base.BaseType):"},{"line_number":22,"context_line":"    \"\"\"Defines which attributes are to be shown on any response.\"\"\""},{"line_number":23,"context_line":"    id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":24,"context_line":"    type \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":25,"context_line":"    compare_type \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":26,"context_line":"    key \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":27,"context_line":"    value \u003d wtypes.wsattr(wtypes.StringType())"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_9a9530e6","line":24,"range":{"start_line":24,"start_character":32,"end_line":24,"end_character":42},"updated":"2016-03-02 02:02:46.000000000","message":"any reason that we don\u0027t have max_length anymore? I am not aware so asking :)","commit_id":"7c5cb0d1fee3e754a09b8561062980e7a777c550"},{"author":{"_account_id":17419,"name":"Banashankar k","email":"banveerad@gmail.com","username":"banveerad"},"change_message_id":"ae32ccc7ca820cb2da40edea9d4dcbb8dc5522ec","unresolved":false,"context_lines":[{"line_number":21,"context_line":"class L7RuleResponse(base.BaseType):"},{"line_number":22,"context_line":"    \"\"\"Defines which attributes are to be shown on any response.\"\"\""},{"line_number":23,"context_line":"    id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":24,"context_line":"    type \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":25,"context_line":"    compare_type \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":26,"context_line":"    key \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":27,"context_line":"    value \u003d wtypes.wsattr(wtypes.StringType())"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_cfb05846","line":24,"range":{"start_line":24,"start_character":32,"end_line":24,"end_character":42},"in_reply_to":"7af24918_7dec618f","updated":"2016-03-02 19:15:24.000000000","message":"got it.","commit_id":"7c5cb0d1fee3e754a09b8561062980e7a777c550"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"30a388b8d658921f180dd67651932b9e7fdf4892","unresolved":false,"context_lines":[{"line_number":21,"context_line":"class L7RuleResponse(base.BaseType):"},{"line_number":22,"context_line":"    \"\"\"Defines which attributes are to be shown on any response.\"\"\""},{"line_number":23,"context_line":"    id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":24,"context_line":"    type \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":25,"context_line":"    compare_type \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":26,"context_line":"    key \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":27,"context_line":"    value \u003d wtypes.wsattr(wtypes.StringType())"}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_7dec618f","line":24,"range":{"start_line":24,"start_character":32,"end_line":24,"end_character":42},"in_reply_to":"7af24918_9a9530e6","updated":"2016-03-02 19:07:39.000000000","message":"We don\u0027t need to check lengths on return values.","commit_id":"7c5cb0d1fee3e754a09b8561062980e7a777c550"}],"octavia/common/constants.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"fe786a9e208aac671480b4893356288ca4cee5e5","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                              L7POLICY_ACTION_REDIRECT_TO_URL,"},{"line_number":107,"context_line":"                              L7POLICY_ACTION_REDIRECT_TO_POOL)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"MAX_L7RULES_PER_L7POLICY \u003d 50"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"URL_REGEX \u003d (r\u0027\\Ahttp[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.\u0026+]|[!*(),]|\u0027"},{"line_number":112,"context_line":"             r\u0027(?:%[0-9a-fA-F][0-9a-fA-F]))+\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7af24918_998d4534","line":109,"updated":"2016-03-01 23:30:59.000000000","message":"A comment here about HAProxy limitation is needed so future folks know why this is 50.","commit_id":"1b2dc484deae8f5ca6bc2da722b0db44141db215"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"4c1271ed41c0cc886cf6364d6c5f9f0f59a9107a","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                              L7POLICY_ACTION_REDIRECT_TO_URL,"},{"line_number":107,"context_line":"                              L7POLICY_ACTION_REDIRECT_TO_POOL)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"MAX_L7RULES_PER_L7POLICY \u003d 50"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"URL_REGEX \u003d (r\u0027\\Ahttp[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.\u0026+]|[!*(),]|\u0027"},{"line_number":112,"context_line":"             r\u0027(?:%[0-9a-fA-F][0-9a-fA-F]))+\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7af24918_fa6554e1","line":109,"in_reply_to":"7af24918_998d4534","updated":"2016-03-02 01:51:00.000000000","message":"Done","commit_id":"1b2dc484deae8f5ca6bc2da722b0db44141db215"}],"octavia/common/exceptions.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"fe786a9e208aac671480b4893356288ca4cee5e5","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"class TooManyL7RulesOnL7Policy(APIException):"},{"line_number":149,"context_line":"    message \u003d _(\"Too many rules on L7 policy %(id)s\")"},{"line_number":150,"context_line":"    code \u003d 409"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"class ComputeBuildException(OctaviaException):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7af24918_79c5d93a","line":150,"updated":"2016-03-01 23:30:59.000000000","message":"I would argue this should be 400","commit_id":"1b2dc484deae8f5ca6bc2da722b0db44141db215"},{"author":{"_account_id":11685,"name":"Stephen Balukoff","email":"stephen@balukoff.com","username":"sbalukoff"},"change_message_id":"4c1271ed41c0cc886cf6364d6c5f9f0f59a9107a","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"class TooManyL7RulesOnL7Policy(APIException):"},{"line_number":149,"context_line":"    message \u003d _(\"Too many rules on L7 policy %(id)s\")"},{"line_number":150,"context_line":"    code \u003d 409"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"class ComputeBuildException(OctaviaException):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7af24918_fada7477","line":150,"in_reply_to":"7af24918_79c5d93a","updated":"2016-03-02 01:51:00.000000000","message":"I disagree-- there\u0027s nothing wrong with the l7rule create command itself; It would succeed if the policy had fewer rules. (Just like a create specifying ID would succeed if there is no other rule with the same ID in the database already, but will fail with error 409 if there is one.) HTTP 409 \"conflict\" seems like the proper response for this situation. 400 seems to imply a syntax error, missing required parameter or other problem with the request itself.","commit_id":"1b2dc484deae8f5ca6bc2da722b0db44141db215"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"e0701fccf0b711050a93fd72925de3f74b726834","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"class TooManyL7RulesOnL7Policy(APIException):"},{"line_number":149,"context_line":"    message \u003d _(\"Too many rules on L7 policy %(id)s\")"},{"line_number":150,"context_line":"    code \u003d 409"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7af24918_b9dae815","line":149,"updated":"2016-03-04 21:21:58.000000000","message":"It might be cool to print the MAX somewhere, but I don\u0027t care very much.","commit_id":"7c5cb0d1fee3e754a09b8561062980e7a777c550"}]}
