func (d Demo) NewProvisioner(hostData provisioner.HostData, publisher provisioner.EventPublisher) (provisioner.Provisioner, error) {
	p := &demoProvisioner{
		objectMeta: hostData.ObjectMeta,
		provID:     hostData.ProvisionerID,
		bmcCreds:   hostData.BMCCredentials,
		log:        log.WithValues("host", hostData.ObjectMeta.Name),
		publisher:  publisher,
	}
	return p, nil
}
New returns a new demo Provisioner
package demo
import (
	"time"
	"github.com/metal3-io/baremetal-operator/pkg/ironic/bmc"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"github.com/go-logr/logr"
	logz "sigs.k8s.io/controller-runtime/pkg/log/zap"
	metal3v1alpha1 "github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1"
	"github.com/metal3-io/baremetal-operator/pkg/provisioner"
)
var log = logz.New().WithName("provisioner").WithName("demo")
var deprovisionRequeueDelay = time.Second * 10
var provisionRequeueDelay = time.Second * 10
const (
	RegistrationErrorHost string = "demo-registration-error"
	RegisteringHost string = "demo-registering"
	AvailableHost string = "demo-available"
	InspectingHost string = "demo-inspecting"
	PreparingErrorHost string = "demo-preparing-error"
	PreparingHost string = "demo-preparing"
	ValidationErrorHost string = "demo-validation-error"
	ProvisioningHost string = "demo-provisioning"
	ProvisionedHost string = "demo-provisioned"
)
type demoProvisioner struct {
	objectMeta metav1.ObjectMeta
	provID string
	bmcCreds bmc.Credentials
	log logr.Logger
	publisher provisioner.EventPublisher
}
type Demo struct{}