in pkg/providers/azure.go [131:171]
func (az *AzClient) CreateServicePrincipal(appId string) (string, error) {
log.Debug("creating Azure service principal...")
start := time.Now()
log.Debug(start)
if appId == "" {
return "", errors.New("appId cannot be empty")
}
createdObjectId := ""
createServicePrincipal := func() error {
out, err := az.CommandRunner.RunCommand("az", "ad", "sp", "create", "--id", appId, "--only-show-errors")
if err != nil {
log.Printf("%s\n", out)
return err
}
log.Debug("checking sp was created...")
spObjId, err := az.GetServicePrincipal(appId)
if err != nil {
return errors.New("service principal not found")
}
log.Debug("Service principal created successfully!")
end := time.Since(start)
log.Debug(end)
createdObjectId = spObjId
return nil
}
backoff := bo.NewExponentialBackOff()
backoff.MaxElapsedTime = 5 * time.Second
err := bo.Retry(createServicePrincipal, backoff)
if err != nil {
log.Debug(err)
return "", err
}
return createdObjectId, nil
}