func()

in pkg/executables/clusterctl.go [250:330]


func (c *Clusterctl) buildConfig(managementComponents *anywherecluster.ManagementComponents, clusterName string, provider providers.Provider) (*clusterctlConfiguration, error) {
	t := templater.New(c.writer)

	path, err := os.Getwd()
	if err != nil {
		return nil, err
	}

	data := map[string]string{
		"CertManagerInjectorRepository":                   imageRepository(managementComponents.CertManager.Cainjector),
		"CertManagerInjectorTag":                          managementComponents.CertManager.Cainjector.Tag(),
		"CertManagerControllerRepository":                 imageRepository(managementComponents.CertManager.Controller),
		"CertManagerControllerTag":                        managementComponents.CertManager.Controller.Tag(),
		"CertManagerWebhookRepository":                    imageRepository(managementComponents.CertManager.Webhook),
		"CertManagerWebhookTag":                           managementComponents.CertManager.Webhook.Tag(),
		"CertManagerVersion":                              managementComponents.CertManager.Version,
		"ClusterApiControllerRepository":                  imageRepository(managementComponents.ClusterAPI.Controller),
		"ClusterApiControllerTag":                         managementComponents.ClusterAPI.Controller.Tag(),
		"ClusterApiKubeRbacProxyRepository":               imageRepository(managementComponents.ClusterAPI.KubeProxy),
		"ClusterApiKubeRbacProxyTag":                      managementComponents.ClusterAPI.KubeProxy.Tag(),
		"KubeadmBootstrapControllerRepository":            imageRepository(managementComponents.Bootstrap.Controller),
		"KubeadmBootstrapControllerTag":                   managementComponents.Bootstrap.Controller.Tag(),
		"KubeadmBootstrapKubeRbacProxyRepository":         imageRepository(managementComponents.Bootstrap.KubeProxy),
		"KubeadmBootstrapKubeRbacProxyTag":                managementComponents.Bootstrap.KubeProxy.Tag(),
		"KubeadmControlPlaneControllerRepository":         imageRepository(managementComponents.ControlPlane.Controller),
		"KubeadmControlPlaneControllerTag":                managementComponents.ControlPlane.Controller.Tag(),
		"KubeadmControlPlaneKubeRbacProxyRepository":      imageRepository(managementComponents.ControlPlane.KubeProxy),
		"KubeadmControlPlaneKubeRbacProxyTag":             managementComponents.ControlPlane.KubeProxy.Tag(),
		"ClusterApiVSphereControllerRepository":           imageRepository(managementComponents.VSphere.ClusterAPIController),
		"ClusterApiVSphereControllerTag":                  managementComponents.VSphere.ClusterAPIController.Tag(),
		"ClusterApiNutanixControllerRepository":           imageRepository(managementComponents.Nutanix.ClusterAPIController),
		"ClusterApiNutanixControllerTag":                  managementComponents.Nutanix.ClusterAPIController.Tag(),
		"ClusterApiCloudStackManagerRepository":           imageRepository(managementComponents.CloudStack.ClusterAPIController),
		"ClusterApiCloudStackManagerTag":                  managementComponents.CloudStack.ClusterAPIController.Tag(),
		"ClusterApiCloudStackKubeRbacProxyRepository":     imageRepository(managementComponents.CloudStack.KubeRbacProxy),
		"ClusterApiCloudStackKubeRbacProxyTag":            managementComponents.CloudStack.KubeRbacProxy.Tag(),
		"ClusterApiVSphereKubeRbacProxyRepository":        imageRepository(managementComponents.VSphere.KubeProxy),
		"ClusterApiVSphereKubeRbacProxyTag":               managementComponents.VSphere.KubeProxy.Tag(),
		"DockerKubeRbacProxyRepository":                   imageRepository(managementComponents.Docker.KubeProxy),
		"DockerKubeRbacProxyTag":                          managementComponents.Docker.KubeProxy.Tag(),
		"DockerManagerRepository":                         imageRepository(managementComponents.Docker.Manager),
		"DockerManagerTag":                                managementComponents.Docker.Manager.Tag(),
		"EtcdadmBootstrapProviderRepository":              imageRepository(managementComponents.ExternalEtcdBootstrap.Controller),
		"EtcdadmBootstrapProviderTag":                     managementComponents.ExternalEtcdBootstrap.Controller.Tag(),
		"EtcdadmBootstrapProviderKubeRbacProxyRepository": imageRepository(managementComponents.ExternalEtcdBootstrap.KubeProxy),
		"EtcdadmBootstrapProviderKubeRbacProxyTag":        managementComponents.ExternalEtcdBootstrap.KubeProxy.Tag(),
		"EtcdadmControllerRepository":                     imageRepository(managementComponents.ExternalEtcdController.Controller),
		"EtcdadmControllerTag":                            managementComponents.ExternalEtcdController.Controller.Tag(),
		"EtcdadmControllerKubeRbacProxyRepository":        imageRepository(managementComponents.ExternalEtcdController.KubeProxy),
		"EtcdadmControllerKubeRbacProxyTag":               managementComponents.ExternalEtcdController.KubeProxy.Tag(),
		"DockerProviderVersion":                           managementComponents.Docker.Version,
		"VSphereProviderVersion":                          managementComponents.VSphere.Version,
		"CloudStackProviderVersion":                       managementComponents.CloudStack.Version,
		"SnowProviderVersion":                             managementComponents.Snow.Version,
		"TinkerbellProviderVersion":                       managementComponents.Tinkerbell.Version,
		"NutanixProviderVersion":                          managementComponents.Nutanix.Version,
		"ClusterApiProviderVersion":                       managementComponents.ClusterAPI.Version,
		"KubeadmControlPlaneProviderVersion":              managementComponents.ControlPlane.Version,
		"KubeadmBootstrapProviderVersion":                 managementComponents.Bootstrap.Version,
		"EtcdadmBootstrapProviderVersion":                 managementComponents.ExternalEtcdBootstrap.Version,
		"EtcdadmControllerProviderVersion":                managementComponents.ExternalEtcdController.Version,
		"dir":                                             path + "/" + clusterName + capiPrefix,
	}

	filePath, err := t.WriteToFile(clusterctlConfigTemplate, data, clusterctlConfigFile)
	if err != nil {
		return nil, fmt.Errorf("generating configuration file for clusterctl: %v", err)
	}
	if err := c.buildOverridesLayer(managementComponents, clusterName, provider); err != nil {
		return nil, err
	}

	return &clusterctlConfiguration{
		configFile:               filePath,
		bootstrapVersion:         fmt.Sprintf("%s:%s", kubeadmBootstrapProviderName, managementComponents.Bootstrap.Version),
		controlPlaneVersion:      fmt.Sprintf("kubeadm:%s", managementComponents.ControlPlane.Version),
		coreVersion:              fmt.Sprintf("cluster-api:%s", managementComponents.ClusterAPI.Version),
		etcdadmBootstrapVersion:  fmt.Sprintf("%s:%s", etcdadmBootstrapProviderName, managementComponents.ExternalEtcdBootstrap.Version),
		etcdadmControllerVersion: fmt.Sprintf("%s:%s", etcdadmControllerProviderName, managementComponents.ExternalEtcdController.Version),
	}, nil
}