[ovs-dev] [RFC PATCH ovn 2/7] northd-ddlog: Add LB Group support.
Dumitru Ceara
dceara at redhat.com
Thu Nov 25 21:34:23 UTC 2021
Port f6aba21c9de8 ("nb: Add support for Load_Balancer_Groups.").
Signed-off-by: Dumitru Ceara <dceara at redhat.com>
---
northd/lrouter.dl | 7 +++++++
northd/lswitch.dl | 6 ++++++
northd/ovn-nb.dlopts | 1 +
northd/ovn_northd.dl | 18 ++++++++++++++++++
4 files changed, 32 insertions(+)
diff --git a/northd/lrouter.dl b/northd/lrouter.dl
index 0e4308eb5..4782599e5 100644
--- a/northd/lrouter.dl
+++ b/northd/lrouter.dl
@@ -410,6 +410,13 @@ LogicalRouterLB(lr, lb) :-
var lb_uuid = FlatMap(lbs),
lb in &LoadBalancer(.lb = &nb::Load_Balancer{._uuid = lb_uuid}).
+LogicalRouterLB(lr, lb) :-
+ nb::Logical_Router(._uuid = lr, .load_balancer_group = lbg_ids),
+ var lbg_id = FlatMap(lbg_ids),
+ lbg in &nb::Load_Balancer_Group(._uuid = lbg_id, .load_balancer = lb_ids),
+ var lb_id = FlatMap(lb_ids),
+ lb in &LoadBalancer(.lb = &nb::Load_Balancer{._uuid = lb_uuid}).
+
relation LogicalRouterLBs(lr: uuid, lb: Vec<Intern<LoadBalancer>>)
LogicalRouterLBs(lr, lbs) :-
diff --git a/northd/lswitch.dl b/northd/lswitch.dl
index 33c5c706b..82c1b4b93 100644
--- a/northd/lswitch.dl
+++ b/northd/lswitch.dl
@@ -322,6 +322,12 @@ LogicalSwitchLB(sw_uuid, lb) :-
var lb_id = FlatMap(lb_ids),
lb in &nb::Load_Balancer(._uuid = lb_id).
+LogicalSwitchLB(sw_uuid, lb) :-
+ &nb::Logical_Switch(._uuid = sw_uuid, .load_balancer_group = lbg_ids),
+ var lbg_id = FlatMap(lbg_ids),
+ lbg in &nb::Load_Balancer_Group(._uuid = lbg_id, .load_balancer = lb_ids),
+ var lb_id = FlatMap(lb_ids),
+ lb in &nb::Load_Balancer(._uuid = lb_id).
relation SwitchLB(sw: Intern<Switch>, lb_uuid: uuid)
diff --git a/northd/ovn-nb.dlopts b/northd/ovn-nb.dlopts
index 9a460adef..d4c620d25 100644
--- a/northd/ovn-nb.dlopts
+++ b/northd/ovn-nb.dlopts
@@ -18,6 +18,7 @@
--intern-table ACL
--intern-table QoS
--intern-table Load_Balancer
+--intern-table Load_Balancer_Group
--intern-table Logical_Switch
--intern-table Load_Balancer_Health_Check
--intern-table Meter
diff --git a/northd/ovn_northd.dl b/northd/ovn_northd.dl
index 817b11bdc..56f0a04ac 100644
--- a/northd/ovn_northd.dl
+++ b/northd/ovn_northd.dl
@@ -8905,6 +8905,24 @@ sb::Out_Load_Balancer(._uuid = lb._uuid,
*/
var options = lb.options.insert_imm(i"hairpin_orig_tuple", i"true").
+sb::Out_Load_Balancer(._uuid = lb._uuid,
+ .name = lb.name,
+ .vips = lb.vips,
+ .protocol = lb.protocol,
+ .datapaths = datapaths,
+ .external_ids = [i"lb_id" -> uuid2str(lb_uuid).intern()],
+ .options = options) :-
+ nb in &nb::Logical_Switch(._uuid = ls_uuid, .load_balancer_group = lbg_uuids),
+ var lbg_uuid = FlatMap(lbg_uuids),
+ lbg in &nb::Load_Balancer_Group(._uuid = lbg_uuid, .load_balancer = lb_uuids),
+ var lb_uuid = FlatMap(lb_uuids),
+ var datapaths = ls_uuid.group_by(lb_uuid).to_set(),
+ lb in &nb::Load_Balancer(._uuid = lb_uuid),
+ /* Store the fact that northd provides the original (destination IP +
+ * transport port) tuple.
+ */
+ var options = lb.options.insert_imm(i"hairpin_orig_tuple", i"true").
+
sb::Out_Service_Monitor(._uuid = hash128((svc_monitor.port_name, lbvipbackend.ip, lbvipbackend.port, protocol)),
.ip = i"${lbvipbackend.ip}",
.protocol = Some{protocol},
More information about the dev
mailing list