chore: remove remote validation code (#22901)
* chore: remove remote validation code * chore: remove unused function * chore: add todo for updating swagger ref * chore: update swagger refpull/22905/head
parent
fea3037c6b
commit
b9b86a19a3
|
@ -1,17 +0,0 @@
|
||||||
package internal
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
|
|
||||||
ierrors "github.com/influxdata/influxdb/v2/kit/platform/errors"
|
|
||||||
)
|
|
||||||
|
|
||||||
func NewValidator() *stubValidator {
|
|
||||||
return &stubValidator{}
|
|
||||||
}
|
|
||||||
|
|
||||||
type stubValidator struct{}
|
|
||||||
|
|
||||||
func (n stubValidator) ValidateRemoteConnectionHTTPConfig(context.Context, *RemoteConnectionHTTPConfig) error {
|
|
||||||
return &ierrors.Error{Code: ierrors.ENotImplemented, Msg: "remote validation not implemented"}
|
|
||||||
}
|
|
|
@ -1,16 +1,16 @@
|
||||||
// Code generated by MockGen. DO NOT EDIT.
|
// Code generated by MockGen. DO NOT EDIT.
|
||||||
// Source: github.com/influxdata/influxdb/v2 (interfaces: RemoteConnectionService)
|
// Source: github.com/influxdata/influxdb/v2/remotes/transport (interfaces: RemoteConnectionService)
|
||||||
|
|
||||||
// Package mock is a generated GoMock package.
|
// Package mock is a generated GoMock package.
|
||||||
package mock
|
package mock
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
context "context"
|
||||||
"reflect"
|
reflect "reflect"
|
||||||
|
|
||||||
"github.com/golang/mock/gomock"
|
gomock "github.com/golang/mock/gomock"
|
||||||
"github.com/influxdata/influxdb/v2"
|
influxdb "github.com/influxdata/influxdb/v2"
|
||||||
"github.com/influxdata/influxdb/v2/kit/platform"
|
platform "github.com/influxdata/influxdb/v2/kit/platform"
|
||||||
)
|
)
|
||||||
|
|
||||||
// MockRemoteConnectionService is a mock of RemoteConnectionService interface.
|
// MockRemoteConnectionService is a mock of RemoteConnectionService interface.
|
||||||
|
@ -109,45 +109,3 @@ func (mr *MockRemoteConnectionServiceMockRecorder) UpdateRemoteConnection(arg0,
|
||||||
mr.mock.ctrl.T.Helper()
|
mr.mock.ctrl.T.Helper()
|
||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRemoteConnection", reflect.TypeOf((*MockRemoteConnectionService)(nil).UpdateRemoteConnection), arg0, arg1, arg2)
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateRemoteConnection", reflect.TypeOf((*MockRemoteConnectionService)(nil).UpdateRemoteConnection), arg0, arg1, arg2)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ValidateNewRemoteConnection mocks base method.
|
|
||||||
func (m *MockRemoteConnectionService) ValidateNewRemoteConnection(arg0 context.Context, arg1 influxdb.CreateRemoteConnectionRequest) error {
|
|
||||||
m.ctrl.T.Helper()
|
|
||||||
ret := m.ctrl.Call(m, "ValidateNewRemoteConnection", arg0, arg1)
|
|
||||||
ret0, _ := ret[0].(error)
|
|
||||||
return ret0
|
|
||||||
}
|
|
||||||
|
|
||||||
// ValidateNewRemoteConnection indicates an expected call of ValidateNewRemoteConnection.
|
|
||||||
func (mr *MockRemoteConnectionServiceMockRecorder) ValidateNewRemoteConnection(arg0, arg1 interface{}) *gomock.Call {
|
|
||||||
mr.mock.ctrl.T.Helper()
|
|
||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidateNewRemoteConnection", reflect.TypeOf((*MockRemoteConnectionService)(nil).ValidateNewRemoteConnection), arg0, arg1)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ValidateRemoteConnection mocks base method.
|
|
||||||
func (m *MockRemoteConnectionService) ValidateRemoteConnection(arg0 context.Context, arg1 platform.ID) error {
|
|
||||||
m.ctrl.T.Helper()
|
|
||||||
ret := m.ctrl.Call(m, "ValidateRemoteConnection", arg0, arg1)
|
|
||||||
ret0, _ := ret[0].(error)
|
|
||||||
return ret0
|
|
||||||
}
|
|
||||||
|
|
||||||
// ValidateRemoteConnection indicates an expected call of ValidateRemoteConnection.
|
|
||||||
func (mr *MockRemoteConnectionServiceMockRecorder) ValidateRemoteConnection(arg0, arg1 interface{}) *gomock.Call {
|
|
||||||
mr.mock.ctrl.T.Helper()
|
|
||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidateRemoteConnection", reflect.TypeOf((*MockRemoteConnectionService)(nil).ValidateRemoteConnection), arg0, arg1)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ValidateUpdatedRemoteConnection mocks base method.
|
|
||||||
func (m *MockRemoteConnectionService) ValidateUpdatedRemoteConnection(arg0 context.Context, arg1 platform.ID, arg2 influxdb.UpdateRemoteConnectionRequest) error {
|
|
||||||
m.ctrl.T.Helper()
|
|
||||||
ret := m.ctrl.Call(m, "ValidateUpdatedRemoteConnection", arg0, arg1, arg2)
|
|
||||||
ret0, _ := ret[0].(error)
|
|
||||||
return ret0
|
|
||||||
}
|
|
||||||
|
|
||||||
// ValidateUpdatedRemoteConnection indicates an expected call of ValidateUpdatedRemoteConnection.
|
|
||||||
func (mr *MockRemoteConnectionServiceMockRecorder) ValidateUpdatedRemoteConnection(arg0, arg1, arg2 interface{}) *gomock.Call {
|
|
||||||
mr.mock.ctrl.T.Helper()
|
|
||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidateUpdatedRemoteConnection", reflect.TypeOf((*MockRemoteConnectionService)(nil).ValidateUpdatedRemoteConnection), arg0, arg1, arg2)
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,50 +0,0 @@
|
||||||
// Code generated by MockGen. DO NOT EDIT.
|
|
||||||
// Source: github.com/influxdata/influxdb/v2/remotes (interfaces: RemoteConnectionValidator)
|
|
||||||
|
|
||||||
// Package mock is a generated GoMock package.
|
|
||||||
package mock
|
|
||||||
|
|
||||||
import (
|
|
||||||
context "context"
|
|
||||||
reflect "reflect"
|
|
||||||
|
|
||||||
gomock "github.com/golang/mock/gomock"
|
|
||||||
internal "github.com/influxdata/influxdb/v2/remotes/internal"
|
|
||||||
)
|
|
||||||
|
|
||||||
// MockRemoteConnectionValidator is a mock of RemoteConnectionValidator interface.
|
|
||||||
type MockRemoteConnectionValidator struct {
|
|
||||||
ctrl *gomock.Controller
|
|
||||||
recorder *MockRemoteConnectionValidatorMockRecorder
|
|
||||||
}
|
|
||||||
|
|
||||||
// MockRemoteConnectionValidatorMockRecorder is the mock recorder for MockRemoteConnectionValidator.
|
|
||||||
type MockRemoteConnectionValidatorMockRecorder struct {
|
|
||||||
mock *MockRemoteConnectionValidator
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewMockRemoteConnectionValidator creates a new mock instance.
|
|
||||||
func NewMockRemoteConnectionValidator(ctrl *gomock.Controller) *MockRemoteConnectionValidator {
|
|
||||||
mock := &MockRemoteConnectionValidator{ctrl: ctrl}
|
|
||||||
mock.recorder = &MockRemoteConnectionValidatorMockRecorder{mock}
|
|
||||||
return mock
|
|
||||||
}
|
|
||||||
|
|
||||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
|
||||||
func (m *MockRemoteConnectionValidator) EXPECT() *MockRemoteConnectionValidatorMockRecorder {
|
|
||||||
return m.recorder
|
|
||||||
}
|
|
||||||
|
|
||||||
// ValidateRemoteConnectionHTTPConfig mocks base method.
|
|
||||||
func (m *MockRemoteConnectionValidator) ValidateRemoteConnectionHTTPConfig(arg0 context.Context, arg1 *internal.RemoteConnectionHTTPConfig) error {
|
|
||||||
m.ctrl.T.Helper()
|
|
||||||
ret := m.ctrl.Call(m, "ValidateRemoteConnectionHTTPConfig", arg0, arg1)
|
|
||||||
ret0, _ := ret[0].(error)
|
|
||||||
return ret0
|
|
||||||
}
|
|
||||||
|
|
||||||
// ValidateRemoteConnectionHTTPConfig indicates an expected call of ValidateRemoteConnectionHTTPConfig.
|
|
||||||
func (mr *MockRemoteConnectionValidatorMockRecorder) ValidateRemoteConnectionHTTPConfig(arg0, arg1 interface{}) *gomock.Call {
|
|
||||||
mr.mock.ctrl.T.Helper()
|
|
||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidateRemoteConnectionHTTPConfig", reflect.TypeOf((*MockRemoteConnectionValidator)(nil).ValidateRemoteConnectionHTTPConfig), arg0, arg1)
|
|
||||||
}
|
|
|
@ -9,7 +9,6 @@ import (
|
||||||
"github.com/influxdata/influxdb/v2"
|
"github.com/influxdata/influxdb/v2"
|
||||||
"github.com/influxdata/influxdb/v2/kit/platform"
|
"github.com/influxdata/influxdb/v2/kit/platform"
|
||||||
ierrors "github.com/influxdata/influxdb/v2/kit/platform/errors"
|
ierrors "github.com/influxdata/influxdb/v2/kit/platform/errors"
|
||||||
"github.com/influxdata/influxdb/v2/remotes/internal"
|
|
||||||
"github.com/influxdata/influxdb/v2/snowflake"
|
"github.com/influxdata/influxdb/v2/snowflake"
|
||||||
"github.com/influxdata/influxdb/v2/sqlite"
|
"github.com/influxdata/influxdb/v2/sqlite"
|
||||||
)
|
)
|
||||||
|
@ -21,22 +20,16 @@ var (
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
type RemoteConnectionValidator interface {
|
|
||||||
ValidateRemoteConnectionHTTPConfig(context.Context, *internal.RemoteConnectionHTTPConfig) error
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewService(store *sqlite.SqlStore) *service {
|
func NewService(store *sqlite.SqlStore) *service {
|
||||||
return &service{
|
return &service{
|
||||||
store: store,
|
store: store,
|
||||||
idGenerator: snowflake.NewIDGenerator(),
|
idGenerator: snowflake.NewIDGenerator(),
|
||||||
validator: internal.NewValidator(),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type service struct {
|
type service struct {
|
||||||
store *sqlite.SqlStore
|
store *sqlite.SqlStore
|
||||||
idGenerator platform.IDGenerator
|
idGenerator platform.IDGenerator
|
||||||
validator RemoteConnectionValidator
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s service) ListRemoteConnections(ctx context.Context, filter influxdb.RemoteConnectionListFilter) (*influxdb.RemoteConnections, error) {
|
func (s service) ListRemoteConnections(ctx context.Context, filter influxdb.RemoteConnectionListFilter) (*influxdb.RemoteConnections, error) {
|
||||||
|
@ -95,24 +88,6 @@ func (s service) CreateRemoteConnection(ctx context.Context, request influxdb.Cr
|
||||||
return &rc, nil
|
return &rc, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s service) ValidateNewRemoteConnection(ctx context.Context, request influxdb.CreateRemoteConnectionRequest) error {
|
|
||||||
config := internal.RemoteConnectionHTTPConfig{
|
|
||||||
RemoteURL: request.RemoteURL,
|
|
||||||
RemoteToken: request.RemoteToken,
|
|
||||||
RemoteOrgID: request.RemoteOrgID,
|
|
||||||
AllowInsecureTLS: request.AllowInsecureTLS,
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := s.validator.ValidateRemoteConnectionHTTPConfig(ctx, &config); err != nil {
|
|
||||||
return &ierrors.Error{
|
|
||||||
Code: ierrors.EInvalid,
|
|
||||||
Msg: "remote parameters fail validation",
|
|
||||||
Err: err,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s service) GetRemoteConnection(ctx context.Context, id platform.ID) (*influxdb.RemoteConnection, error) {
|
func (s service) GetRemoteConnection(ctx context.Context, id platform.ID) (*influxdb.RemoteConnection, error) {
|
||||||
q := sq.Select("id", "org_id", "name", "description", "remote_url", "remote_org_id", "allow_insecure_tls").
|
q := sq.Select("id", "org_id", "name", "description", "remote_url", "remote_org_id", "allow_insecure_tls").
|
||||||
From("remotes").
|
From("remotes").
|
||||||
|
@ -175,34 +150,6 @@ func (s service) UpdateRemoteConnection(ctx context.Context, id platform.ID, req
|
||||||
return &rc, nil
|
return &rc, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s service) ValidateUpdatedRemoteConnection(ctx context.Context, id platform.ID, request influxdb.UpdateRemoteConnectionRequest) error {
|
|
||||||
config, err := s.getConnectionHTTPConfig(ctx, id)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if request.AllowInsecureTLS != nil {
|
|
||||||
config.AllowInsecureTLS = *request.AllowInsecureTLS
|
|
||||||
}
|
|
||||||
if request.RemoteOrgID != nil {
|
|
||||||
config.RemoteOrgID = *request.RemoteOrgID
|
|
||||||
}
|
|
||||||
if request.RemoteToken != nil {
|
|
||||||
config.RemoteToken = *request.RemoteToken
|
|
||||||
}
|
|
||||||
if request.RemoteURL != nil {
|
|
||||||
config.RemoteURL = *request.RemoteURL
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := s.validator.ValidateRemoteConnectionHTTPConfig(ctx, config); err != nil {
|
|
||||||
return &ierrors.Error{
|
|
||||||
Code: ierrors.EInvalid,
|
|
||||||
Msg: "validation fails after applying update",
|
|
||||||
Err: err,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s service) DeleteRemoteConnection(ctx context.Context, id platform.ID) error {
|
func (s service) DeleteRemoteConnection(ctx context.Context, id platform.ID) error {
|
||||||
s.store.Mu.Lock()
|
s.store.Mu.Lock()
|
||||||
defer s.store.Mu.Unlock()
|
defer s.store.Mu.Unlock()
|
||||||
|
@ -222,38 +169,3 @@ func (s service) DeleteRemoteConnection(ctx context.Context, id platform.ID) err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s service) ValidateRemoteConnection(ctx context.Context, id platform.ID) error {
|
|
||||||
config, err := s.getConnectionHTTPConfig(ctx, id)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if err := s.validator.ValidateRemoteConnectionHTTPConfig(ctx, config); err != nil {
|
|
||||||
return &ierrors.Error{
|
|
||||||
Code: ierrors.EInvalid,
|
|
||||||
Msg: "remote failed validation",
|
|
||||||
Err: err,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s service) getConnectionHTTPConfig(ctx context.Context, id platform.ID) (*internal.RemoteConnectionHTTPConfig, error) {
|
|
||||||
q := sq.Select("remote_url", "remote_api_token", "remote_org_id", "allow_insecure_tls").
|
|
||||||
From("remotes").
|
|
||||||
Where(sq.Eq{"id": id})
|
|
||||||
|
|
||||||
query, args, err := q.ToSql()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
var rc internal.RemoteConnectionHTTPConfig
|
|
||||||
if err := s.store.DB.GetContext(ctx, &rc, query, args...); err != nil {
|
|
||||||
if errors.Is(err, sql.ErrNoRows) {
|
|
||||||
return nil, errRemoteNotFound
|
|
||||||
}
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return &rc, nil
|
|
||||||
}
|
|
||||||
|
|
|
@ -2,15 +2,11 @@ package remotes
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/golang/mock/gomock"
|
|
||||||
"github.com/influxdata/influxdb/v2"
|
"github.com/influxdata/influxdb/v2"
|
||||||
"github.com/influxdata/influxdb/v2/kit/platform"
|
"github.com/influxdata/influxdb/v2/kit/platform"
|
||||||
"github.com/influxdata/influxdb/v2/mock"
|
"github.com/influxdata/influxdb/v2/mock"
|
||||||
"github.com/influxdata/influxdb/v2/remotes/internal"
|
|
||||||
remotesMock "github.com/influxdata/influxdb/v2/remotes/mock"
|
|
||||||
"github.com/influxdata/influxdb/v2/sqlite"
|
"github.com/influxdata/influxdb/v2/sqlite"
|
||||||
"github.com/influxdata/influxdb/v2/sqlite/migrations"
|
"github.com/influxdata/influxdb/v2/sqlite/migrations"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
@ -40,12 +36,6 @@ var (
|
||||||
RemoteOrgID: connection.RemoteOrgID,
|
RemoteOrgID: connection.RemoteOrgID,
|
||||||
AllowInsecureTLS: connection.AllowInsecureTLS,
|
AllowInsecureTLS: connection.AllowInsecureTLS,
|
||||||
}
|
}
|
||||||
httpConfig = internal.RemoteConnectionHTTPConfig{
|
|
||||||
RemoteURL: connection.RemoteURL,
|
|
||||||
RemoteToken: fakeToken,
|
|
||||||
RemoteOrgID: connection.RemoteOrgID,
|
|
||||||
AllowInsecureTLS: connection.AllowInsecureTLS,
|
|
||||||
}
|
|
||||||
fakeToken2 = "qrstuvwxyz"
|
fakeToken2 = "qrstuvwxyz"
|
||||||
fals = false
|
fals = false
|
||||||
updateReq = influxdb.UpdateRemoteConnectionRequest{
|
updateReq = influxdb.UpdateRemoteConnectionRequest{
|
||||||
|
@ -61,25 +51,18 @@ var (
|
||||||
RemoteOrgID: connection.RemoteOrgID,
|
RemoteOrgID: connection.RemoteOrgID,
|
||||||
AllowInsecureTLS: *updateReq.AllowInsecureTLS,
|
AllowInsecureTLS: *updateReq.AllowInsecureTLS,
|
||||||
}
|
}
|
||||||
updatedHttpConfig = internal.RemoteConnectionHTTPConfig{
|
|
||||||
RemoteURL: updatedConnection.RemoteURL,
|
|
||||||
RemoteToken: fakeToken2,
|
|
||||||
RemoteOrgID: updatedConnection.RemoteOrgID,
|
|
||||||
AllowInsecureTLS: updatedConnection.AllowInsecureTLS,
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestCreateAndGetConnection(t *testing.T) {
|
func TestCreateAndGetConnection(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
svc, mockValidator, clean := newTestService(t)
|
svc, clean := newTestService(t)
|
||||||
defer clean(t)
|
defer clean(t)
|
||||||
|
|
||||||
// Getting or validating an invalid ID should return an error.
|
// Getting an invalid ID should return an error.
|
||||||
got, err := svc.GetRemoteConnection(ctx, initID)
|
got, err := svc.GetRemoteConnection(ctx, initID)
|
||||||
require.Equal(t, errRemoteNotFound, err)
|
require.Equal(t, errRemoteNotFound, err)
|
||||||
require.Nil(t, got)
|
require.Nil(t, got)
|
||||||
require.Equal(t, errRemoteNotFound, svc.ValidateRemoteConnection(ctx, initID))
|
|
||||||
|
|
||||||
// Create a connection, check the results.
|
// Create a connection, check the results.
|
||||||
created, err := svc.CreateRemoteConnection(ctx, createReq)
|
created, err := svc.CreateRemoteConnection(ctx, createReq)
|
||||||
|
@ -90,51 +73,12 @@ func TestCreateAndGetConnection(t *testing.T) {
|
||||||
got, err = svc.GetRemoteConnection(ctx, initID)
|
got, err = svc.GetRemoteConnection(ctx, initID)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, connection, *got)
|
require.Equal(t, connection, *got)
|
||||||
|
|
||||||
// Validate the connection; this is mostly a no-op, for this test, but it allows
|
|
||||||
// us to assert that the auth token was properly persisted.
|
|
||||||
fakeErr := errors.New("O NO")
|
|
||||||
mockValidator.EXPECT().ValidateRemoteConnectionHTTPConfig(gomock.Any(), &httpConfig).Return(fakeErr)
|
|
||||||
require.Contains(t, svc.ValidateRemoteConnection(ctx, initID).Error(), fakeErr.Error())
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestValidateConnectionWithoutPersisting(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
|
|
||||||
t.Run("error", func(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
|
|
||||||
svc, mockValidator, clean := newTestService(t)
|
|
||||||
defer clean(t)
|
|
||||||
|
|
||||||
fakeErr := errors.New("O NO")
|
|
||||||
mockValidator.EXPECT().ValidateRemoteConnectionHTTPConfig(gomock.Any(), &httpConfig).Return(fakeErr)
|
|
||||||
require.Contains(t, svc.ValidateNewRemoteConnection(ctx, createReq).Error(), fakeErr.Error())
|
|
||||||
|
|
||||||
got, err := svc.GetRemoteConnection(ctx, initID)
|
|
||||||
require.Equal(t, errRemoteNotFound, err)
|
|
||||||
require.Nil(t, got)
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("no error", func(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
|
|
||||||
svc, mockValidator, clean := newTestService(t)
|
|
||||||
defer clean(t)
|
|
||||||
|
|
||||||
mockValidator.EXPECT().ValidateRemoteConnectionHTTPConfig(gomock.Any(), &httpConfig).Return(nil)
|
|
||||||
require.NoError(t, svc.ValidateNewRemoteConnection(ctx, createReq))
|
|
||||||
|
|
||||||
got, err := svc.GetRemoteConnection(ctx, initID)
|
|
||||||
require.Equal(t, errRemoteNotFound, err)
|
|
||||||
require.Nil(t, got)
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUpdateAndGetConnection(t *testing.T) {
|
func TestUpdateAndGetConnection(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
svc, mockValidator, clean := newTestService(t)
|
svc, clean := newTestService(t)
|
||||||
defer clean(t)
|
defer clean(t)
|
||||||
|
|
||||||
// Updating a nonexistent ID fails.
|
// Updating a nonexistent ID fails.
|
||||||
|
@ -152,15 +96,16 @@ func TestUpdateAndGetConnection(t *testing.T) {
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, updatedConnection, *updated)
|
require.Equal(t, updatedConnection, *updated)
|
||||||
|
|
||||||
// Validate the updated connection to check that the new auth token persisted.
|
// Read the updated connection and assert it matches the updated response.
|
||||||
mockValidator.EXPECT().ValidateRemoteConnectionHTTPConfig(gomock.Any(), &updatedHttpConfig).Return(nil)
|
got, err := svc.GetRemoteConnection(ctx, initID)
|
||||||
require.NoError(t, svc.ValidateRemoteConnection(ctx, initID))
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, updated, got)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUpdateNoop(t *testing.T) {
|
func TestUpdateNoop(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
svc, _, clean := newTestService(t)
|
svc, clean := newTestService(t)
|
||||||
defer clean(t)
|
defer clean(t)
|
||||||
|
|
||||||
// Create a connection.
|
// Create a connection.
|
||||||
|
@ -172,67 +117,17 @@ func TestUpdateNoop(t *testing.T) {
|
||||||
updated, err := svc.UpdateRemoteConnection(ctx, initID, influxdb.UpdateRemoteConnectionRequest{})
|
updated, err := svc.UpdateRemoteConnection(ctx, initID, influxdb.UpdateRemoteConnectionRequest{})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, connection, *updated)
|
require.Equal(t, connection, *updated)
|
||||||
}
|
|
||||||
|
|
||||||
func TestValidateUpdatedConnectionWithoutPersisting(t *testing.T) {
|
// Read the updated connection and assert it matches the updated response.
|
||||||
t.Parallel()
|
got, err := svc.GetRemoteConnection(ctx, initID)
|
||||||
|
require.NoError(t, err)
|
||||||
setup := func(t *testing.T, svc *service) {
|
require.Equal(t, updated, got)
|
||||||
// Validating an update to a nonexistent ID fails.
|
|
||||||
updated, err := svc.UpdateRemoteConnection(ctx, initID, updateReq)
|
|
||||||
require.Equal(t, errRemoteNotFound, err)
|
|
||||||
require.Nil(t, updated)
|
|
||||||
|
|
||||||
// Create a connection.
|
|
||||||
created, err := svc.CreateRemoteConnection(ctx, createReq)
|
|
||||||
require.NoError(t, err)
|
|
||||||
require.Equal(t, connection, *created)
|
|
||||||
}
|
|
||||||
fakeErr := errors.New("O NO")
|
|
||||||
|
|
||||||
t.Run("update causes error", func(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
|
|
||||||
svc, mockValidator, clean := newTestService(t)
|
|
||||||
defer clean(t)
|
|
||||||
setup(t, svc)
|
|
||||||
|
|
||||||
mockValidator.EXPECT().ValidateRemoteConnectionHTTPConfig(gomock.Any(), &updatedHttpConfig).Return(fakeErr)
|
|
||||||
mockValidator.EXPECT().ValidateRemoteConnectionHTTPConfig(gomock.Any(), &httpConfig).Return(nil)
|
|
||||||
|
|
||||||
require.Contains(t, svc.ValidateUpdatedRemoteConnection(ctx, initID, updateReq).Error(), fakeErr.Error())
|
|
||||||
|
|
||||||
// Ensure the update wasn't applied.
|
|
||||||
got, err := svc.GetRemoteConnection(ctx, initID)
|
|
||||||
require.NoError(t, err)
|
|
||||||
require.Equal(t, connection, *got)
|
|
||||||
require.NoError(t, svc.ValidateRemoteConnection(ctx, initID))
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("update fixes error", func(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
|
|
||||||
svc, mockValidator, clean := newTestService(t)
|
|
||||||
defer clean(t)
|
|
||||||
setup(t, svc)
|
|
||||||
|
|
||||||
mockValidator.EXPECT().ValidateRemoteConnectionHTTPConfig(gomock.Any(), &updatedHttpConfig).Return(nil)
|
|
||||||
mockValidator.EXPECT().ValidateRemoteConnectionHTTPConfig(gomock.Any(), &httpConfig).Return(fakeErr)
|
|
||||||
|
|
||||||
require.NoError(t, svc.ValidateUpdatedRemoteConnection(ctx, initID, updateReq))
|
|
||||||
|
|
||||||
// Ensure the update wasn't applied.
|
|
||||||
got, err := svc.GetRemoteConnection(ctx, initID)
|
|
||||||
require.NoError(t, err)
|
|
||||||
require.Equal(t, connection, *got)
|
|
||||||
require.Contains(t, svc.ValidateRemoteConnection(ctx, initID).Error(), fakeErr.Error())
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDeleteConnection(t *testing.T) {
|
func TestDeleteConnection(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
svc, _, clean := newTestService(t)
|
svc, clean := newTestService(t)
|
||||||
defer clean(t)
|
defer clean(t)
|
||||||
|
|
||||||
// Deleting a nonexistent ID should return an error.
|
// Deleting a nonexistent ID should return an error.
|
||||||
|
@ -271,7 +166,7 @@ func TestListConnections(t *testing.T) {
|
||||||
t.Run("list all", func(t *testing.T) {
|
t.Run("list all", func(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
svc, _, clean := newTestService(t)
|
svc, clean := newTestService(t)
|
||||||
defer clean(t)
|
defer clean(t)
|
||||||
allConns := setup(t, svc)
|
allConns := setup(t, svc)
|
||||||
|
|
||||||
|
@ -283,7 +178,7 @@ func TestListConnections(t *testing.T) {
|
||||||
t.Run("list by name", func(t *testing.T) {
|
t.Run("list by name", func(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
svc, _, clean := newTestService(t)
|
svc, clean := newTestService(t)
|
||||||
defer clean(t)
|
defer clean(t)
|
||||||
allConns := setup(t, svc)
|
allConns := setup(t, svc)
|
||||||
|
|
||||||
|
@ -298,7 +193,7 @@ func TestListConnections(t *testing.T) {
|
||||||
t.Run("list by URL", func(t *testing.T) {
|
t.Run("list by URL", func(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
svc, _, clean := newTestService(t)
|
svc, clean := newTestService(t)
|
||||||
defer clean(t)
|
defer clean(t)
|
||||||
allConns := setup(t, svc)
|
allConns := setup(t, svc)
|
||||||
|
|
||||||
|
@ -313,7 +208,7 @@ func TestListConnections(t *testing.T) {
|
||||||
t.Run("list by other org ID", func(t *testing.T) {
|
t.Run("list by other org ID", func(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
svc, _, clean := newTestService(t)
|
svc, clean := newTestService(t)
|
||||||
defer clean(t)
|
defer clean(t)
|
||||||
setup(t, svc)
|
setup(t, svc)
|
||||||
|
|
||||||
|
@ -323,18 +218,16 @@ func TestListConnections(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func newTestService(t *testing.T) (*service, *remotesMock.MockRemoteConnectionValidator, func(t *testing.T)) {
|
func newTestService(t *testing.T) (*service, func(t *testing.T)) {
|
||||||
store, clean := sqlite.NewTestStore(t)
|
store, clean := sqlite.NewTestStore(t)
|
||||||
logger := zaptest.NewLogger(t)
|
logger := zaptest.NewLogger(t)
|
||||||
sqliteMigrator := sqlite.NewMigrator(store, logger)
|
sqliteMigrator := sqlite.NewMigrator(store, logger)
|
||||||
require.NoError(t, sqliteMigrator.Up(ctx, migrations.AllUp))
|
require.NoError(t, sqliteMigrator.Up(ctx, migrations.AllUp))
|
||||||
|
|
||||||
mockValidator := remotesMock.NewMockRemoteConnectionValidator(gomock.NewController(t))
|
|
||||||
svc := service{
|
svc := service{
|
||||||
store: store,
|
store: store,
|
||||||
idGenerator: mock.NewIncrementingIDGenerator(initID),
|
idGenerator: mock.NewIncrementingIDGenerator(initID),
|
||||||
validator: mockValidator,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return &svc, mockValidator, clean
|
return &svc, clean
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,26 +38,14 @@ type RemoteConnectionService interface {
|
||||||
// CreateRemoteConnection registers a new remote InfluxDB connection.
|
// CreateRemoteConnection registers a new remote InfluxDB connection.
|
||||||
CreateRemoteConnection(context.Context, influxdb.CreateRemoteConnectionRequest) (*influxdb.RemoteConnection, error)
|
CreateRemoteConnection(context.Context, influxdb.CreateRemoteConnectionRequest) (*influxdb.RemoteConnection, error)
|
||||||
|
|
||||||
// ValidateNewRemoteConnection validates that the given settings for a remote InfluxDB connection are usable,
|
|
||||||
// without persisting the connection info.
|
|
||||||
ValidateNewRemoteConnection(context.Context, influxdb.CreateRemoteConnectionRequest) error
|
|
||||||
|
|
||||||
// GetRemoteConnection returns metadata about the remote InfluxDB connection with the given ID.
|
// GetRemoteConnection returns metadata about the remote InfluxDB connection with the given ID.
|
||||||
GetRemoteConnection(context.Context, platform.ID) (*influxdb.RemoteConnection, error)
|
GetRemoteConnection(context.Context, platform.ID) (*influxdb.RemoteConnection, error)
|
||||||
|
|
||||||
// UpdateRemoteConnection updates the settings for the remote InfluxDB connection with the given ID.
|
// UpdateRemoteConnection updates the settings for the remote InfluxDB connection with the given ID.
|
||||||
UpdateRemoteConnection(context.Context, platform.ID, influxdb.UpdateRemoteConnectionRequest) (*influxdb.RemoteConnection, error)
|
UpdateRemoteConnection(context.Context, platform.ID, influxdb.UpdateRemoteConnectionRequest) (*influxdb.RemoteConnection, error)
|
||||||
|
|
||||||
// ValidateUpdatedRemoteConnection validates that a remote InfluxDB connection is still usable after applying the
|
|
||||||
// given update, without persisting the new info.
|
|
||||||
ValidateUpdatedRemoteConnection(context.Context, platform.ID, influxdb.UpdateRemoteConnectionRequest) error
|
|
||||||
|
|
||||||
// DeleteRemoteConnection deletes all info for the remote InfluxDB connection with the given ID.
|
// DeleteRemoteConnection deletes all info for the remote InfluxDB connection with the given ID.
|
||||||
DeleteRemoteConnection(context.Context, platform.ID) error
|
DeleteRemoteConnection(context.Context, platform.ID) error
|
||||||
|
|
||||||
// ValidateRemoteConnection checks that the remote InfluxDB connection with the given ID is still usable
|
|
||||||
// with its persisted settings.
|
|
||||||
ValidateRemoteConnection(context.Context, platform.ID) error
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type RemoteConnectionHandler struct {
|
type RemoteConnectionHandler struct {
|
||||||
|
@ -103,7 +91,6 @@ func newRemoteConnectionHandler(log *zap.Logger, svc RemoteConnectionService) *R
|
||||||
r.Get("/", h.handleGetRemote)
|
r.Get("/", h.handleGetRemote)
|
||||||
r.Patch("/", h.handlePatchRemote)
|
r.Patch("/", h.handlePatchRemote)
|
||||||
r.Delete("/", h.handleDeleteRemote)
|
r.Delete("/", h.handleDeleteRemote)
|
||||||
r.Post("/validate", h.handleValidateRemote)
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -161,24 +148,13 @@ func (h *RemoteConnectionHandler) handleGetRemotes(w http.ResponseWriter, r *htt
|
||||||
|
|
||||||
func (h *RemoteConnectionHandler) handlePostRemote(w http.ResponseWriter, r *http.Request) {
|
func (h *RemoteConnectionHandler) handlePostRemote(w http.ResponseWriter, r *http.Request) {
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
q := r.URL.Query()
|
|
||||||
|
|
||||||
validate := q.Get("validate") == "true"
|
|
||||||
var req influxdb.CreateRemoteConnectionRequest
|
var req influxdb.CreateRemoteConnectionRequest
|
||||||
if err := h.api.DecodeJSON(r.Body, &req); err != nil {
|
if err := h.api.DecodeJSON(r.Body, &req); err != nil {
|
||||||
h.api.Err(w, r, err)
|
h.api.Err(w, r, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if validate {
|
|
||||||
if err := h.remotesService.ValidateNewRemoteConnection(ctx, req); err != nil {
|
|
||||||
h.api.Err(w, r, err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
h.api.Respond(w, r, http.StatusNoContent, nil)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
remote, err := h.remotesService.CreateRemoteConnection(ctx, req)
|
remote, err := h.remotesService.CreateRemoteConnection(ctx, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
h.api.Err(w, r, err)
|
h.api.Err(w, r, err)
|
||||||
|
@ -210,24 +186,13 @@ func (h *RemoteConnectionHandler) handlePatchRemote(w http.ResponseWriter, r *ht
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
q := r.URL.Query()
|
|
||||||
|
|
||||||
validate := q.Get("validate") == "true"
|
|
||||||
var req influxdb.UpdateRemoteConnectionRequest
|
var req influxdb.UpdateRemoteConnectionRequest
|
||||||
if err := h.api.DecodeJSON(r.Body, &req); err != nil {
|
if err := h.api.DecodeJSON(r.Body, &req); err != nil {
|
||||||
h.api.Err(w, r, err)
|
h.api.Err(w, r, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if validate {
|
|
||||||
if err := h.remotesService.ValidateUpdatedRemoteConnection(ctx, *id, req); err != nil {
|
|
||||||
h.api.Err(w, r, err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
h.api.Respond(w, r, http.StatusNoContent, nil)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
remote, err := h.remotesService.UpdateRemoteConnection(ctx, *id, req)
|
remote, err := h.remotesService.UpdateRemoteConnection(ctx, *id, req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
h.api.Err(w, r, err)
|
h.api.Err(w, r, err)
|
||||||
|
@ -249,17 +214,3 @@ func (h *RemoteConnectionHandler) handleDeleteRemote(w http.ResponseWriter, r *h
|
||||||
}
|
}
|
||||||
h.api.Respond(w, r, http.StatusNoContent, nil)
|
h.api.Respond(w, r, http.StatusNoContent, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *RemoteConnectionHandler) handleValidateRemote(w http.ResponseWriter, r *http.Request) {
|
|
||||||
id, err := platform.IDFromString(chi.URLParam(r, "id"))
|
|
||||||
if err != nil {
|
|
||||||
h.api.Err(w, r, errBadId)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := h.remotesService.ValidateRemoteConnection(r.Context(), *id); err != nil {
|
|
||||||
h.api.Err(w, r, err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
h.api.Respond(w, r, http.StatusNoContent, nil)
|
|
||||||
}
|
|
||||||
|
|
|
@ -19,6 +19,8 @@ import (
|
||||||
"go.uber.org/zap/zaptest"
|
"go.uber.org/zap/zaptest"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
//go:generate go run github.com/golang/mock/mockgen -package mock -destination ../mock/service.go github.com/influxdata/influxdb/v2/remotes/transport RemoteConnectionService
|
||||||
|
|
||||||
var (
|
var (
|
||||||
orgStr = "1234123412341234"
|
orgStr = "1234123412341234"
|
||||||
orgID, _ = platform.IDFromString(orgStr)
|
orgID, _ = platform.IDFromString(orgStr)
|
||||||
|
@ -89,29 +91,6 @@ func TestRemoteConnectionHandler(t *testing.T) {
|
||||||
require.Equal(t, testConn, got)
|
require.Equal(t, testConn, got)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("dry-run create happy path", func(t *testing.T) {
|
|
||||||
ts, svc := newTestServer(t)
|
|
||||||
defer ts.Close()
|
|
||||||
|
|
||||||
body := influxdb.CreateRemoteConnectionRequest{
|
|
||||||
OrgID: testConn.OrgID,
|
|
||||||
Name: testConn.Name,
|
|
||||||
RemoteURL: testConn.RemoteURL,
|
|
||||||
RemoteToken: "my super secret token",
|
|
||||||
RemoteOrgID: testConn.RemoteOrgID,
|
|
||||||
AllowInsecureTLS: testConn.AllowInsecureTLS,
|
|
||||||
}
|
|
||||||
|
|
||||||
req := newTestRequest(t, "POST", ts.URL, &body)
|
|
||||||
q := req.URL.Query()
|
|
||||||
q.Add("validate", "true")
|
|
||||||
req.URL.RawQuery = q.Encode()
|
|
||||||
|
|
||||||
svc.EXPECT().ValidateNewRemoteConnection(gomock.Any(), body).Return(nil)
|
|
||||||
|
|
||||||
doTestRequest(t, req, http.StatusNoContent, false)
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("get remote happy path", func(t *testing.T) {
|
t.Run("get remote happy path", func(t *testing.T) {
|
||||||
ts, svc := newTestServer(t)
|
ts, svc := newTestServer(t)
|
||||||
defer ts.Close()
|
defer ts.Close()
|
||||||
|
@ -156,34 +135,6 @@ func TestRemoteConnectionHandler(t *testing.T) {
|
||||||
require.Equal(t, testConn, got)
|
require.Equal(t, testConn, got)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("dry-run update happy path", func(t *testing.T) {
|
|
||||||
ts, svc := newTestServer(t)
|
|
||||||
defer ts.Close()
|
|
||||||
|
|
||||||
newToken := "a new even more secret token"
|
|
||||||
body := influxdb.UpdateRemoteConnectionRequest{RemoteToken: &newToken}
|
|
||||||
|
|
||||||
req := newTestRequest(t, "PATCH", ts.URL+"/"+id.String(), &body)
|
|
||||||
q := req.URL.Query()
|
|
||||||
q.Add("validate", "true")
|
|
||||||
req.URL.RawQuery = q.Encode()
|
|
||||||
|
|
||||||
svc.EXPECT().ValidateUpdatedRemoteConnection(gomock.Any(), *id, body).Return(nil)
|
|
||||||
|
|
||||||
doTestRequest(t, req, http.StatusNoContent, false)
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("validate remote happy path", func(t *testing.T) {
|
|
||||||
ts, svc := newTestServer(t)
|
|
||||||
defer ts.Close()
|
|
||||||
|
|
||||||
req := newTestRequest(t, "POST", ts.URL+"/"+id.String()+"/validate", nil)
|
|
||||||
|
|
||||||
svc.EXPECT().ValidateRemoteConnection(gomock.Any(), *id).Return(nil)
|
|
||||||
|
|
||||||
doTestRequest(t, req, http.StatusNoContent, false)
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("invalid remote IDs return 400", func(t *testing.T) {
|
t.Run("invalid remote IDs return 400", func(t *testing.T) {
|
||||||
ts, _ := newTestServer(t)
|
ts, _ := newTestServer(t)
|
||||||
defer ts.Close()
|
defer ts.Close()
|
||||||
|
|
|
@ -47,14 +47,6 @@ func (a authCheckingService) CreateRemoteConnection(ctx context.Context, request
|
||||||
return a.underlying.CreateRemoteConnection(ctx, request)
|
return a.underlying.CreateRemoteConnection(ctx, request)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a authCheckingService) ValidateNewRemoteConnection(ctx context.Context, request influxdb.CreateRemoteConnectionRequest) error {
|
|
||||||
if _, _, err := authorizer.AuthorizeCreate(ctx, influxdb.RemotesResourceType, request.OrgID); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return a.underlying.ValidateNewRemoteConnection(ctx, request)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a authCheckingService) GetRemoteConnection(ctx context.Context, id platform.ID) (*influxdb.RemoteConnection, error) {
|
func (a authCheckingService) GetRemoteConnection(ctx context.Context, id platform.ID) (*influxdb.RemoteConnection, error) {
|
||||||
r, err := a.underlying.GetRemoteConnection(ctx, id)
|
r, err := a.underlying.GetRemoteConnection(ctx, id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -77,17 +69,6 @@ func (a authCheckingService) UpdateRemoteConnection(ctx context.Context, id plat
|
||||||
return a.underlying.UpdateRemoteConnection(ctx, id, request)
|
return a.underlying.UpdateRemoteConnection(ctx, id, request)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a authCheckingService) ValidateUpdatedRemoteConnection(ctx context.Context, id platform.ID, request influxdb.UpdateRemoteConnectionRequest) error {
|
|
||||||
r, err := a.underlying.GetRemoteConnection(ctx, id)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if _, _, err := authorizer.AuthorizeWrite(ctx, influxdb.RemotesResourceType, id, r.OrgID); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return a.underlying.ValidateUpdatedRemoteConnection(ctx, id, request)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a authCheckingService) DeleteRemoteConnection(ctx context.Context, id platform.ID) error {
|
func (a authCheckingService) DeleteRemoteConnection(ctx context.Context, id platform.ID) error {
|
||||||
r, err := a.underlying.GetRemoteConnection(ctx, id)
|
r, err := a.underlying.GetRemoteConnection(ctx, id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -98,14 +79,3 @@ func (a authCheckingService) DeleteRemoteConnection(ctx context.Context, id plat
|
||||||
}
|
}
|
||||||
return a.underlying.DeleteRemoteConnection(ctx, id)
|
return a.underlying.DeleteRemoteConnection(ctx, id)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a authCheckingService) ValidateRemoteConnection(ctx context.Context, id platform.ID) error {
|
|
||||||
r, err := a.underlying.GetRemoteConnection(ctx, id)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if _, _, err := authorizer.AuthorizeRead(ctx, influxdb.RemotesResourceType, id, r.OrgID); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return a.underlying.ValidateRemoteConnection(ctx, id)
|
|
||||||
}
|
|
||||||
|
|
|
@ -47,18 +47,6 @@ func (l loggingService) CreateRemoteConnection(ctx context.Context, request infl
|
||||||
return l.underlying.CreateRemoteConnection(ctx, request)
|
return l.underlying.CreateRemoteConnection(ctx, request)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l loggingService) ValidateNewRemoteConnection(ctx context.Context, request influxdb.CreateRemoteConnectionRequest) (err error) {
|
|
||||||
defer func(start time.Time) {
|
|
||||||
dur := zap.Duration("took", time.Since(start))
|
|
||||||
if err != nil {
|
|
||||||
l.logger.Debug("failed to validate remote create", zap.Error(err), dur)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
l.logger.Debug("remote validate create", dur)
|
|
||||||
}(time.Now())
|
|
||||||
return l.underlying.ValidateNewRemoteConnection(ctx, request)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l loggingService) GetRemoteConnection(ctx context.Context, id platform.ID) (r *influxdb.RemoteConnection, err error) {
|
func (l loggingService) GetRemoteConnection(ctx context.Context, id platform.ID) (r *influxdb.RemoteConnection, err error) {
|
||||||
defer func(start time.Time) {
|
defer func(start time.Time) {
|
||||||
dur := zap.Duration("took", time.Since(start))
|
dur := zap.Duration("took", time.Since(start))
|
||||||
|
@ -83,18 +71,6 @@ func (l loggingService) UpdateRemoteConnection(ctx context.Context, id platform.
|
||||||
return l.underlying.UpdateRemoteConnection(ctx, id, request)
|
return l.underlying.UpdateRemoteConnection(ctx, id, request)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l loggingService) ValidateUpdatedRemoteConnection(ctx context.Context, id platform.ID, request influxdb.UpdateRemoteConnectionRequest) (err error) {
|
|
||||||
defer func(start time.Time) {
|
|
||||||
dur := zap.Duration("took", time.Since(start))
|
|
||||||
if err != nil {
|
|
||||||
l.logger.Debug("failed to validate remote update", zap.Error(err), dur)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
l.logger.Debug("remote validate update", dur)
|
|
||||||
}(time.Now())
|
|
||||||
return l.underlying.ValidateUpdatedRemoteConnection(ctx, id, request)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l loggingService) DeleteRemoteConnection(ctx context.Context, id platform.ID) (err error) {
|
func (l loggingService) DeleteRemoteConnection(ctx context.Context, id platform.ID) (err error) {
|
||||||
defer func(start time.Time) {
|
defer func(start time.Time) {
|
||||||
dur := zap.Duration("took", time.Since(start))
|
dur := zap.Duration("took", time.Since(start))
|
||||||
|
@ -106,15 +82,3 @@ func (l loggingService) DeleteRemoteConnection(ctx context.Context, id platform.
|
||||||
}(time.Now())
|
}(time.Now())
|
||||||
return l.underlying.DeleteRemoteConnection(ctx, id)
|
return l.underlying.DeleteRemoteConnection(ctx, id)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l loggingService) ValidateRemoteConnection(ctx context.Context, id platform.ID) (err error) {
|
|
||||||
defer func(start time.Time) {
|
|
||||||
dur := zap.Duration("took", time.Since(start))
|
|
||||||
if err != nil {
|
|
||||||
l.logger.Debug("failed to validate remote", zap.Error(err), dur)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
l.logger.Debug("remote validate", dur)
|
|
||||||
}(time.Now())
|
|
||||||
return l.underlying.ValidateRemoteConnection(ctx, id)
|
|
||||||
}
|
|
||||||
|
|
|
@ -37,11 +37,6 @@ func (m metricsService) CreateRemoteConnection(ctx context.Context, request infl
|
||||||
return rc, rec(err)
|
return rc, rec(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m metricsService) ValidateNewRemoteConnection(ctx context.Context, request influxdb.CreateRemoteConnectionRequest) error {
|
|
||||||
rec := m.rec.Record("validate_create_remote")
|
|
||||||
return rec(m.underlying.ValidateNewRemoteConnection(ctx, request))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m metricsService) GetRemoteConnection(ctx context.Context, id platform.ID) (*influxdb.RemoteConnection, error) {
|
func (m metricsService) GetRemoteConnection(ctx context.Context, id platform.ID) (*influxdb.RemoteConnection, error) {
|
||||||
rec := m.rec.Record("find_remote_by_id")
|
rec := m.rec.Record("find_remote_by_id")
|
||||||
rc, err := m.underlying.GetRemoteConnection(ctx, id)
|
rc, err := m.underlying.GetRemoteConnection(ctx, id)
|
||||||
|
@ -54,17 +49,7 @@ func (m metricsService) UpdateRemoteConnection(ctx context.Context, id platform.
|
||||||
return rc, rec(err)
|
return rc, rec(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m metricsService) ValidateUpdatedRemoteConnection(ctx context.Context, id platform.ID, request influxdb.UpdateRemoteConnectionRequest) error {
|
|
||||||
rec := m.rec.Record("validate_update_remote")
|
|
||||||
return rec(m.underlying.ValidateUpdatedRemoteConnection(ctx, id, request))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m metricsService) DeleteRemoteConnection(ctx context.Context, id platform.ID) error {
|
func (m metricsService) DeleteRemoteConnection(ctx context.Context, id platform.ID) error {
|
||||||
rec := m.rec.Record("delete_remote")
|
rec := m.rec.Record("delete_remote")
|
||||||
return rec(m.underlying.DeleteRemoteConnection(ctx, id))
|
return rec(m.underlying.DeleteRemoteConnection(ctx, id))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m metricsService) ValidateRemoteConnection(ctx context.Context, id platform.ID) error {
|
|
||||||
rec := m.rec.Record("validate_remote")
|
|
||||||
return rec(m.underlying.ValidateRemoteConnection(ctx, id))
|
|
||||||
}
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ declare -r ROOT_DIR=$(dirname ${SCRIPT_DIR})
|
||||||
declare -r STATIC_DIR="$ROOT_DIR/static"
|
declare -r STATIC_DIR="$ROOT_DIR/static"
|
||||||
|
|
||||||
# Pins the swagger that will be downloaded to a specific commit
|
# Pins the swagger that will be downloaded to a specific commit
|
||||||
declare -r OPENAPI_SHA=12c8165b70cb379486592ffbf43ac5a3dde04904
|
declare -r OPENAPI_SHA=1243aa6c501b26aabb1c32121de1e235152398a6
|
||||||
|
|
||||||
# Don't do a shallow clone since the commit we want might be several commits
|
# Don't do a shallow clone since the commit we want might be several commits
|
||||||
# back; but do only clone the main branch.
|
# back; but do only clone the main branch.
|
||||||
|
|
Loading…
Reference in New Issue