)]}'
{"dragonflow/controller/apps/trunk.py":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"a26caa40f432feba2e1522104f9dc27f8eafd243","unresolved":false,"context_lines":[{"line_number":279,"context_line":""},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"class TrunkApp(df_base_app.DFlowApp):"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    def __init__(self, api, vswitch_api\u003dNone, nb_api\u003dNone,"},{"line_number":284,"context_line":"                 neutron_server_notifier\u003dNone):"},{"line_number":285,"context_line":"        super(TrunkApp, self).__init__("}],"source_content_type":"text/x-python","patch_set":3,"id":"bf8cb3f7_733adf34","line":282,"updated":"2017-12-25 13:47:20.000000000","message":"please add docstrings","commit_id":"3be69b4bd6269df3f077868ea276a08d946cef60"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"9ee5bf3b3420c4ba5ac28e653be88bac23d9c61a","unresolved":false,"context_lines":[{"line_number":279,"context_line":""},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"class TrunkApp(df_base_app.DFlowApp):"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    def __init__(self, api, vswitch_api\u003dNone, nb_api\u003dNone,"},{"line_number":284,"context_line":"                 neutron_server_notifier\u003dNone):"},{"line_number":285,"context_line":"        super(TrunkApp, self).__init__("}],"source_content_type":"text/x-python","patch_set":3,"id":"bf8cb3f7_50a8ead9","line":282,"in_reply_to":"bf8cb3f7_733adf34","updated":"2017-12-26 08:04:34.000000000","message":"Done","commit_id":"3be69b4bd6269df3f077868ea276a08d946cef60"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"a26caa40f432feba2e1522104f9dc27f8eafd243","unresolved":false,"context_lines":[{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    def _get_segmentation_type_implementations(self, child_port_segmentation):"},{"line_number":313,"context_line":"        segmentation_type \u003d child_port_segmentation.segmentation_type"},{"line_number":314,"context_line":"        try:"},{"line_number":315,"context_line":"            return self.segmentation_type_implementations[segmentation_type]"},{"line_number":316,"context_line":"        except KeyError:"},{"line_number":317,"context_line":"            raise exceptions.UnsupportedSegmentationTypeException("},{"line_number":318,"context_line":"                segmentation_type\u003dsegmentation_type"},{"line_number":319,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf8cb3f7_f32eeff8","line":316,"range":{"start_line":314,"start_character":7,"end_line":316,"end_character":24},"updated":"2017-12-25 13:47:20.000000000","message":"A bit weird handling. Maybe just retrieve under try and return at the end?","commit_id":"3be69b4bd6269df3f077868ea276a08d946cef60"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"9ee5bf3b3420c4ba5ac28e653be88bac23d9c61a","unresolved":false,"context_lines":[{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    def _get_segmentation_type_implementations(self, child_port_segmentation):"},{"line_number":313,"context_line":"        segmentation_type \u003d child_port_segmentation.segmentation_type"},{"line_number":314,"context_line":"        try:"},{"line_number":315,"context_line":"            return self.segmentation_type_implementations[segmentation_type]"},{"line_number":316,"context_line":"        except KeyError:"},{"line_number":317,"context_line":"            raise exceptions.UnsupportedSegmentationTypeException("},{"line_number":318,"context_line":"                segmentation_type\u003dsegmentation_type"},{"line_number":319,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf8cb3f7_10aa62d1","line":316,"range":{"start_line":314,"start_character":7,"end_line":316,"end_character":24},"in_reply_to":"bf8cb3f7_f32eeff8","updated":"2017-12-26 08:04:34.000000000","message":"I think the code comes out a bit cleaner than say:\n\ntry:\n    result \u003d self.segmentation_type_implementations[segmentation_type]\nexcept KeyError:\n    raise ....\nreturn result\n\n(I was never one to believe in \u0027single point of exit\u0027. That\u0027s what we have compilers for (: )","commit_id":"3be69b4bd6269df3f077868ea276a08d946cef60"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"a7e2465eb8dcd5e2d2a48c84026ea2063b7a901d","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    \"\"\""},{"line_number":49,"context_line":"    A base class to implement trunk (and general nested-port) behaviour."},{"line_number":50,"context_line":"    Nested-port implementations (e.g., vlan, ipvlan, macvlan) are expected"},{"line_number":51,"context_line":"    to inherit from this class (multiple times if needed) for every flow-pair"},{"line_number":52,"context_line":"    needed by the implementation."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    flow-pair means a pair of flows; one for classification, and one"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf8cb3f7_105b4254","line":51,"range":{"start_line":51,"start_character":31,"end_line":51,"end_character":57},"updated":"2017-12-26 08:27:52.000000000","message":"Inherit multiple times does not make sense. Am I missing something?","commit_id":"37ce4abb01725312399af94aa6282229d5cbc30b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"924aeae2b60e591824f4ab8fd44287e79ec76ead","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    \"\"\""},{"line_number":49,"context_line":"    A base class to implement trunk (and general nested-port) behaviour."},{"line_number":50,"context_line":"    Nested-port implementations (e.g., vlan, ipvlan, macvlan) are expected"},{"line_number":51,"context_line":"    to inherit from this class (multiple times if needed) for every flow-pair"},{"line_number":52,"context_line":"    needed by the implementation."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    flow-pair means a pair of flows; one for classification, and one"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf8cb3f7_f00d7e3e","line":51,"range":{"start_line":51,"start_character":31,"end_line":51,"end_character":57},"in_reply_to":"bf8cb3f7_105b4254","updated":"2017-12-26 08:33:01.000000000","message":"Multiple times: e.g. once per ip, once per arp","commit_id":"37ce4abb01725312399af94aa6282229d5cbc30b"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"a7e2465eb8dcd5e2d2a48c84026ea2063b7a901d","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        return {\u0027eth_type\u0027: eth_type}"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"class IPv4OnlyMixin(object):"},{"line_number":291,"context_line":"    def install_classification_rule(self, child_port_segmentation):"},{"line_number":292,"context_line":"        child_ip \u003d child_port_segmentation.port.ip"},{"line_number":293,"context_line":"        if child_ip.version !\u003d n_const.IP_VERSION_4:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf8cb3f7_503eaada","line":290,"range":{"start_line":290,"start_character":6,"end_line":290,"end_character":19},"updated":"2017-12-26 08:27:52.000000000","message":"A bit tricky, seems reads as 40. Maybe just IPv4NestedPortMixin?","commit_id":"37ce4abb01725312399af94aa6282229d5cbc30b"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"924aeae2b60e591824f4ab8fd44287e79ec76ead","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        return {\u0027eth_type\u0027: eth_type}"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"class IPv4OnlyMixin(object):"},{"line_number":291,"context_line":"    def install_classification_rule(self, child_port_segmentation):"},{"line_number":292,"context_line":"        child_ip \u003d child_port_segmentation.port.ip"},{"line_number":293,"context_line":"        if child_ip.version !\u003d n_const.IP_VERSION_4:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf8cb3f7_b007f61c","line":290,"range":{"start_line":290,"start_character":6,"end_line":290,"end_character":19},"in_reply_to":"bf8cb3f7_503eaada","updated":"2017-12-26 08:33:01.000000000","message":"Done","commit_id":"37ce4abb01725312399af94aa6282229d5cbc30b"}]}
