Skip to content

Commit de3ceda

Browse files
Merge pull request #26676 from elfosardo/provisoning-tools
Test baremetal deployment without provisioning network
2 parents a6f01f1 + d4a2156 commit de3ceda

File tree

3 files changed

+102
-2
lines changed

3 files changed

+102
-2
lines changed

test/extended/baremetal/common.go

+20-2
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,22 @@ func skipIfUnsupportedPlatformOrConfig(oc *exutil.CLI, dc dynamic.Interface) {
5858
}
5959
}
6060

61+
func skipIfProvisioningNetworkSet(dc dynamic.Interface) {
62+
g.By("checking Provisioning Network CIDR")
63+
64+
provisioningClient := provisioningClient(dc)
65+
provisioningConfig, err := provisioningClient.Get(context.Background(), "provisioning-configuration", metav1.GetOptions{})
66+
o.Expect(err).NotTo(o.HaveOccurred())
67+
68+
_, provisioningNetworkCIDRfound, err := unstructured.NestedString(provisioningConfig.Object, "spec", "provisioningNetworkCIDR")
69+
o.Expect(err).NotTo(o.HaveOccurred())
70+
if provisioningNetworkCIDRfound {
71+
e2eskipper.Skipf("Provisioning Network set")
72+
}
73+
}
74+
6175
func getProvisioningNetwork(dc dynamic.Interface) string {
62-
provisioningGVR := schema.GroupVersionResource{Group: "metal3.io", Resource: "provisionings", Version: "v1alpha1"}
63-
provisioningClient := dc.Resource(provisioningGVR)
76+
provisioningClient := provisioningClient(dc)
6477
provisioningConfig, err := provisioningClient.Get(context.Background(), "provisioning-configuration", metav1.GetOptions{})
6578
if err != nil {
6679
return ""
@@ -91,6 +104,11 @@ func preprovisioningImagesClient(dc dynamic.Interface) dynamic.ResourceInterface
91104
return ppiClient.Namespace("openshift-machine-api")
92105
}
93106

107+
func provisioningClient(dc dynamic.Interface) dynamic.ResourceInterface {
108+
pClient := dc.Resource(schema.GroupVersionResource{Group: "metal3.io", Resource: "provisionings", Version: "v1alpha1"})
109+
return pClient
110+
}
111+
94112
type FieldGetterFunc func(obj map[string]interface{}, fields ...string) (interface{}, bool, error)
95113

96114
func expectField(object unstructured.Unstructured, resource string, nestedField string, fieldGetter FieldGetterFunc) o.Assertion {

test/extended/baremetal/hosts.go

+78
Original file line numberDiff line numberDiff line change
@@ -187,3 +187,81 @@ var _ = g.Describe("[sig-installer][Feature:baremetal][Serial] Baremetal platfor
187187
o.Expect(found).To(o.BeFalse())
188188
})
189189
})
190+
191+
var _ = g.Describe("[sig-installer][Feature:baremetal][Serial] A baremetal deployment without a provisioning network should", func() {
192+
defer g.GinkgoRecover()
193+
194+
var (
195+
oc = exutil.NewCLI("baremetal")
196+
)
197+
198+
g.It("show the Provisioning Network as 'Disabled'", func() {
199+
skipIfNotBaremetal(oc)
200+
201+
dc := oc.AdminDynamicClient()
202+
203+
skipIfProvisioningNetworkSet(dc)
204+
205+
o.Expect(getProvisioningNetwork(dc)).To((o.BeEquivalentTo("Disabled")))
206+
207+
g.By("Not allow setting the ProvisioningNetwork to 'Managed' with invalid values")
208+
invalidProvisioningNetworkCIDR := "172.22.0.0/33"
209+
provisioningClient := provisioningClient(dc)
210+
211+
provisionings, err := provisioningClient.List(context.Background(), metav1.ListOptions{})
212+
o.Expect(err).NotTo(o.HaveOccurred())
213+
o.Expect(provisionings.Items).ToNot(o.BeEmpty())
214+
215+
provisioning := provisionings.Items[0]
216+
217+
err = unstructured.SetNestedField(provisioning.Object, invalidProvisioningNetworkCIDR, "spec", "provisioningNetworkCIDR")
218+
o.Expect(err).NotTo(o.HaveOccurred())
219+
220+
_, err = provisioningClient.Update(context.Background(), &provisioning, metav1.UpdateOptions{})
221+
o.Expect(err).To(o.HaveOccurred())
222+
o.Expect(err.Error()).To(o.ContainSubstring("could not parse provisioningNetworkCIDR"))
223+
224+
o.Expect(getProvisioningNetwork(dc)).To((o.BeEquivalentTo("Disabled")))
225+
})
226+
227+
g.It("allow setting the ProvisioningNetwork to 'Managed' with valid settings", func() {
228+
skipIfNotBaremetal(oc)
229+
230+
dc := oc.AdminDynamicClient()
231+
232+
skipIfProvisioningNetworkSet(dc)
233+
234+
validProvisioningNetworkCIDR := "172.22.0.0/24"
235+
validProvisioningIP := "172.22.0.3"
236+
237+
provisioningClient := provisioningClient(dc)
238+
239+
provisionings, err := provisioningClient.List(context.Background(), metav1.ListOptions{})
240+
o.Expect(err).NotTo(o.HaveOccurred())
241+
o.Expect(provisionings.Items).ToNot(o.BeEmpty())
242+
243+
provisioning := provisionings.Items[0]
244+
245+
err = unstructured.SetNestedField(provisioning.Object, validProvisioningNetworkCIDR, "spec", "provisioningNetworkCIDR")
246+
o.Expect(err).NotTo(o.HaveOccurred())
247+
248+
err = unstructured.SetNestedField(provisioning.Object, validProvisioningIP, "spec", "provisioningIP")
249+
o.Expect(err).NotTo(o.HaveOccurred())
250+
251+
err = unstructured.SetNestedField(provisioning.Object, "Managed", "spec", "provisioningNetwork")
252+
o.Expect(err).NotTo(o.HaveOccurred())
253+
254+
_, err = provisioningClient.Update(context.Background(), &provisioning, metav1.UpdateOptions{})
255+
o.Expect(err).NotTo(o.HaveOccurred())
256+
257+
g.By("Move the ProvisioningNetwork back to 'Disabled'")
258+
err = unstructured.SetNestedField(provisioning.Object, "Disabled", "spec", "provisioningNetwork")
259+
o.Expect(err).NotTo(o.HaveOccurred())
260+
261+
_, err = provisioningClient.Update(context.Background(), &provisioning, metav1.UpdateOptions{})
262+
o.Expect(err).NotTo(o.HaveOccurred())
263+
264+
o.Expect(getProvisioningNetwork(dc)).To((o.BeEquivalentTo("Disabled")))
265+
})
266+
267+
})

test/extended/util/annotate/generated/zz_generated.annotations.go

+4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)