func main()

in credentialproviderpackage/cmd/aws-credential-provider/main.go [28:118]


func main() {
	var configurator cfg.Configurator
	var err error
	osType := strings.ToLower(os.Getenv("OS_TYPE"))
	if osType == "" {
		log.ErrorLogger.Println("Missing Environment Variable OS_TYPE")
		os.Exit(1)
	}
	secretPath, err := awscred.GetAwsConfigPath()
	if err != nil {
		log.ErrorLogger.Fatal(err)
	}
	profile := os.Getenv("AWS_PROFILE")
	if profile == "" {
		profile = awsProfile
	}
	config := createCredentialProviderConfigOptions()
	if osType == bottleRocket {
		configurator, err = bottlerocket.NewBottleRocketConfigurator(socketPath)
		if err != nil {
			log.ErrorLogger.Fatal(err)
		}
	} else {
		configurator = linux.NewLinuxConfigurator()
	}

	configurator.Initialize(config)
	err = configurator.UpdateAWSCredentials(secretPath, profile)
	if err != nil {
		log.ErrorLogger.Fatal(err)
	}
	log.InfoLogger.Println("Aws credentials configured")

	err = configurator.UpdateCredentialProvider(profile)
	if err != nil {
		log.ErrorLogger.Fatal(err)
	}
	log.InfoLogger.Println("Credential Provider Configured")

	err = configurator.CommitChanges()
	if err != nil {
		log.ErrorLogger.Fatal(err)
	}

	log.InfoLogger.Println("Kubelet Restarted")

	// Creating watcher for credentials
	watcher, err := fsnotify.NewWatcher()
	if err != nil {
		log.ErrorLogger.Fatal(err)
	}
	defer watcher.Close()

	// Start listening for changes to the aws credentials
	go func() {
		for {
			select {
			case event, ok := <-watcher.Events:
				if !ok {
					return
				}
				if event.Has(fsnotify.Create) {
					if event.Name == credWatchData {
						secretPath, err := awscred.GetAwsConfigPath()
						if err != nil {
							log.ErrorLogger.Fatal(err)
						}
						err = configurator.UpdateAWSCredentials(secretPath, profile)
						if err != nil {
							log.ErrorLogger.Fatal(err)
						}
						log.InfoLogger.Println("Aws credentials successfully changed")
					}
				}
			case err, ok := <-watcher.Errors:
				if !ok {
					return
				}
				log.WarningLogger.Printf("filewatcher error: %v", err)
			}
		}
	}()

	err = watcher.Add(credWatchPath)
	if err != nil {
		log.ErrorLogger.Fatal(err)
	}

	// Block main goroutine forever.
	<-make(chan struct{})
}