Merge pull request #17374 from influxdata/feat/onboard-additional-users
feat: export transactions to support importing kv as a librarypull/17377/head
commit
b6552f7389
|
@ -21,7 +21,7 @@ func TestOnboardingValidation(t *testing.T) {
|
|||
svc := newKVSVC(t)
|
||||
ts := authorizer.NewTaskService(zaptest.NewLogger(t), mockTaskService(3, 2, 1))
|
||||
|
||||
r, err := svc.OnboardInitalUser(context.Background(), &influxdb.OnboardingRequest{
|
||||
r, err := svc.OnboardInitialUser(context.Background(), &influxdb.OnboardingRequest{
|
||||
User: "Setec Astronomy",
|
||||
Password: "too many secrets",
|
||||
Org: "thing",
|
||||
|
@ -121,7 +121,7 @@ func TestValidations(t *testing.T) {
|
|||
|
||||
svc := newKVSVC(t)
|
||||
|
||||
r, err := svc.OnboardInitalUser(context.Background(), &influxdb.OnboardingRequest{
|
||||
r, err := svc.OnboardInitialUser(context.Background(), &influxdb.OnboardingRequest{
|
||||
User: "Setec Astronomy",
|
||||
Password: "too many secrets",
|
||||
Org: "thing",
|
||||
|
|
|
@ -91,7 +91,7 @@ func setupF(cmd *cobra.Command, args []string) error {
|
|||
return fmt.Errorf("failed to retrieve data to setup instance: %v", err)
|
||||
}
|
||||
|
||||
result, err := s.OnboardInitalUser(context.Background(), req)
|
||||
result, err := s.OnboardInitialUser(context.Background(), req)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to setup instance: %v", err)
|
||||
}
|
||||
|
|
|
@ -131,7 +131,7 @@ func (tl *TestLauncher) SetupOrFail(tb testing.TB) {
|
|||
// OnBoard attempts an on-boarding request.
|
||||
// The on-boarding status is also reset to allow multiple user/org/buckets to be created.
|
||||
func (tl *TestLauncher) OnBoard(req *platform.OnboardingRequest) (*platform.OnboardingResults, error) {
|
||||
res, err := tl.KeyValueService().OnboardInitalUser(context.Background(), req)
|
||||
res, err := tl.KeyValueService().OnboardInitialUser(context.Background(), req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ func TestLauncher_Setup(t *testing.T) {
|
|||
defer l.Shutdown(ctx)
|
||||
|
||||
svc := &http.SetupService{Addr: l.URL()}
|
||||
if results, err := svc.OnboardInitalUser(ctx, &platform.OnboardingRequest{
|
||||
if results, err := svc.OnboardInitialUser(ctx, &platform.OnboardingRequest{
|
||||
User: "USER",
|
||||
Password: "PASSWORD",
|
||||
Org: "ORG",
|
||||
|
|
|
@ -83,7 +83,7 @@ func (h *SetupHandler) handlePostSetup(w http.ResponseWriter, r *http.Request) {
|
|||
h.HandleHTTPError(ctx, err, w)
|
||||
return
|
||||
}
|
||||
results, err := h.OnboardingService.OnboardInitalUser(ctx, req)
|
||||
results, err := h.OnboardingService.OnboardInitialUser(ctx, req)
|
||||
if err != nil {
|
||||
h.HandleHTTPError(ctx, err, w)
|
||||
return
|
||||
|
@ -166,8 +166,8 @@ func (s *SetupService) IsOnboarding(ctx context.Context) (bool, error) {
|
|||
return ir.Allowed, nil
|
||||
}
|
||||
|
||||
// OnboardInitalUser OnboardingResults.
|
||||
func (s *SetupService) OnboardInitalUser(ctx context.Context, or *platform.OnboardingRequest) (*platform.OnboardingResults, error) {
|
||||
// OnboardInitialUser OnboardingResults.
|
||||
func (s *SetupService) OnboardInitialUser(ctx context.Context, or *platform.OnboardingRequest) (*platform.OnboardingResults, error) {
|
||||
u, err := NewURL(s.Addr, prefixSetup)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
|
@ -62,5 +62,5 @@ func initOnboardingService(f platformtesting.OnboardingFields, t *testing.T) (pl
|
|||
return client, done
|
||||
}
|
||||
func TestOnboardingService(t *testing.T) {
|
||||
platformtesting.OnboardInitalUser(initOnboardingService, t)
|
||||
platformtesting.OnboardInitialUser(initOnboardingService, t)
|
||||
}
|
||||
|
|
|
@ -303,6 +303,11 @@ func (s *Service) CreateAuthorization(ctx context.Context, a *influxdb.Authoriza
|
|||
})
|
||||
}
|
||||
|
||||
// CreateAuthorizationTx is used when importing kv as a library
|
||||
func (s *Service) CreateAuthorizationTx(ctx context.Context, tx Tx, a *influxdb.Authorization) error {
|
||||
return s.createAuthorization(ctx, tx, a)
|
||||
}
|
||||
|
||||
func (s *Service) createAuthorization(ctx context.Context, tx Tx, a *influxdb.Authorization) error {
|
||||
if err := a.Valid(); err != nil {
|
||||
return &influxdb.Error{
|
||||
|
|
|
@ -455,6 +455,11 @@ func (s *Service) CreateBucket(ctx context.Context, b *influxdb.Bucket) error {
|
|||
})
|
||||
}
|
||||
|
||||
// CreateBucketTx is used when importing kv as a library
|
||||
func (s *Service) CreateBucketTx(ctx context.Context, tx Tx, b *influxdb.Bucket) (err error) {
|
||||
return s.createBucket(ctx, tx, b)
|
||||
}
|
||||
|
||||
func (s *Service) createBucket(ctx context.Context, tx Tx, b *influxdb.Bucket) (err error) {
|
||||
if b.OrgID.Valid() {
|
||||
span, ctx := tracing.StartSpanFromContext(ctx)
|
||||
|
|
|
@ -94,9 +94,9 @@ func (s *Service) setOnboarded(ctx context.Context, tx Tx) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// OnboardInitalUser OnboardingResults from onboarding request,
|
||||
// OnboardInitialUser OnboardingResults from onboarding request,
|
||||
// update db so this request will be disabled for the second run.
|
||||
func (s *Service) OnboardInitalUser(ctx context.Context, req *influxdb.OnboardingRequest) (*influxdb.OnboardingResults, error) {
|
||||
func (s *Service) OnboardInitialUser(ctx context.Context, req *influxdb.OnboardingRequest) (*influxdb.OnboardingResults, error) {
|
||||
isOnboarding, err := s.IsOnboarding(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
|
@ -11,7 +11,7 @@ import (
|
|||
)
|
||||
|
||||
func TestBoltOnboardingService(t *testing.T) {
|
||||
influxdbtesting.OnboardInitalUser(initBoltOnboardingService, t)
|
||||
influxdbtesting.OnboardInitialUser(initBoltOnboardingService, t)
|
||||
}
|
||||
|
||||
func initBoltOnboardingService(f influxdbtesting.OnboardingFields, t *testing.T) (influxdb.OnboardingService, func()) {
|
||||
|
|
|
@ -279,6 +279,11 @@ func (s *Service) addOrgOwner(ctx context.Context, tx Tx, orgID influxdb.ID) err
|
|||
return s.addResourceOwner(ctx, tx, influxdb.OrgsResourceType, orgID)
|
||||
}
|
||||
|
||||
// CreateOrganizationTx is used when importing kv as a library
|
||||
func (s *Service) CreateOrganizationTx(ctx context.Context, tx Tx, o *influxdb.Organization) (err error) {
|
||||
return s.createOrganization(ctx, tx, o)
|
||||
}
|
||||
|
||||
func (s *Service) createOrganization(ctx context.Context, tx Tx, o *influxdb.Organization) (err error) {
|
||||
if err := s.validOrganizationName(ctx, tx, o); err != nil {
|
||||
return err
|
||||
|
|
|
@ -180,6 +180,11 @@ func (s *Service) CreateUserResourceMapping(ctx context.Context, m *influxdb.Use
|
|||
})
|
||||
}
|
||||
|
||||
// CreateUserResourceMappingTx is used when importing kv as a library
|
||||
func (s *Service) CreateUserResourceMappingTx(ctx context.Context, tx Tx, m *influxdb.UserResourceMapping) error {
|
||||
return s.createUserResourceMapping(ctx, tx, m)
|
||||
}
|
||||
|
||||
func (s *Service) createUserResourceMapping(ctx context.Context, tx Tx, m *influxdb.UserResourceMapping) error {
|
||||
span, ctx := tracing.StartSpanFromContext(ctx)
|
||||
defer span.Finish()
|
||||
|
|
|
@ -230,6 +230,11 @@ func (s *Service) CreateUser(ctx context.Context, u *influxdb.User) error {
|
|||
})
|
||||
}
|
||||
|
||||
// CreateUserTx is used when importing kv as a library
|
||||
func (s *Service) CreateUserTx(ctx context.Context, tx Tx, u *influxdb.User) error {
|
||||
return s.createUser(ctx, tx, u)
|
||||
}
|
||||
|
||||
func (s *Service) createUser(ctx context.Context, tx Tx, u *influxdb.User) error {
|
||||
if err := s.uniqueUserName(ctx, tx, u); err != nil {
|
||||
return err
|
||||
|
|
|
@ -35,7 +35,7 @@ func (s *OnboardingService) IsOnboarding(ctx context.Context) (bool, error) {
|
|||
return s.IsOnboardingFn(ctx)
|
||||
}
|
||||
|
||||
// OnboardInitalUser OnboardingResults.
|
||||
func (s *OnboardingService) OnboardInitalUser(ctx context.Context, req *platform.OnboardingRequest) (*platform.OnboardingResults, error) {
|
||||
// OnboardInitialUser OnboardingResults.
|
||||
func (s *OnboardingService) OnboardInitialUser(ctx context.Context, req *platform.OnboardingRequest) (*platform.OnboardingResults, error) {
|
||||
return s.GenerateFn(ctx, req)
|
||||
}
|
||||
|
|
|
@ -12,8 +12,8 @@ type OnboardingService interface {
|
|||
|
||||
// IsOnboarding determine if onboarding request is allowed.
|
||||
IsOnboarding(ctx context.Context) (bool, error)
|
||||
// OnboardInitalUser OnboardingResults.
|
||||
OnboardInitalUser(ctx context.Context, req *OnboardingRequest) (*OnboardingResults, error)
|
||||
// OnboardInitialUser OnboardingResults.
|
||||
OnboardInitialUser(ctx context.Context, req *OnboardingRequest) (*OnboardingResults, error)
|
||||
}
|
||||
|
||||
// OnboardingResults is a group of elements required for first run.
|
||||
|
|
|
@ -19,8 +19,8 @@ type OnboardingFields struct {
|
|||
IsOnboarding bool
|
||||
}
|
||||
|
||||
// OnboardInitalUser testing
|
||||
func OnboardInitalUser(
|
||||
// OnboardInitialUser testing
|
||||
func OnboardInitialUser(
|
||||
init func(OnboardingFields, *testing.T) (platform.OnboardingService, func()),
|
||||
t *testing.T,
|
||||
) {
|
||||
|
@ -195,7 +195,7 @@ func OnboardInitalUser(
|
|||
s, done := init(tt.fields, t)
|
||||
defer done()
|
||||
ctx := context.Background()
|
||||
results, err := s.OnboardInitalUser(ctx, tt.args.request)
|
||||
results, err := s.OnboardInitialUser(ctx, tt.args.request)
|
||||
if (err != nil) != (tt.wants.errCode != "") {
|
||||
t.Logf("Error: %v", err)
|
||||
t.Fatalf("expected error code '%s' got '%v'", tt.wants.errCode, err)
|
||||
|
|
Loading…
Reference in New Issue