func()

in pkg/providers/azure.go [88:127]


func (az *AzClient) CreateAzApp(appName string) (string, error) {
	log.Debug("Commencing Azure app creation...")
	start := time.Now()
	log.Debug(start)
	createdAppId := ""

	createApp := func() error {
		out, err := az.CommandRunner.RunCommand("az", "ad", "app", "create", "--only-show-errors", "--display-name", appName)
		if err != nil {
			log.Printf("%s\n", out)
			return err
		}

		if az.AzAppExists(appName) {
			var azApp map[string]interface{}
			if err := json.Unmarshal([]byte(out), &azApp); err != nil {
				return err
			}
			createdAppId = fmt.Sprint(azApp["appId"])

			end := time.Since(start)
			log.Debugf("App with appId '%s' created successfully!", createdAppId)
			log.Debug(end)
			return nil
		}

		return errors.New("app creation time has exceeded max elapsed time for exponential backoff")
	}

	backoff := bo.NewExponentialBackOff()
	backoff.MaxElapsedTime = 5 * time.Second

	err := bo.Retry(createApp, backoff)
	if err != nil {
		log.Debug(err)
		return "", err
	}

	return createdAppId, nil
}