@@ -1018,9 +1018,16 @@ dns-service-namespace="openshift-dns"
10181018dns-service-name="dns-default"
10191019
10201020[ovnkubernetesfeature]
1021+ enable-egress-ip=true
1022+ enable-egress-firewall=true
1023+ enable-egress-qos=true
1024+ enable-egress-service=true
10211025egressip-node-healthcheck-port=9107
1026+ enable-multi-network=true
10221027enable-network-segmentation=true
10231028enable-preconfigured-udn-addresses=true
1029+ enable-admin-network-policy=true
1030+ enable-multi-external-gateway=true
10241031enable-network-connect=true
10251032
10261033[gateway]
@@ -4460,219 +4467,6 @@ func TestRenderOVNKubernetes_AllowICMPNetworkPolicyOverride(t *testing.T) {
44604467 })
44614468}
44624469
4463- func TestOVNKubernetesControlPlaneFlags (t * testing.T ) {
4464- g := NewGomegaWithT (t )
4465-
4466- testCases := []struct {
4467- name string
4468- variant string
4469- overrides map [string ]interface {}
4470- mustContain []string
4471- mustNotContain []string
4472- }{
4473- {
4474- name : "self-hosted control-plane: always-enabled features" ,
4475- variant : "self-hosted" ,
4476- overrides : map [string ]interface {}{
4477- "OVN_OBSERVABILITY_ENABLE" : "false" ,
4478- "OVN_MULTI_NETWORK_POLICY_ENABLE" : "false" ,
4479- },
4480- mustContain : []string {
4481- "--enable-egress-ip=true" ,
4482- "--enable-egress-firewall=true" ,
4483- "--enable-egress-qos=true" ,
4484- "--enable-egress-service=true" ,
4485- "--enable-multicast" ,
4486- "--enable-multi-external-gateway=true" ,
4487- },
4488- mustNotContain : []string {
4489- "egress_features_enable_flag=" ,
4490- "enable_multicast_flag=" ,
4491- "multi_external_gateway_enable_flag=" ,
4492- },
4493- },
4494-
4495- {
4496- name : "self-hosted control-plane: conditional features enabled" ,
4497- variant : "self-hosted" ,
4498- overrides : map [string ]interface {}{
4499- "OVN_MULTI_NETWORK_POLICY_ENABLE" : "true" ,
4500- },
4501- mustContain : []string {
4502- "--enable-egress-ip=true" ,
4503- "--enable-multicast" ,
4504- "--enable-multi-external-gateway=true" ,
4505- "multi_network_policy_enabled_flag=\" --enable-multi-networkpolicy\" " ,
4506- "admin_network_policy_enabled_flag=\" --enable-admin-network-policy\" " ,
4507- },
4508- mustNotContain : []string {
4509- "network_observability_enabled_flag=" ,
4510- },
4511- },
4512- {
4513- name : "self-hosted control-plane: multi-network enabled" ,
4514- variant : "self-hosted" ,
4515- overrides : map [string ]interface {}{
4516- "OVN_MULTI_NETWORK_ENABLE" : "true" ,
4517- },
4518- mustContain : []string {
4519- "--enable-egress-ip=true" ,
4520- "--enable-multicast" ,
4521- "--enable-multi-external-gateway=true" ,
4522- "multi_network_enabled_flag=\" --enable-multi-network\" " ,
4523- },
4524- mustNotContain : []string {},
4525- },
4526- {
4527- name : "self-hosted control-plane: network segmentation enabled (auto-enables multi-network)" ,
4528- variant : "self-hosted" ,
4529- overrides : map [string ]interface {}{
4530- "OVN_MULTI_NETWORK_ENABLE" : "false" ,
4531- },
4532- mustContain : []string {
4533- "--enable-egress-ip=true" ,
4534- "--enable-multicast" ,
4535- "--enable-multi-external-gateway=true" ,
4536- "multi_network_enabled_flag=\" --enable-multi-network\" " ,
4537- "network_segmentation_enabled_flag=\" --enable-network-segmentation\" " ,
4538- },
4539- mustNotContain : []string {},
4540- },
4541- {
4542- name : "self-hosted control-plane: both multi-network and segmentation enabled" ,
4543- variant : "self-hosted" ,
4544- overrides : map [string ]interface {}{
4545- "OVN_MULTI_NETWORK_ENABLE" : "true" ,
4546- },
4547- mustContain : []string {
4548- "--enable-egress-ip=true" ,
4549- "--enable-multicast" ,
4550- "--enable-multi-external-gateway=true" ,
4551- "multi_network_enabled_flag=\" --enable-multi-network\" " ,
4552- "network_segmentation_enabled_flag=\" --enable-network-segmentation\" " ,
4553- },
4554- mustNotContain : []string {},
4555- },
4556- }
4557-
4558- for _ , tc := range testCases {
4559- t .Run (tc .name , func (t * testing.T ) {
4560- script := renderControlPlaneWithOverrides (t , tc .variant , tc .overrides )
4561- for _ , s := range tc .mustContain {
4562- g .Expect (script ).To (ContainSubstring (s ), "Expected to find: %s" , s )
4563- }
4564- for _ , s := range tc .mustNotContain {
4565- g .Expect (script ).NotTo (ContainSubstring (s ), "Expected NOT to find: %s" , s )
4566- }
4567- })
4568- }
4569- }
4570-
4571- func TestOVNKubernetesScriptLibCombined (t * testing.T ) {
4572- g := NewGomegaWithT (t )
4573-
4574- renderScript := func (overrides map [string ]interface {}) string {
4575- return renderScriptLibWithOverrides (t , overrides )
4576- }
4577-
4578- testCases := []struct {
4579- name string
4580- overrides map [string ]interface {}
4581- mustContain []string
4582- mustNotContain []string
4583- }{
4584- {
4585- name : "dpu-host gating and egress/policy disable" ,
4586- overrides : map [string ]interface {}{
4587- "OVN_NODE_MODE" : "dpu-host" ,
4588- "OVN_MULTI_NETWORK_ENABLE" : "true" ,
4589- "OVN_MULTI_NETWORK_POLICY_ENABLE" : "true" ,
4590- },
4591- mustContain : []string {
4592- "gateway_interface=\" derive-from-mgmt-port\" " ,
4593- "init_ovnkube_controller=\" \" " ,
4594- "enable_multicast_flag=\" \" " ,
4595- "egress_features_enable_flag=\" \" " ,
4596- "multi_external_gateway_enable_flag=\" \" " ,
4597- "ovnkube_node_mode=\" --ovnkube-node-mode dpu-host\" " ,
4598- "multi_network_enabled_flag=" ,
4599- "network_segmentation_enabled_flag=" ,
4600- "multi_network_policy_enabled_flag=" ,
4601- "admin_network_policy_enabled_flag=" ,
4602- },
4603- mustNotContain : []string {},
4604- },
4605- {
4606- name : "full mode with multi-network features enabled" ,
4607- overrides : map [string ]interface {}{
4608- "OVN_NODE_MODE" : "full" ,
4609- "OVN_MULTI_NETWORK_ENABLE" : "true" ,
4610- "OVN_MULTI_NETWORK_POLICY_ENABLE" : "true" ,
4611- },
4612- mustContain : []string {
4613- "gateway_interface=br-ex" ,
4614- "init_ovnkube_controller=\" --init-ovnkube-controller ${K8S_NODE}\" " ,
4615- "enable_multicast_flag=\" --enable-multicast\" " ,
4616- "egress_features_enable_flag=\" --enable-egress-ip=true --enable-egress-firewall=true --enable-egress-qos=true --enable-egress-service=true\" " ,
4617- "multi_external_gateway_enable_flag=\" --enable-multi-external-gateway=true\" " ,
4618- "multi_network_enabled_flag=\" --enable-multi-network\" " ,
4619- "network_segmentation_enabled_flag=\" --enable-network-segmentation\" " ,
4620- "multi_network_policy_enabled_flag=\" --enable-multi-networkpolicy\" " ,
4621- "admin_network_policy_enabled_flag=\" --enable-admin-network-policy\" " ,
4622- },
4623- mustNotContain : []string {},
4624- },
4625- {
4626- name : "non-mode-gated features enabled" ,
4627- overrides : map [string ]interface {}{
4628- "OVN_NODE_MODE" : "full" ,
4629- "OVN_ROUTE_ADVERTISEMENTS_ENABLE" : "true" ,
4630- "OVN_PRE_CONF_UDN_ADDR_ENABLE" : "true" ,
4631- "OVN_OBSERVABILITY_ENABLE" : "true" ,
4632- "DNS_NAME_RESOLVER_ENABLE" : "true" ,
4633- "NETWORK_NODE_IDENTITY_ENABLE" : "true" ,
4634- },
4635- mustContain : []string {
4636- "route_advertisements_enable_flag=\" --enable-route-advertisements\" " ,
4637- "preconfigured_udn_addresses_enable_flag=\" --enable-preconfigured-udn-addresses\" " ,
4638- "network_observability_enabled_flag=\" --enable-observability\" " ,
4639- "dns_name_resolver_enabled_flag=\" --enable-dns-name-resolver\" " ,
4640- "ip_forwarding_flag=\" --disable-forwarding\" " ,
4641- "--bootstrap-kubeconfig=/var/lib/kubelet/kubeconfig" ,
4642- },
4643- mustNotContain : []string {},
4644- },
4645- {
4646- name : "full mode: multi-network features disabled" ,
4647- overrides : map [string ]interface {}{
4648- "OVN_NODE_MODE" : "full" ,
4649- "OVN_MULTI_NETWORK_ENABLE" : "false" ,
4650- "OVN_MULTI_NETWORK_POLICY_ENABLE" : "false" ,
4651- },
4652- mustContain : []string {
4653- "multi_network_enabled_flag=" ,
4654- "network_segmentation_enabled_flag=" ,
4655- "multi_network_policy_enabled_flag=" ,
4656- "admin_network_policy_enabled_flag=" ,
4657- },
4658- mustNotContain : []string {},
4659- },
4660- }
4661-
4662- for _ , tc := range testCases {
4663- t .Run (tc .name , func (t * testing.T ) {
4664- script := renderScript (tc .overrides )
4665- for _ , s := range tc .mustContain {
4666- g .Expect (script ).To (ContainSubstring (s ))
4667- }
4668- for _ , s := range tc .mustNotContain {
4669- g .Expect (script ).NotTo (ContainSubstring (s ))
4670- }
4671- // Ensure gateway flags use the variable rather than a hardcoded iface
4672- g .Expect (script ).To (ContainSubstring ("--gateway-interface ${gateway_interface}" ))
4673- })
4674- }
4675- }
46764470
46774471// TestDaemonSetProgressing verifies daemonSetProgressing returns the correct
46784472// result for a variety of DaemonSet status scenarios, including the zero-worker
0 commit comments