Merge pull request #17374 from influxdata/feat/onboard-additional-users

feat: export transactions to support importing kv as a library
pull/17377/head
Marc Delagrammatikas 2020-03-20 13:56:01 -07:00 committed by GitHub
commit b6552f7389
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 44 additions and 19 deletions

View File

@ -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",

View File

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

View File

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

View File

@ -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",

View File

@ -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

View File

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

View File

@ -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{

View File

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

View File

@ -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

View File

@ -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()) {

View File

@ -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

View File

@ -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()

View File

@ -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

View File

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

View File

@ -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.

View File

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