influxdb/cmd/influxd/upgrade/setup.go

77 lines
2.2 KiB
Go

package upgrade
import (
"context"
"errors"
"fmt"
"path/filepath"
"github.com/influxdata/influx-cli/v2/clients"
"github.com/influxdata/influx-cli/v2/clients/setup"
"github.com/influxdata/influx-cli/v2/config"
"github.com/influxdata/influxdb/v2"
"go.uber.org/zap"
)
func setupAdmin(ctx context.Context, v2 *influxDBv2, req *influxdb.OnboardingRequest) (*influxdb.OnboardingResults, error) {
res, err := v2.onboardSvc.OnboardInitialUser(ctx, req)
if err != nil {
return nil, fmt.Errorf("onboarding error: %w", err)
}
return res, nil
}
func onboardingRequest(cli clients.CLI, options *options) (*influxdb.OnboardingRequest, error) {
setupClient := setup.Client{CLI: cli}
cliReq, err := setupClient.OnboardingRequest(&setup.Params{
Username: options.target.userName,
Password: options.target.password,
AuthToken: options.target.token,
Org: options.target.orgName,
Bucket: options.target.bucket,
Retention: options.target.retention,
Force: options.force,
})
if err != nil {
return nil, err
}
req := influxdb.OnboardingRequest{
User: cliReq.Username,
Org: cliReq.Org,
Bucket: cliReq.Bucket,
}
if cliReq.Password != nil {
req.Password = *cliReq.Password
}
if cliReq.RetentionPeriodSeconds != nil {
req.RetentionPeriodSeconds = *cliReq.RetentionPeriodSeconds
}
if cliReq.Token != nil {
req.Token = *cliReq.Token
}
return &req, nil
}
func saveLocalConfig(sourceOptions *optionsV1, targetOptions *optionsV2, log *zap.Logger) error {
dPath, dir := targetOptions.cliConfigsPath, filepath.Dir(targetOptions.cliConfigsPath)
if dPath == "" || dir == "" {
return errors.New("a valid configurations path must be provided")
}
localConfigSVC := config.NewLocalConfigService(targetOptions.cliConfigsPath)
p := config.DefaultConfig
p.Token = targetOptions.token
p.Org = targetOptions.orgName
if sourceOptions.dbURL != "" {
p.Host = sourceOptions.dbURL
}
if _, err := localConfigSVC.CreateConfig(p); err != nil {
log.Error("failed to save CLI config", zap.String("path", dPath), zap.Error(err))
return errors.New("failed to save CLI config")
}
log.Info("CLI config has been stored.", zap.String("path", dPath))
return nil
}