func()

in pkg/agent/bakerapi.go [38:86]


func (agentBaker *agentBakerImpl) GetNodeBootstrapping(ctx context.Context, config *datamodel.NodeBootstrappingConfiguration) (*datamodel.NodeBootstrapping, error) {
	// validate and fix input before passing config to the template generator.
	if config.AgentPoolProfile.IsWindows() {
		validateAndSetWindowsNodeBootstrappingConfiguration(config)
	} else {
		ValidateAndSetLinuxNodeBootstrappingConfiguration(config)
	}

	templateGenerator := InitializeTemplateGenerator()
	nodeBootstrapping := &datamodel.NodeBootstrapping{
		CustomData: templateGenerator.getNodeBootstrappingPayload(config),
		CSE:        templateGenerator.getNodeBootstrappingCmd(config),
	}

	distro := config.AgentPoolProfile.Distro
	if distro == datamodel.CustomizedWindowsOSImage || distro == datamodel.CustomizedImage || distro == datamodel.CustomizedImageKata {
		return nodeBootstrapping, nil
	}

	osImageConfigMap, hasCloud := datamodel.AzureCloudToOSImageMap[config.CloudSpecConfig.CloudName]
	if !hasCloud {
		return nil, fmt.Errorf("don't have settings for cloud %s", config.CloudSpecConfig.CloudName)
	}

	if osImageConfig, hasImage := osImageConfigMap[distro]; hasImage {
		nodeBootstrapping.OSImageConfig = &osImageConfig
	}

	sigAzureEnvironmentSpecConfig, err := datamodel.GetSIGAzureCloudSpecConfig(config.SIGConfig, config.ContainerService.Location)
	if err != nil {
		return nil, err
	}

	nodeBootstrapping.SigImageConfig = findSIGImageConfig(sigAzureEnvironmentSpecConfig, distro)
	if nodeBootstrapping.SigImageConfig == nil && nodeBootstrapping.OSImageConfig == nil {
		return nil, fmt.Errorf("can't find image for distro %s", distro)
	}

	if !config.AgentPoolProfile.IsWindows() {
		// handle node image version toggle/override
		e := toggles.NewEntityFromNodeBootstrappingConfiguration(config)
		imageVersion := agentBaker.toggles.GetLinuxNodeImageVersion(e, distro)
		if imageVersion != "" {
			nodeBootstrapping.SigImageConfig.Version = imageVersion
		}
	}

	return nodeBootstrapping, nil
}