Skip to content

Commit

Permalink
Prevent patching the HybridOverlayConfig
Browse files Browse the repository at this point in the history
Since adding a hybrid network after install time is not a supported
operation throw an error when processesing the config.
  • Loading branch information
JacobTanenbaum committed May 1, 2020
1 parent bf1658e commit 12c300b
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 1 deletion.
5 changes: 4 additions & 1 deletion pkg/network/ovn_kubernetes.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,9 +141,12 @@ func isOVNKubernetesChangeSafe(prev, next *operv1.NetworkSpec) []error {
if !reflect.DeepEqual(pn.GenevePort, nn.GenevePort) {
errs = append(errs, errors.Errorf("cannot change ovn-kubernetes genevePort"))
}
if pn.HybridOverlayConfig == nil && nn.HybridOverlayConfig != nil {
errs = append(errs, errors.Errorf("cannot start a hybrid overlay network after install time"))
}
if pn.HybridOverlayConfig != nil {
if !reflect.DeepEqual(pn.HybridOverlayConfig, nn.HybridOverlayConfig) {
errs = append(errs, errors.Errorf("once set cannot change ovn-kubernetes Hybrid Overlay Config"))
errs = append(errs, errors.Errorf("cannot edit a running hybrid overlay network"))
}
}

Expand Down
29 changes: 29 additions & 0 deletions pkg/network/ovn_kubernetes_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,34 @@ func TestOVNKubernetesIsSafe(t *testing.T) {
errs := isOVNKubernetesChangeSafe(prev, next)
g.Expect(errs).To(BeEmpty())

// try to add a new hybrid overlay config
hybridOverlayConfigNext :=
operv1.HybridOverlayConfig{
HybridClusterNetwork: []operv1.ClusterNetworkEntry{
{CIDR: "10.132.0.0/14", HostPrefix: 23},
},
}
next.DefaultNetwork.OVNKubernetesConfig.HybridOverlayConfig = &hybridOverlayConfigNext

errs = isOVNKubernetesChangeSafe(prev, next)
g.Expect(errs).To(HaveLen(1))
g.Expect(errs[0]).To(MatchError("cannot start a hybrid overlay network after install time"))

//try to change a previous hybrid overlay
hybridOverlayConfigPrev :=
operv1.HybridOverlayConfig{
HybridClusterNetwork: []operv1.ClusterNetworkEntry{
{CIDR: "10.135.0.0/14", HostPrefix: 23},
},
}
prev.DefaultNetwork.OVNKubernetesConfig.HybridOverlayConfig = &hybridOverlayConfigPrev
errs = isOVNKubernetesChangeSafe(prev, next)
g.Expect(errs).To(HaveLen(1))
g.Expect(errs[0]).To(MatchError("cannot edit a running hybrid overlay network"))

prev.DefaultNetwork.OVNKubernetesConfig.HybridOverlayConfig = nil
next.DefaultNetwork.OVNKubernetesConfig.HybridOverlayConfig = nil

// change the mtu
mtu := uint32(70000)
next.DefaultNetwork.OVNKubernetesConfig.MTU = &mtu
Expand All @@ -273,4 +301,5 @@ func TestOVNKubernetesIsSafe(t *testing.T) {
g.Expect(errs).To(HaveLen(2))
g.Expect(errs[0]).To(MatchError("cannot change ovn-kubernetes MTU"))
g.Expect(errs[1]).To(MatchError("cannot change ovn-kubernetes genevePort"))

}

0 comments on commit 12c300b

Please sign in to comment.