Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion config/manager/manager.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ spec:
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
envFrom:
- configMapRef:
name: ironic
Expand All @@ -37,4 +41,4 @@ spec:
port: 9440
initialDelaySeconds: 3
periodSeconds: 3
terminationGracePeriodSeconds: 10
terminationGracePeriodSeconds: 10
4 changes: 4 additions & 0 deletions config/render/capm3.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1039,6 +1039,10 @@ spec:
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
envFrom:
- configMapRef:
name: baremetal-operator-ironic
Expand Down
2 changes: 1 addition & 1 deletion controllers/metal3.io/baremetalhost_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ func (r *BareMetalHostReconciler) Reconcile(ctx context.Context, request ctrl.Re
request: request,
bmcCredsSecret: bmcCredsSecret,
}
prov, err := r.ProvisionerFactory(*host, *bmcCreds, info.publishEvent)
prov, err := r.ProvisionerFactory(*host.DeepCopy(), *bmcCreds, info.publishEvent)
if err != nil {
return ctrl.Result{}, errors.Wrap(err, "failed to create provisioner")
}
Expand Down
36 changes: 16 additions & 20 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,8 @@ import (

metal3iov1alpha1 "github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1"
metal3iocontroller "github.com/metal3-io/baremetal-operator/controllers/metal3.io"
"github.com/metal3-io/baremetal-operator/pkg/bmc"
"github.com/metal3-io/baremetal-operator/pkg/provisioner"
"github.com/metal3-io/baremetal-operator/pkg/provisioner/demo"
"github.com/metal3-io/baremetal-operator/pkg/provisioner/empty"
"github.com/metal3-io/baremetal-operator/pkg/provisioner/fixture"
"github.com/metal3-io/baremetal-operator/pkg/provisioner/ironic"
"github.com/metal3-io/baremetal-operator/pkg/version"
Expand Down Expand Up @@ -105,13 +103,18 @@ func main() {

printVersion()

leaderElectionNamespace := os.Getenv("POD_NAMESPACE")
if leaderElectionNamespace == "" {
leaderElectionNamespace = watchNamespace
}

mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
Scheme: scheme,
MetricsBindAddress: metricsAddr,
Port: 0, // Add flag with default of 9443 when adding webhooks
LeaderElection: enableLeaderElection,
LeaderElectionID: "baremetal-operator",
LeaderElectionNamespace: watchNamespace,
LeaderElectionNamespace: leaderElectionNamespace,
Namespace: watchNamespace,
HealthProbeBindAddress: healthAddr,
})
Expand All @@ -120,24 +123,17 @@ func main() {
os.Exit(1)
}

provisionerFactory := func(host metal3iov1alpha1.BareMetalHost, bmcCreds bmc.Credentials, publish provisioner.EventPublisher) (provisioner.Provisioner, error) {
isUnmanaged := host.Spec.ExternallyProvisioned && !host.HasBMCDetails()

hostCopy := host.DeepCopy()

if runInTestMode {
ctrl.Log.Info("using test provisioner")
fix := fixture.Fixture{}
return fix.New(*hostCopy, bmcCreds, publish)
} else if runInDemoMode {
ctrl.Log.Info("using demo provisioner")
return demo.New(*hostCopy, bmcCreds, publish)
} else if isUnmanaged {
ctrl.Log.Info("using empty provisioner")
return empty.New(*hostCopy, bmcCreds, publish)
}
var provisionerFactory provisioner.Factory
if runInTestMode {
ctrl.Log.Info("using test provisioner")
fix := fixture.Fixture{}
provisionerFactory = fix.New
} else if runInDemoMode {
ctrl.Log.Info("using demo provisioner")
provisionerFactory = demo.New
} else {
ironic.LogStartup()
return ironic.New(*hostCopy, bmcCreds, publish)
provisionerFactory = ironic.New
}

if err = (&metal3iocontroller.BareMetalHostReconciler{
Expand Down
94 changes: 0 additions & 94 deletions pkg/provisioner/empty/empty.go

This file was deleted.

2 changes: 1 addition & 1 deletion pkg/provisioner/ironic/delete_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ func TestDelete(t *testing.T) {
},
{
name: "not-ironic-node",
ironic: testserver.NewIronic(t).Ready().NoNode(nodeUUID).NoNode("myhost"),
ironic: testserver.NewIronic(t).Ready().NoNode(nodeUUID).NoNode("myns" + nameSeparator + "myhost").NoNode("myhost"),
},
{
name: "available-node",
Expand Down
12 changes: 6 additions & 6 deletions pkg/provisioner/ironic/findhost_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,29 +23,29 @@ func TestFindExistingHost(t *testing.T) {
name: "no-node",
hostName: "name",
provisioningID: "uuid",
ironic: testserver.NewIronic(t).NoNode("name").NoNode("uuid"),
ironic: testserver.NewIronic(t).NoNode("myns" + nameSeparator + "name").NoNode("name").NoNode("uuid"),
},
{
name: "by-name",
hostName: "name",
provisioningID: "uuid",
ironic: testserver.NewIronic(t).NoNode("uuid").
Node(nodes.Node{
Name: "name",
Name: "myns" + nameSeparator + "name",
UUID: "different-uuid",
}),
nodeName: "name",
nodeName: "myns" + nameSeparator + "name",
},
{
name: "by-uuid",
hostName: "name",
provisioningID: "uuid",
ironic: testserver.NewIronic(t).NoNode("name").
ironic: testserver.NewIronic(t).NoNode("myns" + nameSeparator + "name").NoNode("name").
Node(nodes.Node{
Name: "different-name",
Name: "myns" + nameSeparator + "different-name",
UUID: "uuid",
}),
nodeName: "different-name",
nodeName: "myns" + nameSeparator + "different-name",
},
}

Expand Down
Loading