func waitCredsAvailable()

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)
		}
	}
}