in cmd/cloudshell_open/main.go [523:547]
func waitCredsAvailable(ctx context.Context, pollInterval time.Duration) error {
if os.Getenv("SKIP_GCE_CHECK") == "" && !metadata.OnGCE() {
return nil
}
for {
select {
case <-ctx.Done():
err := ctx.Err()
if err == context.DeadlineExceeded {
return errors.New("credentials were not available in the VM, try re-authenticating if Cloud Shell presents an authentication prompt and click the button again")
}
return err
default:
v, err := metadata.Get("instance/service-accounts/")
if err != nil {
return fmt.Errorf("failed to query metadata service to see if credentials are present: %w", err)
}
if strings.TrimSpace(v) != "" {
return nil
}
time.Sleep(pollInterval)
}
}
}