@@ -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) :-
@@ -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)
@@ -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
@@ -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},
Port f6aba21c9de8 ("nb: Add support for Load_Balancer_Groups."). Signed-off-by: Dumitru Ceara <dceara@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(+)