func NewCloud()

in pkg/cloud_provider/lustre/cloud.go [53:84]


func NewCloud(ctx context.Context, configPath, version, endpoint string) (*Cloud, error) {
	configFile, err := maybeReadConfig(configPath)
	if err != nil {
		return nil, err
	}

	tokenSource, err := generateTokenSource(ctx, configFile)
	if err != nil {
		return nil, err
	}

	client, err := newOauthClient(ctx, tokenSource)
	if err != nil {
		return nil, err
	}

	service, err := NewLustreService(ctx, client, version, endpoint)
	if err != nil {
		return nil, err
	}

	project, zone, err := getProjectAndZone(ctx, configFile)
	if err != nil {
		return nil, fmt.Errorf("failed to initialize project information: %w", err)
	}

	return &Cloud{
		LustreService: service,
		Project:       project,
		Zone:          zone,
	}, nil
}