@@ -1228,6 +1228,7 @@ var _ = Describe("OVNDBCluster controller", func() {
12281228 var OVNDBClusterName types.NamespacedName
12291229 var statefulSetName types.NamespacedName
12301230 var ovnTopologies []types.NamespacedName
1231+ var topologyRef , topologyRefAlt * topologyv1.TopoRef
12311232
12321233 BeforeEach (func () {
12331234 OVNDBClusterName = types.NamespacedName {
@@ -1244,18 +1245,25 @@ var _ = Describe("OVNDBCluster controller", func() {
12441245 Name : "ovn-topology-alt" ,
12451246 },
12461247 }
1247- // Build the topology Spec
1248- topologySpec := GetSampleTopologySpec (OVNDBClusterName .Name )
1248+ // Define the two topology references used in this test
1249+ topologyRef = & topologyv1.TopoRef {
1250+ Name : ovnTopologies [0 ].Name ,
1251+ Namespace : ovnTopologies [0 ].Namespace ,
1252+ }
1253+ topologyRefAlt = & topologyv1.TopoRef {
1254+ Name : ovnTopologies [1 ].Name ,
1255+ Namespace : ovnTopologies [1 ].Namespace ,
1256+ }
1257+
12491258 // Create Test Topology
12501259 for _ , t := range ovnTopologies {
1260+ // Build the topology Spec
1261+ topologySpec , _ := GetSampleTopologySpec (OVNDBClusterName .Name )
12511262 CreateTopology (t , topologySpec )
12521263 }
12531264
12541265 spec := GetDefaultOVNDBClusterSpec ()
1255- spec .TopologyRef = & topologyv1.TopoRef {
1256- Name : ovnTopologies [0 ].Name ,
1257- Namespace : ovnTopologies [0 ].Namespace ,
1258- }
1266+ spec .TopologyRef = topologyRef
12591267 ovn .CreateOVNDBCluster (& OVNDBClusterName .Name , OVNDBClusterName .Namespace , spec )
12601268
12611269 statefulSetName = types.NamespacedName {
@@ -1267,10 +1275,22 @@ var _ = Describe("OVNDBCluster controller", func() {
12671275
12681276 It ("sets topologyref in both .Status CR and resources" , func () {
12691277 Eventually (func (g Gomega ) {
1278+ tp := GetTopology (types.NamespacedName {
1279+ Name : topologyRef .Name ,
1280+ Namespace : topologyRef .Namespace ,
1281+ })
1282+ finalizers := tp .GetFinalizers ()
1283+ g .Expect (finalizers ).To (HaveLen (1 ))
12701284 ovndb := GetOVNDBCluster (OVNDBClusterName )
12711285 g .Expect (ovndb .Status .LastAppliedTopology ).NotTo (BeNil ())
1272- g .Expect (ovndb .Status .LastAppliedTopology .Name ).To (Equal (ovnTopologies [0 ].Name ))
1286+ g .Expect (ovndb .Status .LastAppliedTopology ).To (Equal (topologyRef ))
1287+ g .Expect (finalizers ).To (ContainElement (
1288+ fmt .Sprintf ("openstack.org/ovndbcluster-%s" , OVNDBClusterName .Name )))
1289+ }, timeout , interval ).Should (Succeed ())
1290+ Eventually (func (g Gomega ) {
1291+ _ , topologySpecObj := GetSampleTopologySpec (OVNDBClusterName .Name )
12731292 g .Expect (th .GetStatefulSet (statefulSetName ).Spec .Template .Spec .TopologySpreadConstraints ).ToNot (BeNil ())
1293+ g .Expect (th .GetStatefulSet (statefulSetName ).Spec .Template .Spec .TopologySpreadConstraints ).To (Equal (topologySpecObj ))
12741294 g .Expect (th .GetStatefulSet (statefulSetName ).Spec .Template .Spec .Affinity ).To (BeNil ())
12751295 }, timeout , interval ).Should (Succeed ())
12761296 })
@@ -1283,12 +1303,35 @@ var _ = Describe("OVNDBCluster controller", func() {
12831303 }, timeout , interval ).Should (Succeed ())
12841304
12851305 Eventually (func (g Gomega ) {
1306+ tp := GetTopology (types.NamespacedName {
1307+ Name : topologyRefAlt .Name ,
1308+ Namespace : topologyRefAlt .Namespace ,
1309+ })
1310+ finalizers := tp .GetFinalizers ()
1311+ g .Expect (finalizers ).To (HaveLen (1 ))
12861312 ovndb := GetOVNDBCluster (OVNDBClusterName )
12871313 g .Expect (ovndb .Status .LastAppliedTopology ).NotTo (BeNil ())
1288- g .Expect (ovndb .Status .LastAppliedTopology .Name ).To (Equal (ovnTopologies [1 ].Name ))
1314+ g .Expect (ovndb .Status .LastAppliedTopology ).To (Equal (topologyRefAlt ))
1315+ g .Expect (finalizers ).To (ContainElement (
1316+ fmt .Sprintf ("openstack.org/ovndbcluster-%s" , OVNDBClusterName .Name )))
1317+ }, timeout , interval ).Should (Succeed ())
1318+
1319+ Eventually (func (g Gomega ) {
1320+ _ , topologySpecObj := GetSampleTopologySpec (OVNDBClusterName .Name )
12891321 g .Expect (th .GetStatefulSet (statefulSetName ).Spec .Template .Spec .TopologySpreadConstraints ).ToNot (BeNil ())
1322+ g .Expect (th .GetStatefulSet (statefulSetName ).Spec .Template .Spec .TopologySpreadConstraints ).To (Equal (topologySpecObj ))
12901323 g .Expect (th .GetStatefulSet (statefulSetName ).Spec .Template .Spec .Affinity ).To (BeNil ())
12911324 }, timeout , interval ).Should (Succeed ())
1325+
1326+ Eventually (func (g Gomega ) {
1327+ // Verify the previous referenced topology has no finalizers
1328+ tp := GetTopology (types.NamespacedName {
1329+ Name : topologyRef .Name ,
1330+ Namespace : topologyRef .Namespace ,
1331+ })
1332+ finalizers := tp .GetFinalizers ()
1333+ g .Expect (finalizers ).To (BeEmpty ())
1334+ }, timeout , interval ).Should (Succeed ())
12921335 })
12931336 It ("removes topologyRef from the spec" , func () {
12941337 Eventually (func (g Gomega ) {
@@ -1307,6 +1350,18 @@ var _ = Describe("OVNDBCluster controller", func() {
13071350 g .Expect (th .GetStatefulSet (statefulSetName ).Spec .Template .Spec .TopologySpreadConstraints ).To (BeNil ())
13081351 g .Expect (th .GetStatefulSet (statefulSetName ).Spec .Template .Spec .Affinity ).ToNot (BeNil ())
13091352 }, timeout , interval ).Should (Succeed ())
1353+
1354+ // Verify the existing topologies have no finalizer anymore
1355+ Eventually (func (g Gomega ) {
1356+ for _ , topology := range ovnTopologies {
1357+ tp := GetTopology (types.NamespacedName {
1358+ Name : topology .Name ,
1359+ Namespace : topology .Namespace ,
1360+ })
1361+ finalizers := tp .GetFinalizers ()
1362+ g .Expect (finalizers ).To (BeEmpty ())
1363+ }
1364+ }, timeout , interval ).Should (Succeed ())
13101365 })
13111366
13121367 It ("rejects a wrong topologyRef on a different namespace" , func () {
0 commit comments