)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"fd555efd90f4e2f350a6b70b23434a2e0894d7c7","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Change DNAT to rely on Provider app for bridge access"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Until now, DNAT app maintained its own patch ports towards the external"},{"line_number":10,"context_line":"tnetwork and classified the relevant traffic in table 0. This created a"},{"line_number":11,"context_line":"conflict when provider network."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This removes a lot of the functionality done by provider / L2 apps. L2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"9f436f4f_4adc40e3","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":8},"updated":"2017-08-15 08:45:15.000000000","message":"typo","commit_id":"dd89754d7e807bdac7be86bd0a567f6335308590"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"fd555efd90f4e2f350a6b70b23434a2e0894d7c7","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Until now, DNAT app maintained its own patch ports towards the external"},{"line_number":10,"context_line":"tnetwork and classified the relevant traffic in table 0. This created a"},{"line_number":11,"context_line":"conflict when provider network."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This removes a lot of the functionality done by provider / L2 apps. L2"},{"line_number":14,"context_line":"app classifies the network from the external network, marks a relevant reg7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"9f436f4f_8ae7c8ac","line":11,"range":{"start_line":11,"start_character":30,"end_line":11,"end_character":31},"updated":"2017-08-15 08:45:15.000000000","message":"something is missing (maybe enabled)?","commit_id":"dd89754d7e807bdac7be86bd0a567f6335308590"}],"doc/source/specs/distributed_dnat.rst":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"770ea4f5bf85d151a4048ef43ec0c9a6f41b44f0","unresolved":false,"context_lines":[{"line_number":43,"context_line":"either local or remote (or unbound) depending on the binding of floating IP\u0027s"},{"line_number":44,"context_line":"target port."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"By marking the floating port as bound, all our other apps will treat it as any"},{"line_number":47,"context_line":"other port, creating all relevant flows."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Configuration - Floating IP Added"}],"source_content_type":"text/x-rst","patch_set":45,"id":"7f287b81_a2ba74bd","line":46,"range":{"start_line":46,"start_character":43,"end_line":46,"end_character":52},"updated":"2017-08-31 09:44:34.000000000","message":"other Dragonflow","commit_id":"847b226bf3f0471a6ff38780e7ec454d5efe3a87"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"fdc0c7b00629752829f7428db9e4717d52b381f6","unresolved":false,"context_lines":[{"line_number":43,"context_line":"either local or remote (or unbound) depending on the binding of floating IP\u0027s"},{"line_number":44,"context_line":"target port."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"By marking the floating port as bound, all our other apps will treat it as any"},{"line_number":47,"context_line":"other port, creating all relevant flows."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Configuration - Floating IP Added"}],"source_content_type":"text/x-rst","patch_set":45,"id":"7f287b81_23ac439d","line":46,"range":{"start_line":46,"start_character":43,"end_line":46,"end_character":52},"in_reply_to":"7f287b81_a2ba74bd","updated":"2017-08-31 14:06:52.000000000","message":"Done","commit_id":"847b226bf3f0471a6ff38780e7ec454d5efe3a87"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"770ea4f5bf85d151a4048ef43ec0c9a6f41b44f0","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"3) Packet will match on source port, fixed IP of the floating IP entity,"},{"line_number":93,"context_line":"   dest MAC and router key, and replace packet\u0027s network key, source MAC,"},{"line_number":94,"context_line":"   source IP and decrement TTL. Them packet will be forwarded to L2 for further"},{"line_number":95,"context_line":"   lookup in the floating network."}],"source_content_type":"text/x-rst","patch_set":45,"id":"7f287b81_e2c3dc36","line":94,"range":{"start_line":94,"start_character":32,"end_line":94,"end_character":36},"updated":"2017-08-31 09:44:34.000000000","message":"Then","commit_id":"847b226bf3f0471a6ff38780e7ec454d5efe3a87"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"fdc0c7b00629752829f7428db9e4717d52b381f6","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"3) Packet will match on source port, fixed IP of the floating IP entity,"},{"line_number":93,"context_line":"   dest MAC and router key, and replace packet\u0027s network key, source MAC,"},{"line_number":94,"context_line":"   source IP and decrement TTL. Them packet will be forwarded to L2 for further"},{"line_number":95,"context_line":"   lookup in the floating network."}],"source_content_type":"text/x-rst","patch_set":45,"id":"7f287b81_a3971345","line":94,"range":{"start_line":94,"start_character":32,"end_line":94,"end_character":36},"in_reply_to":"7f287b81_e2c3dc36","updated":"2017-08-31 14:06:52.000000000","message":"Done","commit_id":"847b226bf3f0471a6ff38780e7ec454d5efe3a87"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"770ea4f5bf85d151a4048ef43ec0c9a6f41b44f0","unresolved":false,"context_lines":[{"line_number":92,"context_line":"3) Packet will match on source port, fixed IP of the floating IP entity,"},{"line_number":93,"context_line":"   dest MAC and router key, and replace packet\u0027s network key, source MAC,"},{"line_number":94,"context_line":"   source IP and decrement TTL. Them packet will be forwarded to L2 for further"},{"line_number":95,"context_line":"   lookup in the floating network."}],"source_content_type":"text/x-rst","patch_set":45,"id":"7f287b81_42e870b1","line":95,"range":{"start_line":95,"start_character":17,"end_line":95,"end_character":25},"updated":"2017-08-31 09:44:34.000000000","message":"external?","commit_id":"847b226bf3f0471a6ff38780e7ec454d5efe3a87"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"fdc0c7b00629752829f7428db9e4717d52b381f6","unresolved":false,"context_lines":[{"line_number":92,"context_line":"3) Packet will match on source port, fixed IP of the floating IP entity,"},{"line_number":93,"context_line":"   dest MAC and router key, and replace packet\u0027s network key, source MAC,"},{"line_number":94,"context_line":"   source IP and decrement TTL. Them packet will be forwarded to L2 for further"},{"line_number":95,"context_line":"   lookup in the floating network."}],"source_content_type":"text/x-rst","patch_set":45,"id":"7f287b81_838c1736","line":95,"range":{"start_line":95,"start_character":17,"end_line":95,"end_character":25},"in_reply_to":"7f287b81_42e870b1","updated":"2017-08-31 14:06:52.000000000","message":"Done","commit_id":"847b226bf3f0471a6ff38780e7ec454d5efe3a87"}],"dragonflow/conf/df_dnat.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"d08b30da8a4997ea4a21a6e672af97debf91647f","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from dragonflow._i18n import _"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"df_dnat_app_opts \u003d ["},{"line_number":21,"context_line":"    cfg.IntOpt(\u0027dnat_ttl_invalid_max_rate\u0027, default\u003d3,"},{"line_number":22,"context_line":"               help\u003d_(\u0027Max rate to reply ICMP time exceeded message per \u0027"},{"line_number":23,"context_line":"                      \u0027second.\u0027)),"}],"source_content_type":"text/x-python","patch_set":40,"id":"7f287b81_5854b9ca","line":20,"updated":"2017-08-23 09:24:25.000000000","message":"Requires release notes. If this misses the pike cutoff, also a deprecation period.","commit_id":"c739b664bba2097b283c2e7d6b054f685414cf90"}],"dragonflow/controller/apps/dnat.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"d08b30da8a4997ea4a21a6e672af97debf91647f","unresolved":false,"context_lines":[{"line_number":316,"context_line":"        )"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    def _get_external_subnet(self, fip):"},{"line_number":319,"context_line":"        subnets \u003d fip.floating_lport.lswitch.subnets"},{"line_number":320,"context_line":"        for subnet in subnets:"},{"line_number":321,"context_line":"            if fip.floating_ip_address in subnet.cidr:"},{"line_number":322,"context_line":"                return subnet"}],"source_content_type":"text/x-python","patch_set":40,"id":"7f287b81_f8d7e522","line":319,"range":{"start_line":319,"start_character":0,"end_line":319,"end_character":52},"updated":"2017-08-23 09:24:25.000000000","message":"Can\u0027t we now get this via: fip.floating_lport.subnets ?","commit_id":"c739b664bba2097b283c2e7d6b054f685414cf90"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"94d969e9a1beebeb41aba698b97bb03d8b35f015","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                metadata\u003dfloatingip.lport.lswitch.unique_key),"},{"line_number":229,"context_line":"        ]"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    def _install_ingress_nat_flows(self, floatingip):"},{"line_number":232,"context_line":"        parser \u003d self.parser"},{"line_number":233,"context_line":"        ofproto \u003d self.ofproto"},{"line_number":234,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"7f287b81_a60c2841","line":231,"updated":"2017-08-28 10:52:21.000000000","message":"May break this function to small functions:\nsomething like :  \n1. install_capture_flows \n2. install_translate_flows \n2. install_icmp_flows","commit_id":"350d7161aaab684cb8eb89cce6999ea93a1a928b"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"598c5ea916b5affeb6572de66a65b34c7beca9a6","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                metadata\u003dfloatingip.lport.lswitch.unique_key),"},{"line_number":229,"context_line":"        ]"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    def _install_ingress_nat_flows(self, floatingip):"},{"line_number":232,"context_line":"        parser \u003d self.parser"},{"line_number":233,"context_line":"        ofproto \u003d self.ofproto"},{"line_number":234,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"7f287b81_a4973d48","line":231,"in_reply_to":"7f287b81_a60c2841","updated":"2017-08-30 13:22:38.000000000","message":"Done","commit_id":"350d7161aaab684cb8eb89cce6999ea93a1a928b"}],"dragonflow/controller/common/constants.py":[{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"94d969e9a1beebeb41aba698b97bb03d8b35f015","unresolved":false,"context_lines":[{"line_number":55,"context_line":"# Filter packet based on destination IP address in proactive way ;)"},{"line_number":56,"context_line":"L3_PROACTIVE_LOOKUP_TABLE \u003d 65"},{"line_number":57,"context_line":"# Related to dnap app/snat_app"},{"line_number":58,"context_line":"EGRESS_NAT_TABLE \u003d 70"},{"line_number":59,"context_line":"EGRESS_SNAT_TABLE \u003d 71"},{"line_number":60,"context_line":"# Depending on reg7, packet is pushed locally to EGRESS_EXTERNAL_TABLE or"},{"line_number":61,"context_line":"# translated to tunnel."}],"source_content_type":"text/x-python","patch_set":41,"id":"7f287b81_00dbe44e","line":58,"updated":"2017-08-28 10:52:21.000000000","message":"It\u0027s only SNAT now - maybe call EGRESS_SNAT_CONNTRACK?","commit_id":"350d7161aaab684cb8eb89cce6999ea93a1a928b"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"598c5ea916b5affeb6572de66a65b34c7beca9a6","unresolved":false,"context_lines":[{"line_number":55,"context_line":"# Filter packet based on destination IP address in proactive way ;)"},{"line_number":56,"context_line":"L3_PROACTIVE_LOOKUP_TABLE \u003d 65"},{"line_number":57,"context_line":"# Related to dnap app/snat_app"},{"line_number":58,"context_line":"EGRESS_NAT_TABLE \u003d 70"},{"line_number":59,"context_line":"EGRESS_SNAT_TABLE \u003d 71"},{"line_number":60,"context_line":"# Depending on reg7, packet is pushed locally to EGRESS_EXTERNAL_TABLE or"},{"line_number":61,"context_line":"# translated to tunnel."}],"source_content_type":"text/x-python","patch_set":41,"id":"7f287b81_649dd564","line":58,"in_reply_to":"7f287b81_00dbe44e","updated":"2017-08-30 13:22:38.000000000","message":"I don\u0027t mind changing it separately","commit_id":"350d7161aaab684cb8eb89cce6999ea93a1a928b"}],"dragonflow/controller/df_local_controller.py":[{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"ac5b32f7e6f944b41b586208e9375f81705836be","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            selective\u003dself.enable_selective_topo_dist,"},{"line_number":87,"context_line":"        )"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        if self.enable_selective_topo_dist:"},{"line_number":90,"context_line":"            # FIP ports are created with \u0027\u0027 topic in neutron, add the topic"},{"line_number":91,"context_line":"            # to receive those."},{"line_number":92,"context_line":"            # No models registered at this point so nothing will get fetched."},{"line_number":93,"context_line":"            self.register_topic(\u0027\u0027)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        self._sync_pulse \u003d loopingcall.FixedIntervalLoopingCall("},{"line_number":96,"context_line":"            self._submit_sync_event)"}],"source_content_type":"text/x-python","patch_set":19,"id":"3f1d235d_4e46b4c2","line":93,"range":{"start_line":89,"start_character":0,"end_line":93,"end_character":35},"updated":"2017-07-04 14:42:49.000000000","message":"We might want to intercept floating IP port CRUD in mech driver and change port\u0027s topic to lswitch\u0027s topic","commit_id":"020f45907d6f3e2a916f6fdeb5d33eba0cb3c9fd"}],"dragonflow/controller/dnat_app.py":[{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"1b9080b3e038ef740bf22408da3bf96e5565a823","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        self._get_arp_responder(floatingip).add()"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        self.mod_flow("},{"line_number":218,"context_line":"            table_id\u003dconst.EGRESS_TABLE,"},{"line_number":219,"context_line":"            priority\u003dconst.PRIORITY_MEDIUM_HIGH,"},{"line_number":220,"context_line":"            match\u003dparser.OFPMatch("},{"line_number":221,"context_line":"                reg7\u003dfloatingip.floating_lport.unique_key,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f201791_dbef9085","line":218,"updated":"2017-06-21 09:20:36.000000000","message":"1. It\u0027s looks-like an egress rule  -shouldn\u0027t it come in _install_dnat_egress_rules?\n2. Is there any meaning to EGRESS_NAT_TABLE now ? or it can be removed ?","commit_id":"ed768b9cbed4e6a4006c5ac6aa5b3cd2094ae9a2"},{"author":{"_account_id":23766,"name":"Dima Kuznetsov","email":"dima.kuznetsov@toganetworks.com","username":"dimak"},"change_message_id":"f300a080930fd02b9bdb1ef4fea887d9e78a0a5e","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        self._get_arp_responder(floatingip).add()"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        self.mod_flow("},{"line_number":218,"context_line":"            table_id\u003dconst.EGRESS_TABLE,"},{"line_number":219,"context_line":"            priority\u003dconst.PRIORITY_MEDIUM_HIGH,"},{"line_number":220,"context_line":"            match\u003dparser.OFPMatch("},{"line_number":221,"context_line":"                reg7\u003dfloatingip.floating_lport.unique_key,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_bfccf734","line":218,"in_reply_to":"5f201791_dbef9085","updated":"2017-07-06 19:33:37.000000000","message":"1. The terminology is a bit confusing here, floating IP-wise, the traffic is ingress, coming from the network towards the VM. The table is called egress table because it forwards packets from the bridge towards a specific lport.\n2. It is still used in SNAT app","commit_id":"ed768b9cbed4e6a4006c5ac6aa5b3cd2094ae9a2"}],"dragonflow/neutron/ml2/mech_driver.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"d08b30da8a4997ea4a21a6e672af97debf91647f","unresolved":false,"context_lines":[{"line_number":460,"context_line":""},{"line_number":461,"context_line":"        lport \u003d neutron_l2.logical_port_from_neutron_port(port)"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"        # Update topic for FIP ports"},{"line_number":464,"context_line":"        if lport.topic \u003d\u003d \u0027\u0027:"},{"line_number":465,"context_line":"            lport.topic \u003d self._get_lswitch_topic(port)"},{"line_number":466,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"7f287b81_38e1ed9b","line":463,"range":{"start_line":463,"start_character":0,"end_line":463,"end_character":36},"updated":"2017-08-23 09:24:25.000000000","message":"The comment makes it look like this code is dnat specific, but I think the code is general enough. Otherwise, it would have to be moved or done differently.","commit_id":"c739b664bba2097b283c2e7d6b054f685414cf90"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"d08b30da8a4997ea4a21a6e672af97debf91647f","unresolved":false,"context_lines":[{"line_number":521,"context_line":"            return None"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"        lport \u003d neutron_l2.logical_port_from_neutron_port(updated_port)"},{"line_number":524,"context_line":"        # Update topic for FIP ports"},{"line_number":525,"context_line":"        if lport.topic \u003d\u003d \u0027\u0027:"},{"line_number":526,"context_line":"            lport.topic \u003d self._get_lswitch_topic(updated_port)"},{"line_number":527,"context_line":"        self.nb_api.update(lport)"}],"source_content_type":"text/x-python","patch_set":40,"id":"7f287b81_18f07167","line":524,"range":{"start_line":524,"start_character":0,"end_line":524,"end_character":36},"updated":"2017-08-23 09:24:25.000000000","message":"Same here","commit_id":"c739b664bba2097b283c2e7d6b054f685414cf90"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"d08b30da8a4997ea4a21a6e672af97debf91647f","unresolved":false,"context_lines":[{"line_number":536,"context_line":"        lean_port \u003d l2.LogicalPort(id\u003dport_id,"},{"line_number":537,"context_line":"                                   topic\u003dport[\u0027tenant_id\u0027])"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"        # Update topic for FIP ports"},{"line_number":540,"context_line":"        if lean_port.topic \u003d\u003d \u0027\u0027:"},{"line_number":541,"context_line":"            lean_port.topic \u003d self._get_lswitch_topic(port)"},{"line_number":542,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":40,"id":"7f287b81_f8f4855d","line":539,"range":{"start_line":539,"start_character":0,"end_line":539,"end_character":36},"updated":"2017-08-23 09:24:25.000000000","message":"Same here","commit_id":"c739b664bba2097b283c2e7d6b054f685414cf90"}],"dragonflow/tests/common/utils.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"d08b30da8a4997ea4a21a6e672af97debf91647f","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                    try:"},{"line_number":225,"context_line":"                        db_store_inst.delete(obj)"},{"line_number":226,"context_line":"                    except KeyError:"},{"line_number":227,"context_line":"                        pass"},{"line_number":228,"context_line":"        return wrapper"},{"line_number":229,"context_line":"    return decorator"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"7f287b81_38fa0d42","line":227,"updated":"2017-08-23 09:24:25.000000000","message":"Maybe log in case of an error later on?","commit_id":"c739b664bba2097b283c2e7d6b054f685414cf90"}]}
