def _disjoin_lrouter_and_gw_lrouter(self, router, transit_net_ports): router_id = router['id'] lrouter_name = utils.ovn_name(router_id) gw_lrouter_name = utils.ovn_gateway_router_name(router_id) gtrp_ip = transit_net_ports['gtsp']['ip'] gtrp_name = utils.ovn_lrouter_port_name(utils.ovn_gtsp_name(router_id)) dtrp_name = utils.ovn_lrouter_port_name(utils.ovn_dtsp_name(router_id)) lswitch_name = utils.ovn_transit_ls_name(router_id) dtsp_name = utils.ovn_dtsp_name(router_id) gtsp_name = utils.ovn_gtsp_name(router_id) with self._ovn.transaction(check_error=True) as txn: # 1. Delete default static route in gateway router txn.add(self._ovn.delete_static_route( lrouter_name, ip_prefix="0.0.0.0/0", nexthop=gtrp_ip)) # 2. Delete gtrp port txn.add(self._ovn.delete_lrouter_port(gtrp_name, gw_lrouter_name)) # 3. Delete dtrp port txn.add(self._ovn.delete_lrouter_port(dtrp_name, lrouter_name)) # 4. Delete gtsp port txn.add(self._ovn.delete_lswitch_port(gtsp_name, lswitch_name)) # 5. Delete dtsp port txn.add(self._ovn.delete_lswitch_port(dtsp_name, lswitch_name)) # 6. Delete transit logical switch txn.add(self._ovn.delete_lswitch(lswitch_name))
def _join_lrouter_and_gw_lrouter(self, router, transit_net_ports): router_id = router['id'] lswitch_name = utils.ovn_transit_ls_name(router_id) dtsp_name = utils.ovn_dtsp_name(router_id) dtsp_addresses = transit_net_ports['dtsp']['addresses'] gtsp_name = utils.ovn_gtsp_name(router_id) gtsp_addresses = transit_net_ports['gtsp']['addresses'] gw_lrouter_name = utils.ovn_gateway_router_name(router_id) lrouter_name = utils.ovn_name(router_id) gtrp_name = utils.ovn_lrouter_port_name(utils.ovn_gtsp_name(router_id)) gtrp_mac = transit_net_ports['gtsp']['mac_address'] gtrp_ip = transit_net_ports['gtsp']['ip'] cidr = netaddr.IPNetwork(self._l3_admin_net_cidr) gtrp_network = "%s/%s" % (gtrp_ip, str(cidr.prefixlen)) dtrp_name = utils.ovn_lrouter_port_name(utils.ovn_dtsp_name(router_id)) dtrp_mac = transit_net_ports['dtsp']['mac_address'] dtrp_ip = transit_net_ports['dtsp']['ip'] dtrp_network = "%s/%s" % (dtrp_ip, str(cidr.prefixlen)) with self._ovn.transaction(check_error=True) as txn: # 1. Create a transit logical switch txn.add(self._ovn.create_lswitch(lswitch_name=lswitch_name)) # 2. Add dtsp port txn.add(self._ovn.create_lswitch_port(lport_name=dtsp_name, lswitch_name=lswitch_name, addresses=dtsp_addresses, enabled='True')) # 3. Add gtsp port txn.add(self._ovn.create_lswitch_port(lport_name=gtsp_name, lswitch_name=lswitch_name, addresses=gtsp_addresses, enabled='True')) # 4. Add dtrp port in logical router txn.add(self._ovn.add_lrouter_port(name=dtrp_name, lrouter=lrouter_name, mac=dtrp_mac, networks=dtrp_network)) txn.add(self._ovn.set_lrouter_port_in_lswitch_port( utils.ovn_dtsp_name(router_id), dtrp_name)) # 5. Add gtrp port in gateway router txn.add(self._ovn.add_lrouter_port(name=gtrp_name, lrouter=gw_lrouter_name, mac=gtrp_mac, networks=gtrp_network)) txn.add(self._ovn.set_lrouter_port_in_lswitch_port( utils.ovn_gtsp_name(router_id), gtrp_name)) # 6. Add default static route in gateway router with nexthop as # gtrp ip txn.add(self._ovn.add_static_route(lrouter_name, ip_prefix='0.0.0.0/0', nexthop=gtrp_ip))