)]}'
{"neutron_lib/exceptions/firewall_v1.py":[{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"13bb760b52c32f009f5ddc6952c367d5338928ad","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    \"\"\""},{"line_number":60,"context_line":"    message \u003d _(\"Operation cannot be performed since Firewall Policy \""},{"line_number":61,"context_line":"                \"%(firewall_policy_id)s is shared but Firewall Rule \""},{"line_number":62,"context_line":"                \"%(firewall_rule_id)s is not shared\")"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"class FirewallPolicySharingConflict(nexception.Conflict):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f1d235d_6bc71366","line":62,"range":{"start_line":62,"start_character":51,"end_line":62,"end_character":52},"updated":"2017-07-05 04:19:01.000000000","message":"missing \".\"","commit_id":"29aa1de5e532ae07eadc510becaba178f5b5bc7c"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"13bb760b52c32f009f5ddc6952c367d5338928ad","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    \"\"\""},{"line_number":71,"context_line":"    message \u003d _(\"Operation cannot be performed. Before sharing Firewall \""},{"line_number":72,"context_line":"                \"Policy %(firewall_policy_id)s, share associated Firewall \""},{"line_number":73,"context_line":"                \"Rule %(firewall_rule_id)s\")"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class FirewallRuleNotFound(nexception.NotFound):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f1d235d_cbad079c","line":73,"range":{"start_line":73,"start_character":42,"end_line":73,"end_character":43},"updated":"2017-07-05 04:19:01.000000000","message":"ditto!","commit_id":"29aa1de5e532ae07eadc510becaba178f5b5bc7c"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"13bb760b52c32f009f5ddc6952c367d5338928ad","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"class FirewallRuleWithPortWithoutProtocolInvalid(nexception.InvalidInput):"},{"line_number":106,"context_line":"    message \u003d _(\"Source/destination port requires a protocol\")"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"class FirewallRuleInvalidPortValue(nexception.InvalidInput):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f1d235d_ab964b4b","line":106,"range":{"start_line":106,"start_character":60,"end_line":106,"end_character":61},"updated":"2017-07-05 04:19:01.000000000","message":"ditto!","commit_id":"29aa1de5e532ae07eadc510becaba178f5b5bc7c"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"13bb760b52c32f009f5ddc6952c367d5338928ad","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"class FirewallIpAddressConflict(nexception.InvalidInput):"},{"line_number":119,"context_line":"    message \u003d _(\"Invalid input - IP addresses do not agree with IP Version\")"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"class FirewallInternalDriverError(nexception.NeutronException):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f1d235d_2b8c7b34","line":119,"range":{"start_line":119,"start_character":74,"end_line":119,"end_character":75},"updated":"2017-07-05 04:19:01.000000000","message":"ditto!","commit_id":"29aa1de5e532ae07eadc510becaba178f5b5bc7c"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"13bb760b52c32f009f5ddc6952c367d5338928ad","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    message \u003d _(\"Operation cannot be performed since Firewall Rule \""},{"line_number":139,"context_line":"                \"%(firewall_rule_id)s is not shared and belongs to \""},{"line_number":140,"context_line":"                \"another tenant %(tenant_id)s\")"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"class FirewallRouterInUse(nexception.InUse):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f1d235d_cb862714","line":140,"range":{"start_line":140,"start_character":45,"end_line":140,"end_character":47},"updated":"2017-07-05 04:19:01.000000000","message":"ditto!","commit_id":"29aa1de5e532ae07eadc510becaba178f5b5bc7c"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"b49fe8d7fa3fccd23b47bf8810f9ad70dc8b2fe0","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"class FirewallRuleConflict(nexception.Conflict):"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    \"\"\"Firewall rule conflict exception."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    Occurs when admin policy tries to use another tenant\u0027s unshared"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f1d235d_c4e5bcdd","line":140,"updated":"2017-07-06 11:21:56.000000000","message":"Not sure why we have this empty line before the docstring, but I guess it\u0027s OK.","commit_id":"35c51a859c527f507a4dbaa3ebd3160c74a23159"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"b49fe8d7fa3fccd23b47bf8810f9ad70dc8b2fe0","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"class FirewallRuleConflict(nexception.Conflict):"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    \"\"\"Firewall rule conflict exception."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    Occurs when admin policy tries to use another tenant\u0027s unshared"},{"line_number":144,"context_line":"    rule."}],"source_content_type":"text/x-python","patch_set":15,"id":"3f1d235d_e40b188b","line":141,"range":{"start_line":141,"start_character":39,"end_line":141,"end_character":40},"updated":"2017-07-06 11:21:56.000000000","message":"Nit: Some of these pydocs have a period on the intro sentence and others don\u0027t. IMO let\u0027s be consistent.","commit_id":"35c51a859c527f507a4dbaa3ebd3160c74a23159"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"b49fe8d7fa3fccd23b47bf8810f9ad70dc8b2fe0","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"class FirewallRouterInUse(nexception.InUse):"},{"line_number":153,"context_line":"    message \u003d _(\"Router(s) %(router_ids)s provided already associated with \""},{"line_number":154,"context_line":"                \"other Firewall(s). \")"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f1d235d_64c94857","line":154,"range":{"start_line":154,"start_character":35,"end_line":154,"end_character":36},"updated":"2017-07-06 11:21:56.000000000","message":"Nit: trailing space","commit_id":"35c51a859c527f507a4dbaa3ebd3160c74a23159"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"32546e1c0efa37b5889e3de1d170aad92bba8137","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from neutron_lib._i18n import _"},{"line_number":18,"context_line":"from neutron_lib import exceptions as nexception"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"# Firewall Exceptions"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_17873612","line":18,"range":{"start_line":18,"start_character":35,"end_line":18,"end_character":48},"updated":"2017-07-07 12:48:15.000000000","message":"\"exceptions\" module also lives in neutron-lib and there is no name conflict, so I don\u0027t think you need to use an alias to nexception. Use \u0027exceptions\u0027 instead of \u0027nexceptions\u0027.","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"bc70df01e4548c0ec94e0704aed796c855b20d06","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from neutron_lib._i18n import _"},{"line_number":18,"context_line":"from neutron_lib import exceptions as nexception"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"# Firewall Exceptions"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_e0c4e061","line":18,"range":{"start_line":18,"start_character":35,"end_line":18,"end_character":48},"in_reply_to":"3f1d235d_17873612","updated":"2017-07-08 06:05:22.000000000","message":"Done","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"32546e1c0efa37b5889e3de1d170aad92bba8137","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from neutron_lib import exceptions as nexception"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"# Firewall Exceptions"},{"line_number":22,"context_line":"class FirewallNotFound(nexception.NotFound):"},{"line_number":23,"context_line":"    message \u003d _(\"Firewall %(firewall_id)s could not be found.\")"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_971c66c2","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":21},"updated":"2017-07-07 12:48:15.000000000","message":"Looks unnecessary. All of exceptions in this module belong to firewall exceptions.","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"bc70df01e4548c0ec94e0704aed796c855b20d06","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from neutron_lib import exceptions as nexception"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"# Firewall Exceptions"},{"line_number":22,"context_line":"class FirewallNotFound(nexception.NotFound):"},{"line_number":23,"context_line":"    message \u003d _(\"Firewall %(firewall_id)s could not be found.\")"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_a0a4a8ba","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":21},"in_reply_to":"3f1d235d_971c66c2","updated":"2017-07-08 06:05:22.000000000","message":"Done","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"32546e1c0efa37b5889e3de1d170aad92bba8137","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class FirewallInPendingState(nexception.Conflict):"},{"line_number":31,"context_line":"    message \u003d _(\"Operation cannot be performed since associated Firewall \""},{"line_number":32,"context_line":"                \"%(firewall_id)s is in %(pending_state)s.\")"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_17ea96ab","line":31,"range":{"start_line":31,"start_character":64,"end_line":31,"end_character":72},"updated":"2017-07-07 12:48:15.000000000","message":"There is no need to capitalize it.","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"bc70df01e4548c0ec94e0704aed796c855b20d06","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class FirewallInPendingState(nexception.Conflict):"},{"line_number":31,"context_line":"    message \u003d _(\"Operation cannot be performed since associated Firewall \""},{"line_number":32,"context_line":"                \"%(firewall_id)s is in %(pending_state)s.\")"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_80a9ac91","line":31,"range":{"start_line":31,"start_character":64,"end_line":31,"end_character":72},"in_reply_to":"3f1d235d_17ea96ab","updated":"2017-07-08 06:05:22.000000000","message":"Done","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"32546e1c0efa37b5889e3de1d170aad92bba8137","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class FirewallPolicyNotFound(nexception.NotFound):"},{"line_number":36,"context_line":"    message \u003d _(\"Firewall Policy %(firewall_policy_id)s could not be found.\")"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class FirewallPolicyInUse(nexception.InUse):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_b7d8821e","line":36,"range":{"start_line":36,"start_character":17,"end_line":36,"end_character":33},"updated":"2017-07-07 12:48:15.000000000","message":"-\u003e Firewall policy\n\n(no need to capitalize each word)","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"bc70df01e4548c0ec94e0704aed796c855b20d06","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class FirewallPolicyNotFound(nexception.NotFound):"},{"line_number":36,"context_line":"    message \u003d _(\"Firewall Policy %(firewall_policy_id)s could not be found.\")"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class FirewallPolicyInUse(nexception.InUse):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_60ae9099","line":36,"range":{"start_line":36,"start_character":17,"end_line":36,"end_character":33},"in_reply_to":"3f1d235d_b7d8821e","updated":"2017-07-08 06:05:22.000000000","message":"Done","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"32546e1c0efa37b5889e3de1d170aad92bba8137","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"class FirewallPolicyConflict(nexception.Conflict):"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    \"\"\"FWaaS exception for firewall policy"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    Occurs when admin policy tries to use another tenant\u0027s unshared"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_57924e4d","line":44,"updated":"2017-07-07 12:48:15.000000000","message":"Let\u0027s drop this blank line. I know the original code has this, but it is different from the convention in neutron-lib.\n\nThis applies to other similar places.","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"bc70df01e4548c0ec94e0704aed796c855b20d06","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"class FirewallPolicyConflict(nexception.Conflict):"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    \"\"\"FWaaS exception for firewall policy"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    Occurs when admin policy tries to use another tenant\u0027s unshared"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_20cbf872","line":44,"in_reply_to":"3f1d235d_57924e4d","updated":"2017-07-08 06:05:22.000000000","message":"Done","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"32546e1c0efa37b5889e3de1d170aad92bba8137","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    this exception will be raised."},{"line_number":62,"context_line":"    \"\"\""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    message \u003d _(\"Operation cannot be performed since Firewall Policy \""},{"line_number":65,"context_line":"                \"%(firewall_policy_id)s is shared but Firewall Rule \""},{"line_number":66,"context_line":"                \"%(firewall_rule_id)s is not shared.\")"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_b7f1a298","line":64,"range":{"start_line":64,"start_character":53,"end_line":64,"end_character":68},"updated":"2017-07-07 12:48:15.000000000","message":"-\u003e firewall policy\n\nThis applies to all similar strings (including firewall rule).","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"bc70df01e4548c0ec94e0704aed796c855b20d06","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    this exception will be raised."},{"line_number":62,"context_line":"    \"\"\""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    message \u003d _(\"Operation cannot be performed since Firewall Policy \""},{"line_number":65,"context_line":"                \"%(firewall_policy_id)s is shared but Firewall Rule \""},{"line_number":66,"context_line":"                \"%(firewall_rule_id)s is not shared.\")"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_4093945d","line":64,"range":{"start_line":64,"start_character":53,"end_line":64,"end_character":68},"in_reply_to":"3f1d235d_b7f1a298","updated":"2017-07-08 06:05:22.000000000","message":"Done","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"32546e1c0efa37b5889e3de1d170aad92bba8137","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"class FirewallInternalDriverError(nexception.NeutronException):"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    \"\"\"Fwaas exception for all driver errors"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    On any failure or exception in the driver, driver should log it and"},{"line_number":133,"context_line":"    raise this exception to the agent"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_d7c65e4a","line":130,"range":{"start_line":130,"start_character":7,"end_line":130,"end_character":12},"updated":"2017-07-07 12:48:15.000000000","message":"-\u003e FWaaS\n\nI think I commented the same thing before :(","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"bc70df01e4548c0ec94e0704aed796c855b20d06","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"class FirewallInternalDriverError(nexception.NeutronException):"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    \"\"\"Fwaas exception for all driver errors"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    On any failure or exception in the driver, driver should log it and"},{"line_number":133,"context_line":"    raise this exception to the agent"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_2090984e","line":130,"range":{"start_line":130,"start_character":7,"end_line":130,"end_character":12},"in_reply_to":"3f1d235d_d7c65e4a","updated":"2017-07-08 06:05:22.000000000","message":"Done","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"bf6a3f83237a768b6549116895af18897f96f1a2","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class FirewallPolicyConflict(exceptions.Conflict):"},{"line_number":43,"context_line":"    \"\"\"FWaaS exception for firewall policy"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    Occurs when admin policy tries to use another tenant\u0027s unshared"},{"line_number":46,"context_line":"    policy."}],"source_content_type":"text/x-python","patch_set":20,"id":"3f1d235d_ec396ff2","line":43,"range":{"start_line":43,"start_character":7,"end_line":43,"end_character":42},"updated":"2017-07-10 04:49:02.000000000","message":"i guess this summary can be more specific.\n\nditto for other exceptions.","commit_id":"cdb2d6e28b6a94392dbcf8b63a42a90a4adfdba2"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"6c27486774ba1ecbf44b7dd035378b9d7e951f93","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class FirewallPolicyConflict(exceptions.Conflict):"},{"line_number":43,"context_line":"    # Exception raised when user tries to use another tenant\u0027s unshared policy"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    message \u003d _(\"Operation cannot be performed since firewall policy \""},{"line_number":46,"context_line":"                \"%(firewall_policy_id)s is not shared and does not belong to \""}],"source_content_type":"text/x-python","patch_set":22,"id":"3f1d235d_0ee10afd","line":43,"updated":"2017-07-11 13:45:05.000000000","message":"i guess docstring is better for autodoc","commit_id":"78bd214e1f4cf1a4b18e6baf973353b4ad13fa7d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"072aa72888b385561a74b04cc75629ae4e29ed09","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class FirewallPolicyConflict(exceptions.Conflict):"},{"line_number":43,"context_line":"    # Exception raised when user tries to use another tenant\u0027s unshared policy"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    message \u003d _(\"Operation cannot be performed since firewall policy \""},{"line_number":46,"context_line":"                \"%(firewall_policy_id)s is not shared and does not belong to \""}],"source_content_type":"text/x-python","patch_set":22,"id":"3f1d235d_848cd935","line":43,"in_reply_to":"3f1d235d_0ee10afd","updated":"2017-07-11 14:46:24.000000000","message":"+1\n\nTotally agree","commit_id":"78bd214e1f4cf1a4b18e6baf973353b4ad13fa7d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"072aa72888b385561a74b04cc75629ae4e29ed09","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"class FirewallRuleConflict(exceptions.Conflict):"},{"line_number":123,"context_line":"    \"\"\"Firewall rule conflict exception"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    Occurs when admin policy tries to use another tenant\u0027s unshared"},{"line_number":126,"context_line":"    rule."}],"source_content_type":"text/x-python","patch_set":22,"id":"3f1d235d_5f59eafb","line":123,"updated":"2017-07-11 14:46:24.000000000","message":"Similar comments for the same exception in fwaas v2.","commit_id":"78bd214e1f4cf1a4b18e6baf973353b4ad13fa7d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"072aa72888b385561a74b04cc75629ae4e29ed09","unresolved":false,"context_lines":[{"line_number":122,"context_line":"class FirewallRuleConflict(exceptions.Conflict):"},{"line_number":123,"context_line":"    \"\"\"Firewall rule conflict exception"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    Occurs when admin policy tries to use another tenant\u0027s unshared"},{"line_number":126,"context_line":"    rule."},{"line_number":127,"context_line":"    \"\"\""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    message \u003d _(\"Operation cannot be performed since firewall rule \""}],"source_content_type":"text/x-python","patch_set":22,"id":"3f1d235d_9f0422c8","line":126,"range":{"start_line":125,"start_character":58,"end_line":126,"end_character":9},"updated":"2017-07-11 14:46:24.000000000","message":"It should fit into one line.","commit_id":"78bd214e1f4cf1a4b18e6baf973353b4ad13fa7d"}],"neutron_lib/exceptions/firewall_v2.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"6540b50fe89411edb889a727dddf28cf45ef809d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 NEC Technologies India Pvt Ltd."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":6,"context_line":"#    a copy of the License at"},{"line_number":7,"context_line":"#"},{"line_number":8,"context_line":"#         http://www.apache.org/licenses/LICENSE-2.0"},{"line_number":9,"context_line":"#"},{"line_number":10,"context_line":"#    Unless required by applicable law or agreed to in writing, software"},{"line_number":11,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron_lib._i18n import _"},{"line_number":17,"context_line":"from neutron_lib import exceptions"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f1d235d_8ba14f97","line":14,"range":{"start_line":1,"start_character":0,"end_line":14,"end_character":23},"updated":"2017-07-05 04:23:28.000000000","message":"why you changed the copyright notice?","commit_id":"29aa1de5e532ae07eadc510becaba178f5b5bc7c"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"13bb760b52c32f009f5ddc6952c367d5338928ad","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class FirewallGroupPortInvalid(nexception.Conflict):"},{"line_number":35,"context_line":"    message \u003d _(\"Firewall Group Port %(port_id)s is invalid\")"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class FirewallGroupPortInvalidProject(nexception.Conflict):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f1d235d_abe88be1","line":35,"range":{"start_line":35,"start_character":59,"end_line":35,"end_character":60},"updated":"2017-07-05 04:19:01.000000000","message":"Missing \".\"","commit_id":"29aa1de5e532ae07eadc510becaba178f5b5bc7c"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"b49fe8d7fa3fccd23b47bf8810f9ad70dc8b2fe0","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"class FirewallGroupPortInUse(nexception.InUse):"},{"line_number":44,"context_line":"    message \u003d _(\"Port(s) %(port_ids)s provided already associated with \""},{"line_number":45,"context_line":"                \"other Firewall Group(s). \")"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"class FirewallPolicyNotFound(nexception.NotFound):"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f1d235d_c4337c61","line":45,"range":{"start_line":45,"start_character":41,"end_line":45,"end_character":42},"updated":"2017-07-06 11:21:56.000000000","message":"trailing space.","commit_id":"35c51a859c527f507a4dbaa3ebd3160c74a23159"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"4e3e09e3ae3651703ac28c331971a782056dce75","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 Big Switch Networks, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":6,"context_line":"#    a copy of the License at"},{"line_number":7,"context_line":"#"},{"line_number":8,"context_line":"#         http://www.apache.org/licenses/LICENSE-2.0"},{"line_number":9,"context_line":"#"},{"line_number":10,"context_line":"#    Unless required by applicable law or agreed to in writing, software"},{"line_number":11,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron_lib._i18n import _"},{"line_number":17,"context_line":"from neutron_lib import exceptions as nexception"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_7460a836","line":14,"range":{"start_line":1,"start_character":0,"end_line":14,"end_character":23},"updated":"2017-07-07 12:11:38.000000000","message":"can you preserve the original copyright notice?","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"32546e1c0efa37b5889e3de1d170aad92bba8137","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 Big Switch Networks, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":6,"context_line":"#    a copy of the License at"},{"line_number":7,"context_line":"#"},{"line_number":8,"context_line":"#         http://www.apache.org/licenses/LICENSE-2.0"},{"line_number":9,"context_line":"#"},{"line_number":10,"context_line":"#    Unless required by applicable law or agreed to in writing, software"},{"line_number":11,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron_lib._i18n import _"},{"line_number":17,"context_line":"from neutron_lib import exceptions as nexception"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_d739be3f","line":14,"range":{"start_line":1,"start_character":0,"end_line":14,"end_character":23},"in_reply_to":"3f1d235d_7460a836","updated":"2017-07-07 12:48:15.000000000","message":"Totally agree.","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"bc70df01e4548c0ec94e0704aed796c855b20d06","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2013 Big Switch Networks, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":6,"context_line":"#    a copy of the License at"},{"line_number":7,"context_line":"#"},{"line_number":8,"context_line":"#         http://www.apache.org/licenses/LICENSE-2.0"},{"line_number":9,"context_line":"#"},{"line_number":10,"context_line":"#    Unless required by applicable law or agreed to in writing, software"},{"line_number":11,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron_lib._i18n import _"},{"line_number":17,"context_line":"from neutron_lib import exceptions as nexception"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_201d380f","line":14,"range":{"start_line":1,"start_character":0,"end_line":14,"end_character":23},"in_reply_to":"3f1d235d_d739be3f","updated":"2017-07-08 06:05:22.000000000","message":"If you are talking about the copyright notice from neutron_fwaas.extensions.firewall_v2 , then ok","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"32546e1c0efa37b5889e3de1d170aad92bba8137","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron_lib._i18n import _"},{"line_number":17,"context_line":"from neutron_lib import exceptions as nexception"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# Firewall Exceptions"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_7712eab6","line":17,"range":{"start_line":17,"start_character":24,"end_line":17,"end_character":48},"updated":"2017-07-07 12:48:15.000000000","message":"As commented for FWaaS v1 exceptions, no need to use \u0027as exceptions\u0027.","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"bc70df01e4548c0ec94e0704aed796c855b20d06","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron_lib._i18n import _"},{"line_number":17,"context_line":"from neutron_lib import exceptions as nexception"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# Firewall Exceptions"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_80976c3b","line":17,"range":{"start_line":17,"start_character":24,"end_line":17,"end_character":48},"in_reply_to":"3f1d235d_7712eab6","updated":"2017-07-08 06:05:22.000000000","message":"Done","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"32546e1c0efa37b5889e3de1d170aad92bba8137","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from neutron_lib import exceptions as nexception"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# Firewall Exceptions"},{"line_number":21,"context_line":"class FirewallGroupNotFound(nexception.NotFound):"},{"line_number":22,"context_line":"    message \u003d _(\"Firewall Group %(firewall_id)s could not be found.\")"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_77778a0a","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":21},"updated":"2017-07-07 12:48:15.000000000","message":"same for v1.","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"bc70df01e4548c0ec94e0704aed796c855b20d06","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from neutron_lib import exceptions as nexception"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# Firewall Exceptions"},{"line_number":21,"context_line":"class FirewallGroupNotFound(nexception.NotFound):"},{"line_number":22,"context_line":"    message \u003d _(\"Firewall Group %(firewall_id)s could not be found.\")"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_609c505d","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":21},"in_reply_to":"3f1d235d_77778a0a","updated":"2017-07-08 06:05:22.000000000","message":"Done","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"32546e1c0efa37b5889e3de1d170aad92bba8137","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class FirewallGroupInPendingState(nexception.Conflict):"},{"line_number":30,"context_line":"    message \u003d _(\"Operation cannot be performed since associated Firewall \""},{"line_number":31,"context_line":"                \"%(firewall_id)s is in %(pending_state)s.\")"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_577c8eea","line":30,"range":{"start_line":30,"start_character":64,"end_line":30,"end_character":72},"updated":"2017-07-07 12:48:15.000000000","message":"firewall group?","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"bc70df01e4548c0ec94e0704aed796c855b20d06","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class FirewallGroupInPendingState(nexception.Conflict):"},{"line_number":30,"context_line":"    message \u003d _(\"Operation cannot be performed since associated Firewall \""},{"line_number":31,"context_line":"                \"%(firewall_id)s is in %(pending_state)s.\")"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_40a15495","line":30,"range":{"start_line":30,"start_character":64,"end_line":30,"end_character":72},"in_reply_to":"3f1d235d_577c8eea","updated":"2017-07-08 06:05:22.000000000","message":"Done","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"32546e1c0efa37b5889e3de1d170aad92bba8137","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class FirewallGroupPortInvalid(nexception.Conflict):"},{"line_number":35,"context_line":"    message \u003d _(\"Firewall Group Port %(port_id)s is invalid.\")"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class FirewallGroupPortInvalidProject(nexception.Conflict):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_178616dd","line":35,"range":{"start_line":35,"start_character":17,"end_line":35,"end_character":48},"updated":"2017-07-07 12:48:15.000000000","message":"Port %(port_id)s of firewall group %(firewall_group_id)s is invalid.","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"bc70df01e4548c0ec94e0704aed796c855b20d06","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class FirewallGroupPortInvalid(nexception.Conflict):"},{"line_number":35,"context_line":"    message \u003d _(\"Firewall Group Port %(port_id)s is invalid.\")"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class FirewallGroupPortInvalidProject(nexception.Conflict):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_209e5854","line":35,"range":{"start_line":35,"start_character":17,"end_line":35,"end_character":48},"in_reply_to":"3f1d235d_178616dd","updated":"2017-07-08 06:05:22.000000000","message":"Done","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"32546e1c0efa37b5889e3de1d170aad92bba8137","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"class FirewallGroupPortInUse(nexception.InUse):"},{"line_number":44,"context_line":"    message \u003d _(\"Port(s) %(port_ids)s provided already associated with \""},{"line_number":45,"context_line":"                \"other Firewall Group(s).\")"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"class FirewallPolicyNotFound(nexception.NotFound):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_b7740200","line":45,"range":{"start_line":45,"start_character":23,"end_line":45,"end_character":37},"updated":"2017-07-07 12:48:15.000000000","message":"-\u003e firewall group\n\nThis applies to all similar strings.","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"bc70df01e4548c0ec94e0704aed796c855b20d06","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"class FirewallGroupPortInUse(nexception.InUse):"},{"line_number":44,"context_line":"    message \u003d _(\"Port(s) %(port_ids)s provided already associated with \""},{"line_number":45,"context_line":"                \"other Firewall Group(s).\")"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"class FirewallPolicyNotFound(nexception.NotFound):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_c0b684dd","line":45,"range":{"start_line":45,"start_character":23,"end_line":45,"end_character":37},"in_reply_to":"3f1d235d_b7740200","updated":"2017-07-08 06:05:22.000000000","message":"Done","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"32546e1c0efa37b5889e3de1d170aad92bba8137","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"class FirewallPolicyConflict(nexception.Conflict):"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    \"\"\"FWaaS exception for firewall policy"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    Occurs when admin policy tries to use another tenant\u0027s policy that"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_7760aa36","line":57,"updated":"2017-07-07 12:48:15.000000000","message":"Let\u0027s drop this blank line.","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"bc70df01e4548c0ec94e0704aed796c855b20d06","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"class FirewallPolicyConflict(nexception.Conflict):"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    \"\"\"FWaaS exception for firewall policy"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    Occurs when admin policy tries to use another tenant\u0027s policy that"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_a0bb88c2","line":57,"in_reply_to":"3f1d235d_7760aa36","updated":"2017-07-08 06:05:22.000000000","message":"Done","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"32546e1c0efa37b5889e3de1d170aad92bba8137","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"class FirewallPolicyConflict(nexception.Conflict):"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    \"\"\"FWaaS exception for firewall policy"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    Occurs when admin policy tries to use another tenant\u0027s policy that"},{"line_number":61,"context_line":"    is not shared."}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_175f3673","line":58,"range":{"start_line":58,"start_character":7,"end_line":58,"end_character":42},"updated":"2017-07-07 12:48:15.000000000","message":"It should be a better brief message.","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"bc70df01e4548c0ec94e0704aed796c855b20d06","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"class FirewallPolicyConflict(nexception.Conflict):"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    \"\"\"FWaaS exception for firewall policy"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    Occurs when admin policy tries to use another tenant\u0027s policy that"},{"line_number":61,"context_line":"    is not shared."}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_2023f807","line":58,"range":{"start_line":58,"start_character":7,"end_line":58,"end_character":42},"in_reply_to":"3f1d235d_175f3673","updated":"2017-07-08 06:05:22.000000000","message":"Done","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"32546e1c0efa37b5889e3de1d170aad92bba8137","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    \"\"\"FWaaS exception for firewall policy"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    Occurs when admin policy tries to use another tenant\u0027s policy that"},{"line_number":61,"context_line":"    is not shared."},{"line_number":62,"context_line":"    \"\"\""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    message \u003d _(\"Operation cannot be performed since Firewall Policy \""}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_b74d22c6","line":61,"range":{"start_line":60,"start_character":4,"end_line":61,"end_character":18},"updated":"2017-07-07 12:48:15.000000000","message":"Hmm.... If this is the correct description of this exception, the exception class name looks too general.","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"bc70df01e4548c0ec94e0704aed796c855b20d06","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    \"\"\"FWaaS exception for firewall policy"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    Occurs when admin policy tries to use another tenant\u0027s policy that"},{"line_number":61,"context_line":"    is not shared."},{"line_number":62,"context_line":"    \"\"\""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    message \u003d _(\"Operation cannot be performed since Firewall Policy \""}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_0020fcf6","line":61,"range":{"start_line":60,"start_character":4,"end_line":61,"end_character":18},"in_reply_to":"3f1d235d_b74d22c6","updated":"2017-07-08 06:05:22.000000000","message":"Done","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"32546e1c0efa37b5889e3de1d170aad92bba8137","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    is not shared."},{"line_number":62,"context_line":"    \"\"\""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    message \u003d _(\"Operation cannot be performed since Firewall Policy \""},{"line_number":65,"context_line":"                \"%(firewall_policy_id)s is not shared and does not belong to \""},{"line_number":66,"context_line":"                \"your tenant.\")"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"class FirewallRuleSharingConflict(nexception.Conflict):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_17edf68a","line":66,"range":{"start_line":64,"start_character":16,"end_line":66,"end_character":30},"updated":"2017-07-07 12:48:15.000000000","message":"As I commented before, in this case we should not return 409. In this case, 404 should be returned. Otherwise, a different project can know a firewall policy exists. This is the reason we return 404 in other resources.","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"bc70df01e4548c0ec94e0704aed796c855b20d06","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    is not shared."},{"line_number":62,"context_line":"    \"\"\""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    message \u003d _(\"Operation cannot be performed since Firewall Policy \""},{"line_number":65,"context_line":"                \"%(firewall_policy_id)s is not shared and does not belong to \""},{"line_number":66,"context_line":"                \"your tenant.\")"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"class FirewallRuleSharingConflict(nexception.Conflict):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_e01ce0c2","line":66,"range":{"start_line":64,"start_character":16,"end_line":66,"end_character":30},"in_reply_to":"3f1d235d_17edf68a","updated":"2017-07-08 06:05:22.000000000","message":"Done","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"32546e1c0efa37b5889e3de1d170aad92bba8137","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"class FirewallRuleSharingConflict(nexception.Conflict):"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    \"\"\"FWaaS exception for firewall rules"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    This exception will be raised when a shared policy is created or"},{"line_number":74,"context_line":"    updated with rules that are not shared."}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_57980e1a","line":71,"updated":"2017-07-07 12:48:15.000000000","message":"Same as for L.61.","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"bc70df01e4548c0ec94e0704aed796c855b20d06","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"class FirewallRuleSharingConflict(nexception.Conflict):"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    \"\"\"FWaaS exception for firewall rules"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    This exception will be raised when a shared policy is created or"},{"line_number":74,"context_line":"    updated with rules that are not shared."}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_00759cfa","line":71,"in_reply_to":"3f1d235d_57980e1a","updated":"2017-07-08 06:05:22.000000000","message":"Done","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"32546e1c0efa37b5889e3de1d170aad92bba8137","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    updated with rules that are not shared."},{"line_number":75,"context_line":"    \"\"\""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    message \u003d _(\"Operation cannot be performed since Firewall Policy \""},{"line_number":78,"context_line":"                \"%(firewall_policy_id)s is shared but Firewall Rule \""},{"line_number":79,"context_line":"                \"%(firewall_rule_id)s is not shared.\")"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class FirewallPolicySharingConflict(nexception.Conflict):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_97f8e649","line":79,"range":{"start_line":77,"start_character":16,"end_line":79,"end_character":54},"updated":"2017-07-07 12:48:15.000000000","message":"Same comment as for L.64","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"bc70df01e4548c0ec94e0704aed796c855b20d06","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    updated with rules that are not shared."},{"line_number":75,"context_line":"    \"\"\""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    message \u003d _(\"Operation cannot be performed since Firewall Policy \""},{"line_number":78,"context_line":"                \"%(firewall_policy_id)s is shared but Firewall Rule \""},{"line_number":79,"context_line":"                \"%(firewall_rule_id)s is not shared.\")"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"class FirewallPolicySharingConflict(nexception.Conflict):"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_2068981f","line":79,"range":{"start_line":77,"start_character":16,"end_line":79,"end_character":54},"in_reply_to":"3f1d235d_97f8e649","updated":"2017-07-08 06:05:22.000000000","message":"Done","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"32546e1c0efa37b5889e3de1d170aad92bba8137","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"class FirewallRuleInvalidProtocol(nexception.InvalidInput):"},{"line_number":109,"context_line":"    message \u003d _(\"Firewall Rule protocol %(protocol)s is not supported. \""},{"line_number":110,"context_line":"                \"Only protocol values %(values)s and their integer \""},{"line_number":111,"context_line":"                \"representation (0 to 255) are supported.\")"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_37b6b28c","line":109,"range":{"start_line":109,"start_character":17,"end_line":109,"end_character":30},"updated":"2017-07-07 12:48:15.000000000","message":"This looks unnecessary. \"Protocol %(protocol)s is not supported. ...\".\nL.120 does not contain \u0027firewall rule\u0027. Looks inconsistent messages.","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"bc70df01e4548c0ec94e0704aed796c855b20d06","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"class FirewallRuleInvalidProtocol(nexception.InvalidInput):"},{"line_number":109,"context_line":"    message \u003d _(\"Firewall Rule protocol %(protocol)s is not supported. \""},{"line_number":110,"context_line":"                \"Only protocol values %(values)s and their integer \""},{"line_number":111,"context_line":"                \"representation (0 to 255) are supported.\")"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_a0e028ce","line":109,"range":{"start_line":109,"start_character":17,"end_line":109,"end_character":30},"in_reply_to":"3f1d235d_37b6b28c","updated":"2017-07-08 06:05:22.000000000","message":"Done","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"32546e1c0efa37b5889e3de1d170aad92bba8137","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"class FirewallInternalDriverError(nexception.NeutronException):"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    \"\"\"Fwaas exception for all driver errors"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    On any failure or exception in the driver, driver should log it and"},{"line_number":146,"context_line":"    raise this exception to the agent"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_f7af1a29","line":143,"range":{"start_line":143,"start_character":7,"end_line":143,"end_character":12},"updated":"2017-07-07 12:48:15.000000000","message":"-\u003e FWaaS","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"bc70df01e4548c0ec94e0704aed796c855b20d06","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"class FirewallInternalDriverError(nexception.NeutronException):"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    \"\"\"Fwaas exception for all driver errors"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    On any failure or exception in the driver, driver should log it and"},{"line_number":146,"context_line":"    raise this exception to the agent"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_80e52cdf","line":143,"range":{"start_line":143,"start_character":7,"end_line":143,"end_character":12},"in_reply_to":"3f1d235d_f7af1a29","updated":"2017-07-08 06:05:22.000000000","message":"Done","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"32546e1c0efa37b5889e3de1d170aad92bba8137","unresolved":false,"context_lines":[{"line_number":189,"context_line":"    Occurs when a user creates firewall group named \u0027default\u0027"},{"line_number":190,"context_line":"    \"\"\""},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    message \u003d _(\"Default firewall group already exists. \u0027default\u0027 is a \""},{"line_number":193,"context_line":"                \"reserved name for firewall group.\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_f75dda48","line":192,"range":{"start_line":192,"start_character":69,"end_line":192,"end_character":71},"updated":"2017-07-07 12:48:15.000000000","message":"-\u003e the?","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"bc70df01e4548c0ec94e0704aed796c855b20d06","unresolved":false,"context_lines":[{"line_number":189,"context_line":"    Occurs when a user creates firewall group named \u0027default\u0027"},{"line_number":190,"context_line":"    \"\"\""},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    message \u003d _(\"Default firewall group already exists. \u0027default\u0027 is a \""},{"line_number":193,"context_line":"                \"reserved name for firewall group.\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f1d235d_20cc1860","line":192,"range":{"start_line":192,"start_character":69,"end_line":192,"end_character":71},"in_reply_to":"3f1d235d_f75dda48","updated":"2017-07-08 06:05:22.000000000","message":"No, \u0027a\u0027 is correct.\nWe are saying that user can create N number of firewall groups, but cannot use the name \u0027default\u0027 as it is a name associated with the Default FG.","commit_id":"4758d77f92440bd58c5771682f440ae04205a798"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"bf6a3f83237a768b6549116895af18897f96f1a2","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"class FirewallRuleInUse(exceptions.InUse):"},{"line_number":88,"context_line":"    message \u003d _(\"Firewall Rule %(firewall_rule_id)s is being used.\")"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"class FirewallRuleNotAssociatedWithPolicy(exceptions.InvalidInput):"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f1d235d_6c58bf55","line":88,"range":{"start_line":88,"start_character":26,"end_line":88,"end_character":30},"updated":"2017-07-10 04:49:02.000000000","message":"capitalization inconsistency.  please check the rest of the patch as well.","commit_id":"cdb2d6e28b6a94392dbcf8b63a42a90a4adfdba2"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"bf6a3f83237a768b6549116895af18897f96f1a2","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"class FirewallGroupDefaultAlreadyExists(exceptions.InUse):"},{"line_number":172,"context_line":"    \"\"\"Default Firewall Group conflict exception."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    Occurs when a user creates firewall group named \u0027default\u0027"},{"line_number":175,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":20,"id":"3f1d235d_0c35cbf7","line":172,"range":{"start_line":172,"start_character":15,"end_line":172,"end_character":29},"updated":"2017-07-10 04:49:02.000000000","message":"capitalization inconsistency","commit_id":"cdb2d6e28b6a94392dbcf8b63a42a90a4adfdba2"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"072aa72888b385561a74b04cc75629ae4e29ed09","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    message \u003d _(\"Operation cannot be performed since firewall rule \""},{"line_number":139,"context_line":"                \"%(firewall_rule_id)s is not shared and belongs to \""},{"line_number":140,"context_line":"                \"another tenant %(tenant_id)s.\")"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"class FirewallRuleAlreadyAssociated(exceptions.Conflict):"}],"source_content_type":"text/x-python","patch_set":22,"id":"3f1d235d_84ba99bd","line":140,"range":{"start_line":140,"start_character":25,"end_line":140,"end_character":30},"updated":"2017-07-11 14:46:24.000000000","message":"do you want to use \u0027project\u0027 instead? L.38 uses \u0027project\u0027.","commit_id":"78bd214e1f4cf1a4b18e6baf973353b4ad13fa7d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"072aa72888b385561a74b04cc75629ae4e29ed09","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"class FirewallRuleAlreadyAssociated(exceptions.Conflict):"},{"line_number":144,"context_line":"    \"\"\"Firewall rule conflict exception"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    Occurs when there is an attempt to assign a rule to a policy that"},{"line_number":147,"context_line":"    the rule is already associated with."}],"source_content_type":"text/x-python","patch_set":22,"id":"3f1d235d_443da1db","line":144,"range":{"start_line":144,"start_character":7,"end_line":144,"end_character":39},"updated":"2017-07-11 14:46:24.000000000","message":"The summary line should highlight what this exception is.","commit_id":"78bd214e1f4cf1a4b18e6baf973353b4ad13fa7d"}],"neutron_lib/exceptions/fwaas.py":[{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"f3814218452f9dbbc7b4715a155226eab9779227","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"class FirewallGroupPortInvalid(exceptions.Conflict):"},{"line_number":166,"context_line":"    message \u003d _(\"Firewall Group Port %(port_id)s is invalid\")"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"class FirewallGroupPortInvalidProject(exceptions.Conflict):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f1d235d_f472787c","line":166,"updated":"2017-06-29 04:32:01.000000000","message":"maybe a \u0027.\u0027 would be useful here , similar to other messages.\nSorry, I may have missed it in my patch","commit_id":"de5974b444a4f4862abcbbfc3ffe2ce892c05919"},{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"da14821f093337f68c731d96d1eada3122380a6c","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"class FirewallGroupPortInvalid(exceptions.Conflict):"},{"line_number":166,"context_line":"    message \u003d _(\"Firewall Group Port %(port_id)s is invalid\")"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"class FirewallGroupPortInvalidProject(exceptions.Conflict):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f1d235d_7405487a","line":166,"in_reply_to":"3f1d235d_f472787c","updated":"2017-06-29 04:42:23.000000000","message":"No problem.  Done","commit_id":"de5974b444a4f4862abcbbfc3ffe2ce892c05919"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a29087a6fb0e2e0a6afaa79e0954663b01531dba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3f1d235d_e77d086f","updated":"2017-06-30 02:25:33.000000000","message":"Don\u0027t we need to have separate exception modules for FWaaS v1 and v2? I am afraid that consumers of the exception modules might be confused and FWaaS v1/v2 exceptions are used in a mixed way.","commit_id":"c8f0fe420e1b6164926d09b56a80d6f3d8fda26b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a29087a6fb0e2e0a6afaa79e0954663b01531dba","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class FirewallInPendingState(exceptions.Conflict):"},{"line_number":30,"context_line":"    message \u003d _(\"Operation cannot be performed since associated Firewall \""},{"line_number":31,"context_line":"                \"%(firewall_id)s is in %(pending_state)s.\")"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_8cae7b2c","line":30,"range":{"start_line":30,"start_character":64,"end_line":30,"end_character":72},"updated":"2017-06-30 02:25:33.000000000","message":"there is no need to capitalize \"firewall\".","commit_id":"c8f0fe420e1b6164926d09b56a80d6f3d8fda26b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a29087a6fb0e2e0a6afaa79e0954663b01531dba","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class FirewallPolicyNotFound(exceptions.NotFound):"},{"line_number":35,"context_line":"    message \u003d _(\"Firewall Policy %(firewall_policy_id)s could not be found.\")"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class FirewallPolicyInUse(exceptions.InUse):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_6cab1f1d","line":35,"range":{"start_line":35,"start_character":17,"end_line":35,"end_character":32},"updated":"2017-06-30 02:25:33.000000000","message":"Ditto. \"Firewall policy ....\" looks enough.","commit_id":"c8f0fe420e1b6164926d09b56a80d6f3d8fda26b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a29087a6fb0e2e0a6afaa79e0954663b01531dba","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class FirewallPolicyConflict(exceptions.Conflict):"},{"line_number":43,"context_line":"    \"\"\"FWaaS exception for firewall policy"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    Occurs when admin policy tries to use another tenant\u0027s unshared"},{"line_number":46,"context_line":"    policy."},{"line_number":47,"context_line":"    \"\"\""},{"line_number":48,"context_line":"    message \u003d _(\"Operation cannot be performed since Firewall Policy \""},{"line_number":49,"context_line":"                \"%(firewall_policy_id)s is not shared and does not belong to \""},{"line_number":50,"context_line":"                \"your tenant.\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_cc7113e3","line":47,"range":{"start_line":43,"start_character":3,"end_line":47,"end_character":7},"updated":"2017-06-30 02:25:33.000000000","message":"Some exceptions has docstring and some do not. What is the difference?","commit_id":"c8f0fe420e1b6164926d09b56a80d6f3d8fda26b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a29087a6fb0e2e0a6afaa79e0954663b01531dba","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    \"\"\""},{"line_number":48,"context_line":"    message \u003d _(\"Operation cannot be performed since Firewall Policy \""},{"line_number":49,"context_line":"                \"%(firewall_policy_id)s is not shared and does not belong to \""},{"line_number":50,"context_line":"                \"your tenant.\")"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"class FirewallRuleSharingConflict(exceptions.Conflict):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_0c36eb04","line":50,"updated":"2017-06-30 02:25:33.000000000","message":"Looking at the description, is the name \"FirewallPolicyConflict\" an appropriate name?\n\nIn this case, such firewall policy is not visible to a requested tenant and NotFound is returned for a core neutron resources like network.","commit_id":"c8f0fe420e1b6164926d09b56a80d6f3d8fda26b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a29087a6fb0e2e0a6afaa79e0954663b01531dba","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"class FirewallRuleSharingConflict(exceptions.Conflict):"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    \"\"\"FWaaS exception for firewall rules"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    When a shared policy is created or updated with unshared rules,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_ec3a8fe5","line":54,"updated":"2017-06-30 02:25:33.000000000","message":"Some has blank line here and some does not. Looks inconsistent.","commit_id":"c8f0fe420e1b6164926d09b56a80d6f3d8fda26b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a29087a6fb0e2e0a6afaa79e0954663b01531dba","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    this exception will be raised."},{"line_number":71,"context_line":"    \"\"\""},{"line_number":72,"context_line":"    message \u003d _(\"Operation cannot be performed. Before sharing Firewall \""},{"line_number":73,"context_line":"                \"Policy %(firewall_policy_id)s, share associated Firewall \""},{"line_number":74,"context_line":"                \"Rule %(firewall_rule_id)s.\")"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"class FirewallRuleNotFound(exceptions.NotFound):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_ac2497c7","line":74,"range":{"start_line":73,"start_character":48,"end_line":74,"end_character":44},"updated":"2017-06-30 02:25:33.000000000","message":"How about the following?\n\n  the associated firewall rule %(firewall_rule_id)s needs to be shared.","commit_id":"c8f0fe420e1b6164926d09b56a80d6f3d8fda26b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a29087a6fb0e2e0a6afaa79e0954663b01531dba","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"class FirewallIpAddressConflict(exceptions.InvalidInput):"},{"line_number":120,"context_line":"    message \u003d _(\"Invalid input - IP addresses do not agree with IP Version.\")"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"class FirewallInternalDriverError(exceptions.NeutronException):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_ec13af65","line":120,"range":{"start_line":120,"start_character":46,"end_line":120,"end_character":64},"updated":"2017-06-30 02:25:33.000000000","message":"\"do not match IP version\"?","commit_id":"c8f0fe420e1b6164926d09b56a80d6f3d8fda26b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a29087a6fb0e2e0a6afaa79e0954663b01531dba","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"class FirewallInternalDriverError(exceptions.NeutronException):"},{"line_number":124,"context_line":"    \"\"\"Fwaas exception for all driver errors."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    On any failure or exception in the driver, driver should log it and"},{"line_number":127,"context_line":"    raise this exception to the agent"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_cc18f382","line":124,"range":{"start_line":124,"start_character":6,"end_line":124,"end_character":12},"updated":"2017-06-30 02:25:33.000000000","message":"Fwaas -\u003e FWaaS","commit_id":"c8f0fe420e1b6164926d09b56a80d6f3d8fda26b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a29087a6fb0e2e0a6afaa79e0954663b01531dba","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"class FirewallRuleConflict(exceptions.Conflict):"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    \"\"\"Firewall rule conflict exception."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    Occurs when admin policy tries to use another tenant\u0027s unshared"},{"line_number":137,"context_line":"    rule."},{"line_number":138,"context_line":"    \"\"\""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    message \u003d _(\"Operation cannot be performed since Firewall Rule \""},{"line_number":141,"context_line":"                \"%(firewall_rule_id)s is not shared and belongs to \""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_2728a084","line":138,"range":{"start_line":133,"start_character":0,"end_line":138,"end_character":7},"updated":"2017-06-30 02:25:33.000000000","message":"If this exception is raised to users, users who do not own the firewall rule can know such firewall rule exists. Shouldn\u0027t we avoid such API response?","commit_id":"c8f0fe420e1b6164926d09b56a80d6f3d8fda26b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a29087a6fb0e2e0a6afaa79e0954663b01531dba","unresolved":false,"context_lines":[{"line_number":145,"context_line":"# Firewall Router Insertion Exceptions"},{"line_number":146,"context_line":"class FirewallRouterInUse(exceptions.InUse):"},{"line_number":147,"context_line":"    message \u003d _(\"Router(s) %(router_ids)s provided already associated with \""},{"line_number":148,"context_line":"                \"other Firewall(s). \")"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"# Firewall V2 Exceptions"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_673578da","line":148,"updated":"2017-06-30 02:25:33.000000000","message":"Router provided *is* already ....","commit_id":"c8f0fe420e1b6164926d09b56a80d6f3d8fda26b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a29087a6fb0e2e0a6afaa79e0954663b01531dba","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"class FirewallGroupInUse(exceptions.InUse):"},{"line_number":157,"context_line":"    message \u003d _(\"Firewall %(firewall_id)s is still active.\")"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"class FirewallGroupInPendingState(exceptions.Conflict):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_47471c4d","line":157,"updated":"2017-06-30 02:25:33.000000000","message":"firewall? firewall group? which is correct?","commit_id":"c8f0fe420e1b6164926d09b56a80d6f3d8fda26b"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a29087a6fb0e2e0a6afaa79e0954663b01531dba","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"class FirewallGroupInPendingState(exceptions.Conflict):"},{"line_number":161,"context_line":"    message \u003d _(\"Operation cannot be performed since associated Firewall \""},{"line_number":162,"context_line":"                \"%(firewall_id)s is in %(pending_state)s.\")"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_e76f48c3","line":161,"range":{"start_line":161,"start_character":64,"end_line":161,"end_character":72},"updated":"2017-06-30 02:25:33.000000000","message":"firewall? firewall group?","commit_id":"c8f0fe420e1b6164926d09b56a80d6f3d8fda26b"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"a51208f2e58b61569cd7b9dee31885e0e0b4d55b","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from neutron_lib import exceptions"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# Firewall Exceptions"},{"line_number":21,"context_line":"class FirewallNotFound(exceptions.NotFound):"},{"line_number":22,"context_line":"    \"\"\"FWaaS exception raised when firewall is not found\"\"\""},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3f1d235d_79ccaa60","line":20,"updated":"2017-07-04 04:13:05.000000000","message":"are some of these used by both of v1 and v2?\notherwise it\u0027s better to have separate modules for each extensions.","commit_id":"e9592bb368e5a5f81d2720c74fc2b76321fa2cfb"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"26e98e25a35ca59744694409cac21a873f8cb2b4","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from neutron_lib import exceptions"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# Firewall Exceptions"},{"line_number":21,"context_line":"class FirewallNotFound(exceptions.NotFound):"},{"line_number":22,"context_line":"    \"\"\"FWaaS exception raised when firewall is not found\"\"\""},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3f1d235d_9ee084fc","line":20,"in_reply_to":"3f1d235d_79ccaa60","updated":"2017-07-04 09:14:36.000000000","message":"Please check For reference : http://paste.openstack.org/show/614364/","commit_id":"e9592bb368e5a5f81d2720c74fc2b76321fa2cfb"}],"releasenotes/notes/fwaas-exceptions-e580766205b466d4.yaml":[{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"f3814218452f9dbbc7b4715a155226eab9779227","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The exception classes from folowing modules have been migrated into"},{"line_number":5,"context_line":"    ``neutron_lib.exceptions.fwaas``."},{"line_number":6,"context_line":"      * neutron_fwaas.common.exceptions"},{"line_number":7,"context_line":"      * neutron_fwaas.extensions.firewall"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"3f1d235d_543b6c9b","line":4,"range":{"start_line":4,"start_character":31,"end_line":4,"end_character":39},"updated":"2017-06-29 04:32:01.000000000","message":"nit: following","commit_id":"de5974b444a4f4862abcbbfc3ffe2ce892c05919"},{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"da14821f093337f68c731d96d1eada3122380a6c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The exception classes from folowing modules have been migrated into"},{"line_number":5,"context_line":"    ``neutron_lib.exceptions.fwaas``."},{"line_number":6,"context_line":"      * neutron_fwaas.common.exceptions"},{"line_number":7,"context_line":"      * neutron_fwaas.extensions.firewall"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"3f1d235d_b4f2c099","line":4,"range":{"start_line":4,"start_character":31,"end_line":4,"end_character":39},"in_reply_to":"3f1d235d_543b6c9b","updated":"2017-06-29 04:42:23.000000000","message":"Done","commit_id":"de5974b444a4f4862abcbbfc3ffe2ce892c05919"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"f3814218452f9dbbc7b4715a155226eab9779227","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The exception classes from folowing modules have been migrated into"},{"line_number":5,"context_line":"    ``neutron_lib.exceptions.fwaas``."},{"line_number":6,"context_line":"      * neutron_fwaas.common.exceptions"},{"line_number":7,"context_line":"      * neutron_fwaas.extensions.firewall"},{"line_number":8,"context_line":"      * neutron_fwaas.extensions.firewallrouterinsertion"},{"line_number":9,"context_line":"      * neutron_fwaas.extensions.firewall_v2"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"3f1d235d_b453e0e2","line":6,"range":{"start_line":6,"start_character":8,"end_line":6,"end_character":39},"updated":"2017-06-29 04:32:01.000000000","message":"not present after the neutron-lib code was reverted","commit_id":"de5974b444a4f4862abcbbfc3ffe2ce892c05919"},{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"da14821f093337f68c731d96d1eada3122380a6c","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The exception classes from folowing modules have been migrated into"},{"line_number":5,"context_line":"    ``neutron_lib.exceptions.fwaas``."},{"line_number":6,"context_line":"      * neutron_fwaas.common.exceptions"},{"line_number":7,"context_line":"      * neutron_fwaas.extensions.firewall"},{"line_number":8,"context_line":"      * neutron_fwaas.extensions.firewallrouterinsertion"},{"line_number":9,"context_line":"      * neutron_fwaas.extensions.firewall_v2"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"3f1d235d_94efc4af","line":6,"range":{"start_line":6,"start_character":8,"end_line":6,"end_character":39},"in_reply_to":"3f1d235d_b453e0e2","updated":"2017-06-29 04:42:23.000000000","message":"Done","commit_id":"de5974b444a4f4862abcbbfc3ffe2ce892c05919"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a29087a6fb0e2e0a6afaa79e0954663b01531dba","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The exception classes from following modules have been migrated into"},{"line_number":5,"context_line":"    ``neutron_lib.exceptions.fwaas``."},{"line_number":6,"context_line":"    * neutron_fwaas.extensions.firewall"},{"line_number":7,"context_line":"    * neutron_fwaas.extensions.firewallrouterinsertion"},{"line_number":8,"context_line":"    * neutron_fwaas.extensions.firewall_v2"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"3f1d235d_67b8d829","line":5,"updated":"2017-06-30 02:25:33.000000000","message":"Blank line is required. Otherwise, the item list is not rendered as a list. See http://docs-draft.openstack.org/19/478719/3/check/gate-neutron-lib-releasenotes/2ccbcf6//releasenotes/build/html/unreleased.html#new-features","commit_id":"c8f0fe420e1b6164926d09b56a80d6f3d8fda26b"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"b49fe8d7fa3fccd23b47bf8810f9ad70dc8b2fe0","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    The exception classes have migrated from neutron_fwaas"},{"line_number":5,"context_line":"    to neutron_lib as mentioned below:"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    * neutron_fwaas.extensions.firewall -\u003e neutron_lib.exceptions.firewall_v1"},{"line_number":8,"context_line":"    * neutron_fwaas.extensions.firewallrouterinsertion -\u003e neutron_lib.exceptions.firewall_v1"},{"line_number":9,"context_line":"    * neutron_fwaas.extensions.firewall_v2 -\u003e neutron_lib.exceptions.firewall_v2"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"3f1d235d_24711045","line":7,"range":{"start_line":7,"start_character":6,"end_line":7,"end_character":39},"updated":"2017-07-06 11:21:56.000000000","message":"Nit: enclose code in ``some code here`` for actual references to source.","commit_id":"35c51a859c527f507a4dbaa3ebd3160c74a23159"}]}
