Skip to content

Commit 50a00b9

Browse files
Merge pull request #1104 from averdagu/feat/nicMappings
Reapply "[ovn-controller] Don't create ovn-controller if nicMappings"
2 parents 4f77c60 + cbbc2ef commit 50a00b9

File tree

14 files changed

+469
-1
lines changed

14 files changed

+469
-1
lines changed

config/samples/base/openstackcontrolplane/core_v1beta1_openstackcontrolplane.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,9 @@ spec:
9797
replicas: 1
9898
dbType: SB
9999
storageRequest: 10G
100+
ovnController: {}
100101
ovnNorthd:
101102
replicas: 1
102-
ovnController: {}
103103
neutron:
104104
template:
105105
databaseInstance: openstack

config/samples/nad_datacentre.yaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
apiVersion: k8s.cni.cncf.io/v1
2+
kind: NetworkAttachmentDefinition
3+
metadata:
4+
annotations:
5+
labels:
6+
osp/net: data-centre
7+
service: ovn-controller
8+
name: datacentre
9+
spec:
10+
config: |
11+
{
12+
"cniVersion": "0.3.1",
13+
"name": "datacentre",
14+
"type": "bridge",
15+
"bridge": "ospbr",
16+
"ipam": {}
17+
}

pkg/openstack/ovn.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,13 @@ func ReconcileOVNController(ctx context.Context, instance *corev1beta1.OpenStack
314314
return false, err
315315
}
316316
return false, nil
317+
} else if len(instance.Spec.Ovn.Template.OVNController.NicMappings) == 0 {
318+
// If nicMappings is not configured there's no need to start ovn-controller
319+
Log.Info("OVN Controller has no nicMappings configured, forcing ready condition to true.")
320+
if _, err := EnsureDeleted(ctx, helper, OVNController); err != nil {
321+
return false, err
322+
}
323+
return true, nil
317324
}
318325

319326
ovnControllerSpec := &instance.Spec.Ovn.Template.OVNController

tests/functional/ctlplane/openstackoperator_controller_test.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1620,6 +1620,11 @@ var _ = Describe("OpenStackOperator controller", func() {
16201620
"dbType": "SB",
16211621
},
16221622
},
1623+
"ovnController": map[string]interface{}{
1624+
"nicMappings": map[string]interface{}{
1625+
"datacentre": "ospbr",
1626+
},
1627+
},
16231628
},
16241629
}
16251630
DeferCleanup(
@@ -1670,6 +1675,37 @@ var _ = Describe("OpenStackOperator controller", func() {
16701675
}, timeout, interval).Should(Succeed())
16711676
})
16721677

1678+
It("should remove ovn-controller if nicMappings are removed", func() {
1679+
// Update spec
1680+
Eventually(func(g Gomega) {
1681+
OSCtlplane := GetOpenStackControlPlane(names.OpenStackControlplaneName)
1682+
OSCtlplane.Spec.Ovn.Template.OVNController.NicMappings = nil
1683+
g.Expect(k8sClient.Update(ctx, OSCtlplane)).Should(Succeed())
1684+
}, timeout, interval).Should(Succeed())
1685+
1686+
// ovn services exist
1687+
Eventually(func(g Gomega) {
1688+
ovnNorthd := ovn.GetOVNNorthd(names.OVNNorthdName)
1689+
g.Expect(ovnNorthd).Should(Not(BeNil()))
1690+
}, timeout, interval).Should(Succeed())
1691+
1692+
// If nicMappings are not configured, ovnController shouldn't spawn
1693+
Eventually(func(g Gomega) {
1694+
instance := &ovnv1.OVNController{}
1695+
g.Expect(th.K8sClient.Get(th.Ctx, names.OVNControllerName, instance)).Should(Not(Succeed()))
1696+
}, timeout, interval).Should(Succeed())
1697+
1698+
Eventually(func(g Gomega) {
1699+
ovnDbServerNB := ovn.GetOVNDBCluster(names.OVNDbServerNBName)
1700+
g.Expect(ovnDbServerNB).Should(Not(BeNil()))
1701+
}, timeout, interval).Should(Succeed())
1702+
1703+
Eventually(func(g Gomega) {
1704+
ovnDbServerSB := ovn.GetOVNDBCluster(names.OVNDbServerSBName)
1705+
g.Expect(ovnDbServerSB).Should(Not(BeNil()))
1706+
}, timeout, interval).Should(Succeed())
1707+
})
1708+
16731709
It("should remove OVN resources on disable", func() {
16741710
Eventually(func(g Gomega) {
16751711
OSCtlplane := GetOpenStackControlPlane(names.OpenStackControlplaneName)

tests/functional/ctlplane/openstackversion_controller_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,11 @@ var _ = Describe("OpenStackOperator controller", func() {
239239
"dbType": "SB",
240240
},
241241
},
242+
"ovnController": map[string]interface{}{
243+
"nicMappings": map[string]interface{}{
244+
"datacentre": "ospbr",
245+
},
246+
},
242247
},
243248
}
244249
DeferCleanup(
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestStep
3+
commands:
4+
- script: |
5+
oc apply -n $NAMESPACE -f ../../../../config/samples/nad_datacentre.yaml
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../common/assert-sample-deployment.yaml
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestStep
3+
commands:
4+
- script: |
5+
oc kustomize ../../../../config/samples/base/openstackcontrolplane | oc apply -n $NAMESPACE -f -
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestStep
3+
timeout: 60
4+
commands:
5+
- script: |
6+
oc patch openstackcontrolplane -n $NAMESPACE openstack --type='json' -p='[{
7+
"op": "replace",
8+
"path": "/spec/ovn/template/ovnController/nicMappings",
9+
"value":{"datacentre":"ospbr"}
10+
}]'
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
apiVersion: v1
2+
kind: Pod
3+
metadata:
4+
labels:
5+
service: ovn-controller
6+
status:
7+
phase: Running
8+
---
9+
apiVersion: v1
10+
kind: Pod
11+
metadata:
12+
labels:
13+
service: ovn-controller-ovs
14+
status:
15+
phase: Running

0 commit comments

Comments
 (0)