diff --git a/pkg/cloudprovider/provider/baremetal/plugins/tinkerbell/client/template.go b/pkg/cloudprovider/provider/baremetal/plugins/tinkerbell/client/template.go index aa82435d9..7ea237ea6 100644 --- a/pkg/cloudprovider/provider/baremetal/plugins/tinkerbell/client/template.go +++ b/pkg/cloudprovider/provider/baremetal/plugins/tinkerbell/client/template.go @@ -61,6 +61,7 @@ const ( hardwareName = "{{.hardware_name}}" ProvisionWorkerNodeTemplate = "provision-worker-node" PartitionNumber = "{{.partition_number}}" + OSImageURL = "{{.os_image}}" ) // TemplateClient handles interactions with the Tinkerbell Templates in the Tinkerbell cluster. @@ -91,14 +92,14 @@ func (t *TemplateClient) Delete(ctx context.Context, namespacedName types.Namesp } // CreateTemplate creates a Tinkerbell Template in the Kubernetes cluster. -func (t *TemplateClient) CreateTemplate(ctx context.Context, namespace, osImageURL string) error { +func (t *TemplateClient) CreateTemplate(ctx context.Context, namespace string) error { template := &tinkv1alpha1.Template{} if err := t.tinkclient.Get(ctx, types.NamespacedName{ Name: ProvisionWorkerNodeTemplate, Namespace: namespace, }, template); err != nil { if kerrors.IsNotFound(err) { - data, err := getTemplate(osImageURL) + data, err := getTemplate(OSImageURL) if err != nil { return err } diff --git a/pkg/cloudprovider/provider/baremetal/plugins/tinkerbell/client/workflow.go b/pkg/cloudprovider/provider/baremetal/plugins/tinkerbell/client/workflow.go index ec76933c0..53f8b9d9a 100644 --- a/pkg/cloudprovider/provider/baremetal/plugins/tinkerbell/client/workflow.go +++ b/pkg/cloudprovider/provider/baremetal/plugins/tinkerbell/client/workflow.go @@ -50,7 +50,7 @@ func NewWorkflowClient(k8sClient client.Client) *WorkflowClient { } // CreateWorkflow creates a new Tinkerbell Workflow resource in the cluster. -func (w *WorkflowClient) CreateWorkflow(ctx context.Context, userData, templateRef string, hardware tink.Hardware) error { +func (w *WorkflowClient) CreateWorkflow(ctx context.Context, userData, templateRef, osImageURL string, hardware tink.Hardware) error { // Construct the Workflow object ifaceConfig := hardware.Spec.Interfaces[0].DHCP dnsNameservers := "1.1.1.1" @@ -80,6 +80,7 @@ func (w *WorkflowClient) CreateWorkflow(ctx context.Context, userData, templateR "ns": dnsNameservers, "default_route": ifaceConfig.IP.Gateway, "partition_number": w.getPartitionNumber(hardware), + "os_image": osImageURL, }, }, } diff --git a/pkg/cloudprovider/provider/baremetal/plugins/tinkerbell/driver.go b/pkg/cloudprovider/provider/baremetal/plugins/tinkerbell/driver.go index 575063852..4b1e162a4 100644 --- a/pkg/cloudprovider/provider/baremetal/plugins/tinkerbell/driver.go +++ b/pkg/cloudprovider/provider/baremetal/plugins/tinkerbell/driver.go @@ -123,14 +123,14 @@ func (d *driver) ProvisionServer(ctx context.Context, _ *zap.SugaredLogger, meta } // Create template if it doesn't exist - err = d.TemplateClient.CreateTemplate(ctx, d.HardwareRef.Namespace, d.OSImageURL) + err = d.TemplateClient.CreateTemplate(ctx, d.HardwareRef.Namespace) if err != nil { return nil, err } // Create Workflow to match the template and server server := tinktypes.Hardware{Hardware: hardware} - if err = d.WorkflowClient.CreateWorkflow(ctx, userdata, client.ProvisionWorkerNodeTemplate, server); err != nil { + if err = d.WorkflowClient.CreateWorkflow(ctx, userdata, client.ProvisionWorkerNodeTemplate, d.OSImageURL, server); err != nil { return nil, err }